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 library itself.
Zig › std/ › http/ › HeaderIterator.zig › next
next
HeaderIterator.next
pub fn next (it : *HeaderIterator ) ?std .http .Header
File
Code
pub fn next (it : *HeaderIterator ) ?std .http .Header {
const end = std .mem .findPosLinear (u8 , it .bytes , it .index , "\r\n" ).?;
if (it .index == end ) {
if (it .is_trailer ) return null ;
const next_end = std .mem .findPosLinear (u8 , it .bytes , end + 2 , "\r\n" ) orelse
return null ;
var kv_it = std .mem .splitScalar (u8 , it .bytes [end + 2 .. next_end ], ':' );
const name = kv_it .first ();
const value = kv_it .rest ();
it .is_trailer = true ;
it .index = next_end + 2 ;
if (name .len == 0 )
return null ;
return .{
.name = name ,
.value = std .mem .trim (u8 , value , " \t" ),
};
} else {
var kv_it = std .mem .splitScalar (u8 , it .bytes [it .index ..end ], ':' );
const name = kv_it .first ();
const value = kv_it .rest ();
it .index = end + 2 ;
if (name .len == 0 )
return null ;
return .{
.name = name ,
.value = std .mem .trim (u8 , value , " \t" ),
};
}
}