struct LeakyBucket {
level: AtomicU64,
capacity: u64,
leak_rate: u64,
last_leak: RwLock<Instant>,
}Expand description
Leaky bucket rate limiter state.
Fields§
§level: AtomicU64Current water level (pending requests).
capacity: u64Maximum capacity.
leak_rate: u64Leak rate (requests per second).
last_leak: RwLock<Instant>Last leak time.
Implementations§
Source§impl LeakyBucket
impl LeakyBucket
fn new(capacity: u64, leak_rate: u64) -> Self
fn try_acquire(&self) -> RateLimitResult<()>
fn leak(&self)
fn current_level(&self) -> u64
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for LeakyBucket
impl !RefUnwindSafe for LeakyBucket
impl Send for LeakyBucket
impl Sync for LeakyBucket
impl Unpin for LeakyBucket
impl UnwindSafe for LeakyBucket
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
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<F, W, T, D> Deserialize<With<T, W>, D> for F
impl<F, W, T, D> Deserialize<With<T, W>, D> for F
§fn deserialize(
&self,
deserializer: &mut D,
) -> Result<With<T, W>, <D as Fallible>::Error>
fn deserialize( &self, deserializer: &mut D, ) -> Result<With<T, W>, <D as Fallible>::Error>
Deserializes using the given deserializer
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Gets the layout of the type.