A powerful, lock-free rate limiter for Rust: multiple algorithms behind one trait, sharded per-key state, bounded-memory eviction, retry-after, and a one-line Tier-1 API. Built against hostile traffic.
//! Tier-1: limit a key to N requests per second.
//!//! ```text
//! cargo run --example per_second
//! ```
userate_net::{Decision, RateLimiter};fnmain(){// Five requests per second, per key.
let limiter =RateLimiter::per_second(5);letmut allowed =0u32;letmut denied =0u32;for i in0..8{match limiter.check("user:42"){Decision::Allow =>{
allowed +=1;println!("request {i}: allowed");}Decision::Deny { retry_after }=>{
denied +=1;println!("request {i}: denied (retry after {retry_after:?})");}_=>{}}}println!("\n{allowed} allowed, {denied} denied against a 5/s limit");}