// 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())
}