From 09f70bdd91bf498644f7a42800f3e4e4df7040aa Mon Sep 17 00:00:00 2001 From: Arnav Singh Date: Wed, 15 Dec 2021 11:10:34 -0800 Subject: [PATCH] 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. --- lib/std/bounded_array.zig | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/std/bounded_array.zig b/lib/std/bounded_array.zig index 51a4488387..bc5f196087 100644 --- a/lib/std/bounded_array.zig +++ b/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);