Skip to main content

CircuitBreakerConfig

Struct CircuitBreakerConfig 

Source
pub struct CircuitBreakerConfig {
    pub failure_threshold: u32,
    pub open_duration: Duration,
    pub half_open_successes: u32,
}
Expand description

Fault-recovery primitives for resilient agent execution. Configuration parameters for a provider circuit breaker.

All parameters can be tuned based on the provider’s reliability and the acceptable impact of failures on your application.

Fields§

§failure_threshold: u32

Number of consecutive failures required to open the circuit.

Default: 5

A lower value makes the circuit more sensitive to failures, while a higher value requires more failures before opening.

§open_duration: Duration

Duration to keep the circuit open before transitioning to half-open.

Default: 30 seconds

This should be long enough for the provider to recover from whatever caused the failures (e.g., rate limits, temporary outages).

§half_open_successes: u32

Number of successful requests required in half-open state to close the circuit.

Default: 1

Setting this higher makes recovery testing more conservative, requiring multiple successful requests before fully trusting the provider.

Implementations§

Source§

impl CircuitBreakerConfig

Source

pub fn new( failure_threshold: u32, open_duration: Duration, half_open_successes: u32, ) -> CircuitBreakerConfig

Creates a new configuration with all values explicitly set.

§Arguments
  • failure_threshold - Consecutive failures to trigger circuit opening
  • open_duration - Time to wait before testing recovery
  • half_open_successes - Successes needed in half-open to close circuit
§Panics

Panics if failure_threshold or half_open_successes are zero, as this would create an immediately opening circuit.

Source

pub fn with_failure_threshold(self, threshold: u32) -> CircuitBreakerConfig

Sets the failure threshold.

Returns a new configuration with the updated value.

Source

pub fn with_open_duration(self, duration: Duration) -> CircuitBreakerConfig

Sets the open duration.

Returns a new configuration with the updated value.

Source

pub fn with_half_open_successes(self, successes: u32) -> CircuitBreakerConfig

Sets the half-open successes required.

Returns a new configuration with the updated value.

Trait Implementations§

Source§

impl Clone for CircuitBreakerConfig

Source§

fn clone(&self) -> CircuitBreakerConfig

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for CircuitBreakerConfig

Source§

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

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

impl Default for CircuitBreakerConfig

Source§

fn default() -> CircuitBreakerConfig

Creates a default circuit breaker configuration.

The defaults are tuned for general-purpose use:

  • 5 failures before opening (reasonable for most APIs)
  • 30 second cooldown (enough for temporary issues to resolve)
  • 1 success to close (fast recovery testing)
Source§

impl PartialEq for CircuitBreakerConfig

Source§

fn eq(&self, other: &CircuitBreakerConfig) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · 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 Eq for CircuitBreakerConfig

Source§

impl StructuralPartialEq for CircuitBreakerConfig

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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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