pub struct RetryPolicy {
pub max_attempts: u32,
pub initial_delay: Duration,
pub max_delay: Duration,
pub multiplier: f64,
pub jitter: f64,
}Expand description
Typed retry policy shared across runtime layers.
Fields§
§max_attempts: u32Maximum number of total attempts, including the initial call.
initial_delay: Duration§max_delay: Duration§multiplier: f64§jitter: f64Implementations§
Source§impl RetryPolicy
impl RetryPolicy
pub const DEFAULT: Self
Sourcepub const DEFAULT_JITTER: f64 = 0.15
pub const DEFAULT_JITTER: f64 = 0.15
Standard jitter ratio for outbound retries: up to 15% deterministic
offset. DEFAULT keeps 0.0 so pinned delay math stays exact; call
sites that retry shared external services opt in via Self::with_jitter.
Sourcepub fn with_jitter(self, jitter: f64) -> Self
pub fn with_jitter(self, jitter: f64) -> Self
Builder-style jitter override, so call sites need no mut binding.
pub const fn new( max_attempts: u32, initial_delay: Duration, max_delay: Duration, multiplier: f64, ) -> Self
pub const fn from_retries( max_retries: u32, initial_delay: Duration, max_delay: Duration, multiplier: f64, ) -> Self
pub fn delay_for_attempt(&self, attempt_index: u32) -> Duration
pub fn decision_for_category( &self, category: ErrorCategory, attempt_index: u32, retry_after: Option<Duration>, ) -> RetryDecision
Sourcepub fn classify_anyhow(&self, error: &Error) -> RetryDecision
pub fn classify_anyhow(&self, error: &Error) -> RetryDecision
Classify an anyhow::Error for retry eligibility.
Attempt-agnostic: retryable reflects only the error category, not
the remaining attempt budget. Wire clients that manage their own
attempt counting use this; loops that want budget-aware decisions
use Self::decision_for_category.
Sourcepub fn classify_status(&self, status: u16) -> RetryDecision
pub fn classify_status(&self, status: u16) -> RetryDecision
Classify an HTTP status code for retry eligibility.
Attempt-agnostic, like Self::classify_anyhow.