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 › math › clamp Public Function clamp Doc Source Public Function std.math.clamp
pub fn clamp (val : anytype , lower : anytype , upper : anytype ) @TypeOf (val , lower , upper ) Params File math.zig: 526
526
527
528
529
530
531
532
533
534
535
536
537 pub fn clamp (val : anytype , lower : anytype , upper : anytype ) @TypeOf (val , lower , upper ) {
const T = @TypeOf (val , lower , upper );
switch (@typeInfo (T )) {
.int , .float , .comptime_int , .comptime_float => assert (lower <= upper ),
.vector => |vinfo | switch (@typeInfo (vinfo .child )) {
.int , .float => assert (@reduce (.And , lower <= upper )),
else => @compileError ("Expected vector of ints or floats, found " ++ @typeName (T )),
},
else => @compileError ("Expected an int, float or vector of one, found " ++ @typeName (T )),
}
return @max (lower , @min (val , upper ));
}
Odd ramp function
Limit val to the inclusive range [lower, upper].