1use std::fmt;
4
5#[derive(Debug, Clone, PartialEq, Eq)]
7pub enum PluginError {
8 IllegalName(String),
10 Duplicate(String),
12 UnknownDep(String),
14 DepCycle(Vec<String>),
16 UnknownName(String),
18 HostStarted,
20 Stopped,
22}
23
24impl fmt::Display for PluginError {
25 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
26 match self {
27 Self::IllegalName(n) => write!(f, "illegal plugin name: {n:?}"),
28 Self::Duplicate(n) => write!(f, "duplicate plugin: {n:?}"),
29 Self::UnknownDep(n) => write!(f, "unknown dependency: {n:?}"),
30 Self::DepCycle(c) => write!(f, "dependency cycle: {c:?}"),
31 Self::UnknownName(n) => write!(f, "unknown plugin: {n:?}"),
32 Self::HostStarted => write!(f, "host already started"),
33 Self::Stopped => write!(f, "host closed"),
34 }
35 }
36}
37impl std::error::Error for PluginError {}
38
39#[derive(Debug, Clone, PartialEq, Eq)]
41pub enum AskError {
42 Timeout { target: String },
44 TargetGone { target: String },
46 InvalidPayload { target: String },
48 BusStopped,
50}
51
52impl fmt::Display for AskError {
53 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
54 match self {
55 Self::Timeout { target } => write!(f, "ask timeout: {target}"),
56 Self::TargetGone { target } => write!(f, "ask target gone: {target}"),
57 Self::InvalidPayload { target } => write!(f, "ask invalid payload/contract: {target}"),
58 Self::BusStopped => write!(f, "bus stopped"),
59 }
60 }
61}
62impl std::error::Error for AskError {}