Rust permite el polimorfismo con traits. Los traits nos permiten asociar un conjunto de métodos con una estructura.
Primero definimos las especificaciones de los métodos en un trait:
trait MyTrait {
fn foo(&self);
...
}
Cuando una estructura implementa un trait, establece un contrato que nos permite interactuar indirectamente con la estructura a través del Trait (e.g. &dyn MyTrait
) sin tener que conocer el tipo real.
Los métodos de traits implementados en una estructura se definen dentro de un bloque de implementación:
impl MyTrait for MyStruct {
fn foo(&self) {
...
}
...
}