lib/hamster/experimental/mutable_queue.rb
require "hamster/deque"
require "hamster/read_copy_update"
module Hamster
# @api private
class MutableQueue
include ReadCopyUpdate
def self.[](*items)
MutableQueue.new(Deque[*items])
end
def enqueue(item)
transform { |queue| queue.enqueue(item) }
end
def dequeue
head = nil
transform do |queue|
head = queue.head
queue.dequeue
end
head
end
end
end