use rate_net::{Algorithm, RateLimiter};
use std::time::Duration;
fn main() {
let algorithms = [
Algorithm::TokenBucket,
Algorithm::LeakyBucket,
Algorithm::FixedWindow,
Algorithm::SlidingWindowLog,
Algorithm::SlidingWindowCounter,
];
for algorithm in algorithms {
let limiter = RateLimiter::builder()
.algorithm(algorithm)
.quota(5, Duration::from_secs(1))
.build();
let admitted = (0..10).filter(|_| limiter.check("k").is_allow()).count();
println!("{algorithm:?}: admitted {admitted}/10 at t=0 (limit 5/s)");
}
}