data_rw/serde/
error.rs

1use anyhow::anyhow;
2use std::fmt::{Display, Formatter};
3
4#[derive(Debug)]
5pub enum DataError {
6    Anyhow(anyhow::Error),
7    Str(String),
8    Io(std::io::Error),
9    RollBack,
10    Reset,
11    AnyNotSupported,
12    IgnoredAnyNotSupported,
13}
14
15impl Display for DataError {
16    #[inline]
17    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
18        match self {
19            DataError::Io(err) => Display::fmt(err, f),
20            DataError::Str(err) => {
21                write!(f, "DataError Str:{}", err)
22            }
23            DataError::Anyhow(err) => Display::fmt(err, f),
24            DataError::RollBack => write!(f, "RollBack"),
25            DataError::Reset => write!(f, "Reset"),
26            DataError::AnyNotSupported => write!(f, "Deserialize any not supported"),
27            DataError::IgnoredAnyNotSupported => write!(f, "Deserialize ignored any not supported"),
28        }
29    }
30}
31
32impl std::error::Error for DataError {}
33
34impl serde::ser::Error for DataError {
35    #[inline]
36    fn custom<T>(msg: T) -> Self
37    where
38        T: Display,
39    {
40        DataError::Anyhow(anyhow!("{}", msg))
41    }
42}
43
44impl serde::de::Error for DataError {
45    #[inline]
46    fn custom<T>(msg: T) -> Self
47    where
48        T: Display,
49    {
50        DataError::Anyhow(anyhow!("{}", msg))
51    }
52}
53
54impl From<anyhow::Error> for DataError {
55    #[inline]
56    fn from(err: anyhow::Error) -> Self {
57        DataError::Anyhow(err)
58    }
59}
60
61impl From<std::io::Error> for DataError {
62    #[inline]
63    fn from(err: std::io::Error) -> Self {
64        DataError::Io(err)
65    }
66}