fusio_log/
error.rs

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