Expand description
Rate limiting for Rust.
Implements the GCRA (Generic Cell Rate Algorithm) with pluggable
backends (in-memory via DashMap, optional Redis) and optional Tower
layer integration.
§Quick Start
use ratelimit::{RateLimiter, Quota, InMemoryBackend};
#[tokio::main]
async fn main() {
let backend = InMemoryBackend::new();
let limiter = RateLimiter::new(
Quota::per_second(10),
backend,
);
let result = limiter.check("user-123").await;
assert!(result.allowed);
}Structs§
- InMemory
Backend - In-memory backend backed by a
DashMap. - Keyed
Rate Limiter - Per-key rate limiter that tracks separate rate limits for each key.
- Quota
- A rate limit quota expressed in the GCRA style.
- Rate
Limit Result - Result of a rate limit check.
- Rate
Limiter - Core rate limiter that delegates to a
RateLimitBackend.
Enums§
- Rate
Limit Error - Errors returned by the rate limiter.
Traits§
- Rate
Limit Backend - Backend trait for rate limit state storage.