use std::time::Instant;
use reliakit_ratelimit::RateLimiter;
fn main() {
let mut limiter = RateLimiter::new(5, 1, 200);
let start = Instant::now();
for i in 0..15 {
let now = start.elapsed().as_millis() as u64;
if limiter.try_acquire_one(now) {
println!(
"[{now:>4}ms] request {i:>2}: allowed ({} left)",
limiter.available(now)
);
} else {
let wait = limiter.retry_after(now, 1).unwrap_or(0);
println!("[{now:>4}ms] request {i:>2}: throttled, retry after {wait}ms");
}
std::thread::sleep(std::time::Duration::from_millis(80));
}
}