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,
}