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 51a44883871f690cf6bd4200fe58c8184ff85098..bc5f1960873c49bf3c3561915b503c5ecace6900 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); -- 2.54.0