diff --git a/src/core/error/mod.rs b/src/core/error/mod.rs index 5520e865..3bf3c883 100644 --- a/src/core/error/mod.rs +++ b/src/core/error/mod.rs @@ -2,6 +2,7 @@ mod err; mod log; mod panic; mod response; +mod serde; use std::{any::Any, borrow::Cow, convert::Infallible, fmt}; @@ -56,6 +57,10 @@ pub enum Error { Regex(#[from] regex::Error), #[error("Request error: {0}")] Reqwest(#[from] reqwest::Error), + #[error("{0}")] + SerdeDe(Cow<'static, str>), + #[error("{0}")] + SerdeSer(Cow<'static, str>), #[error(transparent)] TomlDe(#[from] toml::de::Error), #[error(transparent)] diff --git a/src/core/error/serde.rs b/src/core/error/serde.rs new file mode 100644 index 00000000..0c5a153b --- /dev/null +++ b/src/core/error/serde.rs @@ -0,0 +1,13 @@ +use std::fmt::Display; + +use serde::{de, ser}; + +use crate::Error; + +impl de::Error for Error { + fn custom(msg: T) -> Self { Self::SerdeDe(msg.to_string().into()) } +} + +impl ser::Error for Error { + fn custom(msg: T) -> Self { Self::SerdeSer(msg.to_string().into()) } +}