The following function can drop any object arbitrary number of times, using only safe code: ``` rust fn drop_n_times<T: Drop>(val: T, times: u32) { struct Holder<T: ?Sized>(T); let container = Holder(val); for _ in 0..times { &(*(&container as &Holder<Drop>)).0; } } struct Foo; impl Drop for Foo { fn drop(&mut self) { println!("dropping"); } } fn main() { drop_n_times(Foo, 3); } ``` ``` dropping dropping dropping dropping ``` Probably bad :) Found while researching #25515