Sha256: 9af10b006631ac988e4f03fbe39e1ba96af866a402644a9bb6da37d5f6866eeb

Contents?: true

Size: 736 Bytes

Versions: 3

Compression:

Stored size: 736 Bytes

Contents

require "forwardable"
require "hamster/set"
require "hamster/read_copy_update"

module Hamster
  def self.mutable_set(*items)
    MutableSet.new(set(*items))
  end

  class MutableSet
    extend Forwardable
    include ReadCopyUpdate

    def add(item)
      transform { |set| set.add(item) }
    end
    def_delegator :self, :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

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
hamster-1.0.1.pre.rc3 lib/hamster/experimental/mutable_set.rb
hamster-1.0.1.pre.rc2 lib/hamster/experimental/mutable_set.rb
hamster-1.0.1.pre.rc.1 lib/hamster/experimental/mutable_set.rb