def each_rate(&block)
      enum = Enumerator.new do |yielder|
        index.each do |key, rate|
          iso_from, iso_to = key.split(Memory::INDEX_KEY_SEPARATOR)
          iso_to, date = iso_to.split(INDEX_DATE_SEPARATOR)
          date = Date.parse(date) if date
          yielder.yield iso_from, iso_to, rate, date
        end
      end

      block_given? ? enum.each(&block) : enum
    end
def each_rate(&block)
      enum = Enumerator.new do |yielder|
        index.each do |key, rate|
          iso_from, iso_to = key.split(Memory::INDEX_KEY_SEPARATOR)
          iso_to, date = iso_to.split(INDEX_DATE_SEPARATOR)
          date = Date.parse(date) if date
          yielder.yield iso_from, iso_to, rate, date
        end
      end

      block_given? ? enum.each(&block) : enum
    end
Iterate over rate tuples (iso_from, iso_to, rate)

 @yieldparam iso_from [String] Currency ISO string.
 @yieldparam iso_to [String] Currency ISO string.
 @yieldparam rate [Numeric] Exchange rate.
 @yieldparam date [Date] Historical date for the exchange rate. Nil if the rate is not historical rate.

 @return [Enumerator]

 @example
   store.each_rate do |iso_from, iso_to, rate, date|
     puts [iso_from, iso_to, rate, date].join
   end