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 46
use std::fmt; use std::error::Error as StdError; use std::io::Error as IoError; use serde_json::Error as JsonError; use std::convert::From; #[derive(Debug)] pub enum Error { IoError(IoError), EncryptError, DeserializeError(JsonError), } impl fmt::Display for Error { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match *self { Error::IoError(_) => f.write_str("Error connecting to the device"), Error::EncryptError => f.write_str("Failed to encrypt the message"), Error::DeserializeError(_) => { f.write_str("Couldn't deserialize the response received form the device") } } } } impl StdError for Error { fn description(&self) -> &str { match *self { Error::IoError(_) => "Error connecting to the device", Error::EncryptError => "Failed to encrypt message", Error::DeserializeError(_) => "Couldn't parse the response received form the device", } } } impl From<IoError> for Error { fn from(error: IoError) -> Self { Error::IoError(error) } } impl From<JsonError> for Error { fn from(error: JsonError) -> Self { Error::DeserializeError(error) } }