pub trait RateLimiter: Send + Sync {
// Required methods
fn acquire(&self, key: &str) -> Result<RateLimitResult, RateLimitError>;
fn reset(&self, key: &str) -> Result<(), RateLimitError>;
// Provided method
fn try_acquire(&self, key: &str) -> Result<RateLimitResult, RateLimitError> { ... }
}Expand description
限流器抽象 trait
P1-4:核心层定义的限流器接口,消除对 sz-orm-limit 的反向依赖。
实现方需保证线程安全(Send + Sync),以便在连接池中作为
Arc<RwLock<Option<Arc<dyn RateLimiter>>>> 使用。
常见实现(位于 sz-orm-limit 扩展包):
SlidingWindowRateLimiter:滑动窗口TokenBucketRateLimiter:令牌桶FixedWindowRateLimiter:固定窗口DistributedRateLimiter:分布式限流(基于 Redis 等共享存储)
Required Methods§
Sourcefn acquire(&self, key: &str) -> Result<RateLimitResult, RateLimitError>
fn acquire(&self, key: &str) -> Result<RateLimitResult, RateLimitError>
获取一个令牌(阻塞语义:可能等待)
返回 RateLimitResult 表示放行或拒绝,或 RateLimitError 表示内部错误。
Provided Methods§
Sourcefn try_acquire(&self, key: &str) -> Result<RateLimitResult, RateLimitError>
fn try_acquire(&self, key: &str) -> Result<RateLimitResult, RateLimitError>
尝试获取一个令牌(非阻塞语义:立即返回)
默认实现委托给 acquire;具体实现可覆盖以提供真正的非阻塞路径。
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".