| use std::ops::{Deref, DerefMut}; | |
| struct DerefTarget { | |
| target_field: bool, | |
| } | |
| struct Container { | |
| target: DerefTarget, | |
| container_field: bool, | |
| } | |
| impl Deref for Container { | |
| type Target = DerefTarget; | |
| fn deref(&self) -> &Self::Target { | |
| &self.target | |
| } | |
| } | |
| impl DerefMut for Container { | |
| fn deref_mut(&mut self) -> &mut Self::Target { | |
| &mut self.target | |
| } | |
| } | |
| impl Container { | |
| fn bad_borrow(&mut self) { | |
| let first = &mut self.target_field; | |
| self.container_field = true; //~ ERROR E0506 | |
| first; | |
| } | |
| } | |
| fn main() {} |