Skip to main content

RetryPolicy

Struct RetryPolicy 

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

Retry policy with exponential backoff for transient failures.

Created via RetryPolicy::new with the maximum number of retries. All other parameters have sensible defaults and can be customised with builder methods.

§Defaults

ParameterDefault
max_retries(required)
initial_backoff200ms
max_backoff30s
multiplier2.0

§Examples

use std::time::Duration;
use ironflow_core::retry::RetryPolicy;

let policy = RetryPolicy::new(3)
    .backoff(Duration::from_millis(100))
    .max_backoff(Duration::from_secs(10))
    .multiplier(3.0);

Implementations§

Source§

impl RetryPolicy

Source

pub fn new(max_retries: u32) -> Self

Create a new retry policy with the given maximum number of retries.

The initial attempt is not counted as a retry, so max_retries(3) means up to 4 total attempts (1 initial + 3 retries).

§Panics

Panics if max_retries is 0.

§Examples
use ironflow_core::retry::RetryPolicy;

let policy = RetryPolicy::new(3);
assert_eq!(policy.max_retries(), 3);
Source

pub fn backoff(self, duration: Duration) -> Self

Set the initial backoff duration before the first retry.

Subsequent retries multiply this duration by the multiplier.

§Panics

Panics if duration is zero.

Source

pub fn max_backoff(self, duration: Duration) -> Self

Set the maximum backoff duration between retries.

Even after many retries with exponential growth, the delay will never exceed this value.

§Panics

Panics if duration is zero.

Source

pub fn multiplier(self, multiplier: f64) -> Self

Set the backoff multiplier applied after each retry.

For example, with multiplier(2.0) and backoff(200ms):

  • Retry 1: 200ms
  • Retry 2: 400ms
  • Retry 3: 800ms
§Panics

Panics if multiplier is less than 1.0, NaN, or infinity.

Source

pub fn max_retries(&self) -> u32

Return the maximum number of retries.

Trait Implementations§

Source§

impl Clone for RetryPolicy

Source§

fn clone(&self) -> RetryPolicy

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 RetryPolicy

Source§

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

Formats the value using the given formatter. Read more

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> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

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> Same for T

Source§

type Output = T

Should always be Self
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