2020-04-16 10:14:11 -05:00
|
|
|
// edition:2018
|
2021-10-12 11:10:05 -05:00
|
|
|
#![feature(must_not_suspend)]
|
|
|
|
#![allow(must_not_suspend)]
|
2020-04-16 10:14:11 -05:00
|
|
|
|
|
|
|
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
|
|
|
|
}
|