Implement Error, Display for Error enum
This commit is contained in:
parent
053327f7dd
commit
52452923d2
2 changed files with 38 additions and 3 deletions
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "medallion"
|
name = "medallion"
|
||||||
version = "2.0.1"
|
version = "2.0.2"
|
||||||
authors = ["Thomas Gideon <cmdln@thecommandline.net>"]
|
authors = ["Thomas Gideon <cmdln@thecommandline.net>"]
|
||||||
description = "JWT library for rust using serde, serde_json and openssl"
|
description = "JWT library for rust using serde, serde_json and openssl"
|
||||||
homepage = "http://github.com/commandline/medallion"
|
homepage = "http://github.com/commandline/medallion"
|
||||||
|
|
39
src/error.rs
39
src/error.rs
|
@ -1,18 +1,53 @@
|
||||||
use base64::Base64Error;
|
use base64::Base64Error;
|
||||||
use serde_json;
|
use serde_json;
|
||||||
|
use std::error;
|
||||||
|
use std::fmt;
|
||||||
use std::string::FromUtf8Error;
|
use std::string::FromUtf8Error;
|
||||||
use openssl::error::ErrorStack;
|
use openssl::error::ErrorStack;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum Error {
|
pub enum Error {
|
||||||
Format,
|
Custom(String),
|
||||||
Utf8(FromUtf8Error),
|
Utf8(FromUtf8Error),
|
||||||
Base64(Base64Error),
|
Base64(Base64Error),
|
||||||
JSON(serde_json::Error),
|
JSON(serde_json::Error),
|
||||||
Custom(String),
|
|
||||||
Crypto(ErrorStack),
|
Crypto(ErrorStack),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl error::Error for Error {
|
||||||
|
fn description(&self) -> &str {
|
||||||
|
match *self {
|
||||||
|
Error::Custom(ref message) => &message,
|
||||||
|
Error::Utf8(ref err) => err.description(),
|
||||||
|
Error::Base64(ref err) => err.description(),
|
||||||
|
Error::JSON(ref err) => err.description(),
|
||||||
|
Error::Crypto(ref err) => err.description(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn cause(&self) -> Option<&error::Error> {
|
||||||
|
match *self {
|
||||||
|
Error::Custom(_) => None,
|
||||||
|
Error::Utf8(ref err) => Some(err),
|
||||||
|
Error::Base64(ref err) => Some(err),
|
||||||
|
Error::JSON(ref err) => Some(err),
|
||||||
|
Error::Crypto(ref err) => Some(err),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl fmt::Display for Error {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
|
match *self {
|
||||||
|
Error::Custom(ref message) => f.write_str(&message),
|
||||||
|
Error::Utf8(ref err) => err.fmt(f),
|
||||||
|
Error::Base64(ref err) => err.fmt(f),
|
||||||
|
Error::JSON(ref err) => err.fmt(f),
|
||||||
|
Error::Crypto(ref err) => err.fmt(f),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
macro_rules! error_wrap {
|
macro_rules! error_wrap {
|
||||||
($f: ty, $e: expr) => {
|
($f: ty, $e: expr) => {
|
||||||
impl From<$f> for Error {
|
impl From<$f> for Error {
|
||||||
|
|
Loading…
Reference in a new issue