From 40be78dbd10f37c36646f34aab05dc966e0d08e3 Mon Sep 17 00:00:00 2001 From: Patrick Auernig Date: Thu, 29 Mar 2018 22:57:00 +0200 Subject: [PATCH] Add error type --- src/error.rs | 33 +++++++++++++++++++++++++++++++++ src/lib.rs | 1 + 2 files changed, 34 insertions(+) create mode 100644 src/error.rs 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;