ai_lib/circuit_breaker/state.rs
1//! Circuit breaker state management
2
3use serde::{Deserialize, Serialize};
4use std::fmt;
5
6/// Circuit breaker states
7#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
8pub enum CircuitState {
9 /// Normal state - requests are allowed through
10 Closed,
11 /// Circuit is open - all requests are rejected
12 Open,
13 /// Half-open state - limited requests allowed for testing
14 HalfOpen,
15}
16
17impl fmt::Display for CircuitState {
18 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
19 match self {
20 CircuitState::Closed => write!(f, "Closed"),
21 CircuitState::Open => write!(f, "Open"),
22 CircuitState::HalfOpen => write!(f, "HalfOpen"),
23 }
24 }
25}