struct Foo; impl Foo { fn get_self(&mut self) -> Option<&mut Self> { Some(self) } fn new_self(&mut self) -> &mut Self { self } fn trigger_bug(&mut self) { let other = &mut (&mut *self); *other = match (*other).get_self() { Some(s) => s, None => (*other).new_self() //~^ ERROR cannot borrow `**other` as mutable more than once at a time [E0499] }; let c = other; } } fn main() {}