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.
- The syntax
..avery
allows us to copy the majority of the fields from the old struct without having to explicitly type it all out. It must always be the last element.