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() {}