summaryrefslogtreecommitdiffhomepage
path: root/wireguard-go-rs/src/util.rs
blob: 4c2df2f9bbc5f8b1978d5cd43061f96982ecd39f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
pub struct OnDrop<F: FnOnce()>(Option<F>);

impl<F: FnOnce()> OnDrop<F> {
    pub fn new(f: F) -> Self {
        OnDrop(Some(f))
    }
}

impl<F: FnOnce()> Drop for OnDrop<F> {
    fn drop(&mut self) {
        if let Some(f) = self.0.take() {
            f()
        }
    }
}