fn call_it(f: F) where F: Fn() { f(); } struct A; impl A { fn gen(&self) {} fn gen_mut(&mut self) {} } fn main() { let mut x = A; call_it(|| { call_it(|| x.gen()); call_it(|| x.gen_mut()); //~^ ERROR cannot borrow `x` as mutable, as it is a captured variable in a `Fn` closure //~| ERROR cannot borrow `x` as mutable, as it is a captured variable in a `Fn` closure }); }