authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-20 17:09:15-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-22 09:41:43-07:00
logd9a5a3e8c55b501afe0d9df232d613f6b445f14f
tree7c4609976f72f1cdd56aeed0124ae97c04831072
parentabed0f5129c5e03fce61c5c48cdc4bb396805ce2

std.Io: delete MultiWriter

nah

2 files changed, 0 insertions(+), 56 deletions(-)

lib/std/Io.zig-3
......@@ -456,9 +456,6 @@ pub const countingWriter = @import("Io/counting_writer.zig").countingWriter;
456456pub const CountingReader = @import("Io/counting_reader.zig").CountingReader;
457457pub const countingReader = @import("Io/counting_reader.zig").countingReader;
458458
459pub const MultiWriter = @import("Io/multi_writer.zig").MultiWriter;
460pub const multiWriter = @import("Io/multi_writer.zig").multiWriter;
461
462459pub const BitReader = @import("Io/bit_reader.zig").BitReader;
463460pub const bitReader = @import("Io/bit_reader.zig").bitReader;
464461
lib/std/Io/multi_writer.zig deleted-53
......@@ -1,53 +0,0 @@
1const std = @import("../std.zig");
2const io = std.io;
3
4/// Takes a tuple of streams, and constructs a new stream that writes to all of them
5pub fn MultiWriter(comptime Writers: type) type {
6 comptime var ErrSet = error{};
7 inline for (@typeInfo(Writers).@"struct".fields) |field| {
8 const StreamType = field.type;
9 ErrSet = ErrSet || StreamType.Error;
10 }
11
12 return struct {
13 const Self = @This();
14
15 streams: Writers,
16
17 pub const Error = ErrSet;
18 pub const Writer = io.GenericWriter(*Self, Error, write);
19
20 pub fn writer(self: *Self) Writer {
21 return .{ .context = self };
22 }
23
24 pub fn write(self: *Self, bytes: []const u8) Error!usize {
25 inline for (self.streams) |stream|
26 try stream.writeAll(bytes);
27 return bytes.len;
28 }
29 };
30}
31
32pub fn multiWriter(streams: anytype) MultiWriter(@TypeOf(streams)) {
33 return .{ .streams = streams };
34}
35
36const testing = std.testing;
37
38test "MultiWriter" {
39 var tmp = testing.tmpDir(.{});
40 defer tmp.cleanup();
41 var f = try tmp.dir.createFile("t.txt", .{});
42
43 var buf1: [255]u8 = undefined;
44 var fbs1 = io.fixedBufferStream(&buf1);
45 var buf2: [255]u8 = undefined;
46 var stream = multiWriter(.{ fbs1.writer(), f.writer() });
47
48 try stream.writer().print("HI", .{});
49 f.close();
50
51 try testing.expectEqualSlices(u8, "HI", fbs1.getWritten());
52 try testing.expectEqualSlices(u8, "HI", try tmp.dir.readFile("t.txt", &buf2));
53}