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