Az egyik legfontosabb tulajdonság, amely a Rustot erőteljessé és vonzóbbá teszi, a szerkezetek támogatása. A struktúrák összetett adattípusok a kapcsolódó adatok csoportosítására. Lehetővé teszik egyedi adattípusok meghatározását elnevezett mezőkkel, amelyek javítják a kódszervezést és megkönnyítik az adatok kezelését.
Struktúrákat használhat különféle objektumok ábrázolására, beleértve a felhasználó által meghatározott adattípusokat és konfigurációkat. A struktúrák rugalmasabbak, mint sok más adatstruktúra. A kapcsolódó adatok beágyazására való képességük hasznossá teszi őket, mivel logikusabb modellt hoznak létre a valós objektumokról.
Struktúrák és szerkezetmezők meghatározása
A struktúrát a struct kulcsszó után a struktúra neve. Kövesse ezt a struktúra mezőneveinek és azok nevének megadásával Rozsda adattípusok egy pár göndör fogszabályzó belsejében.
structSzemély {
név: Húr,
kor: u8,
is_student: bool,
}
Ez Személy A structnak három mezője van. A név mező egy karakterlánc, a kor mező egy előjel nélküli 8 bites egész szám, és a is_student mező egy logikai érték.
A struct literálok segítségével struct példányokat hozhat létre a struct definíció után. A struktúraliterálok meghatározzák a struktúra mezőinek értékeit.
hagyja személy = személy {
név: Húr::tól től("János"),
kor: 27,
is_student: igaz,
};
A személy változó a Személy struct, struct literállal jött létre. Ez a literál példányosítja a struktúra összes mezőjét a megfelelő adattípus értékeivel.
Konstruktorok használata struktúrák létrehozásához
Egy konstruktor függvényt is használhat egy struktúra példányának létrehozásához.
impl személy {
// Határozzon meg egy "new" konstruktor függvényt, amely a "name", "age" és a következőt veszi fel
// `is_student` paraméterek
fnúj(név: Húr, életkor: u8, is_student: bool) -> Maga {
// Hozzon létre egy új `Person` struct példányt, és inicializálja a mezőit
// a megadott értékekkel
Maga {
név,
kor,
is_student,
}
}
}
// Hívja meg a "Személy" struktúra "new" konstruktor függvényét, és rendelje hozzá a
// a „személy” eredő példánya
hagyja személy = személy:: new(Húr::tól től("János"), 27, igaz);
A fenti program egy konstruktort határoz meg a Személy strukturálja a impl kulcsszó. A új A konstruktor beveszi a struct mezőket argumentumként, és visszaadja a struktúra új példányát az inicializált értékekkel.
Létrehozhat a Személy példa a új konstruktort, megfelelő argumentumokat adva át neki.
Struktúramezők elérése és módosítása
A struktúramezőket pont jelöléssel érheti el és módosíthatja. Egyszerűen használja a pontot (.) operátort, majd a mező nevét, hogy elérje vagy módosítsa az értékét.
// deklarál egy Person struktúrát
structSzemély {
név: Húr,
kor: u8,
is_student: bool,
}fnfő-() {
// egy struktúra példányosítása
hagyjamut személy = személy {
név: Húr::tól től("János"),
kor: 27,
is_student: igaz,
};// kiírja a struktúra nevét és korát
println!("Név: {}", személy.név);
println!("Kor: {}", személy.kor);// módosítsa az is_student mezőt
személy.is_diák = hamis;
println!("Diák: {}", személy.tanuló);
}
A program létrehoz egy struktúrát, példányosítja a struktúrát, kiírja a név, és kor mezőket, és módosítja a is_student mezőt a mező kinyomtatása előtt.
A szerkezetek deklarálási módszerei
nem úgy mint struktúrák a C-ben, akkor definiálhat metódusokat a Rust struktúrákon, amelyek egy példányon működnek. A metódusok olyan függvények, amelyek egy struktúrára hivatkoznak a hozzáféréshez és a módosításhoz. A pont jelölést is használhatja egy struktúra metódusainak meghívására és azok funkcióinak elérésére.
A következőképpen deklarálhat metódusokat a struktúrákhoz, és hogyan használhatja ezeket a metódusokat műveletek végrehajtására:
structSzemély {
név: Húr,
kor: u8,
is_student: bool,
}impl személy {
fnköszönj(&maga) {
println!("Helló, a nevem {}, és {} éves vagyok.", maga.név,
maga.kor);
}fnvan_születésnapja(&mutmaga) {
maga.életkor += 1;
}
}fnfő-() {
hagyjamut személy = személy {
név: Húr::tól től("János"),
kor: 27,
is_student: igaz,
};személy.say_hello();
személy.van_születésnapja();
println!("Új kor: {}", személy.kor);
}
A program két módszert határoz meg a Személy struct. A köszönj módszerre hivatkozik maga és kinyomtat egy üdvözletet, amely tartalmazza a személy nevét és életkorát. A van_születésnapja metódus változékony hivatkozást vesz fel maga és növeli a személy életkorát.
A Rust tulajdonosi modellje optimalizálja a memóriakezelést
A struktúrák sokoldalú adatstruktúrák, amelyek egyfajta minimális osztályegyenértékként működnek.
A többi Rust adatszerkezethez hasonlóan a struktúraváltozókkal való munka során kövesse a Rust tulajdonosi szabályait. A tulajdonosi modell biztosítja, hogy hatékonyan kezelje a memóriát a programokban, megelőzve az olyan gyakori problémákat, mint a nulla és lógó mutatók.