struct DroppingSlice<'a>(&'a [i32]); impl Drop for DroppingSlice<'_> { fn drop(&mut self) { println!("hi from slice"); } } impl DroppingSlice<'_> { fn iter(&self) -> std::slice::Iter<'_, i32> { self.0.iter() } } fn main() { let mut v = vec![1, 2, 3, 4]; for x in DroppingSlice(&*v).iter() { v.push(*x); //~ERROR break; } }