fusio_log/
error.rs

1use thiserror::Error;
2
3#[derive(Debug, Error)]
4#[error("log error")]
5pub enum LogError {
6    #[error("IO error: {0}")]
7    IO(#[from] std::io::Error),
8    #[error("S3 error: {0}")]
9    S3Error(fusio::Error),
10    #[error("encode error: {message}")]
11    Encode { message: String },
12    #[error("decode error: {message}")]
13    Decode { message: String },
14    #[error("recover error: bad data")]
15    BadData,
16    #[error("recover error: checksum does not match")]
17    Checksum,
18    #[error(transparent)]
19    Other(#[from] BoxedError),
20}
21
22pub type BoxedError = Box<dyn std::error::Error + Send + Sync + 'static>;
23
24impl From<fusio::Error> for LogError {
25    fn from(err: fusio::Error) -> Self {
26        match err {
27            fusio::Error::Io(error) => LogError::IO(error),
28            fusio::Error::S3Error(_) => LogError::S3Error(err),
29            err => LogError::Other(Box::new(err)),
30        }
31    }
32}