Zig 0.17.0-dev (Split by item) This is an example of documentation generated by
ZigDoc , an alternative to Zig's built-in
Auto Doc feature. See also
examples in other modes/formats . The project being documented here (as the example) is the Zig standard library.
std › compress › zstd › Decompress › discardDirect Private Function discardDirect Doc Source Private Function std.compress.zstd.Decompress.discardDirect
fn discardDirect (r : *Reader , limit : std .Io .Limit ) Reader .Error !usize Params File compress/zstd/Decompress.zig: 159
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180 fn discardDirect (r : *Reader , limit : std .Io .Limit ) Reader .Error !usize {
const d : *Decompress = @alignCast (@fieldParentPtr ("reader" , r ));
rebaseForDiscard (d , limit );
var writer : Writer = .{
.vtable = &.{
.drain = std .Io .Writer .Discarding .drain ,
.sendFile = std .Io .Writer .Discarding .sendFile ,
},
.buffer = r .buffer ,
.end = r .end ,
};
defer {
r .end = writer .end ;
r .seek = r .end ;
}
const n = r .stream (&writer , limit ) catch |err | switch (err ) {
error .WriteFailed => unreachable ,
error .ReadFailed , error .EndOfStream => |e | return e ,
};
assert (n <= @backingInt (limit ));
return n ;
}
This could be improved so that when an amount is discarded that includes an entire frame, skip decoding that frame.