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 › sort › block › binaryFirst Private Function binaryFirst Doc Source Private Function std.sort.block.binaryFirst
fn binaryFirst (
comptime T : type ,
items : []T ,
value : T ,
range : Range ,
context : anytype ,
comptime lessThan : fn (@TypeOf (context ), lhs : T , rhs : T ) bool ,
) usize Params T : type items : []T value : T range : Range context lessThan : fn (@TypeOf (context ), lhs : T , rhs : T ) bool File sort/block.zig: 939
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960 fn binaryFirst (
comptime T : type ,
items : []T ,
value : T ,
range : Range ,
context : anytype ,
comptime lessThan : fn (@TypeOf (context ), lhs : T , rhs : T ) bool ,
) usize {
var curr = range .start ;
var size = range .length ();
if (range .start >= range .end ) return range .end ;
while (size > 0 ) {
const offset = size % 2 ;
size /= 2 ;
const mid_item = items [curr + size ];
if (lessThan (context , mid_item , value )) {
curr += size + offset ;
}
}
return curr ;
}