rpc_router/
error.rs

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	// -- Into Params
11	ParamsParsing(#[serde_as(as = "DisplayFromStr")] serde_json::Error),
12	ParamsMissingButRequested,
13
14	// -- Router
15	MethodUnknown,
16
17	// -- Handler
18	FromResources(FromResourcesError),
19	HandlerResultSerialize(#[serde_as(as = "DisplayFromStr")] serde_json::Error),
20	Handler(#[serde_as(as = "DisplayFromStr")] HandlerError),
21}
22
23// region:    --- Froms
24
25impl 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
37// endregion: --- Froms
38
39// region:    --- Error Boilerplate
40
41impl 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// endregion: --- Error Boilerplate