Skip to main content

rikka_mq/
error.rs

1use serde_json::error::Error as SerdeError;
2use std::error::Error as StdError;
3use std::num::TryFromIntError;
4use std::str::Utf8Error;
5
6type BoxedError = Box<dyn StdError + Send + Sync + 'static>;
7
8#[derive(Debug, Clone, Eq, PartialEq, thiserror::Error)]
9#[non_exhaustive]
10pub enum ErrorOperation {
11    #[error("Operation delayed: {0}")]
12    Delay(String),
13    #[error("Operation failed: {0}")]
14    Fail(String),
15}
16
17#[derive(Debug, thiserror::Error)]
18#[non_exhaustive]
19pub enum Error {
20    #[error("Database error: {0}")]
21    DatabaseError(#[source] BoxedError),
22
23    #[error("Conversion error: {0}")]
24    ConversionError(#[source] BoxedError),
25}
26
27impl From<Utf8Error> for Error {
28    fn from(err: Utf8Error) -> Self {
29        Self::ConversionError(Box::new(err))
30    }
31}
32
33impl From<SerdeError> for Error {
34    fn from(err: SerdeError) -> Self {
35        Self::ConversionError(Box::new(err))
36    }
37}
38
39impl From<TryFromIntError> for Error {
40    fn from(value: TryFromIntError) -> Self {
41        Self::ConversionError(Box::new(value))
42    }
43}