1use crate::{FromResourcesError, HandlerError};
2use serde::Serialize;
3use serde_with::{serde_as, DisplayFromStr};
4
5pub type Result<T> = core::result::Result<T, Error>;
6
7#[serde_as]
8#[derive(Debug, Serialize)]
9pub enum Error {
10 ParamsParsing(#[serde_as(as = "DisplayFromStr")] serde_json::Error),
12 ParamsMissingButRequested,
13
14 MethodUnknown,
16
17 FromResources(FromResourcesError),
19 HandlerResultSerialize(#[serde_as(as = "DisplayFromStr")] serde_json::Error),
20 Handler(#[serde_as(as = "DisplayFromStr")] HandlerError),
21}
22
23impl From<HandlerError> for Error {
26 fn from(val: HandlerError) -> Self {
27 Self::Handler(val)
28 }
29}
30
31impl From<FromResourcesError> for Error {
32 fn from(val: FromResourcesError) -> Self {
33 Self::FromResources(val)
34 }
35}
36
37impl core::fmt::Display for Error {
42 fn fmt(&self, fmt: &mut core::fmt::Formatter) -> core::result::Result<(), core::fmt::Error> {
43 write!(fmt, "{self:?}")
44 }
45}
46
47impl std::error::Error for Error {}
48
49