Асоційовані типи
Асоціативні типи - це типи-заповнювачі, які надаються реалізацією трейту.
#[derive(Debug)] struct Meters(i32); #[derive(Debug)] struct MetersSquared(i32); trait Multiply { type Output; fn multiply(&self, other: &Self) -> Self::Output; } impl Multiply for Meters { type Output = MetersSquared; fn multiply(&self, other: &Self) -> Self::Output { MetersSquared(self.0 * other.0) } } fn main() { println!("{:?}", Meters(10).multiply(&Meters(20))); }
-
Асоціативні типи іноді також називають "вихідними типами". Ключовим зауваженням є те, що цей тип вибирає реалізатор, а не той, хто його викликає.
-
Багато стандартних бібліотечних трейтів мають асоційовані типи, включаючи арифметичні оператори та
Iterator
.