class Enumerable::Enumerator
def next
def next require 'generator' @generator ||= ::Generator.new(self) raise StopIteration unless @generator.next? @generator.next end
def rewind
def rewind require 'generator' @generator ||= ::Generator.new(self) @generator.rewind self end
def with_index(offset = 0)
def with_index(offset = 0) return to_enum(:with_index, offset) unless block_given? each do |*args| yield args.size == 1 ? args[0] : args, offset offset += 1 end end