Tokie skaitytojai kaip jūs padeda palaikyti MUO. Kai perkate naudodami nuorodas mūsų svetainėje, galime uždirbti filialų komisinius. Skaityti daugiau.

Viena iš pagrindinių savybių, dėl kurių „Rust“ yra galinga ir patrauklesnė, yra konstrukcijų palaikymas. Struktūros yra sudėtiniai duomenų tipai, skirti grupuoti susijusius duomenis. Jie leidžia apibrėžti pasirinktinius duomenų tipus su pavadintais laukais, kurie pagerina kodo organizavimą ir palengvina duomenų apdorojimą.

Galite naudoti struktūras įvairiems objektams, įskaitant vartotojo apibrėžtus duomenų tipus ir konfigūracijas, pavaizduoti. Struktūros yra lankstesnės nei daugelis kitų duomenų struktūrų. Dėl jų gebėjimo įtraukti susijusius duomenis jie yra naudingi, nes jie sukuria logiškesnį realaus pasaulio objektų modelį.

Struktūrų ir struktūrų laukų apibrėžimas

Struktūrą apibrėžsite naudodami struktūra raktinis žodis, po kurio nurodomas struktūros pavadinimas. Atlikite tai nurodydami struktūros laukų pavadinimus ir jų pavadinimus Rūdžių duomenų tipai garbanotų petnešų viduje.

instagram viewer
struktūraAsmuo {
vardas: Styga,
amžius: u8,
is_student: bool,
}

Tai Asmuo struktūra turi tris laukus. The vardas laukas yra eilutė amžiaus laukas yra beženklis 8 bitų sveikasis skaičius, o yra_studentas laukas yra loginis.

Galite naudoti struct literals, kad sukurtumėte struktūrų egzempliorius po struct apibrėžimo. Struktūros literalai nurodo struktūros laukų reikšmes.

leisti asmuo = asmuo {
vardas: Styga::nuo("Jonas"),
amžius: 27,
is_student: tiesa,
};

The asmuo kintamasis yra pavyzdys Asmuo struct, sukurtas naudojant struct literalą. Šis pažodinis tekstas parodo visus struktūros laukus su atitinkamo duomenų tipo reikšmėmis.

Konstruktorių naudojimas konstrukcijoms kurti

Taip pat galite naudoti konstruktoriaus funkciją, kad sukurtumėte struktūros egzempliorių.

impl Asmuo {
// Apibrėžkite konstruktoriaus funkciją „new“, kuriai reikia „pavadinimo“, „amžiaus“ ir
// `is_studentas` parametrai
fnnaujas(vardas: Styga, amžius: u8, is_studentas: bool) -> Savarankiškai {
// Sukurkite naują „Person“ struktūros egzempliorių ir inicijuokite jo laukus
// su pateiktomis reikšmėmis
Savarankiškai {
vardas,
amžius,
is_studentas,
}
}
}

// Iškvieskite „Asmens“ struktūros „nauja“ konstruktoriaus funkciją ir priskirkite
// gaunamas atvejis į „asmenį“.
leisti asmuo = asmuo:: naujas(Styga::nuo("Jonas"), 27, tiesa);

Aukščiau pateikta programa apibrėžia konstruktorių Asmuo statyti su impl raktažodį. The naujas konstruktorius priima struct laukus kaip argumentus ir grąžina naują struktūros egzempliorių su inicijuotomis reikšmėmis.

Galite sukurti a Asmuo pavyzdys su naujas konstruktorius, perduodamas jam tinkamus argumentus.

Prieiga prie struktūrų laukų ir jų keitimas

Galite pasiekti ir modifikuoti struktūros laukus naudodami taško žymėjimą. Jūs tiesiog naudojate tašką (.) operatorių, po kurio nurodomas lauko pavadinimas, kad pasiektumėte arba pakeistumėte jo reikšmę.

// paskelbti Asmens struktūrą
struktūraAsmuo {
vardas: Styga,
amžius: u8,
is_student: bool,
}

fnpagrindinis() {
// pakartokite struktūrą
leistimut asmuo = asmuo {
vardas: Styga::nuo("Jonas"),
amžius: 27,
is_student: tiesa,
};

// išspausdinti struktūros pavadinimo ir amžiaus laukus
println!("Vardas: {}", asmuo.vardas);
println!("Amžius: {}", asmuo.amžius);

// modifikuokite lauką is_student
asmuo.yra_studentas = klaidinga;

println!("Ar studentas: {}", asmuo.yra_studentas);
}

Programa sukuria struktūrą, sukuria jos egzempliorius, išspausdina vardas, ir amžiaus laukus ir modifikuoja yra_studentas lauką prieš spausdindami lauką.

Konstrukcijų deklaravimo metodai

Skirtingai nei struktūros C, galite apibrėžti metodus Rust struktūrose, kurios veikia egzemplioriuje. Metodai yra funkcijos, kurios naudoja nuorodą į struktūrą, kad būtų galima pasiekti ir modifikuoti. Taip pat galite naudoti taško žymėjimą, norėdami iškviesti struktūros metodus ir pasiekti jų funkcijas.

Štai kaip galite deklaruoti struktūrų metodus ir naudoti šiuos metodus operacijoms atlikti:

struktūraAsmuo {
vardas: Styga,
amžius: u8,
is_student: bool,
}

impl Asmuo {
fnsakyk labas(&savarankiškai) {
println!("Sveiki, mano vardas yra {} ir man {} metai.", savarankiškai.vardas,
savarankiškai.amžius);
}

fnturėti_gimtadienį(&mutsavarankiškai) {
savarankiškai.amžius += 1;
}
}

fnpagrindinis() {
leistimut asmuo = asmuo {
vardas: Styga::nuo("Jonas"),
amžius: 27,
is_student: tiesa,
};

asmuo.say_hello();

asmuo.turėti_gimtadienį();

println!("Naujasis amžius: {}", asmuo.amžius);
}

Programa apibrėžia du metodus Asmuo struktūra. The sakyk labas metodas remiasi savarankiškai ir atspausdina sveikinimą, kuriame nurodomas asmens vardas ir amžius. The turėti_gimtadienį metodas turi kintamą nuorodą savarankiškai ir padidina asmens amžių.

„Rust“ nuosavybės modelis optimizuoja atminties valdymą

Struktūros yra universalios duomenų struktūros, veikiančios kaip tam tikras minimalus klasės atitikmuo.

Kaip ir su kitomis Rust duomenų struktūromis, dirbdami su struktūros kintamaisiais turėtumėte vadovautis Rust nuosavybės taisyklėmis. Nuosavybės modelis užtikrina efektyvų programų atminties valdymą, užkertant kelią įprastoms problemoms, pvz., nulinėms ir kabančioms nuorodoms.