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

Possible Errors

EndOfStream

End of stream indicated from the Reader. This error cannot originate from the Writer.

ReadFailed

See the Reader implementation for detailed diagnostics.

WriteFailed

See the Writer implementation for detailed diagnostics.

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