authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-05-26 03:04:18 -07:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-05-26 03:04:18 -07:00
logdd568a92c67a23bd1f64051deac876ddefd1c1de
treefcd8ee1f711e945db62e5ad1846d45a7ec3cbe1d
parent27aef9a965cb9febfa4d1a767d0fb107b0c0f92d
signaturebadge-check Signed by SSH key SHA256:4hHJbtBRU58AYXwjL7fkz2fnQHdiye8x1QpTCQ0sHNw

AllocatingWriter: add appendAssumeCapacity


1 files changed, 7 insertions(+), 3 deletions(-)

allocating_writer.zig+7-3
...@@ -55,6 +55,11 @@ pub const AllocatingWriter = struct {...@@ -55,6 +55,11 @@ pub const AllocatingWriter = struct {
55 return self.allocatedSlice()[self.items.len..];55 return self.allocatedSlice()[self.items.len..];
56 }56 }
5757
58 fn appendAssumeCapacity(self: *AllocatingWriter, bytes: []const u8) void {
59 @memcpy(self.unusedSlice()[0..bytes.len], bytes);
60 self.items.len += bytes.len;
61 }
62
58 const W = nio.Writable(@This(), ._var);63 const W = nio.Writable(@This(), ._var);
59 pub const writeAll = W.writeAll;64 pub const writeAll = W.writeAll;
60 pub const writevAll = W.writevAll;65 pub const writevAll = W.writevAll;
...@@ -69,15 +74,14 @@ pub const AllocatingWriter = struct {...@@ -69,15 +74,14 @@ pub const AllocatingWriter = struct {
6974
70 pub fn write(self: *AllocatingWriter, bytes: []const u8) WriteError!usize {75 pub fn write(self: *AllocatingWriter, bytes: []const u8) WriteError!usize {
71 try self.ensureUnusedCapacity(bytes.len);76 try self.ensureUnusedCapacity(bytes.len);
72 @memcpy(self.unusedSlice()[0..bytes.len], bytes);77 self.appendAssumeCapacity(bytes);
73 self.items.len += bytes.len;
74 return bytes.len;78 return bytes.len;
75 }79 }
76 pub fn writev(self: *AllocatingWriter, iovec: []const sys.struct_iovec) WriteError!usize {80 pub fn writev(self: *AllocatingWriter, iovec: []const sys.struct_iovec) WriteError!usize {
77 var len: usize = 0;81 var len: usize = 0;
78 for (iovec) |vec| len += vec.len;82 for (iovec) |vec| len += vec.len;
79 try self.ensureUnusedCapacity(len);83 try self.ensureUnusedCapacity(len);
80 for (iovec) |vec| _ = self.write(vec.base[0..vec.len]) catch unreachable;84 for (iovec) |vec| self.appendAssumeCapacity(vec.base[0..vec.len]);
81 return len;85 return len;
82 }86 }
83};87};