pub fn pushFrontSliceAssumeCapacity(deque: *Self, items: []const T) void deque: *Selfitems: []const T207
208
209
210
211
212
213
214
215
216
217
218 pub fn pushFrontSliceAssumeCapacity(deque: *Self, items: []const T) void {
assert(deque.buffer.len - deque.len >= items.len);
if (deque.head < items.len) {
@memcpy(deque.buffer[0..deque.head], items[items.len - deque.head ..]);
deque.head = deque.buffer.len - items.len + deque.head;
@memcpy(deque.buffer[deque.head..], items.ptr);
} else {
deque.head -= items.len;
@memcpy(deque.buffer[deque.head..][0..items.len], items);
}
deque.len += items.len;
}
Add
itemsto the front of the deque. This is equivalent to iteratingitemsin reverse and callingpushFronton every single entry.Never invalidates element pointers.
Asserts that the deque can hold the additional items.