pub struct RateLimiter { /* private fields */ }Expand description
Rate limiter with per-key token buckets.
Implementations§
Source§impl RateLimiter
impl RateLimiter
Sourcepub fn new(defaults: RateLimitDefaults) -> Self
pub fn new(defaults: RateLimitDefaults) -> Self
Create a new rate limiter.
Sourcepub fn check(&self, key: RateLimitKey) -> bool
pub fn check(&self, key: RateLimitKey) -> bool
Check if a request should be allowed.
Returns true if the request is allowed, false if rate limited.
Sourcepub fn check_with_config(&self, key: RateLimitKey, rps: u32, burst: u32) -> bool
pub fn check_with_config(&self, key: RateLimitKey, rps: u32, burst: u32) -> bool
Check with custom rate limit configuration.
Sourcepub fn remaining(&self, key: &RateLimitKey) -> Option<u64>
pub fn remaining(&self, key: &RateLimitKey) -> Option<u64>
Get remaining tokens for a key (approximate).
Sourcepub async fn start_cleanup(self: Arc<Self>, cancel_token: CancellationToken)
pub async fn start_cleanup(self: Arc<Self>, cancel_token: CancellationToken)
Start background cleanup task.
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for RateLimiter
impl Freeze for RateLimiter
impl Send for RateLimiter
impl Sync for RateLimiter
impl Unpin for RateLimiter
impl UnsafeUnpin for RateLimiter
impl UnwindSafe for RateLimiter
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§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