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 IPRe-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§
Functions§
- global_
limiter - Return the process-global
Limiterinstance (memory-backed).