Don't expose third-party errors in public API.

This commit is contained in:
ryneeverett 2023-01-15 16:31:46 -05:00 committed by Dustin J. Mitchell
parent f56296ea93
commit 2f7196dbfc

View file

@ -19,20 +19,25 @@ pub enum Error {
/// A usage error
#[error("User Error: {0}")]
Usage(String),
/// Error conversions.
#[error(transparent)]
Http(#[from] ureq::Error),
#[error(transparent)]
Io(#[from] io::Error),
#[error(transparent)]
Json(#[from] serde_json::Error),
/// A general error.
#[error(transparent)]
Other(#[from] anyhow::Error),
#[error("Third Party Sqlite Error")]
Rusqlite(#[from] rusqlite::Error),
#[error(transparent)]
Sqlite(#[from] crate::storage::sqlite::SqliteError),
}
/// Convert private and third party errors into Error::Other.
macro_rules! convert_error {
( $error:ty ) => {
impl From<$error> for Error {
fn from(err: $error) -> Self {
Self::Other(err.into())
}
}
};
}
convert_error!(ureq::Error);
convert_error!(io::Error);
convert_error!(serde_json::Error);
convert_error!(rusqlite::Error);
convert_error!(crate::storage::sqlite::SqliteError);
pub type Result<T> = std::result::Result<T, Error>;