2016-05-18 11:34:15 +02:00
|
|
|
use trace::Error as TraceError;
|
2016-08-02 18:53:32 +02:00
|
|
|
use util::UtilError;
|
2016-05-18 11:34:15 +02:00
|
|
|
use std::fmt::{Display, Formatter, Error as FmtError};
|
|
|
|
|
2016-08-03 18:35:48 +02:00
|
|
|
use util::trie::TrieError;
|
|
|
|
|
2016-05-18 11:34:15 +02:00
|
|
|
/// Client configuration errors.
|
|
|
|
#[derive(Debug)]
|
|
|
|
pub enum Error {
|
|
|
|
/// TraceDB configuration error.
|
|
|
|
Trace(TraceError),
|
2016-08-03 18:35:48 +02:00
|
|
|
/// TrieDB-related error.
|
|
|
|
Trie(TrieError),
|
2016-08-02 18:53:32 +02:00
|
|
|
/// Database error
|
|
|
|
Database(String),
|
|
|
|
/// Util error
|
|
|
|
Util(UtilError),
|
2016-05-18 11:34:15 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
impl From<TraceError> for Error {
|
|
|
|
fn from(err: TraceError) -> Self {
|
|
|
|
Error::Trace(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-08-03 18:35:48 +02:00
|
|
|
impl From<TrieError> for Error {
|
|
|
|
fn from(err: TrieError) -> Self {
|
|
|
|
Error::Trie(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-08-02 18:53:32 +02:00
|
|
|
impl From<UtilError> for Error {
|
|
|
|
fn from(err: UtilError) -> Self {
|
|
|
|
Error::Util(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-08-03 18:35:48 +02:00
|
|
|
impl<E> From<Box<E>> for Error where Error: From<E> {
|
|
|
|
fn from(err: Box<E>) -> Self {
|
|
|
|
Error::from(*err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-05-18 11:34:15 +02:00
|
|
|
impl Display for Error {
|
|
|
|
fn fmt(&self, f: &mut Formatter) -> Result<(), FmtError> {
|
|
|
|
match *self {
|
2016-08-02 18:53:32 +02:00
|
|
|
Error::Trace(ref err) => write!(f, "{}", err),
|
2016-08-03 18:35:48 +02:00
|
|
|
Error::Trie(ref err) => write!(f, "{}", err),
|
2016-08-02 18:53:32 +02:00
|
|
|
Error::Util(ref err) => write!(f, "{}", err),
|
|
|
|
Error::Database(ref s) => write!(f, "Database error: {}", s),
|
2016-05-18 11:34:15 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|