#[non_exhaustive]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
pub enum Algorithm {
#[default]
TokenBucket,
#[cfg(feature = "algorithms")]
LeakyBucket,
#[cfg(feature = "algorithms")]
FixedWindow,
#[cfg(feature = "algorithms")]
SlidingWindowLog,
#[cfg(feature = "algorithms")]
SlidingWindowCounter,
}
#[cfg(test)]
mod tests {
use super::Algorithm;
#[test]
fn test_default_is_token_bucket() {
assert_eq!(Algorithm::default(), Algorithm::TokenBucket);
}
#[cfg(feature = "algorithms")]
#[test]
fn test_variants_are_distinct() {
assert_ne!(Algorithm::TokenBucket, Algorithm::LeakyBucket);
assert_ne!(Algorithm::FixedWindow, Algorithm::SlidingWindowLog);
}
}