use std::fmt;
#[derive(Debug, PartialEq)]
pub enum OddsError {
InvalidAmericanOdds(String),
InvalidDecimalOdds(String),
InvalidFractionalOdds(String),
ParseError(String),
ValueOutOfRange(String),
ZeroDenominator,
NegativeValue(String),
InfiniteOrNaN,
}
impl fmt::Display for OddsError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match self {
OddsError::InvalidAmericanOdds(msg) => write!(f, "Invalid American odds: {}", msg),
OddsError::InvalidDecimalOdds(msg) => write!(f, "Invalid decimal odds: {}", msg),
OddsError::InvalidFractionalOdds(msg) => write!(f, "Invalid fractional odds: {}", msg),
OddsError::ParseError(msg) => write!(f, "Failed to parse odds string: {}", msg),
OddsError::ValueOutOfRange(msg) => write!(f, "Value out of range: {}", msg),
OddsError::ZeroDenominator => write!(f, "Denominator cannot be zero"),
OddsError::NegativeValue(msg) => write!(f, "Negative value not allowed: {}", msg),
OddsError::InfiniteOrNaN => write!(f, "Value must be finite and not NaN"),
}
}
}
impl std::error::Error for OddsError {}