Skip to main content

rx_rust/disposable/
option_disposal.rs

1use crate::disposable::Disposable;
2use educe::Educe;
3
4#[derive(Educe)]
5#[educe(Debug, Clone)]
6pub struct OptionDisposal<D>(Option<D>);
7
8impl<D> OptionDisposal<D> {
9    pub fn some(disposal: D) -> Self {
10        Self(Some(disposal))
11    }
12
13    pub fn none() -> Self {
14        Self(None)
15    }
16}
17
18impl<D: Disposable> Disposable for OptionDisposal<D> {
19    fn dispose(self) {
20        if let Some(disposal) = self.0 {
21            Disposable::dispose(disposal)
22        }
23    }
24}