// Suggest not mutably borrowing a mutable reference #![crate_type = "rlib"] pub fn f(b: &mut i32) { //~^ ERROR cannot borrow //~| NOTE not mutable //~| NOTE the binding is already a mutable borrow h(&mut b); //~^ NOTE cannot borrow as mutable //~| HELP try removing `&mut` here g(&mut &mut b); //~^ NOTE cannot borrow as mutable //~| HELP try removing `&mut` here } pub fn g(b: &mut i32) { //~ NOTE the binding is already a mutable borrow h(&mut &mut b); //~^ ERROR cannot borrow //~| NOTE cannot borrow as mutable //~| HELP try removing `&mut` here } pub fn h(_: &mut i32) {} trait Foo { fn bar(&mut self); } impl Foo for &mut String { fn bar(&mut self) {} } pub fn baz(f: &mut String) { //~ HELP consider making the binding mutable f.bar(); //~ ERROR cannot borrow `f` as mutable, as it is not declared as mutable //~^ NOTE cannot borrow as mutable }