use std::error::Error;
use std::fmt::Display;
pub type GenericResult<T> = Result<T, Box<dyn Error>>;
pub type CrateResult<T> = Result<T, CrateError>;
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub enum CrateError {
NonDigitChar(char),
NonDigitNumber(u128),
NegativeNumber(i128),
Overflow,
}
impl Display for CrateError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::NonDigitChar(non_digit_char) => write!(f, "Non-digit char: {}", non_digit_char),
Self::NonDigitNumber(non_digit_number) => {
write!(f, "Non-digit number: {}", non_digit_number)
}
Self::NegativeNumber(number) => {
write!(f, "Cannot convert negative number: {}", number)
}
Self::Overflow => write!(f, "Overflow"),
}
}
}
impl Error for CrateError {}