use std::{
error::Error,
fmt::{Display, Formatter},
str::Utf8Error,
sync::PoisonError,
};
use async_hid::HidError;
use image::ImageError;
#[derive(Debug)]
pub enum MirajazzError {
WatcherAlreadyInitialized,
DeviceNotFoundError,
InvalidDeviceError,
HidError(HidError),
Utf8Error(Utf8Error),
ImageError(ImageError),
PoisonError,
NoScreen,
InvalidKeyIndex,
UnrecognizedPID,
UnsupportedOperation,
BadData,
}
impl Display for MirajazzError {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
write!(f, "{:?}", self)
}
}
impl Error for MirajazzError {}
impl From<HidError> for MirajazzError {
fn from(e: HidError) -> Self {
Self::HidError(e)
}
}
impl From<Utf8Error> for MirajazzError {
fn from(e: Utf8Error) -> Self {
Self::Utf8Error(e)
}
}
impl From<ImageError> for MirajazzError {
fn from(e: ImageError) -> Self {
Self::ImageError(e)
}
}
impl<T> From<PoisonError<T>> for MirajazzError {
fn from(_value: PoisonError<T>) -> Self {
Self::PoisonError
}
}