fn a isize>(mut f: F) { let g = &mut f; f(1, 2); //~ ERROR cannot borrow `f` as immutable use_mut(g); } fn b isize>(f: F) { f(1, 2); //~ ERROR cannot borrow `f` as mutable, as it is not declared as mutable } fn c isize>(f: F) { f(1, 2); f(1, 2); //~ ERROR use of moved value } fn main() {} fn use_mut(_: &mut T) { }