Queue (queue v0.1.2) View Source

Module for work queue.

This module implement protocol Enumerable.

Link to this section Summary

Functions

Returns the size of the queue.

Return the queue is empty

Get first element of queue.

Get head element of queue

Put element in queue

Get last element of queue.

Return new queue structure

Get element of queue

Returns a list with all values of queue.

Returns a list of values. It's equal to to_list/1

Link to this section Types

Specs

t() :: %Queue{queue: term()}

Link to this section Functions

Specs

count(t()) :: non_neg_integer()

Returns the size of the queue.

Examples

iex> queue = Queue.new() |> Queue.inside(1) |> Queue.inside(2)
iex> Queue.count(queue)
2

Specs

empty?(t()) :: boolean()

Return the queue is empty

Example:

  iex> queue = Queue.new()
  iex> Queue.empty?(queue)
  true
  iex> queue = Queue.inside(queue, 1)
  iex> Queue.empty?(queue)
  false

Specs

first(t()) :: any()

Get first element of queue.

This function is equals head function.

Example:

iex> queue = Queue.new() |> Queue.inside(1)
iex> Queue.first(queue)
1
iex> Queue.new() |> Queue.first()
nil

Specs

head(t()) :: any()

Get head element of queue

Example:

iex> queue = Queue.new() |> Queue.inside(1)
iex> Queue.head(queue)
1
iex> Queue.new() |> Queue.head()
nil

Specs

inside(t(), any()) :: any()

Put element in queue

Example:

iex> queue = Queue.new() |> Queue.inside(1)
#Queue<1>
iex> {1, queue} = Queue.out(queue)
iex> queue
#Queue<Empty>

Specs

last(t()) :: any()

Get last element of queue.

Example:

iex> queue = Queue.new() |> Queue.inside(1)
iex> Queue.last(queue)
1
iex> queue = Queue.inside(queue, 2)
iex> Queue.last(queue)
2
iex> Queue.new() |> Queue.last()
nil

Specs

new() :: t()

Return new queue structure

Example:

    iex> Queue.new()
    #Queue<Empty>

Specs

out(t()) :: any()

Get element of queue

Example:

iex> queue = Queue.new() |> Queue.inside(1)
#Queue<1>
iex> {1, queue} = Queue.out(queue)
iex> queue
#Queue<Empty>
iex> {nil, ^queue} = Queue.out(queue)

Specs

to_list(t()) :: list()

Returns a list with all values of queue.

Examples:

iex> queue = Queue.new() |> Queue.inside(1) |> Queue.inside(2)
iex> Queue.to_list(queue)
[1, 2]

Specs

values(t()) :: list()

Returns a list of values. It's equal to to_list/1

Examples:

iex> queue = Queue.new() |> Queue.inside(1) |> Queue.inside(2)
iex> Queue.values(queue)
[1, 2]