Jednou z klíčových funkcí, díky které je Rust výkonný a přitažlivější, je jeho podpora struktur. Struktury jsou složené datové typy pro seskupování souvisejících dat. Umožňují definovat vlastní datové typy s pojmenovanými poli, které zlepšují organizaci kódu a usnadňují manipulaci s daty.
Struktury můžete použít k reprezentaci různých objektů, včetně uživatelsky definovaných datových typů a konfigurací. Struktury jsou flexibilnější než mnoho jiných datových struktur. Jejich schopnost zapouzdřit související data je činí užitečnými, protože vytvářejí logičtější model objektů reálného světa.
Definování struktur a strukturních polí
Strukturu definujete pomocí strukturovat klíčové slovo následované názvem struktury. Následujte zadáním názvů polí struktury a jejich Datové typy rzi uvnitř páru složených závorek.
strukturovatOsoba {
název: Tětiva,
stáří: u8,
je_student: bool,
}
Tento Osoba struct má tři pole. The název pole je řetězec, stáří pole je 8bitové celé číslo bez znaménka a je_student pole je booleovské.
Literály struct můžete použít k vytvoření instancí struktury po definici struktury. Literály struktury určují hodnoty polí struktury.
nechat osoba = Osoba {
název: Tětiva::z("John"),
stáří: 27,
je_student: skutečný,
};
The osoba proměnná je instancí třídy Osoba struct, vytvořený pomocí struct literal. Tento literál vytvoří instanci všech polí struktury s hodnotami jejich odpovídajícího datového typu.
Použití konstruktorů k vytváření struktur
K vytvoření instance struktury můžete také použít funkci konstruktoru.
impl Osoba {
// Definuje funkci konstruktoru `new`, která přebírá `name`, `age` a
// parametry `je_student`
fnNový(název: Tětiva, věk: u8, je_student: bool) -> Já {
// Vytvořte novou instanci struktury `Person` a inicializujte její pole
// se zadanými hodnotami
Já {
název,
stáří,
je_student,
}
}
}
// Volání funkce konstruktoru `new` struktury `Person` a přiřazení
// výsledná instance na `person`
nechat osoba = Osoba:: nová(Tětiva::z("John"), 27, skutečný);
Výše uvedený program definuje konstruktor pro Osoba strukturovat s impl klíčové slovo. The Nový konstruktor vezme pole struct jako argumenty a vrátí novou instanci struktury s inicializovanými hodnotami.
Můžete vytvořit a Osoba příklad s Nový konstruktor a předá mu vhodné argumenty.
Přístup k polím struktury a jejich úprava
K polím struktur můžete přistupovat a upravovat je pomocí tečkové notace. Jednoduše použijete tečku (.) operátor následovaný názvem pole pro přístup nebo změnu jeho hodnoty.
// deklarovat strukturu osoby
strukturovatOsoba {
název: Tětiva,
stáří: u8,
je_student: bool,
}fnhlavní() {
// vytvoření instance struktury
nechatmut osoba = Osoba {
název: Tětiva::z("John"),
stáří: 27,
je_student: skutečný,
};// vytiskne pole jména a věku struktury
println!("Název: {}", osoba.jméno);
println!("Věk: {}", osoba.věk);// upravte pole is_student
osoba.je_studentem = Nepravdivé;
println!("Je student: {}", osoba.je_studentem);
}
Program vytvoří strukturu, vytvoří instanci struktury, vytiskne ji název, a stáří pole a upravuje je_student pole před tiskem pole.
Deklarace metod pro konstrukce
Na rozdíl od struktury v C, můžete definovat metody na strukturách Rust, které fungují na instanci. Metody jsou funkce, které pro přístup a úpravu berou odkaz na strukturu. Tečkovou notaci můžete také použít k volání metod struktury a přístupu k jejich funkčnosti.
Zde je návod, jak můžete deklarovat metody pro struktury a používat tyto metody k provádění operací:
strukturovatOsoba {
název: Tětiva,
stáří: u8,
je_student: bool,
}impl Osoba {
fnŘekni Ahoj(&já) {
println!("Dobrý den, jmenuji se {} a je mi {} let.", já.název,
já.stáří);
}fnmít_narozeniny(&mutjá) {
já.věk += 1;
}
}fnhlavní() {
nechatmut osoba = Osoba {
název: Tětiva::z("John"),
stáří: 27,
je_student: skutečný,
};person.say_hello();
person.have_birthday();
println!("Nová doba: {}", osoba.věk);
}
Program definuje dvě metody pro Osoba strukturovat. The Řekni Ahoj metoda bere odkaz na já a vytiskne pozdrav, který obsahuje jméno a věk dané osoby. The mít_narozeniny metoda přebírá proměnlivý odkaz já a zvyšuje věk osoby.
Rust’s Ownership Model optimalizuje správu paměti
Struktury jsou všestranné datové struktury, které fungují jako jakýsi ekvivalent minimální třídy.
Stejně jako u jiných datových struktur Rust byste při práci s proměnnými struct měli dodržovat pravidla vlastnictví Rust. Model vlastnictví zajišťuje efektivní správu paměti ve vašich programech a předchází běžným problémům, jako jsou nulové a visící ukazatele.