use std; use std::{fmt, io, result}; use ffi; pub type Result = result::Result; #[derive(Debug)] pub enum Error { IoError(io::Error), NotmuchError(ffi::Status), UnspecifiedError, } impl std::error::Error for Error {} impl fmt::Display for Error { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match self { Error::IoError(e) => write!(f, "IO error: {}", e), Error::NotmuchError(e) => write!(f, "notmuch error: {}", e), Error::UnspecifiedError => write!(f, "unspecified error"), } } } impl std::convert::From for Error { fn from(err: io::Error) -> Error { Error::IoError(err) } } impl std::convert::From for Error { fn from(err: ffi::Status) -> Error { Error::NotmuchError(err) } } impl std::convert::From for Error { fn from(err: ffi::notmuch_status_t) -> Error { Error::NotmuchError(ffi::Status::from(err)) } }