use std::{io, time};
use crate::driver::schedule;
mod backend;
mod dispatch;
mod source;
pub(crate) use backend::Backend;
pub use dispatch::Dispatch;
pub use source::Source;
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
#[must_use = "pending backend events must be drained before blocking"]
pub enum Drain {
Drained,
Pending,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
#[must_use = "pending backend changes must be committed in a later reactor turn"]
pub enum Commit {
Drained,
Pending,
}
pub trait Poll<'d>: Backend {
fn commit(&mut self, work: schedule::Reactor<'_, 'd>) -> io::Result<Commit>;
fn wait(
&mut self,
work: schedule::Reactor<'_, 'd>,
timeout: Option<time::Duration>,
) -> io::Result<()>;
}