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
}