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}