#![feature(type_alias_impl_trait)] // edition:2021 // compile-flags: --crate-type=lib use std::future::Future; trait Bar { fn bar(&self); } type FooFuture = impl Future; fn foo(bar: B) -> FooFuture { async move { bar.bar() } //~^ ERROR: the trait bound `B: Bar` is not satisfied } pub fn mainish(ctx: &mut std::task::Context) { let boom: FooFuture = unsafe { core::mem::zeroed() }; Box::pin(boom).as_mut().poll(ctx); }