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