Standard Library: Queue (std/queue.zc)
Queue<T> is a generic First-In-First-Out (FIFO) queue implemented as a Ring Buffer (Circular Buffer) .
import "std/queue.zc"
fn main() {
let q = Queue<int>::new();
q.push(1);
q.push(2);
q.push(3);
// Pop returns an Option<T>
if (q.pop().is_some()) {
println "Popped: {q.pop().unwrap()}"; // 1
}
}
Ring Buffer : Uses a circular buffer with head and tail indices.
Performance :
push: Amortized O(1) (resizes when full).
pop: O(1) (advances head index).
clone: O(N) .
Safety : Safe handling of memory wrapping and resizing.
struct Queue<T> {
data: T*;
cap: usize;
head: usize;
tail: usize;
count: usize;
}
Method
Signature
Description
new
Queue<T>::new() -> Queue<T>
Creates a new, empty queue.
clone
clone(self) -> Queue<T>
Creates a deep copy of the queue.
Method
Signature
Description
push
push(self, value: T)
Adds an element to the back of the queue.
pop
pop(self) -> Option<T>
Removes and returns the element at the front. Returns None if empty.
clear
clear(self)
Removes all items from the queue.
Method
Signature
Description
length
length(self) -> usize
Returns the number of items.
is_empty
is_empty(self) -> bool
Returns true if the queue is empty.
Method
Signature
Description
free
free(self)
Frees the internal buffer.
Trait
impl Drop for Queue
Automatically calls free() when out of scope.