pub struct InMemoryRateLimiter { /* private fields */ }Expand description
In-process per-minute limiter: buckets are keyed by "{key}:{minute}" with a
60-second window and expired buckets are pruned by periodic cleanup.
Implementations§
Source§impl InMemoryRateLimiter
impl InMemoryRateLimiter
Sourcepub fn new_with_cleanup() -> Arc<Self> ⓘ
pub fn new_with_cleanup() -> Arc<Self> ⓘ
Creates a limiter wrapped in Arc with a background task pruning expired buckets every 60s.
Hold the returned Arc; the task exits when the last clone is dropped.
Sourcepub fn is_allowed_sync(&self, key: &str, limit: u32) -> bool
pub fn is_allowed_sync(&self, key: &str, limit: u32) -> bool
Synchronous check-and-increment for key against limit in the current minute bucket.
Trait Implementations§
Source§impl Default for InMemoryRateLimiter
impl Default for InMemoryRateLimiter
Source§impl RateLimiter for InMemoryRateLimiter
impl RateLimiter for InMemoryRateLimiter
Source§fn is_allowed<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
limit: u32,
) -> Pin<Box<dyn Future<Output = bool> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn is_allowed<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
limit: u32,
) -> Pin<Box<dyn Future<Output = bool> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Returns whether
key may proceed under limit requests for the current minute.Auto Trait Implementations§
impl !Freeze for InMemoryRateLimiter
impl RefUnwindSafe for InMemoryRateLimiter
impl Send for InMemoryRateLimiter
impl Sync for InMemoryRateLimiter
impl Unpin for InMemoryRateLimiter
impl UnsafeUnpin for InMemoryRateLimiter
impl UnwindSafe for InMemoryRateLimiter
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