如何使用“FixedBufferStream”在 Zig 中创建 io.Writer?

问题描述 投票:0回答:1

我正在尝试从空缓冲区创建一个编写器,以便我可以为我的函数编写测试

fn writeHello(writer: std.io.Writer) !void {
    try writer.print("Hello, world!\n");
}

我使用了标准库中的代码:

var buffer: [128]u8 = undefined;
var fbs = io.fixedBufferStream(&buffer);
const stream = fbs.writer();

(带有

const std = @import("std");
const io = std.io;
)。

但是

stream
没有
io.Writer
类型,所以我无法将其传递给我的
writeHello
函数。

printing io buffer zig
1个回答
0
投票

我是 Zig 新手,但我有一个解决方法:

var fbuf = std.heap.FixedBufferAllocator.init(buf);
const alloc = fbuf.allocator();
var arr = std.ArrayList(u8).initCapacity(alloc, buf.len) catch unreachable;
var writer = arr.writer();
© www.soinside.com 2019 - 2024. All rights reserved.