#![cfg(feature = "std-time")]
use rate_guard::{Millis, StdTimeSource, RateLimit};
use rate_guard::limits::SlidingWindowCounterBuilder;
use std::time::Duration;
fn main() {
let counter = SlidingWindowCounterBuilder::builder()
.capacity(100)
.bucket_duration(Duration::from_secs(10))
.bucket_count(6)
.with_time(StdTimeSource::new())
.with_precision::<Millis>()
.build()
.unwrap();
for i in 0..105 {
match counter.try_acquire(1) {
Ok(()) => println!("Request {} allowed", i),
Err(_) => println!("Request {} rate limited", i),
}
}
println!("Remaining: {}", counter.capacity_remaining().unwrap());
}