module Enumerable

def sole

{ a: 1, b: 2 }.sole # => Enumerable::SoleItemExpectedError: multiple items found
Set.new.sole # => Enumerable::SoleItemExpectedError: no item found
["x"].sole # => "x"

than one item, raises Enumerable::SoleItemExpectedError.
Returns the sole item in the enumerable. If there are no items, or more
def sole
  result = nil
  found = false
  each do |element|
    if found
      raise SoleItemExpectedError, "multiple items found"
    end
    result = element
    found = true
  end
  if found
    result
  else
    raise SoleItemExpectedError, "no item found"
  end
end