impl Trait — static dispatch. dyn Trait — dynamic dispatch.
impl Trait:
dyn Trait:
1// impl Trait2fn get_greeting(name: &str) -> impl std::fmt::Display {3 format!("Hello, {}!", name)4}56// dyn Trait7fn get_greeting(name: &str) -> Box<dyn std::fmt::Display> {8 Box::new(format!("Hello, {}!", name))9}
When to use:
Key: impl for static, dyn for dynamic.