use std::sync::Mutex; use aio::misc::CallOnDrop; #[test] fn test_call_on_drop() { let v = Mutex::new(Vec::new()); v.lock().unwrap().push(1); { v.lock().unwrap().push(2); let _guard_1 = CallOnDrop::new(|| v.lock().unwrap().push(5)); let mut _guard_2 = CallOnDrop::new(|| v.lock().unwrap().push(7)); let _guard_3 = CallOnDrop::new(|| v.lock().unwrap().push(4)); _guard_2.disable(); v.lock().unwrap().push(3); } v.lock().unwrap().push(6); assert_eq!(*v.lock().unwrap(), &[1, 2, 3, 4, 5, 6]); }