Skip to main content

Delay

Enum Delay 

Source
pub enum Delay {
    None,
    Fixed(Duration),
    Random {
        min: Duration,
        max: Duration,
    },
    Exponential {
        initial: Duration,
        max: Duration,
        multiplier: f64,
    },
}
Expand description

Base delay strategy before jitter is applied.

Delay strategies are value types that can be reused across executors. Random and exponential strategies are validated separately by Delay::validate, which is called when building crate::RetryOptions.

Variants§

§

None

Retry immediately.

§

Fixed(Duration)

Wait for a constant delay after every failed attempt.

§

Random

Pick a delay uniformly from the inclusive range.

Fields

§min: Duration

Lower bound for the delay.

§max: Duration

Upper bound for the delay.

§

Exponential

Exponential backoff capped by max.

Fields

§initial: Duration

Delay used for the first retry.

§max: Duration

Maximum delay.

§multiplier: f64

Multiplicative factor applied per failed attempt.

Implementations§

Source§

impl Delay

Source

pub fn none() -> Delay

Creates a no-delay strategy.

§Parameters

This function has no parameters.

§Returns

A Delay::None strategy.

§Errors

This function does not return errors.

Source

pub fn fixed(delay: Duration) -> Delay

Creates a fixed-delay strategy.

§Parameters
  • delay: Duration slept after each failed attempt.
§Returns

A Delay::Fixed strategy.

§Errors

This constructor does not validate delay; use Delay::validate to reject a zero duration.

Source

pub fn random(min: Duration, max: Duration) -> Delay

Creates a random-delay strategy.

§Parameters
  • min: Inclusive lower bound for generated delays.
  • max: Inclusive upper bound for generated delays.
§Returns

A Delay::Random strategy.

§Errors

This constructor does not validate the range; use Delay::validate to reject a zero minimum or a minimum greater than the maximum.

Source

pub fn exponential(initial: Duration, max: Duration, multiplier: f64) -> Delay

Creates an exponential-backoff strategy.

§Parameters
  • initial: Delay used for the first retry.
  • max: Upper bound applied to every calculated delay.
  • multiplier: Factor applied for each subsequent failed attempt.
§Returns

A Delay::Exponential strategy.

§Errors

This constructor does not validate the parameters; use Delay::validate to reject a zero initial delay, max < initial, or a multiplier that is non-finite or less than or equal to 1.0.

Source

pub fn base_delay(&self, attempt: u32) -> Duration

Calculates the base delay for an attempt number starting at 1.

Attempt 1 means the first failed attempt, so exponential backoff returns initial for attempts 0 and 1. Random delays use a fresh random value for every call.

§Parameters
  • attempt: Failed attempt number. Values 0 and 1 are treated as the first exponential-backoff step.
§Returns

The base delay before jitter is applied.

§Errors

This function does not return errors. Invalid strategies should be rejected with Delay::validate before they are used in an executor.

Source

pub fn validate(&self) -> Result<(), String>

Validates strategy parameters.

Returns a human-readable message describing the invalid field when the strategy cannot be used safely by an executor.

§Returns

Ok(()) when all parameters are usable; otherwise an error message that can be wrapped by crate::RetryConfigError.

§Parameters

This method has no parameters.

§Errors

Returns an error when a fixed delay is zero, a random range is invalid, or exponential backoff parameters are zero, inverted, non-finite, or too small.

Trait Implementations§

Source§

impl Clone for Delay

Source§

fn clone(&self) -> Delay

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 Delay

Source§

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

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

impl Default for Delay

Source§

fn default() -> Delay

Creates the default exponential-backoff strategy.

§Returns

Delay::Exponential with one second initial delay, sixty second cap, and multiplier 2.0.

§Parameters

This function has no parameters.

§Errors

This function does not return errors.

Source§

impl PartialEq for Delay

Source§

fn eq(&self, other: &Delay) -> 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 StructuralPartialEq for Delay

Auto Trait Implementations§

§

impl Freeze for Delay

§

impl RefUnwindSafe for Delay

§

impl Send for Delay

§

impl Sync for Delay

§

impl Unpin for Delay

§

impl UnsafeUnpin for Delay

§

impl UnwindSafe for Delay

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> 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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
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