pub struct MemoryRateLimitStore { /* private fields */ }Expand description
Token-bucket in-memory rate limiter.
Implementations§
Source§impl MemoryRateLimitStore
impl MemoryRateLimitStore
Sourcepub fn new(capacity: u32, refill_per_sec: f64) -> MemoryRateLimitStore
pub fn new(capacity: u32, refill_per_sec: f64) -> MemoryRateLimitStore
capacity is the burst size; refill_per_sec adds tokens continuously.
Trait Implementations§
Source§impl Clone for MemoryRateLimitStore
impl Clone for MemoryRateLimitStore
Source§fn clone(&self) -> MemoryRateLimitStore
fn clone(&self) -> MemoryRateLimitStore
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl RateLimitStore for MemoryRateLimitStore
impl RateLimitStore for MemoryRateLimitStore
Source§fn consume<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
cost: u32,
) -> Pin<Box<dyn Future<Output = Result<RateLimitSnapshot, RateLimitSnapshot>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
MemoryRateLimitStore: 'async_trait,
fn consume<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
cost: u32,
) -> Pin<Box<dyn Future<Output = Result<RateLimitSnapshot, RateLimitSnapshot>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
MemoryRateLimitStore: 'async_trait,
Atomically attempts to take one permit from
key’s bucket. Returns
Ok(snapshot) when the request is allowed, Err(snapshot) when the
caller exceeded the limit. The returned snapshot is what the caller
emits in the RateLimit-* response headers.Auto Trait Implementations§
impl Freeze for MemoryRateLimitStore
impl RefUnwindSafe for MemoryRateLimitStore
impl Send for MemoryRateLimitStore
impl Sync for MemoryRateLimitStore
impl Unpin for MemoryRateLimitStore
impl UnsafeUnpin for MemoryRateLimitStore
impl UnwindSafe for MemoryRateLimitStore
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
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