Commit 09f70bdd91

Arnav Singh <me@arnavion.dev>
2021-12-15 20:10:34
std.bounded_array: support inserting a new value at the end (#10340)
Since `BoundedArray.insert` internally reserves space for the element to be inserted, it can support inserting at the position that is the current length of the array. Change the check for the insertion position to allow this.
1 parent 87b843e
Changed files (1)
lib/std/bounded_array.zig
@@ -121,7 +121,7 @@ pub fn BoundedArray(comptime T: type, comptime capacity: usize) type {
         /// Insert `item` at index `i` by moving `slice[n .. slice.len]` to make room.
         /// This operation is O(N).
         pub fn insert(self: *Self, i: usize, item: T) !void {
-            if (i >= self.len) {
+            if (i > self.len) {
                 return error.IndexOutOfBounds;
             }
             _ = try self.addOne();
@@ -289,6 +289,10 @@ test "BoundedArray" {
     try testing.expectEqual(a.get(9), 3);
     try testing.expectEqual(a.get(10), 4);
 
+    try a.insert(11, 0xbb);
+    try testing.expectEqual(a.len, 12);
+    try testing.expectEqual(a.pop(), 0xbb);
+
     try a.appendSlice(&x);
     try testing.expectEqual(a.len, 11 + x.len);