Al igual que C y C++, Rust tiene soporte para estructuras:
struct Person {
name: String,
age: u8,
}
fn main() {
let mut peter = Person {
name: String::from("Peter"),
age: 27,
};
println!("{} is {} years old", peter.name, peter.age);
peter.age = 28;
println!("{} is {} years old", peter.name, peter.age);
let jackie = Person {
name: String::from("Jackie"),
..peter
};
println!("{} is {} years old", jackie.name, jackie.age);
}
Las estructuras funcionan como en C o C++.
- Al igual que en C++, ya diferencia de C, no se necesita typedef para definir un tipo.
- A diferencia de C++, no hay herencia entre estructuras.
- Los métodos se definen en un bloque impl, que veremos más adelante.
- Este puede ser un buen momento para que la gente sepa que hay diferentes tipos de estructuras.
- Estructuras de tamaño cero, por ejemplo, struct Foo; podría usarse al implementar un rasgo en algún tipo pero no tiene ningún dato que desee almacenar en el valor mismo.
- Ls estructuras Tuple, que se utilizan cuando los nombres de los campos no son importantes.
- La sintaxis ..peter nos permite copiar la mayoría de los campos de la estructura anterior sin tener que escribirlos todos explícitamente. Siempre debe ser el último elemento.