use std::{fmt, io};
#[derive(Debug)]
pub enum Error {
Hello(String),
IO(String),
Qsu(String)
}
impl std::error::Error for Error {}
impl Error {
#[allow(clippy::needless_pass_by_value)]
pub fn hello(msg: impl ToString) -> Self {
Self::Hello(msg.to_string())
}
}
impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match self {
Self::Hello(s) => write!(f, "Hello error; {s}"),
Self::IO(s) => write!(f, "I/O error; {s}"),
Self::Qsu(s) => write!(f, "qsu error; {s}")
}
}
}
impl From<io::Error> for Error {
fn from(err: io::Error) -> Self {
Self::IO(err.to_string())
}
}
impl From<qsu::CbErr<Self>> for Error {
fn from(err: qsu::CbErr<Self>) -> Self {
Self::Qsu(err.to_string())
}
}
impl From<Error> for qsu::CbErr<Error> {
fn from(err: Error) -> Self {
Self::App(err)
}
}