pub struct AdaptiveRateLimiter { /* private fields */ }Expand description
Adaptive rate limiter that adjusts based on latency feedback Uses AIMD (Additive Increase Multiplicative Decrease) algorithm
Implementations§
Source§impl AdaptiveRateLimiter
impl AdaptiveRateLimiter
Sourcepub fn new(config: AdaptiveRateLimiterConfig) -> Self
pub fn new(config: AdaptiveRateLimiterConfig) -> Self
Create new adaptive rate limiter
Sourcepub fn try_acquire(&self) -> bool
pub fn try_acquire(&self) -> bool
Try to acquire permission
Sourcepub fn record_latency(&self, latency: Duration)
pub fn record_latency(&self, latency: Duration)
Record latency feedback for adaptation
Sourcepub fn current_rate(&self) -> u64
pub fn current_rate(&self) -> u64
Get current rate limit
Sourcepub fn stats(&self) -> AdaptiveStatsSnapshot
pub fn stats(&self) -> AdaptiveStatsSnapshot
Get statistics
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for AdaptiveRateLimiter
impl !RefUnwindSafe for AdaptiveRateLimiter
impl Send for AdaptiveRateLimiter
impl Sync for AdaptiveRateLimiter
impl Unpin for AdaptiveRateLimiter
impl UnwindSafe for AdaptiveRateLimiter
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