Іменовані структури
Подібно до C і C++, Rust підтримує користувальницькі структури:
struct Person { name: String, age: u8, } fn describe(person: &Person) { println!("{} віком {} років", person.name, person.age); } fn main() { let mut peter = Person { name: String::from("Peter"), age: 27 }; describe(&peter); peter.age = 28; describe(&peter); let name = String::from("Avery"); let age = 39; let avery = Person { name, age }; describe(&avery); let jackie = Person { name: String::from("Jackie"), ..avery }; describe(&jackie); }
This slide should take about 10 minutes.
Ключові моменти:
- Структури працюють як у C або C++.
- Як і в C++, і на відміну від C, для визначення типу не потрібен typedef.
- На відміну від C++, між структурами немає успадкування.
- Це може бути вдалий час, щоб повідомити людям, що існують різні типи структур.
- Структури нульового розміру (наприклад,
struct Foo;
) можуть бути використані при реалізації трейту на якомусь типі, але не мають даних, які ви хочете зберігати у самому значенні. - На наступному слайді буде представлено структури кортежу, які використовуються, коли імена полів не важливі.
- Структури нульового розміру (наприклад,
- Якщо у вас уже є змінні з правильними іменами, ви можете створити структуру за допомогою скорочення:
- Синтаксис
..avery
дозволяє нам скопіювати більшість полів зі старої структури без необхідності явного введення всіх полів. Це завжди має бути останнім елементом.