| ... | @@ -114,7 +114,10 @@ pub const FileError = error{ | ... | @@ -114,7 +114,10 @@ pub const FileError = error{ |
| 114 | /// Writes to `buffer` and returns `error.WriteFailed` when it is full. | 114 | /// Writes to `buffer` and returns `error.WriteFailed` when it is full. |
| 115 | pub fn fixed(buffer: []u8) Writer { | 115 | pub fn fixed(buffer: []u8) Writer { |
| 116 | return .{ | 116 | return .{ |
| 117 | .vtable = &.{ .drain = fixedDrain }, | 117 | .vtable = &.{ |
| | 118 | .drain = fixedDrain, |
| | 119 | .flush = noopFlush, |
| | 120 | }, |
| 118 | .buffer = buffer, | 121 | .buffer = buffer, |
| 119 | }; | 122 | }; |
| 120 | } | 123 | } |
| ... | @@ -244,6 +247,15 @@ pub fn noopFlush(w: *Writer) Error!void { | ... | @@ -244,6 +247,15 @@ pub fn noopFlush(w: *Writer) Error!void { |
| 244 | _ = w; | 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 | /// Calls `VTable.drain` but hides the last `preserve_length` bytes from the | 259 | /// Calls `VTable.drain` but hides the last `preserve_length` bytes from the |
| 248 | /// implementation, keeping them buffered. | 260 | /// implementation, keeping them buffered. |
| 249 | pub fn drainPreserve(w: *Writer, preserve_length: usize) Error!void { | 261 | pub fn drainPreserve(w: *Writer, preserve_length: usize) Error!void { |