use std::fmt;
use std::io::Error as IoError;
use std::error::Error;
use ecdh_wrapper::errors::KeyError;
#[derive(Debug)]
pub enum MixKeyError {
CreateCacheFailed,
LoadCacheFailed,
KeyError(KeyError),
IoError(IoError),
SledError,
}
impl fmt::Display for MixKeyError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
use self::MixKeyError::*;
match self {
CreateCacheFailed => write!(f, "Failed to create cache."),
LoadCacheFailed => write!(f, "Failed to load cache."),
KeyError(x) => x.fmt(f),
IoError(x) => x.fmt(f),
SledError => write!(f, "Failed to set page cache key."),
}
}
}
impl Error for MixKeyError {
fn description(&self) -> &str {
"I'm a MixKeyError."
}
fn cause(&self) -> Option<&Error> {
use self::MixKeyError::*;
match self {
CreateCacheFailed => None,
LoadCacheFailed => None,
KeyError(x) => x.source(),
IoError(x) => x.source(),
SledError => None,
}
}
}
impl From<KeyError> for MixKeyError {
fn from(error: KeyError) -> Self {
MixKeyError::KeyError(error)
}
}
impl From<IoError> for MixKeyError {
fn from(error: IoError) -> Self {
MixKeyError::IoError(error)
}
}