Rust Traits

Traits define shared behavior across types. Generic trait bounds usually use static dispatch, while trait objects such as dyn Trait use dynamic dispatch when runtime polymorphism is needed.