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: *Readerw: *Writerdelimiter: u8

Possible Errors

ReadFailed

See the Reader implementation for detailed diagnostics.

WriteFailed

See the Writer implementation for detailed diagnostics.

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, }; }