pub static CLOSURE_RETURNING_ASYNC_BLOCK: &Lint
Expand description
The closure_returning_async_block
lint detects cases where users
write a closure that returns an async block.
§Example
#![warn(closure_returning_async_block)]
let c = |x: &str| async {};
{{produces}}
§Explanation
Using an async closure is preferable over a closure that returns an async block, since async closures are less restrictive in how its captures are allowed to be used.
For example, this code does not work with a closure returning an async block:
ⓘ
async fn callback(x: &str) {}
let captured_str = String::new();
let c = move || async {
callback(&captured_str).await;
};
But it does work with async closures:
#![feature(async_closure)]
async fn callback(x: &str) {}
let captured_str = String::new();
let c = async move || {
callback(&captured_str).await;
};