Structs
Como C e C++, Rust tem suporte para structs
personalizadas:
struct Pessoa { nome: String, idade: u8, } fn main() { let mut pedro = Pessoa { nome: String::from("Pedro"), idade: 27, }; println!("{} tem {} anos.", pedro.nome, pedro.idade); pedro.idade= 28; println!("{} tem {} anos.", pedro.nome, pedro.idade); let jackie = Pessoa { nome: String::from("Jackie"), ..pedro }; println!("{} tem {} anos.", jackie.nome, jackie.idade); }
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.