Struct tower::retry::budget::Budget[][src]

pub struct Budget { /* fields omitted */ }
This is supported on crate feature retry only.
Expand description

Represents a “budget” for retrying requests.

This is useful for limiting the amount of retries a service can perform over a period of time, or per a certain number of requests attempted.

Implementations

impl Budget[src]

pub fn new(ttl: Duration, min_per_sec: u32, retry_percent: f32) -> Self[src]

Create a Budget that allows for a certain percent of the total requests to be retried.

  • The ttl is the duration of how long a single deposit should be considered. Must be between 1 and 60 seconds.

  • The min_per_sec is the minimum rate of retries allowed to accomodate clients that have just started issuing requests, or clients that do not issue many requests per window.

  • The retry_percent is the percentage of calls to deposit that can be retried. This is in addition to any retries allowed for via min_per_sec. Must be between 0 and 1000.

    As an example, if 0.1 is used, then for every 10 calls to deposit, 1 retry will be allowed. If 2.0 is used, then every deposit allows for 2 retries.

pub fn deposit(&self)[src]

Store a “deposit” in the budget, which will be used to permit future withdrawals.

pub fn withdraw(&self) -> Result<(), Overdrawn>[src]

Check whether there is enough “balance” in the budget to issue a new retry.

If there is not enough, an Err(Overdrawn) is returned.

Trait Implementations

impl Debug for Budget[src]

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

Formats the value using the given formatter. Read more

impl Default for Budget[src]

fn default() -> Budget[src]

Returns the “default value” for a type. Read more

Auto Trait Implementations

impl RefUnwindSafe for Budget

impl Send for Budget

impl Sync for Budget

impl Unpin for Budget

impl UnwindSafe for Budget

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T> Instrument for T[src]

fn instrument(self, span: Span) -> Instrumented<Self>[src]

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

fn in_current_span(self) -> Instrumented<Self>[src]

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

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

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

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

Performs the conversion.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>, 

pub fn vzip(self) -> V