Struct Retry

Source
pub struct Retry {
    pub name: &'static str,
    pub attempts: u32,
    pub base_delay: Duration,
    pub delay_factor: f64,
    pub enable_jitter: bool,
}
Expand description

Calls a fallible async function multiple times, with a given timeout.

If a base_delay is provided, the function is given an exponentially increasing delay on each run, up until the maximum number of attempts.

Returns the first successful result if any, or the last error.

Fields§

§name: &'static str

Name of the operation being retried.

§attempts: u32

The number of attempts to make.

§base_delay: Duration

The base delay after the first attempt, if provided.

§delay_factor: f64

Exponential factor to increase the delay by on each attempt.

§enable_jitter: bool

If true, the delay will be selected randomly from the range [delay/2, delay).

Implementations§

Source§

impl Retry

Source

pub const fn new(name: &'static str) -> Self

Construct a new Retry object with default parameters.

Source

pub const fn attempts(self, attempts: u32) -> Self

Set the number of attempts to make.

Source

pub const fn base_delay(self, base_delay: Duration) -> Self

Set the base delay.

Source

pub const fn delay_factor(self, delay_factor: f64) -> Self

Set the exponential factor increasing delay.

Source

pub const fn jitter(self, enabled: bool) -> Self

Enable jitter.

Source

pub async fn run<T, E: Debug, Fut>( self, func: impl FnMut() -> Fut, ) -> Result<T, E>
where Fut: Future<Output = Result<T, E>>,

Run a falliable asynchronous function using this retry configuration.

Panics if the number of attempts is set to 0, or the base delay is incorrectly set to a negative duration.

Trait Implementations§

Source§

impl Clone for Retry

Source§

fn clone(&self) -> Retry

Returns a copy 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 Retry

Source§

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

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

impl Copy for Retry

Auto Trait Implementations§

§

impl Freeze for Retry

§

impl RefUnwindSafe for Retry

§

impl Send for Retry

§

impl Sync for Retry

§

impl Unpin for Retry

§

impl UnwindSafe for Retry

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, dst: *mut u8)

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

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

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

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

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more