&mut self — mutable borrow. &self — immutable borrow.
&self (immutable):
1impl Person {2 fn name(&self) -> &str {3 &self.name4 }5}
**&mut self (mutable):
1impl Person {2 fn set_name(&mut self, name: String) {3 self.name = name;4 }5}
Key differences: