pub fn defaultDiscard(r: *Reader, limit: Limit) Error!usize ReadFailedSee the Reader implementation for detailed diagnostics.
EndOfStream196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213pub fn defaultDiscard(r: *Reader, limit: Limit) Error!usize {
assert(r.seek == r.end);
r.seek = 0;
r.end = 0;
var d: Writer.Discarding = .init(r.buffer);
var n = r.stream(&d.writer, limit) catch |err| switch (err) {
error.WriteFailed => unreachable,
error.ReadFailed, error.EndOfStream => |e| return e,
};
// If `stream` wrote to `r.buffer` without going through the writer,
// we need to discard as much of the buffered data as possible.
const remaining = @backingInt(limit) - n;
const buffered_n_to_discard = @min(remaining, r.end - r.seek);
n += buffered_n_to_discard;
r.seek += buffered_n_to_discard;
assert(n <= @backingInt(limit));
return n;
}