use std::error::Error;
use std::fmt;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum SpawnError {
Closed,
}
impl fmt::Display for SpawnError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::Closed => f.write_str("the target executor is closed"),
}
}
}
impl Error for SpawnError {}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ShutdownOutcome {
Completed,
TimedOut {
remaining_tasks: usize,
},
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ShutdownError {
CalledFromWorker,
WorkerPanicked,
}
impl fmt::Display for ShutdownError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::CalledFromWorker => {
f.write_str("a runtime cannot synchronously join its current worker")
}
Self::WorkerPanicked => f.write_str("a runtime worker panicked"),
}
}
}
impl Error for ShutdownError {}