use failure::Fail;
#[derive(Fail, Debug)]
pub enum Error {
#[fail(display = "{}", _0)]
EnvVar(#[cause] ::std::env::VarError),
#[fail(display = "{}", _0)]
FromUtf8(#[cause] ::std::string::FromUtf8Error),
#[cfg(feature = "data-encoding")]
#[fail(display = "{}", _0)]
HexDecode(#[cause] ::data_encoding::DecodeError),
#[cfg(feature = "reqwest")]
#[fail(display = "{}", _0)]
Http(#[cause] ::reqwest::Error),
#[fail(display = "{}", _0)]
Internal(::failure::Error),
#[fail(display = "{}", _0)]
InvalidArgument(::failure::Error),
#[fail(display = "{}", _0)]
Io(#[cause] ::std::io::Error),
#[cfg(feature = "serde_json")]
#[fail(display = "{}", _0)]
Json(#[cause] ::serde_json::Error),
#[cfg(feature = "rmp-serde")]
#[fail(display = "{}", _0)]
MsgDecode(#[cause] ::rmp_serde::decode::Error),
#[cfg(feature = "rmp-serde")]
#[fail(display = "{}", _0)]
MsgEncode(#[cause] ::rmp_serde::encode::Error),
#[fail(display = "{}", _0)]
NotFound(::failure::Error),
#[fail(display = "{}", _0)]
Nul(#[cause] ::std::ffi::NulError),
#[fail(display = "{}", _0)]
ParseInt(#[cause] ::std::num::ParseIntError),
#[fail(display = "{}", _0)]
ParseIpAddr(#[cause] ::std::net::AddrParseError),
#[fail(display = "{}", _0)]
Precondition(::failure::Error),
#[cfg(feature = "regex")]
#[fail(display = "{}", _0)]
Regex(#[cause] ::regex::Error),
#[cfg(feature = "log")]
#[fail(display = "{}", _0)]
SetLogger(#[cause] ::log::SetLoggerError),
#[fail(display = "{}", _0)]
StringParse(#[cause] ::std::string::ParseError),
#[fail(display = "{}", _0)]
Unknown(::failure::Error),
#[cfg(feature = "reqwest")]
#[fail(display = "{}", _0)]
Url(#[cause] ::reqwest::UrlError),
}
impl From<::std::env::VarError> for Error {
fn from(e: ::std::env::VarError) -> Self {
Error::EnvVar(e)
}
}
impl From<::std::string::FromUtf8Error> for Error {
fn from(e: ::std::string::FromUtf8Error) -> Self {
Error::FromUtf8(e)
}
}
#[cfg(feature = "reqwest")]
impl From<::reqwest::Error> for Error {
fn from(e: ::reqwest::Error) -> Self {
Error::Http(e)
}
}
impl From<::std::io::Error> for Error {
fn from(e: ::std::io::Error) -> Self {
Error::Io(e)
}
}
#[cfg(feature = "serde_json")]
impl From<::serde_json::Error> for Error {
fn from(e: ::serde_json::Error) -> Self {
Error::Json(e)
}
}
#[cfg(feature = "rmp-serde")]
impl From<::rmp_serde::decode::Error> for Error {
fn from(e: ::rmp_serde::decode::Error) -> Self {
Error::MsgDecode(e)
}
}
#[cfg(feature = "rmp-serde")]
impl From<::rmp_serde::encode::Error> for Error {
fn from(e: ::rmp_serde::encode::Error) -> Self {
Error::MsgEncode(e)
}
}
impl From<::std::ffi::NulError> for Error {
fn from(e: ::std::ffi::NulError) -> Self {
Error::Nul(e)
}
}
impl From<::std::num::ParseIntError> for Error {
fn from(e: ::std::num::ParseIntError) -> Self {
Error::ParseInt(e)
}
}
impl From<::std::net::AddrParseError> for Error {
fn from(e: ::std::net::AddrParseError) -> Self {
Error::ParseIpAddr(e)
}
}
#[cfg(feature = "regex")]
impl From<::regex::Error> for Error {
fn from(e: ::regex::Error) -> Self {
Error::Regex(e)
}
}
#[cfg(feature = "log")]
impl From<::log::SetLoggerError> for Error {
fn from(e: ::log::SetLoggerError) -> Self {
Error::SetLogger(e)
}
}
impl From<::std::string::ParseError> for Error {
fn from(e: ::std::string::ParseError) -> Self {
Error::StringParse(e)
}
}
impl From<::failure::Error> for Error {
fn from(e: ::failure::Error) -> Self {
Error::Unknown(e)
}
}
#[cfg(feature = "reqwest")]
impl From<::reqwest::UrlError> for Error {
fn from(e: ::reqwest::UrlError) -> Self {
Error::Url(e)
}
}
pub type Result<T> = ::std::result::Result<T, Error>;