What is a Trait?
In Rust, types containing data - structs, enums and any other 'aggregate' types like tuples and arrays - are dumb. They may have methods but that is just a convenience; they are just functions. Types have no relationship with each other.
Traits are the abstract mechanism for adding functionality to types and establishing relationships between them.