use std::ops::AddAssign; #[derive(Clone)] struct Int(i32); impl AddAssign for Int { fn add_assign(&mut self, _: Int) { unimplemented!() } } fn main() { let mut x = Int(1); //~ NOTE binding `x` declared here x //~^ NOTE borrow of `x` occurs here += x; //~^ ERROR cannot move out of `x` because it is borrowed //~| move out of `x` occurs here let y = Int(2); //~^ HELP consider changing this to be mutable //~| SUGGESTION mut y //~ ERROR cannot borrow `y` as mutable, as it is not declared as mutable //~| cannot borrow as mutable += Int(1); }