// edition:2018
// aux-build:arc_wake.rs
-#![feature(async_await)]
+#![feature(async_await, async_closure)]
extern crate arc_wake;
}
}
+fn async_closure(x: u8) -> impl Future<Output = u8> {
+ (async move |x: u8| -> u8 {
+ wake_and_yield_once().await;
+ x
+ })(x)
+}
+
async fn async_fn(x: u8) -> u8 {
wake_and_yield_once().await;
x
test! {
async_block,
async_nonmove_block,
+ async_closure,
async_fn,
generic_async_fn,
async_fn_with_internal_borrow,
}
impl Foo {
- async fn async_method(x: u8) -> u8 {
+ async fn async_assoc_item(x: u8) -> u8 {
unsafe {
await!(unsafe_async_fn(x))
}
}
+
+ async unsafe fn async_unsafe_assoc_item(x: u8) -> u8 {
+ await!(unsafe_async_fn(x))
+ }
}
fn test_future_yields_once_then_returns<F, Fut>(f: F)
async_fn,
generic_async_fn,
async_fn_with_internal_borrow,
- Foo::async_method,
+ Foo::async_assoc_item,
|x| {
async move {
unsafe { await!(unsafe_async_fn(x)) }
}
},
+ |x| {
+ async move {
+ unsafe { await!(Foo::async_unsafe_assoc_item(x)) }
+ }
+ },
}
test_with_borrow! {
async_block_with_borrow_named_lifetime,