struct Foo;
impl Drop for Foo {
    fn drop(&mut self) {
        unsafe {
            FOO = true;
        }
    }
}

static mut FOO: bool = false;

enum Bar {
    A(Box<i32>),
    B(Foo),
}

fn main() {
    assert!(unsafe { !FOO });
    drop(Bar::A(Box::new(42)));
    assert!(unsafe { !FOO });
    drop(Bar::B(Foo));
    assert!(unsafe { FOO });
}