Rust supporta il polimorfismo con i tratti. I tratti ci permettono di associare un insieme di metodi con un tipo struct.
Per prima cosa definiamo le firme dei metodi di un tratto all'interno di:
trait MiaCaratteristica {
fn foo(&self);
...
}
Quando una struttura implementa un tratto, stabilisce un contratto che ce lo consente per interagire indirettamente con la struttura
attraverso il tipo di tratto (ad esempio &dyn MyTrait
) senza dover conoscere il reale tipo.
I metodi dei tratti implementati di una struttura sono definiti all'interno di un'implementazione bloccare:
impl MiaCaratteristica per MiaStruttura {
fn foo(&self) {
...
}
...
}