DoxigAlpha

shrinkAndFree

Reduce allocated capacity to new_capacity.

Function parameters

Parameters

#
self:*Self
new_capacity:usize

Priority queue for storing generic data.

Functions

#
PriorityQueue
Priority queue for storing generic data.

Source

Implementation

#
pub fn shrinkAndFree(self: *Self, new_capacity: usize) void {
    assert(new_capacity <= self.cap);

    // Cannot shrink to smaller than the current queue size without invalidating the heap property
    assert(new_capacity >= self.items.len);

    const old_memory = self.allocatedSlice();
    const new_memory = self.allocator.realloc(old_memory, new_capacity) catch |e| switch (e) {
        error.OutOfMemory => { // no problem, capacity is still correct then.
            return;
        },
    };

    self.items.ptr = new_memory.ptr;
    self.cap = new_memory.len;
}