use crate::utils::types::NecessarySendSync;
use crate::{
disposable::subscription::Subscription,
observable::Observable,
observer::{Observer, Termination},
};
use educe::Educe;
use std::convert::Infallible;
#[derive(Educe)]
#[educe(Debug, Clone)]
pub struct Just<T>(T);
impl<T> Just<T> {
pub fn new(value: T) -> Self {
Self(value)
}
}
impl<'or, 'sub, T> Observable<'or, 'sub, T, Infallible> for Just<T> {
fn subscribe(
self,
mut observer: impl Observer<T, Infallible> + NecessarySendSync + 'or,
) -> Subscription<'sub> {
observer.on_next(self.0);
observer.on_termination(Termination::Completed);
Subscription::default()
}
}