Structs
Como C e C++, Rust tem suporte para structs
personalizadas:
struct Person { name: String, age: u8, } fn main() { let mut peter = Person { name: String::from("Pedro"), age: 27, }; println!("{} tem {} anos.", peter.name, peter.age); peter.age = 28; println!("{} tem {} anos.", peter.name, peter.age); let jackie = Person { name: String::from("Jackie"), ..peter }; println!("{} tem {} anos.", jackie.name, jackie.age); }
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
- Os métodos são definidos em um bloco
impl
, que veremos nos próximos slides. - 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 uma característica em algum tipo, mas não possuem nenhum dado que você deseja armazenar nelas. - O próximo slide apresentará as estruturas tuplas (Estruturas Tupla) usadas quando o nome dos campos não são importantes.
- Structs de tamanho zero
- A sintaxe
..pedro
permite copiar a maioria dos campos de uma struct sem precisar explicitar seus tipos. Sempre deve ser o último elemento.