Az Önhöz hasonló olvasók támogatják a MUO-t. Amikor a webhelyünkön található linkek használatával vásárol, társult jutalékot kaphatunk. Olvass tovább.

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.

instagram viewer
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.