aboutsummaryrefslogtreecommitdiff
path: root/src/bt.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/bt.rs')
-rw-r--r--src/bt.rs40
1 files changed, 18 insertions, 22 deletions
diff --git a/src/bt.rs b/src/bt.rs
index c379d1d..3c1b604 100644
--- a/src/bt.rs
+++ b/src/bt.rs
@@ -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
}
}