diff --git a/lib/std/array_list.zig b/lib/std/array_list.zig index 2ba2e27bba..cd1c09a01b 100644 --- a/lib/std/array_list.zig +++ b/lib/std/array_list.zig @@ -294,6 +294,18 @@ pub fn ArrayListAligned(comptime T: type, comptime alignment: ?u29) type { 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`. pub const ensureCapacity = ensureTotalCapacity; @@ -611,6 +623,18 @@ pub fn ArrayListAlignedUnmanaged(comptime T: type, comptime alignment: ?u29) typ 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`. pub const ensureCapacity = ensureTotalCapacity;