Rust · Intermediário · Inglês · Técnico
supertrait
Trait que exige outro como requisito, declarado como trait A: B. Quem implementa A precisa implementar B, e os métodos de B ficam disponíveis a partir de A.
Onde usar
Aparece em traits como Error, que exige Debug e Display, e em designs onde um comportamento depende de outro.
Em código
trait Nomeado {
fn nome(&self) -> String;
}
trait Saudacao: Nomeado {
fn oi(&self) -> String {
format!("oi, {}", self.nome())
}
}Exemplos
Make Named a supertrait of Greeter.
Faça de Named um supertrait de Greeter.
Error has Debug and Display as supertraits.
O Error tem Debug e Display como supertraits.
Cuidado
Não é herança de implementação: o supertrait só impõe um requisito, e cada tipo implementa os dois separadamente.