mod park;
pub use self::park::ParkThread;
pub use self::park::CachedParkThread;
use std::sync::Arc;
use std::time::Duration;
pub trait Park {
type Unpark: Unpark;
type Error;
fn unpark(&self) -> Self::Unpark;
fn park(&mut self) -> Result<(), Self::Error>;
fn park_timeout(&mut self, duration: Duration) -> Result<(), Self::Error>;
}
pub trait Unpark: Sync + Send + 'static {
fn unpark(&self);
}
impl Unpark for Box<dyn Unpark> {
fn unpark(&self) {
(**self).unpark()
}
}
impl Unpark for Arc<dyn Unpark> {
fn unpark(&self) {
(**self).unpark()
}
}