yazi/yazi-shared/src/defer.rs
2023-10-22 16:34:20 +08:00

13 lines
266 B
Rust

pub struct Defer<F: FnOnce() -> T, T>(Option<F>);
impl<F: FnOnce() -> T, T> Defer<F, T> {
pub fn new(f: F) -> Self { Defer(Some(f)) }
}
impl<F: FnOnce() -> T, T> Drop for Defer<F, T> {
fn drop(&mut self) {
if let Some(f) = self.0.take() {
_ = f();
}
}
}