aboutsummaryrefslogtreecommitdiffstats
path: root/src/guard.rs
blob: 75a28aa95b9ef8d8c1067556c312c50dee1cf44d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
pub fn guard<T> (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)();
    }
}