1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
//! Types representing various errors that can occur in the process of building and deploying a service.
use thiserror::Error;
#[derive(Debug, Error)]
pub enum Error {
#[error("IO error: {0}")]
Io(#[from] std::io::Error),
#[error("Database error: {0}")]
Database(String),
#[error("Custom error: {0}")]
Custom(#[from] CustomError),
}
pub type CustomError = anyhow::Error;
// This is implemented manually as defining `Error::Database(#[from] sqlx::Error)` resulted in a
// segfault even with a feature guard.
#[cfg(feature = "sqlx-postgres")]
impl From<sqlx::Error> for Error {
fn from(e: sqlx::Error) -> Self {
Error::Database(e.to_string())
}
}