Commit f6549a956d

Andrew Kelley <andrew@ziglang.org>
2023-11-22 02:30:42
std.ArrayList: add initBuffer to the unmanaged array list
This is useful when you want to have an array list backed by a fixed slice of memory and no Allocator will be used. It's an alternative to BoundedArray as you will see in the following commit.
1 parent d5e21a4
Changed files (1)
lib/std/array_list.zig
@@ -633,6 +633,17 @@ pub fn ArrayListAlignedUnmanaged(comptime T: type, comptime alignment: ?u29) typ
             return self;
         }
 
+        /// Initialize with externally-managed memory. The buffer determines the
+        /// capacity, and the length is set to zero.
+        /// When initialized this way, all methods that accept an Allocator
+        /// argument are illegal to call.
+        pub fn initBuffer(buffer: Slice) Self {
+            return .{
+                .items = buffer[0..0],
+                .capacity = buffer.len,
+            };
+        }
+
         /// Release all allocated memory.
         pub fn deinit(self: *Self, allocator: Allocator) void {
             allocator.free(self.allocatedSlice());