use super::{DynamicSubscriptions, Subscription};
use crate::context::RcDerefMut;
pub struct SourceWithDynamicSubs<U, S> {
pub source: U,
pub subs: S,
}
impl<U, S> SourceWithDynamicSubs<U, S> {
#[inline]
pub fn new(source: U, subs: S) -> Self { Self { source, subs } }
}
impl<U, S, H> Subscription for SourceWithDynamicSubs<U, S>
where
U: Subscription,
S: RcDerefMut<Target = DynamicSubscriptions<H>>,
H: Subscription,
{
fn unsubscribe(self) {
self.source.unsubscribe();
self.subs.rc_deref_mut().unsubscribe_all();
}
fn is_closed(&self) -> bool { self.source.is_closed() && self.subs.rc_deref().all_closed() }
}