module Enumerable
def sole
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