mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-12 00:24:03 +00:00
4972989b61
This catches bugs of the form tokio::spawn(async move { let f = some_async_thing(); f // Oh no I forgot to await f so that work will never complete. });
62 lines
1.1 KiB
Rust
62 lines
1.1 KiB
Rust
// run-rustfix
|
|
// edition:2018
|
|
|
|
#![feature(async_closure)]
|
|
#![warn(clippy::async_yields_async)]
|
|
|
|
use core::future::Future;
|
|
use core::pin::Pin;
|
|
use core::task::{Context, Poll};
|
|
|
|
struct CustomFutureType;
|
|
|
|
impl Future for CustomFutureType {
|
|
type Output = u8;
|
|
|
|
fn poll(self: Pin<&mut Self>, _: &mut Context) -> Poll<Self::Output> {
|
|
Poll::Ready(3)
|
|
}
|
|
}
|
|
|
|
fn custom_future_type_ctor() -> CustomFutureType {
|
|
CustomFutureType
|
|
}
|
|
|
|
#[rustfmt::skip]
|
|
fn main() {
|
|
let _f = {
|
|
3
|
|
};
|
|
let _g = async {
|
|
3
|
|
};
|
|
let _h = async {
|
|
async {
|
|
3
|
|
}.await
|
|
};
|
|
let _i = async {
|
|
CustomFutureType.await
|
|
};
|
|
let _i = async || {
|
|
3
|
|
};
|
|
let _j = async || {
|
|
async {
|
|
3
|
|
}.await
|
|
};
|
|
let _k = async || {
|
|
CustomFutureType.await
|
|
};
|
|
let _l = async || CustomFutureType.await;
|
|
let _m = async || {
|
|
println!("I'm bored");
|
|
// Some more stuff
|
|
|
|
// Finally something to await
|
|
CustomFutureType.await
|
|
};
|
|
let _n = async || custom_future_type_ctor();
|
|
}
|