Structs (Estruturas) Nomeadas
Como C e C++, Rust tem suporte para structs
personalizadas:
struct Person { name: String, age: u8, } fn describe(person: &Person) { println!("{} tem {} anos.", 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.
Pontos Chave:
- Structs funcionam como em C ou C++.
- Como em C++, e ao contrĂĄrio de C, nenhum
typedef
é necessårio para definir um tipo. - Ao contrårio do C++, não hå herança entre structs.
- Como em C++, e ao contrĂĄrio de C, nenhum
- Este pode ser um bom momento para que as pessoas saibam que existem diferentes tipos de structs.
- Structs de tamanho zero (por exemplo,
struct Foo;
) podem ser usadas ao implementar um trait em algum tipo, mas nĂŁo possuem nenhum dado que vocĂȘ deseja armazenar nelas. - O prĂłximo slide apresentarĂĄ as structs de tuplas usadas quando o nome dos campos nĂŁo sĂŁo importantes.
- Structs de tamanho zero (por exemplo,
- Se vocĂȘ jĂĄ tiver variĂĄveis com os nomes corretos, poderĂĄ criar a struct usando uma abreviação.
- A sintaxe
..avery
permite copiar a maioria dos campos de uma struct sem precisar explicitar seus tipos. Ela deve ser sempre o Ășltimo elemento.