1use thiserror::Error;
4
5#[derive(Debug, Error)]
7pub enum Error {
8 #[error("Listener '{listener}' failed: {message}")]
10 ListenerFailed {
11 listener: String,
13 message: String,
15 },
16
17 #[error("Failed to dispatch event '{event}': {message}")]
19 DispatchFailed {
20 event: String,
22 message: String,
24 },
25
26 #[error("Failed to serialize event for queue: {0}")]
28 SerializationFailed(String),
29
30 #[error("Failed to deserialize event from queue: {0}")]
32 DeserializationFailed(String),
33
34 #[error("Queue connection failed: {0}")]
36 QueueConnectionFailed(String),
37
38 #[error("{0}")]
40 Custom(String),
41}
42
43impl Error {
44 pub fn listener_failed(listener: impl Into<String>, message: impl Into<String>) -> Self {
46 Self::ListenerFailed {
47 listener: listener.into(),
48 message: message.into(),
49 }
50 }
51
52 pub fn dispatch_failed(event: impl Into<String>, message: impl Into<String>) -> Self {
54 Self::DispatchFailed {
55 event: event.into(),
56 message: message.into(),
57 }
58 }
59
60 pub fn custom(message: impl Into<String>) -> Self {
62 Self::Custom(message.into())
63 }
64}
65
66impl From<String> for Error {
67 fn from(s: String) -> Self {
68 Self::Custom(s)
69 }
70}
71
72impl From<&str> for Error {
73 fn from(s: &str) -> Self {
74 Self::Custom(s.to_string())
75 }
76}