From 01b969afa3c984b92eeb62a40529cc803786dab5 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Sat, 27 Jun 2026 02:48:17 -0700 Subject: [PATCH] AllocatingWriter: add replaceRangeAssumeCapacity --- allocating_writer.zig | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/allocating_writer.zig b/allocating_writer.zig index 6d6f4380c8b75946962e5da6c2637a0c131142b5..810011f25430e370132d5d4b9d5a0dfae61ecbc1 100644 --- a/allocating_writer.zig +++ b/allocating_writer.zig @@ -85,6 +85,16 @@ pub const AllocatingWriter = struct { self.capacity = 0; } + pub fn replaceRangeAssumeCapacity(self: *AllocatingWriter, start: usize, len: usize, new_items: []const u8) void { + std.debug.assert(self.capacity - self.items.len >= new_items.len -| len); + const tail = self.items[start + len ..]; + const vacated = self.items[self.items.len - (len -| new_items.len) ..]; + self.items.len = self.items.len - len + new_items.len; + @memmove(self.items[start + new_items.len ..], tail); + @memcpy(self.items[start..][0..new_items.len], new_items); + @memset(vacated, undefined); + } + const W = nio.Writable(@This(), ._var); pub const writeAll = W.writeAll; pub const writevAll = W.writevAll; -- 2.54.0