Derivación de Traits
Los traits compatibles se pueden implementar de forma automática en los tipos personalizados de la siguiente manera:
#[derive(Debug, Clone, Default)]
struct Player {
name: String,
strength: u8,
hit_points: u8,
}
fn main() {
let p1 = Player::default(); // El trait predeterminado añade el constructor `default`.
let mut p2 = p1.clone(); // El trait clonado añade el método `clone`.
p2.name = String::from("EldurScrollz");
// El trait Debug permite que sea compatible con imprimir con `{:?}`.
println!("{:?} contra {:?}", p1, p2);
}
This slide should take about 3 minutes.
La derivación se implementa con macros y muchos crates ofrecen macros de derivación útiles para añadir funciones. Por ejemplo, serde puede derivar la compatibilidad con la serialización para una struct con #[derive(Serialize)].