From 0465ddb62b7708819a668aced5ade29cde6a8be0 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Wed, 3 Apr 2013 02:45:53 -0500 Subject: split this out into a separate module too --- src/guard.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/guard.rs (limited to 'src/guard.rs') diff --git a/src/guard.rs b/src/guard.rs new file mode 100644 index 0000000..75a28aa --- /dev/null +++ b/src/guard.rs @@ -0,0 +1,14 @@ +pub fn guard (finally: ~fn (), body: &fn () -> T) -> T { + let _guard = Guard { finally: finally }; + body() +} + +struct Guard { + priv finally: ~fn (), +} + +impl Drop for Guard { + fn finalize (&self) { + (self.finally)(); + } +} -- cgit v1.2.3-54-g00ecf