diff options
author | Paul Woolcock <paul@woolcock.us> | 2020-04-07 12:53:24 -0400 |
---|---|---|
committer | Paul Woolcock <paul@woolcock.us> | 2020-04-07 12:53:24 -0400 |
commit | 23a7fff57c066f8545cfe9cadb98e7cb6ae4ab9b (patch) | |
tree | d85ac554e802c84ebad6ed6916de5216e4b458de | |
parent | 7e3f25dab47269722e1551f77d830042b6b2730d (diff) |
Update error type to remove deprecated `description` uses
-rw-r--r-- | src/errors.rs | 60 |
1 files changed, 32 insertions, 28 deletions
diff --git a/src/errors.rs b/src/errors.rs index 04f7c90..b48cb0c 100644 --- a/src/errors.rs +++ b/src/errors.rs @@ -71,37 +71,33 @@ impl fmt::Display for Error { } impl error::Error for Error { - fn description(&self) -> &str { - match *self { - Error::Api(ref e) => e - .error_description - .as_ref() - .map(|i| &**i) - .or(e.error.as_ref().map(|i| &**i)) - .unwrap_or("Unknown API Error"), - Error::Serde(ref e) => e.description(), - Error::UrlEncoded(ref e) => e.description(), - Error::Http(ref e) => e.description(), - Error::Io(ref e) => e.description(), - Error::Url(ref e) => e.description(), - Error::Client(ref status) | Error::Server(ref status) => { - status.canonical_reason().unwrap_or("Unknown Status code") - }, - Error::ClientIdRequired => "ClientIdRequired", - Error::ClientSecretRequired => "ClientSecretRequired", - Error::AccessTokenRequired => "AccessTokenRequired", - Error::MissingField(_) => "MissingField", + fn source(&self) -> Option<&(dyn error::Error + 'static)> { + Some(match *self { + Error::Api(ref e) => e, + Error::Serde(ref e) => e, + Error::UrlEncoded(ref e) => e, + Error::Http(ref e) => e, + Error::Io(ref e) => e, + Error::Url(ref e) => e, #[cfg(feature = "toml")] - Error::TomlSer(ref e) => e.description(), + Error::TomlSer(ref e) => e, #[cfg(feature = "toml")] - Error::TomlDe(ref e) => e.description(), - Error::HeaderStrError(ref e) => e.description(), - Error::HeaderParseError(ref e) => e.description(), + Error::TomlDe(ref e) => e, + Error::HeaderStrError(ref e) => e, + Error::HeaderParseError(ref e) => e, #[cfg(feature = "env")] - Error::Envy(ref e) => e.description(), - Error::SerdeQs(ref e) => e.description(), - Error::Other(ref e) => e, - } + Error::Envy(ref e) => e, + Error::SerdeQs(ref e) => e, + + Error::Client(..) | Error::Server(..) => { + return None + }, + Error::ClientIdRequired => return None, + Error::ClientSecretRequired => return None, + Error::AccessTokenRequired => return None, + Error::MissingField(_) => return None, + Error::Other(..) => return None, + }) } } @@ -114,6 +110,14 @@ pub struct ApiError { pub error_description: Option<String>, } +impl fmt::Display for ApiError { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "{:?}", self) + } +} + +impl error::Error for ApiError {} + macro_rules! from { ($($(#[$met:meta])* $typ:ident, $variant:ident,)*) => { $( |