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