rx-rust 1.0.1

Reactive Programming in Rust inspired by ReactiveX https://reactivex.io/
Documentation
use crate::disposable::Disposable;
use educe::Educe;

#[derive(Educe)]
#[educe(Debug, Clone)]
pub struct OptionDisposal<D>(Option<D>);

impl<D> OptionDisposal<D> {
    pub fn some(disposal: D) -> Self {
        Self(Some(disposal))
    }

    pub fn none() -> Self {
        Self(None)
    }
}

impl<D: Disposable> Disposable for OptionDisposal<D> {
    fn dispose(self) {
        if let Some(disposal) = self.0 {
            Disposable::dispose(disposal)
        }
    }
}