Čitatelia ako vy pomáhajú podporovať MUO. Keď uskutočníte nákup pomocou odkazov na našej stránke, môžeme získať pridruženú províziu. Čítaj viac.

Jednou z kľúčových funkcií, vďaka ktorým je Rust výkonný a príťažlivejší, je jeho podpora pre štruktúry. Štruktúry sú zložené dátové typy na zoskupovanie súvisiacich dát. Umožňujú vám definovať vlastné typy údajov s pomenovanými poľami, ktoré zlepšujú organizáciu kódu a uľahčujú manipuláciu s údajmi.

Štruktúry môžete použiť na reprezentáciu rôznych objektov vrátane užívateľom definovaných typov údajov a konfigurácií. Štruktúry sú flexibilnejšie ako mnohé iné dátové štruktúry. Ich schopnosť zapuzdrovať súvisiace údaje ich robí užitočnými, pretože vytvárajú logickejší model objektov reálneho sveta.

Definovanie štruktúr a štruktúrnych polí

Štruktúru definujete pomocou štrukturovať kľúčové slovo, za ktorým nasleduje názov štruktúry. Nasledujte to zadaním názvov polí štruktúr a ich Typy údajov hrdze vnútri páru kučeravých zátvoriek.

štrukturovaťOsoba {
názov: Reťazec,
Vek: u8,
is_student: bool,
}
instagram viewer

Toto Osoba struct má tri polia. The názov pole je reťazec, Vek pole je 8-bitové celé číslo bez znamienka a je_študent pole je booleovské.

Na vytvorenie inštancií štruktúry po definícii štruktúry môžete použiť literály struct. Literály štruktúry špecifikujú hodnoty polí štruktúry.

nech osoba = Osoba {
názov: Reťazec::od("John"),
Vek: 27,
is_student: pravda,
};

The osoba premenná je inštanciou premennej Osoba struct, vytvorený pomocou struct literal. Tento literál vytvorí inštanciu všetkých polí štruktúry s hodnotami ich zodpovedajúceho dátového typu.

Použitie konštruktérov na vytváranie štruktúr

Na vytvorenie inštancie štruktúry môžete použiť aj funkciu konštruktora.

impl Osoba {
// Definujte funkciu konštruktora `new`, ktorá preberá `name`, `age` a
// parametre `je_študent`
fnNový(názov: Reťazec, Vek: u8, is_student: bool) -> Seba {
// Vytvorte novú inštanciu štruktúry `Person` a inicializujte jej polia
// s poskytnutými hodnotami
Seba {
názov,
Vek,
is_student,
}
}
}

// Zavolajte funkciu konštruktora `new` štruktúry `Person` a priraďte
// výsledná inštancia na `person`
nech osoba = Osoba:: nová(Reťazec::od("John"), 27, pravda);

Vyššie uvedený program definuje konštruktor pre Osoba štrukturovať s impl kľúčové slovo. The Nový Konštruktor berie polia struct ako argumenty a vracia novú inštanciu štruktúry s inicializovanými hodnotami.

Môžete vytvoriť a Osoba napríklad s Nový konštruktor a odovzdať mu vhodné argumenty.

Prístup a úprava štruktúrnych polí

K poliam štruktúr môžete pristupovať a upravovať ich pomocou bodkovej notácie. Stačí použiť bodku (.) operátor, za ktorým nasleduje názov poľa na prístup alebo zmenu jeho hodnoty.

// deklarovať štruktúru osoby
štrukturovaťOsoba {
názov: Reťazec,
Vek: u8,
is_student: bool,
}

fnHlavná() {
// vytvorí inštanciu štruktúry
nechmut osoba = Osoba {
názov: Reťazec::od("John"),
Vek: 27,
is_student: pravda,
};

// vypíše polia názvu a veku štruktúry
println!("Názov: {}", meno.osoby);
println!("Vek: {}", osoba.vek);

// upravte pole is_student
osoba.je_študent = falošný;

println!("Je študent: {}", osoba.je_študent);
}

Program vytvorí štruktúru, vytvorí inštanciu štruktúry, vypíše názov, a Vek polia a upravuje je_študent pole pred vytlačením poľa.

Vyhlásenie metód pre štruktúry

Na rozdiel od štruktúry v C, môžete definovať metódy na štruktúrach Rust, ktoré fungujú na inštancii. Metódy sú funkcie, ktoré odkazujú na štruktúru na prístup a úpravu. Môžete tiež použiť bodkový zápis na volanie metód štruktúry a prístup k ich funkciám.

Tu je návod, ako môžete deklarovať metódy pre štruktúry a použiť tieto metódy na vykonávanie operácií:

štrukturovaťOsoba {
názov: Reťazec,
Vek: u8,
is_student: bool,
}

impl Osoba {
fnpovedz ahoj(&seba) {
println!("Dobrý deň, volám sa {} a mám {} rokov.", seba.názov,
seba.Vek);
}

fnmať_narodeniny(&mutseba) {
seba.vek += 1;
}
}

fnHlavná() {
nechmut osoba = Osoba {
názov: Reťazec::od("John"),
Vek: 27,
is_student: pravda,
};

osoba.say_hello();

osoba.mať_narodeniny();

println!("Nový vek: {}", osoba.vek);
}

Program definuje dve metódy pre Osoba štrukturovať. The povedz ahoj metóda má odkaz na seba a vytlačí pozdrav, ktorý obsahuje meno a vek osoby. The mať_narodeniny metóda má premenlivý odkaz seba a zvyšuje vek osoby.

Rust's Ownership Model optimalizuje správu pamäte

Štruktúry sú všestranné dátové štruktúry, ktoré fungujú ako akýsi ekvivalent minimálnej triedy.

Rovnako ako pri iných dátových štruktúrach Rust, pri práci s premennými struct by ste mali dodržiavať pravidlá vlastníctva Rustu. Model vlastníctva zaisťuje efektívnu správu pamäte vo vašich programoch, čím predchádza bežným problémom, ako sú nulové a visiace ukazovatele.