pub struct CircuitBreaker { /* private fields */ }Expand description
Thread-safe circuit breaker implementation
Implementations§
Source§impl CircuitBreaker
impl CircuitBreaker
Sourcepub fn new(
name: &str,
failure_threshold: usize,
open_duration: Duration,
) -> Self
pub fn new( name: &str, failure_threshold: usize, open_duration: Duration, ) -> Self
Create a new circuit breaker
name: Identifier for this circuit (e.g., “arxiv”)failure_threshold: Failures before opening (default: 5)open_duration: Time to stay open before half-open (default: 60s)
Sourcepub fn default_for(name: &str) -> Self
pub fn default_for(name: &str) -> Self
Create with default settings
Sourcepub fn state(&self) -> CircuitState
pub fn state(&self) -> CircuitState
Get the current state
Sourcepub fn record_success(&self)
pub fn record_success(&self)
Record a success
Sourcepub fn record_failure(&self)
pub fn record_failure(&self)
Record a failure
Sourcepub fn can_request(&self) -> bool
pub fn can_request(&self) -> bool
Check if a request should be allowed
Sourcepub async fn execute<F, T, E>(&self, operation: F) -> CircuitResult<T>
pub async fn execute<F, T, E>(&self, operation: F) -> CircuitResult<T>
Execute an async operation with circuit breaker protection
Returns CircuitResult::Rejected if the circuit is open.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for CircuitBreaker
impl RefUnwindSafe for CircuitBreaker
impl Send for CircuitBreaker
impl Sync for CircuitBreaker
impl Unpin for CircuitBreaker
impl UnwindSafe for CircuitBreaker
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more