| //@ edition:2018 | |
| #![feature(must_not_suspend)] | |
| #![allow(must_not_suspend)] | |
| use std::future::Future; | |
| use std::sync::Mutex; | |
| fn fake_spawn<F: Future + Send + 'static>(f: F) { } | |
| async fn wrong_mutex() { | |
| let m = Mutex::new(1); | |
| { | |
| let mut guard = m.lock().unwrap(); | |
| (async { "right"; }).await; | |
| *guard += 1; | |
| } | |
| (async { "wrong"; }).await; | |
| } | |
| fn main() { | |
| fake_spawn(wrong_mutex()); //~ ERROR future cannot be sent between threads safely | |
| } |