//@ check-pass | |
//@ edition: 2021 | |
trait MyTrait { | |
#[allow(async_fn_in_trait)] | |
async fn foo(&self) -> i32; | |
#[allow(async_fn_in_trait)] | |
async fn bar(&self) -> i32; | |
} | |
impl MyTrait for i32 { | |
async fn foo(&self) -> i32 { | |
*self | |
} | |
async fn bar(&self) -> i32 { | |
self.foo().await | |
} | |
} | |
fn main() { | |
let x = 5; | |
// Calling from non-async context | |
let _ = x.foo(); | |
let _ = x.bar(); | |
// Calling from async block in non-async context | |
async { | |
let _: i32 = x.foo().await; | |
let _: i32 = x.bar().await; | |
}; | |
} |