An answer to What is the difference between &Trait and impl Trait when used as method arguments? states:
If the actual type of your object only becomes known at runtime, this is the only version you can use, since you need to use dynamic dispatch
When would you not know the type at compile time? Seeing as the Rust compiler checks if a type meets the trait with &T1
, wouldn't it also know its concrete type?