Estructuras (Structs)
Al igual que C y C++, Rust admite estructuras (struct) personalizadas:
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); }
Puntos Clave:
- Las estructuras funcionan como en C o en C++.
- Al igual que en C++, y a diferencia de C, no se necesita typedef para definir un tipo.
- A diferencia de C++, no existe ninguna herencia entre las estructuras.
- Los métodos están definidos en un bloque
impl
que veremos en las siguientes diapositivas. - Puede que sea un buen momento para indicar a los alumnos que existen diferentes tipos de estructuras.
- Las estructuras de tamaño cero, como
struct Foo;
, se pueden utilizar al implementar un trait en algún tipo, pero no tienen ningún dato que te interese almacenar en el propio valor. - La siguiente diapositiva presentará las estructuras de tuplas, que se utilizan cuando los nombres de los campos no son importantes.
- Las estructuras de tamaño cero, como
- La sintaxis
..peter
nos permite copiar la mayoría de los campos de la estructura anterior sin tener que escribirlos explícitamente. Siempre debe ser el último elemento.