pub mod boxed_observer;
pub mod callback_observer;
use educe::Educe;
#[derive(Educe)]
#[educe(Debug, Clone, PartialEq, Eq)]
pub enum Termination<E> {
Completed,
Error(E),
}
pub trait Observer<T, E> {
fn on_next(&mut self, value: T);
fn on_termination(self, termination: Termination<E>);
}
#[derive(Educe)]
#[educe(Debug, Clone, PartialEq, Eq)]
pub enum Event<T, E> {
Next(T),
Termination(Termination<E>),
}