O Rust suporta o polimorfismo com traits. As traits nos permitem associar um conjunto de métodos a um tipo struct.
Primeiro definimos as assinaturas dos métodos de uma trait internamente:
trait MinhaTrait {
fn foo(&self);
...
}
Quando uma estrutura implementa uma trait, ela estabelece um contrato que nos permite interagir indiretamente com a struct por meio do tipo da trait (por exemplo, &dyn MinhaTrait
) sem precisar conhecer o tipo real.
Os métodos da trait implementados na struct são definidos dentro de um bloco de implementação:
impl MinhaTrait for MinhaStruct {
fn foo(&self) {
...
}
...
}