Čtenáři jako vy pomáhají podporovat MUO. Když provedete nákup pomocí odkazů na našich stránkách, můžeme získat provizi přidružené společnosti. Přečtěte si více.

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) -> {
// Vytvořte novou instanci struktury `Person` a inicializujte její pole
// se zadanými hodnotami
{
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(&) {
println!("Dobrý den, jmenuji se {} a je mi {} let.", .název,
.stáří);
}

fnmít_narozeniny(&mut) {
.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 a vytiskne pozdrav, který obsahuje jméno a věk dané osoby. The mít_narozeniny metoda přebírá proměnlivý odkaz 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.