Add formatted printing directly into std.Buffer

master
vegecode 2020-02-04 12:16:20 -06:00 committed by Andrew Kelley
parent 5503f3f7c4
commit 6fa143355f
No known key found for this signature in database
GPG Key ID: 7C5F548F728501A9
1 changed files with 18 additions and 0 deletions

View File

@ -147,6 +147,16 @@ pub const Buffer = struct {
try self.resize(m.len);
mem.copy(u8, self.list.toSlice(), m);
}
pub fn print(self: *Buffer, comptime fmt: []const u8, args: var) !void {
try std.fmt.format(
self,
@typeInfo(@TypeOf(Buffer.append)).Fn.return_type.?.ErrorSet,
Buffer.append,
fmt,
args,
);
}
};
test "simple Buffer" {
@ -190,3 +200,11 @@ test "Buffer.initCapacity" {
testing.expect(buf.capacity() == old_cap);
testing.expect(mem.eql(u8, buf.toSliceConst(), "hello"));
}
test "Buffer.print" {
var buf = try Buffer.init(testing.allocator, "");
defer buf.deinit();
try buf.print("Hello {} the {}", .{ 2, "world" });
testing.expect(buf.eql("Hello 2 the world"));
}