2024-01-25 17:43:35 +00:00
|
|
|
//@ edition:2021
|
|
|
|
|
2024-11-04 18:59:57 +00:00
|
|
|
fn needs_async_fn(_: impl AsyncFn()) {}
|
2024-01-25 17:43:35 +00:00
|
|
|
|
2024-04-01 18:47:12 +00:00
|
|
|
fn a() {
|
2024-01-25 17:43:35 +00:00
|
|
|
let mut x = 1;
|
|
|
|
needs_async_fn(async || {
|
2024-04-01 18:47:12 +00:00
|
|
|
//~^ ERROR cannot borrow `x` as mutable, as it is a captured variable in a `Fn` closure
|
2024-01-25 17:43:35 +00:00
|
|
|
x += 1;
|
|
|
|
});
|
2024-04-01 18:47:12 +00:00
|
|
|
}
|
2024-02-26 01:36:08 +00:00
|
|
|
|
2024-04-01 18:47:12 +00:00
|
|
|
fn b() {
|
2024-02-26 01:36:08 +00:00
|
|
|
let x = String::new();
|
|
|
|
needs_async_fn(move || async move {
|
2024-11-04 18:59:57 +00:00
|
|
|
//~^ ERROR expected a closure that implements the `AsyncFn` trait, but this closure only implements `AsyncFnOnce`
|
2024-02-26 01:36:08 +00:00
|
|
|
println!("{x}");
|
|
|
|
});
|
2024-01-25 17:43:35 +00:00
|
|
|
}
|
2024-04-01 18:47:12 +00:00
|
|
|
|
|
|
|
fn main() {}
|