1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
static mut DROP_RAN: bool = false; struct Foo; impl Drop for Foo { fn drop(&mut self) { unsafe { DROP_RAN = true; } } } trait Trait { fn dummy(&self) { } } impl Trait for Foo {} struct Fat<T: ?Sized> { f: T } pub fn main() { { let _x: Box<Fat<Trait>> = Box::<Fat<Foo>>::new(Fat { f: Foo }); } unsafe { assert!(DROP_RAN); } }