Pour faire simple:
Un trait, Rust, pourrait être aisément comparé à une interface en Java.
C'est une structure abstraite qui peut être appliquée à une structure "concrète" pouvant, elle, créer des instances d'elle-même.
Qui dit structure abstraite dit forcément méthode abstraite:
trait Your_interface
{
fn do_something() -> ();
}