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,
}
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.