1use std::fmt::{Debug, Display};
2
3
4#[derive(Debug)]
5pub enum Error<HttpError: Debug + Send + Sync, CachingError: Debug + Send + Sync> {
6 HttpError(HttpError),
7 CachingError(CachingError),
8 CacheConversionError(serde_json::Error),
9 RequestParsingError(http::Error),
10 InvalidHeaderValue(http::header::InvalidHeaderValue),
11 ParsingError(serde_path_to_error::Error<serde_json::Error>),
12 ConversionError(serde_path_to_error::Error<serde_json::Error>),
13 SerdeError(serde_json::Error),
14}
15
16
17
18impl<HttpError: StdError + Debug + Send + Sync, CachingError: StdError + Debug + Send + Sync> Display for Error<HttpError, CachingError> {
19 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
20 match &self {
21 Error::InvalidHeaderValue(error) => write!(f, "InvalidHeaderValue: {error}"),
22 Error::RequestParsingError(error) => write!(f, "RequestParsingError: {}", error),
23 Error::CacheConversionError(error) => write!(f, "Couldn't convert cache entry: {}", error),
24 Error::ParsingError(error) => {
25 write!(f, "ParsingError: Path: {}, error: {}", error.path(), error.inner())
26 },
27 Error::ConversionError(error)=> write!(f, "Couldn't convert cache entry: path: {}, error: {}", error.path(), error.inner()),
28 Error::HttpError(error) => write!(f, "HttpError: {error}"),
29 Error::CachingError(error) => write!(f, "CachingError: {error}"),
30 Error::SerdeError(error) => write!(f, "SerdeError: {error}"),
31 }
32 }
33}
34
35use std::error::Error as StdError;
36
37
38impl<HttpError: StdError + Debug + Send + Sync, CachingError: StdError + Debug + Send + Sync> StdError for Error<HttpError, CachingError> {}
39
40pub trait ErrorTrait {
41 type Error;
42}