Cititorii ca tine ajută la sprijinirea MUO. Când efectuați o achiziție folosind link-uri de pe site-ul nostru, este posibil să câștigăm un comision de afiliat. Citeşte mai mult.

O caracteristică cheie care face ca Rust să fie puternic și mai atrăgător este suportul pentru structuri. Structurile sunt tipuri de date compuse pentru gruparea datelor asociate. Acestea vă permit să definiți tipuri de date personalizate cu câmpuri denumite care îmbunătățesc organizarea codului și ușurează manipularea datelor.

Puteți utiliza structuri pentru a reprezenta diferite obiecte, inclusiv tipuri de date și configurații definite de utilizator. Structurile sunt mai flexibile decât multe alte structuri de date. Capacitatea lor de a încapsula datele conexe le face utile, deoarece creează un model mai logic al obiectelor din lumea reală.

Definirea structurilor și câmpurilor de structuri

Veți defini o structură folosind struct cuvânt cheie urmat de un nume pentru structura. Urmați acest lucru specificând numele câmpurilor structurii și ale acestora

instagram viewer
Tipuri de date Rugină în interiorul unei perechi de bretele.

structPersoană {
Nume: Şir,
vârstă: u8,
is_student: bool,
}

Acest Persoană struct are trei câmpuri. The Nume câmpul este un șir, the vârstă câmpul este un număr întreg nesemnat de 8 biți și este_student câmpul este boolean.

Puteți utiliza literali struct pentru a crea instanțe struct după definiția structurii. Literale de structură specifică valorile câmpurilor unei structuri.

lăsa persoană = Persoană {
Nume: Şir::din("Ioan"),
vârstă: 27,
is_student: Adevărat,
};

The persoană variabila este o instanță a Persoană struct, creat cu un struct literal. Acest literal instanțiază toate câmpurile structurii cu valori ale tipului lor de date corespunzător.

Utilizarea constructorilor pentru a crea structuri

De asemenea, puteți utiliza o funcție de constructor pentru a crea o instanță a unei structuri.

impl Persoana {
// Definiți o funcție de constructor `new` care preia `name`, `age` și
// Parametrii `is_student`
fnnou(Nume: Şir, varsta: u8, is_student: bool) -> De sine {
// Creați o nouă instanță a structurii `Person` și inițializați câmpurile acesteia
// cu valorile furnizate
De sine {
Nume,
vârstă,
este_student,
}
}
}

// Apelați funcția constructor `new` a structurii `Person` și atribuiți
// instanță rezultată la `persoană`
lăsa persoana = Persoana:: nou(Şir::din("Ioan"), 27, Adevărat);

Programul de mai sus definește un constructor pentru Persoană struct cu impl cuvânt cheie. The nou constructorul preia câmpurile struct drept argumente și returnează o nouă instanță a structurii cu valorile inițializate.

Puteți crea un Persoană exemplu cu nou constructor, transmițându-i argumentele corespunzătoare.

Accesarea și modificarea câmpurilor de structură

Puteți accesa și modifica câmpurile struct folosind o notație cu puncte. Pur și simplu folosești punctul (.) urmat de numele câmpului pentru a accesa sau modifica valoarea acestuia.

// declară o structură Person
structPersoană {
Nume: Şir,
vârstă: u8,
is_student: bool,
}

fnprincipal() {
// instanțiază o structură
lăsamut persoană = Persoană {
Nume: Şir::din("Ioan"),
vârstă: 27,
is_student: Adevărat,
};

// imprimă câmpurile de nume și vârstă ale structurii
println!("Nume: {}", persoana.nume);
println!(„Vârsta: {}”, persoana.varsta);

// modifică câmpul is_student
persoana.este_student = fals;

println!(„Este student: {}”, persoana.este_student);
}

Programul creează un struct, instanțiază structura, tipărește Nume, și vârstă câmpurile și modifică este_student câmp înainte de tipărirea câmpului.

Declararea metodelor pentru structuri

Spre deosebire de structuri în C, puteți defini metode pe structurile Rust care operează pe o instanță. Metodele sunt funcții care preiau o referință la o structură pentru acces și modificare. De asemenea, puteți utiliza notația cu puncte pentru a apela metodele unei structuri și pentru a accesa funcționalitatea acestora.

Iată cum puteți declara metode pentru structuri și utilizați acele metode pentru a efectua operațiuni:

structPersoană {
Nume: Şir,
vârstă: u8,
is_student: bool,
}

impl Persoana {
fnspune buna(&de sine) {
println!(„Bună ziua, mă numesc {} și am {} ani.”, de sine.Nume,
de sine.vârstă);
}

fnau_zi de naștere(&mutde sine) {
de sine.varsta += 1;
}
}

fnprincipal() {
lăsamut persoană = Persoană {
Nume: Şir::din("Ioan"),
vârstă: 27,
is_student: Adevărat,
};

persoană.spune_bună ();

persoană.au_zi de naștere();

println!("Noua era: {}", persoana.varsta);
}

Programul definește două metode pentru Persoană struct. The spune buna metoda face referire la de sine și tipărește un salut care include numele și vârsta persoanei. The au_zi de naștere metoda ia o referință mutabilă la de sine și crește vârsta persoanei.

Modelul de proprietate al lui Rust optimizează gestionarea memoriei

Structurile sunt structuri de date versatile, acționând ca un fel de echivalent de clasă minimă.

Ca și în cazul altor structuri de date Rust, ar trebui să urmați regulile de proprietate ale Rust atunci când lucrați cu variabile struct. Modelul de proprietate asigură gestionarea eficientă a memoriei în programele dvs., prevenind probleme obișnuite, cum ar fi pointerii nuli și suspendați.