| ... | ... | @@ -114,7 +114,10 @@ pub const FileError = error{ |
| 114 | 114 | /// Writes to `buffer` and returns `error.WriteFailed` when it is full. |
| 115 | 115 | pub fn fixed(buffer: []u8) Writer { |
| 116 | 116 | return .{ |
| 117 | | .vtable = &.{ .drain = fixedDrain }, |
| 117 | .vtable = &.{ |
| 118 | .drain = fixedDrain, |
| 119 | .flush = noopFlush, |
| 120 | }, |
| 118 | 121 | .buffer = buffer, |
| 119 | 122 | }; |
| 120 | 123 | } |
| ... | ... | @@ -244,6 +247,15 @@ pub fn noopFlush(w: *Writer) Error!void { |
| 244 | 247 | _ = w; |
| 245 | 248 | } |
| 246 | 249 | |
| 250 | test "fixed buffer flush" { |
| 251 | var buffer: [1]u8 = undefined; |
| 252 | var writer: std.io.Writer = .fixed(&buffer); |
| 253 | |
| 254 | try writer.writeByte(10); |
| 255 | try writer.flush(); |
| 256 | try testing.expectEqual(10, buffer[0]); |
| 257 | } |
| 258 | |
| 247 | 259 | /// Calls `VTable.drain` but hides the last `preserve_length` bytes from the |
| 248 | 260 | /// implementation, keeping them buffered. |
| 249 | 261 | pub fn drainPreserve(w: *Writer, preserve_length: usize) Error!void { |