Yksi avainominaisuus, joka tekee Rustista tehokkaan ja houkuttelevamman, on sen tuki rakenteille. Rakenteet ovat yhdistelmätietotyyppejä toisiinsa liittyvien tietojen ryhmittelyyn. Niiden avulla voit määrittää mukautettuja tietotyyppejä nimetyillä kentillä, jotka parantavat koodin järjestämistä ja helpottavat tietojen käsittelyä.
Voit käyttää rakenteita edustamaan erilaisia objekteja, mukaan lukien käyttäjän määrittämät tietotyypit ja kokoonpanot. Rakenteet ovat joustavampia kuin monet muut tietorakenteet. Niiden kyky kapseloida toisiinsa liittyviä tietoja tekee niistä hyödyllisiä, koska ne luovat loogisemman mallin reaalimaailman objekteista.
Rakenteiden ja rakennekenttien määrittely
Voit määrittää rakenteen käyttämällä struct avainsana, jota seuraa rakenteen nimi. Noudata tätä määrittämällä rakenteen kenttien nimet ja niiden nimet Ruostetietotyypit kiharan hammasraudan sisällä.
structHenkilö {
nimi: merkkijono,
ikä: u8,
is_student: bool,
}
Tämä Henkilö structissa on kolme kenttää. The nimi kenttä on merkkijono ikä -kenttä on etumerkitön 8-bittinen kokonaisluku, ja on_opiskelija kenttä on boolen arvo.
Voit käyttää struct-literaaleja struct-instanssien luomiseen struct-määritelmän jälkeen. Rakenneliteraalit määrittävät rakenteen kenttien arvot.
antaa henkilö = henkilö {
nimi: merkkijono::from("John"),
ikä: 27,
is_student: totta,
};
The henkilö muuttuja on esimerkki Henkilö struct, luotu struct literaalilla. Tämä kirjaimellinen instantoi kaikki rakenteen kentät niitä vastaavan tietotyypin arvoilla.
Rakentajien käyttäminen rakenteiden luomiseen
Voit myös käyttää konstruktorifunktiota rakenteen esiintymän luomiseen.
impl Henkilö {
// Määritä rakentajafunktio "new", joka ottaa "name", "age" ja
// `is_student` -parametrit
fnUusi(nimi: merkkijono, ikä: u8, is_student: bool) -> Itse {
// Luo uusi "Person"-rakenteen esiintymä ja alusta sen kentät
// annetuilla arvoilla
Itse {
nimi,
ikä,
is_student,
}
}
}
// Kutsu "Person"-rakenteen "new" konstruktorifunktio ja määritä
// tuloksena oleva ilmentymä "henkilölle".
antaa henkilö = henkilö:: uusi(merkkijono::from("John"), 27, totta);
Yllä oleva ohjelma määrittelee konstruktorin Henkilö rakentaa kanssa impl avainsana. The Uusi konstruktori ottaa struct-kentät argumenteiksi ja palauttaa rakenteen uuden ilmentymän alustusarvoineen.
Voit luoda a Henkilö esimerkiksi kanssa Uusi rakentaja, välittää sille asianmukaiset argumentit.
Rakennekenttien käyttäminen ja muokkaaminen
Voit käyttää ja muokata rakennekenttiä käyttämällä pistemerkintää. Käytät vain pistettä (.) -operaattori ja kentän nimi päästäksesi käsiksi tai muuttaaksesi sen arvoa.
// julistaa henkilörakenteen
structHenkilö {
nimi: merkkijono,
ikä: u8,
is_student: bool,
}fnpää() {
// instantoi rakenne
antaamut henkilö = henkilö {
nimi: merkkijono::from("John"),
ikä: 27,
is_student: totta,
};// tulostaa rakenteen nimi- ja ikäkentät
println!("Nimi: {}", henkilö.nimi);
println!("Ikä: {}", henkilö.ikä);// muokkaa is_student-kenttää
henkilö.on_opiskelija = väärä;
println!("Onko opiskelija: {}", henkilö.on_opiskelija);
}
Ohjelma luo rakenteen, instantoi rakenteen ja tulostaa sen nimi, ja ikä kenttiä ja muuttaa on_opiskelija kenttään ennen kentän tulostamista.
Rakenteiden ilmoittamismenetelmät
Toisin kuin rakenteet C: ssä, voit määrittää menetelmiä instanssissa toimiville Rust-rakenteille. Menetelmät ovat toimintoja, jotka käyttävät viittausta rakenteeseen pääsyä ja muokkausta varten. Voit myös käyttää pistemerkintää kutsuaksesi rakenteen menetelmiä ja käyttääksesi niiden toimintoja.
Näin voit määrittää menetelmiä rakenteille ja käyttää niitä toimintojen suorittamiseen:
structHenkilö {
nimi: merkkijono,
ikä: u8,
is_student: bool,
}impl Henkilö {
fnsano Hei(&itse) {
println!("Hei, nimeni on {} ja olen {} vuotta vanha.", itse.nimi,
itse.ikä);
}fnon_syntymäpäivä(&mutitse) {
itse.ikä += 1;
}
}fnpää() {
antaamut henkilö = henkilö {
nimi: merkkijono::from("John"),
ikä: 27,
is_student: totta,
};henkilö.say_hello();
henkilö.have_birthday();
println!("Uusi aika: {}", henkilö.ikä);
}
Ohjelma määrittelee kaksi menetelmää Henkilö struct. The sano Hei menetelmä viittaa itse ja tulostaa tervehdyksen, joka sisältää henkilön nimen ja iän. The on_syntymäpäivä menetelmällä on muuttuva viittaus itse ja nostaa henkilön ikää.
Rustin omistusmalli optimoi muistinhallinnan
Rakenteet ovat monipuolisia tietorakenteita, jotka toimivat eräänlaisena minimiluokan vastineena.
Kuten muissakin Rust-tietorakenteissa, sinun tulee noudattaa Rustin omistajuussääntöjä työskennellessäsi rakennemuuttujien kanssa. Omistusmalli varmistaa, että hallitset muistia tehokkaasti ohjelmissasi, mikä estää yleiset ongelmat, kuten tyhjät ja roikkuvat osoittimet.