Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

std/queue

Queue (FIFO) data structure for ordered element processing.

Struct: Queue<T>

A simple FIFO (first-in, first-out) queue data structure.

struct Queue<T> {
private:
    items: [T];
    head: uint64;
    tail: uint64;
    size: uint64;
    count: uint64;
}

Constructor

import "std/queue";

let queue = new Queue<T>(items);

Creates a queue from an existing array.

Static Methods

Queue<T>::with_capacity(size: uint64) -> Queue<T>

Instantiates a queue with a predefined capacity.

let queue = Queue<int64>::with_capacity(10u);

Queue<T>::from_vector(vec: Vector<T>) -> Queue<T>

Creates a queue from a vector.

let vec = new Vector<int64>([1, 2, 3]);
let queue = Queue<int64>::from_vector(vec);

Instance Methods

enqueue(&this, item: T) -> optional<unit>

Enqueues an item to the back of the queue.

let result = queue.enqueue(42);
if result.is_empty() {
    println("Queue is full");
}

Returns optional<unit>::empty() if the queue is full.

enqueue_front(&this, item: T) -> optional<unit>

Enqueues an item to the front of the queue.

let result = queue.enqueue_front(42);

Returns optional<unit>::empty() if the queue is full.

dequeue(&this) -> optional<T>

Dequeues an item from the front of the queue.

let item = queue.dequeue();
if item.has_value() {
    println(item.value());
}

Returns optional<T>::empty() if the queue is empty.

dequeue_back(&this) -> optional<T>

Dequeues an item from the back of the queue.

let item = queue.dequeue_back();

Returns optional<T>::empty() if the queue is empty.

peek(&const this) -> optional<&const T>

View the front item without removing it.

let front = queue.peek();
if front.has_value() {
    println(*front.value());
}

peek_back(&const this) -> optional<&const T>

View the back item without removing it.

let back = queue.peek_back();

is_full(&const this) -> bool

Check if the queue is at capacity.

if queue.is_full() {
    println("Queue is full");
}

is_empty(&const this) -> bool

Check if the queue is empty.

if queue.is_empty() {
    println("Queue is empty");
}

len(&const this) -> uint64

Get the number of items in the queue.

println("Queue has " + queue.len() + " items");

to_vector(this) -> Vector<T>

Consumes the queue and returns a vector containing all items.

let vec = queue.to_vector();