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 40 41 42 43 44 45
use std::error::Error as StdError; use std::fmt::{self, Display}; use std::result::Result as StdResult; use crate::Acc; pub type Result = StdResult<Acc, Error>; #[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)] pub enum ErrorKind { Io, } #[derive(Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)] pub struct Error { pub message: String, pub kind: ErrorKind, } impl Error { pub fn new(message: &str, kind: ErrorKind) -> Error { Error { message: String::from(message), kind, } } } impl Display for Error { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { writeln!(f, "{}", self.message) } } impl From<std::io::Error> for Error { fn from(error: std::io::Error) -> Self { Error::new(error.description(), ErrorKind::Io) } } impl StdError for Error { fn description(&self) -> &str { &*self.message } }