pub struct DeferredFnOnce<FunctionT>
where
FunctionT: FnOnce(),
{
pub function: Option<FunctionT>,
}
impl<FunctionT> DeferredFnOnce<FunctionT>
where
FunctionT: FnOnce(),
{
pub fn new(function: FunctionT) -> Self {
Self { function: Some(function) }
}
}
impl<FunctionT> Drop for DeferredFnOnce<FunctionT>
where
FunctionT: FnOnce(),
{
fn drop(&mut self) {
self.function.take().expect("function")();
}
}