If reborrowing did not exist at all, mutable references would be nearly impossible to make use of. Any time you write &self.foo
or &mut self.foo
in a method with &mut self
in the signature, that's another sort of reborrow.
If reborrowing existed but was not implicit for mutable references, you might get a type error like “expected &u32
, found &mut u32
”, and you'd have to write &*s.a_mut
to get the conversion.
Or maybe not. It’s hard to say exactly because reborrowing is so pervasive in how mutable references are actually used.