From d036ddc071fd9bedfc75c2a30b17e4e1fec2adb4 Mon Sep 17 00:00:00 2001 From: Ivan Ukhov Date: Mon, 8 Jun 2015 18:19:15 -0400 Subject: [PATCH] Use From for convertin codes to error kinds --- src/error.rs | 17 +++++++++-------- src/lib.rs | 4 ++-- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/error.rs b/src/error.rs index f51c560..bf2fdf2 100644 --- a/src/error.rs +++ b/src/error.rs @@ -1,4 +1,3 @@ -use libc::c_int; use raw; use std::convert::{From, Into}; use std::fmt::{self, Display, Formatter}; @@ -19,10 +18,12 @@ macro_rules! declare( Unknown, } - pub fn kind_from_code(code: c_int) -> ErrorKind { - match code { - $(raw::$right => ErrorKind::$left,)* - _ => ErrorKind::Unknown, + impl From for ErrorKind { + fn from(code: isize) -> ErrorKind { + match code as ::libc::c_int { + $(raw::$right => ErrorKind::$left,)* + _ => ErrorKind::Unknown, + } } } ); @@ -105,7 +106,7 @@ pub fn last(raw: *mut raw::sqlite3) -> Option { return None; } Some(Error { - kind: kind_from_code(code), + kind: ErrorKind::from(code as isize), message: Some(c_str_to_string!(message)), }) } @@ -113,13 +114,13 @@ pub fn last(raw: *mut raw::sqlite3) -> Option { #[cfg(test)] mod tests { - use super::{ErrorKind, kind_from_code}; + use super::ErrorKind; #[test] fn fmt() { assert_eq!(format!("{}", ErrorKind::OK), String::from("SQLite result code 0")); - assert_eq!(format!("{}", kind_from_code(777)), + assert_eq!(format!("{}", ErrorKind::from(777)), String::from("an unknown SQLite result code")); } } diff --git a/src/lib.rs b/src/lib.rs index a423889..017b3d8 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -14,7 +14,7 @@ macro_rules! failure( ($database:expr, $code:expr) => ( match ::error::last($database) { Some(error) => return Err(error), - None => return Err(::Error::from(::error::kind_from_code($code))), + None => return Err(::Error::from(::ErrorKind::from($code as isize))), } ); ); @@ -29,7 +29,7 @@ macro_rules! success( ($result:expr) => ( match $result { ::raw::SQLITE_OK => {}, - code => return Err(::Error::from(::error::kind_from_code(code))), + code => return Err(::Error::from(::ErrorKind::from(code as isize))), } ); );