Struct TokenBucket

Source
pub struct TokenBucket { /* private fields */ }
Expand description

TokenBucket provides a lower level interface to rate limiting with a configurable capacity, refill-rate and initial burst.

Implementations§

Source§

impl TokenBucket

Source

pub fn new(size: u64, one_time_burst: u64, complete_refill_time_ms: u64) -> Self

Creates a TokenBucket wrapped in an Option.

TokenBucket created is of size total capacity and takes complete_refill_time_ms milliseconds to go from zero tokens to total capacity. The one_time_burst is initial extra credit on top of total capacity, that does not replenish and which can be used for an initial burst of data.

If the size or the complete refill time are zero, then None is returned.

Source

pub fn reduce(&mut self, tokens: u64) -> BucketReduction

Attempts to consume tokens from the bucket and returns whether the action succeeded.

Source

pub fn force_replenish(&mut self, tokens: u64)

“Manually” adds tokens to bucket.

Source

pub fn capacity(&self) -> u64

Returns the capacity of the token bucket.

Source

pub fn one_time_burst(&self) -> u64

Returns the remaining one time burst budget.

Source

pub fn refill_time_ms(&self) -> u64

Returns the time in milliseconds required to to completely fill the bucket.

Source

pub fn budget(&self) -> u64

Returns the current budget (one time burst allowance notwithstanding).

Source

pub fn initial_one_time_burst(&self) -> u64

Returns the initially configured one time burst budget.

Trait Implementations§

Source§

impl Clone for TokenBucket

Source§

fn clone(&self) -> TokenBucket

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TokenBucket

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for TokenBucket

Source§

fn eq(&self, other: &TokenBucket) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for TokenBucket

Source§

impl StructuralPartialEq for TokenBucket

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.