Fiber でフィボナッチ数列

これはプログラミング言語 ruby のまる移し
Fiber つかってフィボナッチ数列を返すのにクラス作って Fiber であることを隠蔽したパタン。

class FibonacciGenerator

  def initialize
    @x, @y = 0, 1
    @fiber = Fiber.new do
      loop do
        @x, @y = @y, @x+@y
        Fiber.yield @x
      end
    end
  end

  def next
    @fiber.resume
  end

  def rewind
    @x, @y = 0, 1
  end

end

g = FibonacciGenerator.new
10.times { print g.next, " " } # 1 1 2 3 5 8 13 21 34 55 
g.rewind; puts
10.times { print g.next, " " } # 1 1 2 3 5 8 13 21 34 55 
puts

この例で Fiber はなんとなくわかった感じだけど、イマイチ使いどころが思いつかない。