cita_database/
error.rs

1use rocksdb::Error as RocksError;
2use std::error::Error;
3use std::fmt;
4use std::io::Error as IOError;
5
6#[derive(Debug, Clone, PartialEq, Eq)]
7pub enum DatabaseError {
8    NotFound,
9    InvalidData,
10    Internal(String),
11}
12
13impl From<IOError> for DatabaseError {
14    fn from(err: IOError) -> Self {
15        DatabaseError::Internal(err.to_string())
16    }
17}
18
19impl From<RocksError> for DatabaseError {
20    fn from(err: RocksError) -> Self {
21        DatabaseError::Internal(err.to_string())
22    }
23}
24
25impl Error for DatabaseError {}
26impl fmt::Display for DatabaseError {
27    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
28        let printable = match *self {
29            DatabaseError::NotFound => "not found".to_owned(),
30            DatabaseError::InvalidData => "invalid data".to_owned(),
31            DatabaseError::Internal(ref err) => format!("internal error: {:?}", err),
32        };
33        write!(f, "{}", printable)
34    }
35}