Files
tuwunel/src/core/utils/defer.rs
Jason Volk 992f725362 allow expression to defer macro
Signed-off-by: Jason Volk <jason@zemos.net>
2024-08-29 19:19:20 +00:00

23 lines
315 B
Rust

#[macro_export]
macro_rules! defer {
($body:block) => {
struct _Defer_<F: FnMut()> {
closure: F,
}
impl<F: FnMut()> Drop for _Defer_<F> {
fn drop(&mut self) { (self.closure)(); }
}
let _defer_ = _Defer_ {
closure: || $body,
};
};
($body:expr) => {
$crate::defer! {{
$body
}}
};
}