diff options
Diffstat (limited to 'src/bt.rs')
-rw-r--r-- | src/bt.rs | 40 |
1 files changed, 18 insertions, 22 deletions
@@ -1,42 +1,38 @@ use super::api::{Api, ApiError, Profession, Skill, Specialization}; use byteorder::{ReadBytesExt, WriteBytesExt, LE}; use num_enum::{IntoPrimitive, TryFromPrimitive}; -use std::{convert::TryFrom, error::Error, fmt, io::Cursor, str::FromStr}; +use std::{convert::TryFrom, fmt, io::Cursor, str::FromStr}; +use thiserror::Error; -#[derive(Debug)] +#[derive(Error, Debug)] pub enum ChatlinkError { - ApiError(ApiError), + #[error("Error accessing the API")] + ApiError(#[from] ApiError), + #[error("The input link is malformed")] MalformedInput, } -error_froms! { ChatlinkError, - err: ApiError => ChatlinkError::ApiError(err), - _err: base64::DecodeError => ChatlinkError::MalformedInput, - _err: num_enum::TryFromPrimitiveError<TraitChoice> => ChatlinkError::MalformedInput, - _err: num_enum::TryFromPrimitiveError<Legend> => ChatlinkError::MalformedInput, -} - impl From<std::io::Error> for ChatlinkError { fn from(_err: std::io::Error) -> Self { panic!("The reading cursor should never return an error!"); } } -impl fmt::Display for ChatlinkError { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - match *self { - ChatlinkError::ApiError(_) => write!(f, "error accessing the API"), - ChatlinkError::MalformedInput => write!(f, "the input link is malformed"), - } +impl From<base64::DecodeError> for ChatlinkError { + fn from(_: base64::DecodeError) -> Self { + ChatlinkError::MalformedInput } } -impl Error for ChatlinkError { - fn source(&self) -> Option<&(dyn Error + 'static)> { - match *self { - ChatlinkError::ApiError(ref err) => Some(err), - _ => None, - } +impl From<num_enum::TryFromPrimitiveError<TraitChoice>> for ChatlinkError { + fn from(_: num_enum::TryFromPrimitiveError<TraitChoice>) -> Self { + ChatlinkError::MalformedInput + } +} + +impl From<num_enum::TryFromPrimitiveError<Legend>> for ChatlinkError { + fn from(_: num_enum::TryFromPrimitiveError<Legend>) -> Self { + ChatlinkError::MalformedInput } } |