1use std::fmt;
4
5#[derive(Debug, Clone, PartialEq, Eq)]
10pub enum PluginError {
11 IllegalName(String),
13 Duplicate(String),
15 UnknownDep(String),
17 DepCycle(Vec<String>),
19 UnknownName(String),
21 Stopped,
23}
24
25impl fmt::Display for PluginError {
26 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
27 match self {
28 Self::IllegalName(n) => write!(f, "illegal plugin name: {n:?}"),
29 Self::Duplicate(n) => write!(f, "duplicate plugin: {n:?}"),
30 Self::UnknownDep(n) => write!(f, "unknown dependency at start: {n:?}"),
31 Self::DepCycle(c) => write!(f, "dependency cycle: {c:?}"),
32 Self::UnknownName(n) => write!(f, "unknown plugin: {n:?}"),
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 UnknownService { service: String },
48 InvalidPayload { target: String },
50 BusStopped,
52}
53
54impl fmt::Display for AskError {
55 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
56 match self {
57 Self::Timeout { target } => write!(f, "ask timeout: {target}"),
58 Self::TargetGone { target } => write!(f, "ask target gone: {target}"),
59 Self::UnknownService { service } => write!(f, "unknown service: {service}"),
60 Self::InvalidPayload { target } => write!(f, "ask invalid payload/contract: {target}"),
61 Self::BusStopped => write!(f, "bus stopped"),
62 }
63 }
64}
65impl std::error::Error for AskError {}