use async_trait_fn::async_trait; pub struct Struct; #[async_trait] pub trait Trait { async fn f((_a, _b): (Struct, Struct)) { // Expands to something like: // // fn f(__arg0: (Struct, Struct)) -> … { // Box::pin(async move { // let (_a, _b) = __arg0; // … // }) // } // // but user's code must not be allowed to name that temporary argument: let _ = __arg0; } } fn main() {}