arsenal-broker · rate
Declared module signatures, types, configuration, and source documentation.
Source: arsenal/crates/arsenal-broker/src/rate.rs. SHA-256: acf9b257612b3e15bb618bf2c995edb440ab98f13f0d3403486c0a2104e242ec.
This source reference follows declared modules and preserves feature attributes. It includes public declarations and implementation methods in those modules. Private-module exports and trait resolution still require the compiler; not every declaration is a crate-root import. Function bodies and constant values are omitted. Source comments describe their implementation context and are not a production deployment claim.
rate::RateLimitResult
Result of a rate limit check
#[derive(Debug, Clone)]
pub enum RateLimitResult {
/// Request is allowed
Allowed {
/// Remaining requests in the current window
remaining: u64,
},
/// Request is rate limited
Limited {
/// Seconds until the limit resets
retry_after: u64,
},
}Source line: 13.
rate::RateLimiter
Rate limiter with per-key token buckets
pub struct RateLimiter {
}Source line: 99.
rate::RateLimitConfig
Configuration for a specific rate limit key
#[derive(Debug, Clone)]
pub struct RateLimitConfig {
/// Maximum tokens
pub max_tokens: u64,
/// Refill rate (tokens per second)
pub refill_rate_tokens_per_second: u64
}Source line: 112.
rate::RateLimiter::new
Create a new rate limiter
Arguments
requests_per_second- Base rate limitburst_size- Maximum burst capacity
#[must_use]
pub fn new(requests_per_second: u64, burst_size: u64) -> Self;Source line: 126.
rate::RateLimiter::set_override
Set a rate limit override for a specific key pattern
pub async fn set_override(&self, key_pattern: impl Into<String>, config: RateLimitConfig);Source line: 136.
rate::RateLimiter::check
Check rate limit for a key
pub async fn check(&self, key: &str) -> RateLimitResult;Source line: 142.
rate::RateLimiter::peek
Check rate limit without consuming a token
pub async fn peek(&self, key: &str) -> RateLimitResult;Source line: 181.
rate::RateLimiter::reset
Reset rate limit for a key
pub async fn reset(&self, key: &str);Source line: 204.
rate::RateLimiter::cleanup
Clean up expired buckets (call periodically)
pub async fn cleanup(&self, max_age: Duration);Source line: 210.
rate::RateLimiter::status
Get current status for a key
pub async fn status(&self, key: &str) -> Option<RateLimitStatus>;Source line: 221.
rate::RateLimitStatus
Rate limit status for a key
#[derive(Debug, Clone, serde::Serialize)]
pub struct RateLimitStatus {
/// Remaining requests
pub remaining: u64,
/// Total limit
pub limit: u64,
/// Seconds until full reset
pub reset_in_seconds: u64
}Source line: 238.
rate::SlidingWindowRateLimiter
Sliding window rate limiter (alternative implementation)
pub struct SlidingWindowRateLimiter {
}Source line: 248.
rate::SlidingWindowRateLimiter::new
Create a new sliding window rate limiter
#[must_use]
pub fn new(window_size: Duration, max_requests: u64) -> Self;Source line: 260.
rate::SlidingWindowRateLimiter::check
Check rate limit
pub async fn check(&self, key: &str) -> RateLimitResult;Source line: 269.
rate::SlidingWindowRateLimiter::cleanup
Clean up old entries
pub async fn cleanup(&self);Source line: 296.