Current section
Files
Jump to
Current section
Files
lib/data/queue.ex
# DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
# Version 2, December 2004
#
# DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
# TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
#
# 0. You just DO WHAT THE FUCK YOU WANT TO.
defmodule Data.Queue do
alias Data.Error, as: E
alias Data.Protocol.Queue, as: Q
defdelegate enq(self, value), to: Q
def deq(self, default \\ nil) do
case Q.deq(self) do
{ :empty, queue } ->
{ default, queue }
{ { :value, value }, queue } ->
{ value, queue }
end
end
def deq!(self) do
case Q.deq(self) do
{ :empty, _ } ->
raise E.Empty
{ { :value, value }, queue } ->
{ value, queue }
end
end
end