Skip to main content

fiber_lazy_enumerator

🔄 Implementing Generators and Lazy Enumerators​

Use Fiber to build custom generators that yield sequence values on demand. Wrapping your Fiber in an Enumerator gives you built‑in lazy iteration, backpressure control, and composability with Ruby’s Enumerable API.

def fibonacci_generator
Fiber.new do
a, b = 0, 1
loop do
Fiber.yield a
a, b = b, a + b
end
end
end

fib = Enumerator.new do |yielder|
gen = fibonacci_generator
loop { yielder << gen.resume }
end

# Lazy take first 10 fib numbers
iusages = fib.take(10)
puts usages.inspect # => [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]