pub struct SlidingWindowRateLimiter { /* private fields */ }Implementations§
Source§impl SlidingWindowRateLimiter
impl SlidingWindowRateLimiter
pub fn new(max_requests: u64, window_size: Duration) -> SlidingWindowRateLimiter
Sourcepub fn with_max_keys(self, max_keys: usize) -> SlidingWindowRateLimiter
pub fn with_max_keys(self, max_keys: usize) -> SlidingWindowRateLimiter
Configures the maximum number of keys (added in v0.2.1, fixes Critical S-3 OOM DoS)
When entries.len() exceeds max_keys, the oldest entry is forcibly evicted.
The default value is DEFAULT_MAX_KEYS (10000).
pub fn max_requests(&self) -> u64
pub fn window_size(&self) -> Duration
pub fn max_keys(&self) -> usize
pub fn key_count(&self) -> usize
Trait Implementations§
Source§impl RateLimiter for SlidingWindowRateLimiter
impl RateLimiter for SlidingWindowRateLimiter
fn acquire(&self, key: &str) -> Result<RateLimitResult, RateLimitError>
fn try_acquire(&self, key: &str) -> Result<RateLimitResult, RateLimitError>
fn reset(&self, key: &str) -> Result<(), RateLimitError>
Auto Trait Implementations§
impl !Freeze for SlidingWindowRateLimiter
impl RefUnwindSafe for SlidingWindowRateLimiter
impl Send for SlidingWindowRateLimiter
impl Sync for SlidingWindowRateLimiter
impl Unpin for SlidingWindowRateLimiter
impl UnsafeUnpin for SlidingWindowRateLimiter
impl UnwindSafe for SlidingWindowRateLimiter
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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