std::collections::queue (v0.2.2)

First-in first-out container.

Latest

Overview

std::collections::queue is a generic FIFO container. enqueue adds at the back, dequeue removes from the front, and front or back read the ends without removing.

dropQueue releases the storage when the container is no longer needed.

Source: thrustc/std/v0.2.2/collections/queue.thrust

Public Signatures

Exported declarations for this module snapshot.

struct Queue [T] @public {
fn newQueue [T] () Queue[T] @public;
fn withCapacity [T] (capacity: usize) Queue[T] @public;
fn dropQueue [T] (queue: ptr[Queue[T]]) void @public @deallocator;
fn getLength [T] (queue: ptr[Queue[T]]) usize @public;
fn getCapacity [T] (queue: ptr[Queue[T]]) usize @public;
fn isEmpty [T] (queue: ptr[Queue[T]]) bool @public;
fn enqueue [T] (queue: ptr[Queue[T]], value: T) void @public;
fn dequeue [T] (queue: ptr[Queue[T]]) T @public;
fn front [T] (queue: ptr[Queue[T]]) T @public;
fn back [T] (queue: ptr[Queue[T]]) T @public;
fn clear [T] (queue: ptr[Queue[T]]) void @public;
fn reserveCapacity [T] (queue: ptr[Queue[T]], capacity: usize) void @public;
fn shrinkToFit [T] (queue: ptr[Queue[T]]) void @public;

Behavior and Use

enqueue adds at the back; dequeue removes from the front; front and back read the ends without removal.

Call dropQueue when the container is no longer needed to release the backing storage.

Examples

import std::collections::queue;
import std::io;

// Process print jobs in the order they arrived.
fn main() s32 @public {
    var jobs := queue::newQueue[s32]();

    queue::enqueue[s32](ref jobs, 10);
    queue::enqueue[s32](ref jobs, 20);

    var job: s32 = queue::dequeue[s32](ref jobs);

    io::print("processing job: %d\n", job);

    queue::dropQueue[s32](ref jobs);

    return 0;
}
import std::collections::queue;
import std::io;

// Inspect the next job and the last one queued.
fn main() s32 @public {
    var jobs := queue::newQueue[s32]();

    queue::enqueue[s32](ref jobs, 10);
    queue::enqueue[s32](ref jobs, 20);

    io::print("next: %d, last: %d\n", queue::front[s32](ref jobs), queue::back[s32](ref jobs));

    queue::dropQueue[s32](ref jobs);

    return 0;
}
import std::collections::queue;
import std::io;

// Drain the queue, handling each job in turn.
fn main() s32 @public {
    var jobs := queue::newQueue[s32]();

    queue::enqueue[s32](ref jobs, 1);
    queue::enqueue[s32](ref jobs, 2);

    while !queue::isEmpty[s32](ref jobs) {
        var job: s32 = queue::dequeue[s32](ref jobs);
        io::print("processing: %d\n", job);
    }

    queue::dropQueue[s32](ref jobs);

    return 0;
}

Notes

Back to std index