pub struct RateLimiter { /* private fields */ }
Implementations§
Source§impl RateLimiter
A naive rate limiter, to be replaced by using governor which has more even
distribution of requests passing through using GCRA algroithm.
impl RateLimiter
A naive rate limiter, to be replaced by using governor which has more even distribution of requests passing through using GCRA algroithm.
pub fn new(limit: u64, interval: Duration) -> Self
Sourcepub fn reset_throttling_params_if_needed(&mut self)
pub fn reset_throttling_params_if_needed(&mut self)
Reset the counter and throttling start instant if needed.
Sourcepub fn check_and_update(&mut self) -> bool
pub fn check_and_update(&mut self) -> bool
Check if a single request should be allowed to pass through the rate limiter When it is allowed, the rate limiter state is updated to reflect it has been allowed. For a unique request, the caller should call it only once when it is allowed.
Sourcepub fn throttle_start_instant(&self) -> &Instant
pub fn throttle_start_instant(&self) -> &Instant
Return the start instant for the current throttle interval.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for RateLimiter
impl RefUnwindSafe for RateLimiter
impl Send for RateLimiter
impl Sync for RateLimiter
impl Unpin 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