Dynamic Dispatch
Box <dyn Printable> enable dynamic dispatch without the need for runtime type information.
trait Printable {
fn print(&self);
}
struct Base;
struct Derived;
impl Printable for Base {
fn print(&self) {
println!("Base");
}
}
impl Printable for Derived {
fn print(&self) {
println!("Derived");
}
}
fn main() {
let base: Box<dyn Printable> = Box::new(Derived);
base.print(); // Dynamic dispatch without RTTI
}