use std::error::Error;
use std::fmt;
use crate::clock::ClockError;
#[non_exhaustive]
#[derive(Debug)]
pub enum FluxLimiterError {
InvalidRate, InvalidBurst, ClockError(ClockError), }
impl fmt::Display for FluxLimiterError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match self {
FluxLimiterError::InvalidRate => write!(f, "Rate must be positive"),
FluxLimiterError::InvalidBurst => write!(f, "Burst must be non-negative"),
FluxLimiterError::ClockError(err) => {
write!(f, "Clock error occurred: {}", err)
}
}
}
}
impl Error for FluxLimiterError {
fn source(&self) -> Option<&(dyn Error + 'static)> {
match self {
FluxLimiterError::ClockError(err) => Some(err),
_ => None,
}
}
}
impl From<ClockError> for FluxLimiterError {
fn from(err: ClockError) -> Self {
FluxLimiterError::ClockError(err)
}
}