Dyn-Compatible Async Traits in Rust: Why the Manual Boxed Future Idiom is Required

Pin<Box<dyn Future + Send>> in Traits - Why the Manual Desugar? Context When a Rust trait needs async methods and must be usable as a trait object ( Box<dyn Trait> , &dyn Trait , Arc<dyn Trait> ), you cannot just write async fn and move on. async fn in traits returns an opaque impl Future whose concrete type differs per implementation - which breaks vtable dispatch. The compiler&#x27;s own…