use std::fmt;
use futures_core::stream::Stream;
pub(crate) mod event_queue;
pub(crate) mod event_slot;
pub trait EventSinkWriter<T>: Clone + Send + Sync + 'static {
fn write(&self, event: T);
}
pub trait EventSinkReader<T>: Stream<Item = T> + Unpin {
fn enable(&mut self);
fn disable(&mut self);
fn try_read(&mut self) -> Option<T>;
fn read(&mut self) -> Option<T>;
}
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
pub enum SinkState {
Enabled,
Disabled,
}
impl fmt::Display for SinkState {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
SinkState::Enabled => write!(f, "enabled"),
SinkState::Disabled => write!(f, "disabled"),
}
}
}