use super::{Filter, Observe};
pub trait Observable<Event>
where
Event: Clone + 'static + Send,
{
type Error: std::error::Error;
fn observe(&mut self, options: ObserveConfig<Event>) -> Observe<'_, Event, Self::Error>;
}
#[derive(Debug)]
pub struct ObserveConfig<Event>
where
Event: Clone + 'static + Send,
{
pub(crate) filter: Option<Filter<Event>>,
}
impl<Event> Default for ObserveConfig<Event>
where
Event: Clone + 'static + Send,
{
fn default() -> Self {
Self { filter: None }
}
}
impl<Event> From<Filter<Event>> for ObserveConfig<Event>
where
Event: Clone + 'static + Send,
{
fn from(filter: Filter<Event>) -> Self {
Self {
filter: Some(filter),
}
}
}