28 lines
508 B
Rust
28 lines
508 B
Rust
//@ aux-build:block-on.rs
|
|
//@ run-pass
|
|
//@ check-run-results
|
|
//@ revisions: e2021 e2018
|
|
//@[e2018] edition:2018
|
|
//@[e2021] edition:2021
|
|
|
|
#![feature(async_closure)]
|
|
|
|
extern crate block_on;
|
|
|
|
async fn call_once(f: impl async FnOnce()) { f().await; }
|
|
|
|
pub async fn async_closure(x: &mut i32) {
|
|
let c = async move || {
|
|
*x += 1;
|
|
};
|
|
call_once(c).await;
|
|
}
|
|
|
|
fn main() {
|
|
block_on::block_on(async {
|
|
let mut x = 0;
|
|
async_closure(&mut x).await;
|
|
assert_eq!(x, 1);
|
|
});
|
|
}
|