//@ run-pass //@ edition:2021 //@ check-run-results #![feature(dyn_star)] //~^ WARN the feature `dyn_star` is incomplete and may not be safe to use and/or cause compiler crashes #![feature(noop_waker)] use std::future::Future; async fn foo(f: dyn* Future) { println!("value: {}", f.await); } async fn async_main() { foo(Box::pin(async { 1 })).await } // ------------------------------------------------------------------------- // // Implementation Details Below... use std::pin::pin; use std::task::*; fn main() { let mut fut = pin!(async_main()); // Poll loop, just to test the future... let ctx = &mut Context::from_waker(Waker::noop()); loop { match fut.as_mut().poll(ctx) { Poll::Pending => {} Poll::Ready(()) => break, } } }