Skip to main content

Crate rok_rate_limit

Crate rok_rate_limit 

Source
Expand description

Rate limiting for the rok ecosystem.

§Programmatic API

use rok_rate_limit::{Limiter, LimitResult};

let limiter = Limiter::memory();

let result = limiter
    .for_key("user:alice")
    .requests(100)
    .per(std::time::Duration::from_secs(60))
    .check();

match result {
    LimitResult::Allowed { remaining, reset_epoch } => { /* proceed */ }
    LimitResult::Exceeded { retry_after_secs }      => { /* return 429 */ }
}

§Tower Middleware

use rok_rate_limit::ThrottleLayer;

let app = Router::new()
    .route("/api/posts", get(list_posts))
    .layer(ThrottleLayer::by_ip("api", 100, 60)); // 100 req/min per IP

Re-exports§

pub use fixed::parse_duration;
pub use fixed::FixedRateLimiter;
pub use fixed::FIXED_LIMITER;
pub use limiter::LimitBuilder;
pub use limiter::LimitResult;
pub use limiter::Limiter;

Modules§

backend
fixed
Fixed-window in-memory rate limiter.
limiter

Functions§

global_limiter
Return the process-global Limiter instance (memory-backed).