crow/col/mut-deque.crow (source)

mut-deque[t] record mut

(has non-public fields)

    Mutable double-ended queue.

    new[t] t mut-deque()

    New empty mut-deque.

    to[t] t array(a t mut-deque)

    Copy elements to a list.

    This is O(n).

    copy[t] t mut-deque(a t mut-deque)

    Copy elements to a new deque.

    is-empty[t] bool(a t mut-deque)

    true iff a.size == 0.

    size[t] nat64(a t mut-deque)

    Number of elements in the deque.

    push[t] void(value t, a t mut-deque)

    Push a value to the left.

    push[t] void(a t mut-deque, value t)

    Push a value to the right.

    peek-left[t] t?(a t mut-deque)

    Returns the leftmost element without removing it.

    Returns an empty option iff a is empty.

    peek-right[t] t?(a t mut-deque)

    Returns the rightmost element without removing it.

    Returns an empty option iff a is empty.

    pop-left[t] t?(a t mut-deque)

    Removes and returns the leftmost element.

    Returns an empty option iff a was empty (before calling pop-left).

    pop-right[t] t?(a t mut-deque)

    Removes and returns the rightmost element.

    Returns an empty option iff a was empty (before calling pop-right).