pub fn shrinkToLenSentinel(self: *Self, gpa: Allocator) Allocator.Error!void 1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311 pub fn shrinkToLenSentinel(self: *Self, gpa: Allocator) Allocator.Error!void {
std.debug.assert(self.items.len <= self.capacity);
const required_len = self.items.len + 1;
switch (std.math.order(required_len, self.capacity)) {
.eq => return,
.gt => {
try self.ensureTotalCapacityPrecise(gpa, required_len);
},
.lt => {
self.items.len += 1;
defer self.items.len -= 1;
try self.shrinkToLen(gpa);
},
}
}
Shrinks or expands capacity to match length + 1. May invalidate element pointers. If succeds it is safe to call
toOwnedSliceSentinelAssert.