I've got two long streams of numbers coming from two different sources (binary data) in Ruby (1.9.2).
The two sources are encapsulated in the form of two Enumerators.
I want to check that the two streams are exactly equal.
I've come with a couple solutions, but both seem quite inelegant.
The first one simply transforms both into an array:
def equal_streams?(s1, s2)
  s1.to_a == s2.to_a
end
This works, but it is not very performant, memory-wise, specially if the streams have lots of information.
The other option is... ugh.
def equal_streams?(s1, s2)
  s1.each do |e1|
    begin
      e2 = s2.next
      return false unless e1 == e2 # Different element found
    rescue StopIteration
      return false # s2 has run out of items before s1
    end
  end
  begin
    s2.next
  rescue StopIteration
    # s1 and s2 have run out of elements at the same time; they are equal
    return true
  end
  return false
end
So, is there a simpler, more elegant way of doing this?