From 83e5044fd6e5c2a8bccd29f5a8462e7016823aed Mon Sep 17 00:00:00 2001 From: Jonas Maier <> Date: Tue, 10 Mar 2026 15:00:44 +0100 Subject: defer macro --- src/defer.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 src/defer.rs (limited to 'src/defer.rs') diff --git a/src/defer.rs b/src/defer.rs new file mode 100644 index 0000000..362c7d1 --- /dev/null +++ b/src/defer.rs @@ -0,0 +1,16 @@ +pub struct Defer(pub Option); + +impl Drop for Defer { + fn drop(&mut self) { + if let Some(f) = self.0.take() { + f(); + } + } +} + +#[macro_export] +macro_rules! defer { + ($($x:tt)*) => { + let _defer = crate::defer::Defer(Some(move || {$($x)*})); + }; +} -- cgit v1.2.3