Skip to main content

neis_client/
error.rs

1use hyper::Error as HyperError;
2use hyper_util::client::legacy::Error as ClientError;
3use serde_json::Error as JsonError;
4
5#[derive(Debug)]
6pub enum Error {
7    Hyper(HyperError),
8    Client(ClientError),
9    Json(JsonError),
10    Unknown(String),
11}
12
13impl Error {
14    pub fn new_unknown(message: &str) -> Error {
15        Error::Unknown(message.to_owned())
16    }
17}
18
19impl std::error::Error for Error {}
20
21impl std::fmt::Display for Error {
22    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
23        match *self {
24            Error::Hyper(ref err) => err.fmt(f),
25            Error::Client(ref err) => err.fmt(f),
26            Error::Json(ref err) => err.fmt(f),
27            Error::Unknown(ref err) => err.fmt(f),
28        }
29    }
30}
31
32impl From<HyperError> for Error {
33    fn from(err: HyperError) -> Error {
34        Error::Hyper(err)
35    }
36}
37
38impl From<ClientError> for Error {
39    fn from(err: ClientError) -> Error {
40        Error::Client(err)
41    }
42}
43
44impl From<JsonError> for Error {
45    fn from(err: JsonError) -> Error {
46        Error::Json(err)
47    }
48}