Trait objects (dyn) — dynamic dispatch. Generics — static dispatch.
Trait objects:
Generics:
1// Trait object2fn draw(shape: &dyn Shape) {3 shape.draw();4}56// Generics7fn draw<T: Shape>(shape: &T) {8 shape.draw();9}
When to use:
Key: dyn for flexibility, generics for performance.