use std::error::Error as StdError;
use std::fmt;
#[derive(Debug)]
pub struct Error(Box<ErrorKind>);
#[must_use]
pub fn new(kind: ErrorKind) -> Error {
Error(Box::new(kind))
}
#[derive(Debug)]
pub enum ErrorKind {
#[cfg(feature = "messagepack")]
MessagePackSerialization(rmp_serde::encode::Error),
#[cfg(feature = "messagepack")]
MessagePackDeserialization(rmp_serde::decode::Error),
}
impl StdError for Error {}
impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
let errstr = match self.0.as_ref() {
#[cfg(feature = "messagepack")]
ErrorKind::MessagePackSerialization(e) => e.to_string(),
#[cfg(feature = "messagepack")]
ErrorKind::MessagePackDeserialization(e) => e.to_string(),
};
f.write_str(&errstr)
}
}