std.ArrayList: add clearRetainingCapacity and clearAndFree

This commit is contained in:
Andrew Kelley 2021-05-05 16:55:49 -07:00
parent 5d7f2697de
commit c714a3250f

View file

@ -294,6 +294,18 @@ pub fn ArrayListAligned(comptime T: type, comptime alignment: ?u29) type {
self.items.len = new_len; self.items.len = new_len;
} }
/// Invalidates all element pointers.
pub fn clearRetainingCapacity(self: *Self) void {
self.items.len = 0;
}
/// Invalidates all element pointers.
pub fn clearAndFree(self: *Self) void {
self.allocator.free(self.allocatedSlice());
self.items.len = 0;
self.capacity = 0;
}
/// Deprecated: call `ensureUnusedCapacity` or `ensureTotalCapacity`. /// Deprecated: call `ensureUnusedCapacity` or `ensureTotalCapacity`.
pub const ensureCapacity = ensureTotalCapacity; pub const ensureCapacity = ensureTotalCapacity;
@ -611,6 +623,18 @@ pub fn ArrayListAlignedUnmanaged(comptime T: type, comptime alignment: ?u29) typ
self.items.len = new_len; self.items.len = new_len;
} }
/// Invalidates all element pointers.
pub fn clearRetainingCapacity(self: *Self) void {
self.items.len = 0;
}
/// Invalidates all element pointers.
pub fn clearAndFree(self: *Self, allocator: *Allocator) void {
allocator.free(self.allocatedSlice());
self.items.len = 0;
self.capacity = 0;
}
/// Deprecated: call `ensureUnusedCapacity` or `ensureTotalCapacity`. /// Deprecated: call `ensureUnusedCapacity` or `ensureTotalCapacity`.
pub const ensureCapacity = ensureTotalCapacity; pub const ensureCapacity = ensureTotalCapacity;