use std::any::Any;
use std::io;
use std::time::Duration;
#[derive(Debug, Default, Clone, Copy, Eq, PartialEq)]
pub struct ReadyEvents {
pub timer: bool,
pub wake: bool,
}
#[doc(hidden)]
pub trait DriverBackend: Send + 'static {
fn poll(&self) -> io::Result<Option<ReadyEvents>>;
fn wait(&self) -> io::Result<()>;
fn rearm_timer(&self, deadline: Option<Duration>) -> io::Result<()>;
fn drain_wake(&self) -> Option<u64>;
fn drain_timer(&self) -> Option<u64>;
fn bind_current_thread(&self);
fn unbind_current_thread(&self);
fn as_any(&self) -> &dyn Any;
}
#[doc(hidden)]
pub trait Notifier: Send + Sync + 'static {
fn notify(&self) -> io::Result<()>;
}