Rust · Intermediário · Português · Técnico
tipo associado
Tipo declarado dentro de um trait, como Item em Iterator, que cada implementação define. Evita um parâmetro genérico a mais e deixa as assinaturas mais curtas.
Onde usar
Aparece em Iterator::Item, Add::Output e Deref::Target. Cada tipo implementa o trait uma só vez, escolhendo o seu tipo associado.
Em código
trait Fonte {
type Item;
fn pega(&self) -> Self::Item;
}
impl Fonte for i32 {
type Item = bool;
fn pega(&self) -> bool { *self > 0 }
}Exemplos
O Item do Iterator é um tipo associado.
Usei um tipo associado para não poluir a assinatura.
Cuidado
Não é o mesmo que um parâmetro genérico do trait: com tipo associado só existe uma implementação por tipo.
Sinônimos
associated type