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}