1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
require "hamster/set"
require "hamster/read_copy_update"
module Hamster
# @api private
class MutableSet
include ReadCopyUpdate
def self.[](*items)
MutableSet.new(Set[*items])
end
def add(item)
transform { |set| set.add(item) }
end
alias :<< :add
def add?(item)
added = false
transform do |set|
added = !set.include?(item)
set.add(item)
end
added
end
def delete(item)
transform { |set| set.delete(item) }
end
def delete?(item)
deleted = false
transform do |set|
deleted = set.include?(item)
set.delete(item)
end
deleted
end
end
end
|