1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
use std::fmt; use failure::*; pub mod naive; pub type CircuitBreakerResult<T, E> = Result<T, CircuitBreakerError<E>>; #[derive(Debug, Clone, Fail)] pub enum CircuitBreakerError<E: fmt::Display> { #[fail(display = "Circuit breaker open")] Open, #[fail(display = "Execution failed: {}", _0)] Execution(E), } #[derive(Debug, Clone, Copy)] pub enum State { Open, HalfOpen, Closed, }