Αναγνώστες σαν εσάς βοηθούν στην υποστήριξη του MUO. Όταν κάνετε μια αγορά χρησιμοποιώντας συνδέσμους στον ιστότοπό μας, ενδέχεται να κερδίσουμε μια προμήθεια θυγατρικών. Διαβάστε περισσότερα.

Ένα βασικό χαρακτηριστικό που κάνει το Rust ισχυρό και πιο ελκυστικό είναι η υποστήριξή του για δομές. Οι δομές είναι σύνθετοι τύποι δεδομένων για ομαδοποίηση σχετικών δεδομένων. Σας επιτρέπουν να ορίζετε προσαρμοσμένους τύπους δεδομένων με επώνυμα πεδία που βελτιώνουν την οργάνωση κώδικα και διευκολύνουν τον χειρισμό δεδομένων.

Μπορείτε να χρησιμοποιήσετε structs για να αναπαραστήσετε διάφορα αντικείμενα, συμπεριλαμβανομένων τύπων δεδομένων και διαμορφώσεων που ορίζονται από το χρήστη. Οι δομές είναι πιο ευέλικτες από πολλές άλλες δομές δεδομένων. Η ικανότητά τους να ενθυλακώνουν σχετικά δεδομένα τα καθιστά χρήσιμα καθώς δημιουργούν ένα πιο λογικό μοντέλο αντικειμένων του πραγματικού κόσμου.

Καθορισμός δομών και πεδίων δομών

Θα ορίσετε μια δομή χρησιμοποιώντας το struct λέξη-κλειδί ακολουθούμενη από ένα όνομα για τη δομή. Ακολουθήστε αυτό καθορίζοντας τα ονόματα των πεδίων της δομής και τους

instagram viewer
Τύποι δεδομένων σκουριάς μέσα σε ένα ζευγάρι σγουρά τιράντες.

structΠρόσωπο {
όνομα: Σειρά,
ηλικία: u8,
is_student: bool,
}

Αυτό Πρόσωπο Η δομή έχει τρία πεδία. ο όνομα πεδίο είναι μια χορδή, το ηλικία Το πεδίο είναι ένας ανυπόγραφος ακέραιος αριθμός 8 bit και το είναι_φοιτητής Το πεδίο είναι boolean.

Μπορείτε να χρησιμοποιήσετε κυριολεκτικά struct για να δημιουργήσετε στιγμιότυπα δομής μετά τον ορισμό της δομής. Τα κυριολεκτικά δομών καθορίζουν τις τιμές των πεδίων μιας δομής.

αφήνω άτομο = Άτομο {
όνομα: Σειρά::από("Γιάννης"),
ηλικία: 27,
is_student: αληθής,
};

ο πρόσωπο η μεταβλητή είναι ένα παράδειγμα του Πρόσωπο struct, που δημιουργήθηκε με struct literal. Αυτό το κυριολεκτικό στιγμιότυπο όλων των πεδίων της δομής με τιμές του αντίστοιχου τύπου δεδομένων τους.

Χρήση κατασκευαστών για τη δημιουργία δομών

Μπορείτε επίσης να χρησιμοποιήσετε μια συνάρτηση κατασκευαστή για να δημιουργήσετε μια παρουσία μιας δομής.

υπονοώ Άτομο {
// Ορίστε μια συνάρτηση κατασκευής «new» που παίρνει «όνομα», «ηλικία» και
// Παράμετροι `is_student`
στνέος(όνομα: Σειρά, ηλικία: u8, is_student: bool) -> Εαυτός {
// Δημιουργήστε μια νέα παρουσία της δομής `Person` και αρχικοποιήστε τα πεδία της
// με τις παρεχόμενες τιμές
Εαυτός {
όνομα,
ηλικία,
είναι_φοιτητής,
}
}
}

// Καλέστε τη συνάρτηση κατασκευής «new» της δομής «Person» και εκχωρήστε το
// που προκύπτει στιγμιότυπο σε `πρόσωπο`
αφήνω άτομο = Πρόσωπο:: νέο(Σειρά::από("Γιάννης"), 27, αληθής);

Το παραπάνω πρόγραμμα ορίζει έναν κατασκευαστή για το Πρόσωπο struct με το υπονοώ λέξη-κλειδί. ο νέος Ο κατασκευαστής λαμβάνει τα πεδία struct ως ορίσματα και επιστρέφει μια νέα παρουσία της δομής με τις αρχικοποιημένες τιμές.

Μπορείτε να δημιουργήσετε ένα Πρόσωπο παράδειγμα με το νέος κατασκευαστή, περνώντας του κατάλληλα ορίσματα.

Πρόσβαση και τροποποίηση πεδίων δομής

Μπορείτε να αποκτήσετε πρόσβαση και να τροποποιήσετε τα πεδία δομής χρησιμοποιώντας έναν συμβολισμό κουκκίδων. Χρησιμοποιείτε απλώς την τελεία (.) τελεστής ακολουθούμενος από το όνομα του πεδίου για πρόσβαση ή αλλαγή της τιμής του.

// Δηλώστε μια δομή Person
structΠρόσωπο {
όνομα: Σειρά,
ηλικία: u8,
is_student: bool,
}

στκύριος() {
// στιγμιότυπο μιας δομής
αφήνωmut άτομο = Άτομο {
όνομα: Σειρά::από("Γιάννης"),
ηλικία: 27,
is_student: αληθής,
};

// εκτυπώστε τα πεδία ονόματος και ηλικίας της δομής
println!("Ονομα: {}", person.name);
println!("Ηλικία: {}", άτομο.ηλικία);

// τροποποιήστε το πεδίο is_student
άτομο.είναι_μαθητής = ψευδής;

println!("Είναι μαθητής: {}", person.is_student);
}

Το πρόγραμμα δημιουργεί μια δομή, δημιουργεί στιγμιότυπο της δομής, εκτυπώνει την όνομα, και ηλικία πεδία και τροποποιεί το είναι_φοιτητής πριν από την εκτύπωση του πεδίου.

Δήλωση Μεθόδων για Δομές

Διαφορετικός κατασκευάζει σε C, μπορείτε να ορίσετε μεθόδους σε δομές Rust που λειτουργούν σε μια παρουσία. Οι μέθοδοι είναι συναρτήσεις που λαμβάνουν αναφορά σε μια δομή για πρόσβαση και τροποποίηση. Μπορείτε επίσης να χρησιμοποιήσετε τον συμβολισμό κουκκίδων για να καλέσετε τις μεθόδους μιας δομής και να αποκτήσετε πρόσβαση στη λειτουργικότητά τους.

Δείτε πώς μπορείτε να δηλώσετε μεθόδους για δομές και να χρησιμοποιήσετε αυτές τις μεθόδους για να εκτελέσετε λειτουργίες:

structΠρόσωπο {
όνομα: Σειρά,
ηλικία: u8,
is_student: bool,
}

υπονοώ Άτομο {
στπες γεια(&εαυτός) {
println!("Γεια σας, με λένε {} και είμαι {} χρονών.", εαυτός.όνομα,
εαυτός.ηλικία);
}

στέχουν_γενέθλια(&mutεαυτός) {
εαυτός.ηλικία += 1;
}
}

στκύριος() {
αφήνωmut άτομο = Άτομο {
όνομα: Σειρά::από("Γιάννης"),
ηλικία: 27,
is_student: αληθής,
};

person.say_hello();

person.have_birthday();

println!("Νέα εποχή: {}", άτομο.ηλικία);
}

Το πρόγραμμα ορίζει δύο μεθόδους για το Πρόσωπο struct. ο πες γεια μέθοδος λαμβάνει μια αναφορά σε εαυτός και εκτυπώνει έναν χαιρετισμό που περιλαμβάνει το όνομα και την ηλικία του ατόμου. ο έχουν_γενέθλια μέθοδος παίρνει μια μεταβλητή αναφορά σε εαυτός και αυξάνει την ηλικία του ατόμου.

Το μοντέλο ιδιοκτησίας της Rust βελτιστοποιεί τη διαχείριση της μνήμης

Οι δομές είναι ευέλικτες δομές δεδομένων, που λειτουργούν ως ένα είδος ισοδύναμου ελάχιστης κλάσης.

Όπως και με άλλες δομές δεδομένων Rust, θα πρέπει να ακολουθείτε τους κανόνες ιδιοκτησίας του Rust όταν εργάζεστε με μεταβλητές δομής. Το μοντέλο ιδιοκτησίας διασφαλίζει ότι διαχειρίζεστε αποτελεσματικά τη μνήμη στα προγράμματά σας, αποτρέποντας κοινά ζητήματα όπως μηδενικούς δείκτες και κρεμαστούς δείκτες.