rate-guard 0.1.0

Thread-safe rate limiting library with multiple algorithms and Duration-based configuration
Documentation
#![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());
}