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 › flate › Decompress › discardDirect Private Function discardDirect Doc Source Private Function std.compress.flate.Decompress.discardDirect
fn discardDirect (r : *Reader , limit : std .Io .Limit ) Reader .Error !usize Params File compress/flate/Decompress.zig: 121
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142 fn discardDirect (r : *Reader , limit : std .Io .Limit ) Reader .Error !usize {
if (r .end + flate .history_len > r .buffer .len ) rebase (r , flate .history_len );
var writer : Writer = .{
.vtable = &.{
.drain = std .Io .Writer .Discarding .drain ,
.sendFile = std .Io .Writer .Discarding .sendFile ,
},
.buffer = r .buffer ,
.end = r .end ,
};
defer {
assert (writer .end != 0 );
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.