From 42f7e086a32d805f2965058b08cbdf303a331cb5 Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Sun, 15 May 2016 16:41:25 +0200 Subject: [PATCH] Replace error code with macro for code generation --- libimagstore/src/hook/error.rs | 82 ++-------------------------------- 1 file changed, 4 insertions(+), 78 deletions(-) diff --git a/libimagstore/src/hook/error.rs b/libimagstore/src/hook/error.rs index b9abd4fe..ec06dd98 100644 --- a/libimagstore/src/hook/error.rs +++ b/libimagstore/src/hook/error.rs @@ -3,14 +3,10 @@ use std::fmt::Error as FmtError; use std::fmt::{Display, Formatter}; use std::convert::Into; -/** - * Kind of error - */ -#[derive(Clone, Copy, Debug)] -pub enum HookErrorKind { - HookExecutionError, - AccessTypeViolation, -} +generate_error_types!(HookError, HookErrorKind, + HookExecutionError => "Hook exec error", + AccessTypeViolation => "Hook access type violation" +); pub trait IntoHookError { fn into_hookerror(self) -> HookError; @@ -33,73 +29,3 @@ impl Into for (HookErrorKind, Box) { } -fn hook_error_type_as_str(e: &HookErrorKind) -> &'static str { - match *e { - HookErrorKind::HookExecutionError => "Hook exec error", - HookErrorKind::AccessTypeViolation => "Hook access type violation", - } -} - -impl Display for HookErrorKind { - - fn fmt(&self, fmt: &mut Formatter) -> Result<(), FmtError> { - try!(write!(fmt, "{}", hook_error_type_as_str(self))); - Ok(()) - } - -} - -/** - * Error type - */ -#[derive(Debug)] -pub struct HookError { - err_type: HookErrorKind, - cause: Option>, -} - -impl HookError { - - /** - * Build a new HookError from an HookErrorKind, optionally with cause - */ - pub fn new(errtype: HookErrorKind, cause: Option>) - -> HookError - { - HookError { - err_type: errtype, - cause: cause, - } - } - - /** - * Get the error type of this HookError - */ - pub fn err_type(&self) -> HookErrorKind { - self.err_type - } - -} - -impl Display for HookError { - - fn fmt(&self, fmt: &mut Formatter) -> Result<(), FmtError> { - try!(write!(fmt, "[{}]", hook_error_type_as_str(&self.err_type))); - Ok(()) - } - -} - -impl Error for HookError { - - fn description(&self) -> &str { - hook_error_type_as_str(&self.err_type) - } - - fn cause(&self) -> Option<&Error> { - self.cause.as_ref().map(|e| &**e) - } - -} - -