#![allow(dead_code, deprecated, unused_variables, unused_mut)] #[derive(Default)] struct AddrTracker(Option); impl AddrTracker { fn check_for_move(&mut self) { let current_addr = self as *mut Self as usize; match self.0 { None => self.0 = Some(current_addr), Some(prev_addr) => assert_eq!(prev_addr, current_addr), } } } fn main() { let mut tracker = AddrTracker::default(); tracker.check_for_move(); let mut tracker = tracker; }