A poolable string builder (aka string buffer) for Zig
0

Configure Feed

Select the types of activity you want to include in your feed.

Add copy helper

Karl Seguin (Jul 20, 2023, 4:42 PM +0800) b6513022 657b3bdd

+17
+17
src/string_builder.zig
··· 147 147 } 148 148 } 149 149 150 + pub fn copy(self: StringBuilder, allocator: Allocator) ![]const u8 { 151 + const pos = self.pos; 152 + var c = try allocator.alloc(u8, pos); 153 + @memcpy(c, self.buf[0..pos]); 154 + return c; 155 + } 156 + 150 157 pub fn writer(self: *StringBuilder) Writer.IOWriter { 151 158 return .{.context = Writer.init(self)}; 152 159 } ··· 279 286 280 287 try std.json.stringify(.{.over = 9000, .spice = "must flow", .ok = true}, .{}, sb.writer()); 281 288 try t.expectString("{\"over\":9000,\"spice\":\"must flow\",\"ok\":true}", sb.string()); 289 + } 290 + 291 + test "copy" { 292 + var sb = try StringBuilder.init(t.allocator, 10); 293 + defer sb.deinit(); 294 + 295 + try sb.write("hello!!"); 296 + const c = try sb.copy(t.allocator); 297 + defer t.allocator.free(c); 298 + try t.expectString("hello!!", c); 282 299 } 283 300 284 301 fn testString(allocator: Allocator, random: std.rand.Random) []const u8 {