use std::ops::Deref;
use SafeManuallyDrop::AlwaysSafeHookManuallyDrop as ManuallyDrop;
fn main() {
unsafe {
ManuallyDrop::set_hook(|args| {
println!("!!!{:?}", args);
for _ in 0..3 {
std::thread::sleep(std::time::Duration::from_millis(1000));
}
println!("exit");
std::process::exit(0x0100);
});
}
let mut data = ManuallyDrop::new(vec![1, 2, 3, 4]);
println!("data: {:?}", data.deref());
#[allow(unused_unsafe)] unsafe {
assert_eq!(data.is_next_trig(), false); ManuallyDrop::drop(&mut data); assert_eq!(data.is_next_trig(), true);
ManuallyDrop::drop(&mut data); }
}