diff --git a/src/error.rs b/src/error.rs new file mode 100644 index 0000000..a3ec7ae --- /dev/null +++ b/src/error.rs @@ -0,0 +1,33 @@ +use std::error::Error as StdError; +use std::result::Result as StdResult; +use std::io::Error as IoError; +use std::fmt; + +#[derive(Debug)] +pub enum Error { + Io(IoError), + Conversion, +} + +impl fmt::Display for Error { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + f.write_str(self.description()) + } +} + +impl StdError for Error { + fn description(&self) -> &str { + match *self { + Error::Conversion => "Failed to convert values", + Error::Io(ref err) => err.description() + } + } +} + +impl From for Error { + fn from(err: IoError) -> Self { + Error::Io(err) + } +} + +pub type Result = StdResult; diff --git a/src/lib.rs b/src/lib.rs index 663fae0..e182547 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -11,6 +11,7 @@ extern crate libc; #[macro_use] mod macros; +mod error; mod utils; mod connection; mod models;