rx_rust/subject/
subject_observable.rs1use super::Subject;
2use crate::observable::Subscription;
3use crate::utils::types::MaybeSend;
4use crate::{observable::Observable, observer::Observer};
5use educe::Educe;
6
7#[derive(Educe)]
9#[educe(Debug, Clone)]
10pub struct SubjectObservable<S>(S);
11
12impl<S> SubjectObservable<S> {
13 pub fn new(subject: S) -> Self {
14 Self(subject)
15 }
16}
17
18impl<'or, T, E, S> Observable<'or, T, E> for SubjectObservable<S>
19where
20 S: Subject<'or, T, E>,
21{
22 type D = S::D;
23
24 fn subscribe(self, observer: impl Observer<T, E> + MaybeSend + 'or) -> Subscription<Self::D> {
25 self.0.subscribe(observer)
26 }
27}