Tipos Associados
Tipos associados são tipos de espaço reservado que são fornecidos pela implementação do trait.
#[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))); }
-
Os tipos associados sĂŁo Ă s vezes tambĂ©m chamados de "tipos de saĂda". A observação chave Ă© que o implementador, e nĂŁo o chamador, escolhe esse tipo.
-
Muitos traits da biblioteca padrĂŁo tĂȘm tipos associados, incluindo operadores aritmĂ©ticos e
Iterator
.