use thiserror::Error;
#[derive(Debug, Error)]
#[non_exhaustive]
pub enum EventBusError {
#[error("internal error: {0}")]
Internal(String),
#[error("validation error: {0}")]
Validation(String),
#[error("serialization error: {0}")]
Serialization(String),
#[error("invalid state transition: {from} -> {to}")]
InvalidTransition { from: String, to: String },
#[error("connection error: {0}")]
Connection(String),
#[error("timeout: {0}")]
Timeout(String),
#[error("{context}")]
Source {
context: String,
#[source]
source: Box<dyn std::error::Error + Send + Sync + 'static>,
},
}
impl EventBusError {
pub fn source<E>(context: impl Into<String>, err: E) -> Self
where
E: std::error::Error + Send + Sync + 'static,
{
Self::Source {
context: context.into(),
source: Box::new(err),
}
}
}