pub struct GlobalRateLimiter { /* private fields */ }
Expand description
A rate limiter for global rate limits.
This struct maintains local caches of rate limits to reduce the number of Redis operations required.
Implementations§
Source§impl GlobalRateLimiter
impl GlobalRateLimiter
Sourcepub async fn filter_rate_limited<'a>(
&mut self,
client: &AsyncRedisClient,
quotas: &'a [RedisQuota<'a>],
quantity: usize,
) -> Result<Vec<&'a RedisQuota<'a>>, RateLimitingError>
pub async fn filter_rate_limited<'a>( &mut self, client: &AsyncRedisClient, quotas: &'a [RedisQuota<'a>], quantity: usize, ) -> Result<Vec<&'a RedisQuota<'a>>, RateLimitingError>
Returns the RedisQuota
s that should be rate limited.
This method checks all quotas against their limits and returns those that exceed their limits. The rate limits are checked globally using Redis.
Budgets are only decremented when none of the quotas hit their rate limits, which ensures consistent behavior across all quotas.
Trait Implementations§
Source§impl Debug for GlobalRateLimiter
impl Debug for GlobalRateLimiter
Source§impl Default for GlobalRateLimiter
impl Default for GlobalRateLimiter
Source§fn default() -> GlobalRateLimiter
fn default() -> GlobalRateLimiter
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for GlobalRateLimiter
impl RefUnwindSafe for GlobalRateLimiter
impl Send for GlobalRateLimiter
impl Sync for GlobalRateLimiter
impl Unpin for GlobalRateLimiter
impl UnwindSafe for GlobalRateLimiter
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more