Skip to content
Clone
main
49 lines 1.4 KB Rust
use std::fmt;
#[derive(Debug)]
pub enum BootstrapError {
Database(db::DbError),
Cache(cache::CacheError),
Storage(storage::StorageError),
InvalidConfig(String),
}
impl fmt::Display for BootstrapError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
BootstrapError::Database(err) => write!(f, "database error: {err}"),
BootstrapError::Cache(err) => write!(f, "cache error: {err}"),
BootstrapError::Storage(err) => write!(f, "storage error: {err}"),
BootstrapError::InvalidConfig(msg) => write!(f, "invalid config: {msg}"),
}
}
}
impl std::error::Error for BootstrapError {
fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
match self {
BootstrapError::Database(err) => Some(err),
BootstrapError::Cache(err) => Some(err),
BootstrapError::Storage(err) => Some(err),
BootstrapError::InvalidConfig(_) => None,
}
}
}
impl From<db::DbError> for BootstrapError {
fn from(err: db::DbError) -> Self {
BootstrapError::Database(err)
}
}
impl From<cache::CacheError> for BootstrapError {
fn from(err: cache::CacheError) -> Self {
BootstrapError::Cache(err)
}
}
impl From<storage::StorageError> for BootstrapError {
fn from(err: storage::StorageError) -> Self {
BootstrapError::Storage(err)
}
}