struct Struct; impl Struct { fn bar(self: &mut Self) { //~^ WARN function cannot return without recursing //~^^ HELP a `loop` may express intention better if this is on purpose (&mut self).bar(); //~^ ERROR cannot borrow `self` as mutable, as it is not declared as mutable [E0596] //~^^ HELP try removing `&mut` here } fn imm(self) { //~ HELP consider changing this to be mutable (&mut self).bar(); //~^ ERROR cannot borrow `self` as mutable, as it is not declared as mutable [E0596] } fn mtbl(mut self) { (&mut self).bar(); } fn immref(&self) { (&mut self).bar(); //~^ ERROR cannot borrow `self` as mutable, as it is not declared as mutable [E0596] //~^^ ERROR cannot borrow data in a `&` reference as mutable [E0596] } fn mtblref(&mut self) { (&mut self).bar(); //~^ ERROR cannot borrow `self` as mutable, as it is not declared as mutable [E0596] //~^^ HELP try removing `&mut` here } } fn main() {}