Trait objects dyn Trait enable dynamic dispatch—store different types behind one pointer when sizes differ. Trade runtime vtable cost for flexibility.
Example
let shapes: Vec<Box<dyn Drawable>> = vec![...];
Important interview questions and answers
- Q: dyn Trait vs generic bound?
A: Generics static dispatch at compile time; trait objects dynamic dispatch at runtime.
Self-check
- What does
Box<dyn Trait>enable? - When prefer generics over trait objects?
Interview prep
- dyn Trait vs generics?
Generics use static dispatch at compile time;
dyn Traituses dynamic dispatch at runtime via vtables.