// Fuse Demo
fn main {
  let fuse = @lib.new_builder()
    .failure_threshold(3).cooldown_secs(10).half_open_limit(2)
    .on_trip(fn(fails) { println("  [EVENT] CIRCUIT OPEN after " + fails.to_string() + " failures") })
    .build()

  println("═══ Fuse Demo ═══")
  println("")

  // Normal
  println("── normal ──")
  for i = 0; i < 5; i = i + 1 {
    let _r = fuse.try_acquire()
    fuse.record_success()
    println("  OK " + i.to_string())
  }

  // Trip
  println("── 3 failures → trip ──")
  for i = 0; i < 3; i = i + 1 {
    let _r = fuse.try_acquire()
    fuse.record_failure()
    println("  FAIL " + i.to_string())
  }

  // Rejected
  println("── open rejects ──")
  let r = fuse.try_acquire()
  match r {
    Ok(_) => println("  UNEXPECTED")
    Err(e) => println("  " + e)
  }

  println("")
  println(fuse.stats())
}