Thanks to visit codestin.com
Credit goes to lib.rs

#rate-limiting #rate-limiting-middleware #middleware #web-api

armature-ratelimit

Rate limiting middleware for Armature framework with multiple algorithms and storage backends

3 releases

0.1.2 Dec 30, 2025
0.1.1 Dec 29, 2025
0.1.0 Dec 27, 2025

#4 in #rate-limiting-middleware


Used in armature-framework

Apache-2.0

2MB
44K SLoC

armature-ratelimit

Rate limiting middleware for the Armature framework.

Features

  • Multiple Algorithms - Token bucket, sliding window, fixed window
  • Redis Backend - Distributed rate limiting
  • Flexible Keys - Rate limit by IP, user, API key, etc.
  • Custom Responses - Configurable 429 responses
  • Headers - Standard rate limit headers (X-RateLimit-*)

Installation

[dependencies]
armature-ratelimit = "0.1"

Quick Start

use armature_ratelimit::{RateLimiter, RateLimitConfig};

let limiter = RateLimiter::new(RateLimitConfig {
    requests: 100,
    window: Duration::from_secs(60),
    key_extractor: |req| req.header("X-API-Key").unwrap_or("anonymous"),
});

let app = Application::new()
    .with_middleware(limiter)
    .get("/api/data", handler);

Algorithms

Token Bucket

let limiter = RateLimiter::token_bucket(100, Duration::from_secs(1));

Sliding Window

let limiter = RateLimiter::sliding_window(100, Duration::from_secs(60));

Fixed Window

let limiter = RateLimiter::fixed_window(100, Duration::from_secs(60));

Response Headers

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1640000000

License

MIT OR Apache-2.0

Dependencies

~33–51MB
~1M SLoC