use core::fmt;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct OverflowError;
impl fmt::Display for OverflowError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_str("decimal overflow")
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum DivError {
Overflow,
DivisionByZero,
}
impl fmt::Display for DivError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::Overflow => f.write_str("decimal division overflow"),
Self::DivisionByZero => f.write_str("division by zero"),
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ParseError {
InvalidFormat,
Overflow,
PrecisionLoss,
}
impl fmt::Display for ParseError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::InvalidFormat => f.write_str("invalid decimal format"),
Self::Overflow => f.write_str("decimal parse overflow"),
Self::PrecisionLoss => f.write_str("precision loss in decimal parse"),
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ConvertError {
Overflow,
PrecisionLoss,
}
impl fmt::Display for ConvertError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::Overflow => f.write_str("decimal conversion overflow"),
Self::PrecisionLoss => f.write_str("precision loss in decimal conversion"),
}
}
}
#[cfg(feature = "std")]
impl std::error::Error for OverflowError {}
#[cfg(feature = "std")]
impl std::error::Error for DivError {}
#[cfg(feature = "std")]
impl std::error::Error for ParseError {}
#[cfg(feature = "std")]
impl std::error::Error for ConvertError {}