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::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());
}