Function streamDelimiter [src]
Appends to w contents by reading from the stream until delimiter is
found. Does not write the delimiter itself.
Does not discard the delimiter from the Reader.
Returns number of bytes streamed, which may be zero, or error.EndOfStream
if the delimiter was not found.
Asserts buffer capacity of at least one. This function performs better with
larger buffers.
See also:
streamDelimiterEnding
streamDelimiterLimit
Prototype
pub fn streamDelimiter(r: *Reader, w: *Writer, delimiter: u8) StreamError!usize
Parameters
r: *Reader
w: *Writer
delimiter: u8
Possible Errors
Example
test streamDelimiter {
var out_buffer: [10]u8 = undefined;
var r: Reader = .fixed("foo\nbars");
var w: Writer = .fixed(&out_buffer);
try testing.expectEqual(3, try r.streamDelimiter(&w, '\n'));
try testing.expectEqualStrings("foo", w.buffered());
try testing.expectEqual(0, try r.streamDelimiter(&w, '\n'));
r.toss(1);
try testing.expectError(error.EndOfStream, r.streamDelimiter(&w, '\n'));
}
Source
pub fn streamDelimiter(r: *Reader, w: *Writer, delimiter: u8) StreamError!usize {
const n = streamDelimiterLimit(r, w, delimiter, .unlimited) catch |err| switch (err) {
error.StreamTooLong => unreachable, // unlimited is passed
else => |e| return e,
};
if (r.seek == r.end) return error.EndOfStream;
return n;
}