1use thiserror::Error;
2
3#[derive(Clone, Debug, Error)]
4pub enum Error {
5 #[error("Failed: {0}")]
6 Failed(String),
7 #[error("Invalid: {0}")]
8 Invalid(String),
9 #[error("Again: {0}")]
10 Again(String),
11 #[error("Canceled: {0}")]
12 Canceled(String),
13 #[error("Creation failed: {0}")]
14 CreationFailed(String),
15 #[error("Invalid parameter: {0} {1}")]
16 InvalidParameter(String, String),
17 #[error("Not implemented")]
18 NotImplemented,
19 #[error("Not found: {0}")]
20 NotFound(String),
21 #[error("Unsupported: {0}")]
22 Unsupported(String),
23 #[error("Initialization failed: {0}")]
24 InitializationFailed(String),
25 #[error("Open failed: {0}")]
26 OpenFailed(String),
27 #[error("Close failed: {0}")]
28 CloseFailed(String),
29 #[error("Start failed: {0}")]
30 StartFailed(String),
31 #[error("Stop failed: {0}")]
32 StopFailed(String),
33 #[error("Not running: {0}")]
34 NotRunning(String),
35 #[error("Get failed: {0}")]
36 GetFailed(String),
37 #[error("Set failed: {0}")]
38 SetFailed(String),
39 #[error("Read failed: {0}")]
40 ReadFailed(String),
41 #[error("Write failed: {0}")]
42 WriteFailed(String),
43}
44
45#[macro_export]
46macro_rules! invalid_param_error {
47 ($param:expr) => {
48 Error::InvalidParameter(stringify!($param).to_string(), format!("{:?}", $param).to_string())
49 };
50}
51
52#[macro_export]
53macro_rules! none_param_error {
54 ($param:expr) => {
55 Error::InvalidParameter(stringify!($param).to_string(), stringify!(None).to_string())
56 };
57}
58
59#[macro_export]
60macro_rules! not_found_error {
61 ($param:expr) => {
62 Error::NotFound(format!("{:?}", $param).to_string())
63 };
64}
65
66#[macro_export]
67macro_rules! unsupported_error {
68 ($param:expr) => {
69 Error::Unsupported(format!("{:?}", $param).to_string())
70 };
71}