// run-rustfix // edition: 2021 #![feature(async_fn_in_trait, return_position_impl_trait_in_trait)] #![allow(unused)] trait Foo { fn test() -> impl std::future::Future + Send { async {} } fn test2() -> impl std::future::Future + Send {async { 1 + 2 } } } fn bar() { fn needs_send(_: impl Send) {} needs_send(T::test()); //~^ ERROR `impl Future` cannot be sent between threads safely needs_send(T::test2()); //~^ ERROR `impl Future` cannot be sent between threads safely } fn main() {}