qex v0.1.0 Qex
A minimal FIFO queue implementation for Elixir
A primitive queue data structure that doesn’t spawn a separate process
Protocols
Inspect and Enumerable are implemented
Examples
iex> q = Qex.new([1, 2, 3])
iex> Enum.count(q)
3
iex> Enum.sum(q)
6
iex> inspect(q)
"<#Qex[1, 2, 3]>"
iex> {_item, q} = Qex.pop(q)
{1, %Qex{in_list: [], out_list: [2, 3]}}
iex> Enum.count(q)
2
iex> q = Qex.push(q, 4)
%Qex{in_list: [4], out_list: [2, 3]}
iex> Enum.count(q)
3
iex> {_item, q} = Qex.pop(q)
{2, %Qex{in_list: [4], out_list: [3]}}
iex> {_item, q} = Qex.pop(q)
{3, %Qex{in_list: [4], out_list: []}}
iex> {_item, q} = Qex.pop(q)
{4, %Qex{in_list: [], out_list: []}}
iex> Enum.count(q)
0
iex> Enum.sum(q)
0
iex> inspect(q)
"<#Qex[]>"
Summary
Types
Functions
Examples
iex> Qex.new
%Qex{in_list: [], out_list: []}
iex> Qex.new([1,2,3])
%Qex{in_list: [], out_list: [1, 2, 3]}
Examples
iex> Qex.new |> Qex.pop
{nil, %Qex{in_list: [], out_list: []}}
iex> Qex.new([1,2,3]) |> Qex.pop
{1, %Qex{in_list: [], out_list: [2, 3]}}
iex> q = Qex.new([2,3])
iex> {_item, q} = Qex.pop(q)
{2, %Qex{in_list: [], out_list: [3]}}
iex> {_item, q} = Qex.pop(q)
{3, %Qex{in_list: [], out_list: []}}
iex> {_item, _q} = Qex.pop(q)
{nil, %Qex{in_list: [], out_list: []}}
iex> %Qex{in_list: [1, 2], out_list: []} |> Qex.pop
{2, %Qex{in_list: [], out_list: [1]}}