/// Drop guard that executes the provided callback function when dropped. pub struct OnDrop> where F: FnOnce() + Send, { callback: Option, } impl Drop for OnDrop { fn drop(&mut self) { if let Some(callback) = self.callback.take() { callback(); } } } impl OnDrop { pub fn new(callback: F) -> Self { Self { callback: Some(callback), } } }