feat: add errors
This commit is contained in:
parent
2da1819550
commit
e67675553f
98
src/error.rs
Normal file
98
src/error.rs
Normal file
@ -0,0 +1,98 @@
|
||||
use std::{fmt, sync::Arc};
|
||||
|
||||
pub enum Error {
|
||||
Io(std::io::Error),
|
||||
Wifi(wifi_rs::prelude::WifiHotspotError),
|
||||
Decoder(rodio::decoder::DecoderError),
|
||||
Play(rodio::PlayError),
|
||||
Stream(rodio::StreamError),
|
||||
Recv(crossbeam_channel::RecvError),
|
||||
File(std::io::Error),
|
||||
Rusb(rusb::Error),
|
||||
Send(crossbeam_channel::SendError<Arc<str>>),
|
||||
MutexPoison,
|
||||
}
|
||||
|
||||
impl fmt::Debug for Error {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
match self {
|
||||
Self::Io(err) => write!(f, "IO error: {err}"),
|
||||
Self::Wifi(err) => write!(f, "WiFi error: {err:?}"),
|
||||
Self::Decoder(err) => write!(f, "Decoder error: {err:?}"),
|
||||
Self::Play(err) => write!(f, "Play error: {err:?}"),
|
||||
Self::Stream(err) => write!(f, "Stream error: {err:?}"),
|
||||
Self::Recv(_) => write!(f, "Receiver channel error"),
|
||||
Self::File(err) => write!(f, "File error: {err}"),
|
||||
Self::Rusb(err) => write!(f, "Rusb error: {err}"),
|
||||
Self::Send(err) => write!(f, "Send error: {err}"),
|
||||
Self::MutexPoison => write!(f, "Mutex poison error"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Display for Error {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
match self {
|
||||
Self::Io(err) => write!(f, "IO error: {err}"),
|
||||
Self::Wifi(err) => write!(f, "WiFi error: {err:?}"),
|
||||
Self::Decoder(err) => write!(f, "Decoder error: {err:?}"),
|
||||
Self::Play(err) => write!(f, "Play error: {err:?}"),
|
||||
Self::Stream(err) => write!(f, "Stream error: {err:?}"),
|
||||
Self::Recv(_) => write!(f, "Receiver channel error"),
|
||||
Self::File(err) => write!(f, "File error: {err}"),
|
||||
Self::Rusb(err) => write!(f, "Rusb error: {err}"),
|
||||
Self::Send(err) => write!(f, "Send error: {err}"),
|
||||
Self::MutexPoison => write!(f, "Mutex poison error"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<rusb::Error> for Error {
|
||||
fn from(err: rusb::Error) -> Self {
|
||||
Self::Rusb(err)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<rodio::StreamError> for Error {
|
||||
fn from(err: rodio::StreamError) -> Self {
|
||||
Self::Stream(err)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<rodio::decoder::DecoderError> for Error {
|
||||
fn from(err: rodio::decoder::DecoderError) -> Self {
|
||||
Self::Decoder(err)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<rodio::PlayError> for Error {
|
||||
fn from(err: rodio::PlayError) -> Self {
|
||||
Self::Play(err)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<crossbeam_channel::RecvError> for Error {
|
||||
fn from(_: crossbeam_channel::RecvError) -> Self {
|
||||
Self::Recv(crossbeam_channel::RecvError)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<wifi_rs::prelude::WifiHotspotError> for Error {
|
||||
fn from(err: wifi_rs::prelude::WifiHotspotError) -> Self {
|
||||
Self::Wifi(err)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<std::io::Error> for Error {
|
||||
fn from(err: std::io::Error) -> Self {
|
||||
Self::Io(err)
|
||||
}
|
||||
}
|
||||
|
||||
impl<T> From<std::sync::PoisonError<std::sync::MutexGuard<'_, T>>> for Error {
|
||||
fn from(_: std::sync::PoisonError<std::sync::MutexGuard<'_, T>>) -> Self {
|
||||
Self::MutexPoison
|
||||
}
|
||||
}
|
||||
|
||||
impl std::error::Error for Error {}
|
Loading…
x
Reference in New Issue
Block a user