pub struct Defer<F: FnOnce()> { /* private fields */ }Expand description
Execute a closure on drop.
§Examples
This program prints 01:
fn foo() {
let guard = Defer::new(|| print!("1"));
print!("0");
} // <- guard dropped hereImplementations§
Source§impl<F: FnOnce()> Defer<F>
impl<F: FnOnce()> Defer<F>
Sourcepub const fn new(f: F) -> Self
pub const fn new(f: F) -> Self
Creates a new guard that will executed the provided closure when it is dropped.
Sourcepub fn defuse(self)
pub fn defuse(self)
“Defuses” this scope guard, preventing the closure from running.
For more information, see the crate docs.
§Notes
This will drop the closure (and all of its captures).
§Examples
let guard = Defer::new(|| unreachable!("never executed"));
guard.defuse();Trait Implementations§
Auto Trait Implementations§
impl<F> Freeze for Defer<F>where
F: Freeze,
impl<F> RefUnwindSafe for Defer<F>where
F: RefUnwindSafe,
impl<F> Send for Defer<F>where
F: Send,
impl<F> Sync for Defer<F>where
F: Sync,
impl<F> Unpin for Defer<F>where
F: Unpin,
impl<F> UnwindSafe for Defer<F>where
F: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more