4 struct DroppableStruct;
6 DroppableVariant1, DroppableVariant2
9 static mut DROPPED: bool = false;
11 impl Drop for DroppableStruct {
13 unsafe { DROPPED = true; }
16 impl Drop for DroppableEnum {
18 unsafe { DROPPED = true; }
22 trait MyTrait { fn dummy(&self) { } }
23 impl MyTrait for Box<DroppableStruct> {}
24 impl MyTrait for Box<DroppableEnum> {}
26 struct Whatever { w: Box<dyn MyTrait+'static> }
28 fn new(w: Box<dyn MyTrait+'static>) -> Whatever {
35 let f: Box<_> = Box::new(DroppableStruct);
36 let _a = Whatever::new(Box::new(f) as Box<dyn MyTrait>);
38 assert!(unsafe { DROPPED });
39 unsafe { DROPPED = false; }
41 let f: Box<_> = Box::new(DroppableEnum::DroppableVariant1);
42 let _a = Whatever::new(Box::new(f) as Box<dyn MyTrait>);
44 assert!(unsafe { DROPPED });