//@ edition:2018 #![feature(must_not_suspend)] #![allow(must_not_suspend)] use std::future::Future; use std::sync::Mutex; fn fake_spawn(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 }