Η Rust υποστηρίζει τον πολυμορφισμό με τα traits. Τα traits μάς επιτρέπουν να συσχετίσουμε μία σειρά μεθόδων με έναν τύπο δομής.
Πρώτα ορίζουμε τις υπογραφές των μεθόδων ενός trait:
trait MyTrait {
fn foo(&self);
...
}
Όταν μία δομή υλοποιεί ένα trait, καθιερώνεται ένα συμβόλαιο που μάς επιτρέπει ν' αλληλεπιδρούμε έμμεσα με τη δομή μέσω του τύπου trait (π.χ. &dyn MyTrait), χωρίς να χρειάζεται να γνωρίζουμε τον πραγματικό τύπο.
Οι μέθοδοι ενός trait που υλοποιούνται από μία δομή ορίζονται μέσα σε ένα μπλοκ υλοποίησης:
impl MyTrait for MyStruct {
fn foo(&self) {
...
}
...
}