1use std::error::Error;
2use std::fmt;
3
4#[derive(Debug, Clone, Copy, PartialEq, Eq)]
6pub enum SpawnError {
7 Closed,
9}
10
11impl fmt::Display for SpawnError {
12 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
13 match self {
14 Self::Closed => f.write_str("the target executor is closed"),
15 }
16 }
17}
18
19impl Error for SpawnError {}
20
21#[derive(Debug, Clone, Copy, PartialEq, Eq)]
23pub enum ShutdownOutcome {
24 Completed,
26 TimedOut {
28 remaining_tasks: usize,
30 },
31}
32
33#[derive(Debug, Clone, Copy, PartialEq, Eq)]
35pub enum ShutdownError {
36 CalledFromWorker,
38 WorkerPanicked,
40}
41
42impl fmt::Display for ShutdownError {
43 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
44 match self {
45 Self::CalledFromWorker => {
46 f.write_str("a runtime cannot synchronously join its current worker")
47 }
48 Self::WorkerPanicked => f.write_str("a runtime worker panicked"),
49 }
50 }
51}
52
53impl Error for ShutdownError {}