Well, I might as well bring up the reason I asked about enum_obj...

Spending some time improving Facets' Elementor class concept and
#every method, I find this possible utter simplification:

  class Enumerable::Enumerator
    def method_missing(sym, *args, &blk)
      self.class.new(collect{ |e| e.send(sym, *args, &blk) })
    end
  end

Example:

  a = [1,2,3]
  e = a.to_enum
  e += 3
  e *= 2
  e.to_a #=> [8,10,11]

T.