Simplify E0373 async code example

This commit is contained in:
1000teslas 2021-01-15 16:50:48 +11:00
parent 63deae5e25
commit 5468d9805a

View File

@ -54,35 +54,18 @@ about safety.
This error may also be encountered while using `async` blocks:
```compile_fail,E0373,edition2018
use std::{sync::Arc, future::Future, pin::Pin, task::{Context, Poll}};
use std::future::Future;
async fn f() {
let v = Arc::new(Vec::new());
let handle = spawn(async { //~ ERROR E0373
g(Arc::clone(&v))
let v = vec![1, 2, 3i32];
spawn(async { //~ ERROR E0373
println!("{:?}", v)
});
handle.await;
}
fn g(v: Arc<Vec<usize>>) {}
fn spawn<F>(future: F) -> JoinHandle
where
F: Future + Send + 'static,
F::Output: Send + 'static,
{
fn spawn<F: Future + Send + 'static>(future: F) {
unimplemented!()
}
struct JoinHandle;
impl Future for JoinHandle {
type Output = ();
fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
unimplemented!()
}
}
```
Similarly to closures, `async` blocks are not executed immediately and may