1use std::error::Error;
7use std::fmt;
8
9use crate::clock::ClockError;
10
11#[non_exhaustive]
13#[derive(Debug)]
14pub enum FluxLimiterError {
15 InvalidRate, InvalidBurst, ClockError(ClockError), }
19
20impl fmt::Display for FluxLimiterError {
22 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
23 match self {
24 FluxLimiterError::InvalidRate => write!(f, "Rate must be positive"),
25 FluxLimiterError::InvalidBurst => write!(f, "Burst must be non-negative"),
26 FluxLimiterError::ClockError(err) => {
27 write!(f, "Clock error occurred: {}", err)
28 }
29 }
30 }
31}
32
33impl Error for FluxLimiterError {
35 fn source(&self) -> Option<&(dyn Error + 'static)> {
36 match self {
37 FluxLimiterError::ClockError(err) => Some(err),
38 _ => None,
39 }
40 }
41}
42
43impl From<ClockError> for FluxLimiterError {
45 fn from(err: ClockError) -> Self {
46 FluxLimiterError::ClockError(err)
47 }
48}