Traits
Un trait est une interface abstraite que des types peuvent implémenter (en gros c'est une liste de méthodes).
Pouvoir être additionné
On peut additionner des i32
. Le type i32
implémente le trait Add
.
#![allow(unused)] fn main() { struct Point { x: i32; y: i32; } impl Add for Point { type Output = Self; fn add(self, other: Self) -> Self::Output { x: self.x + other.x, y: self.y + other.y, } } println!({}, Point { x: 1, y: 0 } + Point { x: 2, y: 3 }); }
En fait, on peut "dériver" que implémenter le trait Add
se fait en utilisant le trait Add
déjà implémenté sur chaque champ :
#![allow(unused)] fn main() { #[derive(Add)] struct Point2D { x: i32, y: i32, } }
Définir un trait
p. 75