#![feature(unboxed_closures)] use std::future::Future; fn foo(_: F) where F: for<'a> FnMut<(&'a mut S,)>, F::Output: Future, {}