use burster::Limiter;
use rand::Rng;
use std::{
thread,
time::{Duration, Instant},
};
fn main() {
let mut bucket = burster::sliding_window_log::<1000>(100);
let start = Instant::now();
let mut pass = 0;
let mut rng = rand::thread_rng();
println!("Trying to consume 100 000 tokens with varying intervals");
for _ in 0..100_000 {
if bucket.try_consume_one().is_ok() {
pass += 1
}
thread::sleep(Duration::from_micros(rng.gen_range(0..10)));
}
let elapsed = start.elapsed().as_secs_f64();
let rate_per_s = pass as f64 / elapsed;
println!("Average pass rate {rate_per_s}");
}