Traits play the role of interfaces, and are used both as generic bounds (T: Display, static dispatch) and as trait objects (dyn Display, dynamic dispatch). Unlike Go interfaces, a type must explicitly impl a trait.