1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
use failure::Fail; use std::io; use std::num::ParseIntError; pub type Result<T> = std::result::Result<T, Error>; #[derive(Debug, Fail)] pub enum Error { #[fail(display = "IO error: {}", _0)] Io(#[fail(cause)] io::Error), #[fail(display = "JSON error: {}", _0)] Json(#[fail(cause)] serde_json::error::Error), #[fail(display = "error: {}", _0)] InvalidSourceValue(String), #[fail(display = "error: {}", _0)] InvalidNamespace(String), #[fail(display = "error: {}", _0)] InvalidNamespaceArrayIndex(#[fail(cause)] ParseIntError), #[fail(display = "error: {}", _0)] Rule(String), } impl From<ParseIntError> for Error { fn from(error: ParseIntError) -> Self { Error::InvalidNamespaceArrayIndex(error) } } impl From<io::Error> for Error { fn from(error: io::Error) -> Self { Error::Io(error) } } impl From<serde_json::error::Error> for Error { fn from(error: serde_json::error::Error) -> Self { Error::Json(error) } }