readability/
error.rs

1#[cfg(feature = "reqwest")]
2use reqwest;
3use std::error;
4use std::fmt::{Display, Formatter, Result as FmtResult};
5use std::io;
6use url;
7
8#[derive(Debug)]
9pub enum Error {
10    #[cfg(feature = "reqwest")]
11    NetworkError(reqwest::Error),
12    UrlParseError(url::ParseError),
13    Unexpected,
14    IOError(io::Error),
15}
16
17impl Display for Error {
18    fn fmt(&self, f: &mut Formatter) -> FmtResult {
19        match *self {
20            #[cfg(feature = "reqwest")]
21            Error::NetworkError(ref e) => write!(f, "NetworkError:  {}", e),
22            Error::UrlParseError(ref e) => write!(f, "UrlParseError:  {}", e),
23            Error::Unexpected => write!(f, "UnexpectedError"),
24            Error::IOError(ref e) => write!(f, "InputOutputError: {}", e),
25        }
26    }
27}
28
29impl From<url::ParseError> for Error {
30    fn from(err: url::ParseError) -> Error {
31        Error::UrlParseError(err)
32    }
33}
34
35impl From<io::Error> for Error {
36    fn from(err: io::Error) -> Error {
37        Error::IOError(err)
38    }
39}
40
41#[cfg(feature = "reqwest")]
42impl From<reqwest::Error> for Error {
43    fn from(err: reqwest::Error) -> Error {
44        Error::NetworkError(err)
45    }
46}
47
48impl error::Error for Error {}