use core::fmt;
use std::error::Error;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum CatalanError {
ZeroOrder,
CatalanOverflow(u64),
FussCatalanOverflow {
order: u64,
n: u64,
},
}
impl fmt::Display for CatalanError {
fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::ZeroOrder => formatter.write_str("Fuss-Catalan order must be at least 1"),
Self::CatalanOverflow(n) => {
write!(formatter, "Catalan number overflowed u128 for n={n}")
},
Self::FussCatalanOverflow { order, n } => {
write!(
formatter,
"Fuss-Catalan number overflowed u128 for order={order}, n={n}"
)
},
}
}
}
impl Error for CatalanError {}