| Crates.io | garden-ratelimiter |
| lib.rs | garden-ratelimiter |
| version | 0.1.1 |
| created_at | 2025-09-18 10:38:42.076189+00 |
| updated_at | 2025-09-22 11:02:12.155201+00 |
| description | A simple, in-memory sliding window rate limiter for Rust applications. |
| homepage | |
| repository | |
| max_upload_size | |
| id | 1844547 |
| size | 54,927 |
A simple, in-memory sliding window rate limiter for Rust applications.
Add the crate to your dependencies.
Example usage:
use ratelimiter::RateLimiter;
#[tokio::main]
async fn main() {
// Create a rate limiter (allow-list is optional)
let limiter = RateLimiter::new(vec![]).await;
let api_key = "user123";
// Allow up to 10 requests per 60 seconds (60000 ms)
let response = limiter.allow(api_key, 60_000, 10.0).await;
if response.allow {
// Proceed with request
} else {
// Rate limit exceeded, check response.headers.retry_after
}
}
RateLimiter::new(allow_list: Vec<String>) -> RateLimiter - Create a new rate limiter.allow(&self, key: &str, window_size_ms: i64, max_requests: f64) -> RateLimitResponse - Check if a request for the given key is allowed.add_to_allow_list(&self, key: String) - Exempt a key from rate limiting.MIT