// run-pass | |
static mut DROP_RAN: bool = false; | |
trait Bar { | |
fn do_something(&mut self); | |
} | |
struct BarImpl; | |
impl Bar for BarImpl { | |
fn do_something(&mut self) {} | |
} | |
struct Foo<B: Bar>(B); | |
impl<B: Bar> Drop for Foo<B> { | |
fn drop(&mut self) { | |
unsafe { | |
DROP_RAN = true; | |
} | |
} | |
} | |
fn main() { | |
{ | |
let _x: Foo<BarImpl> = Foo(BarImpl); | |
} | |
unsafe { | |
assert_eq!(DROP_RAN, true); | |
} | |
} |