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/ › crypto/ › ff.zig › ct_unprotected
ct_unprotected
ff.ct_unprotected
const ct_unprotected = struct
File
Code
const ct_unprotected = struct {
fn select (on : bool , x : Limb , y : Limb ) Limb {
return if (on ) x else y ;
}
fn eql (x : anytype , y : @TypeOf (x )) bool {
return x == y ;
}
fn limbsCmpLt (x : anytype , y : @TypeOf (x )) bool {
const x_limbs = x .limbsConst ();
const y_limbs = y .limbsConst ();
assert (x_limbs .len == y_limbs .len );
var i = x_limbs .len ;
while (i != 0 ) {
i -= 1 ;
if (x_limbs [i ] != y_limbs [i ]) {
return x_limbs [i ] < y_limbs [i ];
}
}
return false ;
}
fn limbsCmpGeq (x : anytype , y : @TypeOf (x )) bool {
return !limbsCmpLt (x , y );
}
fn mulWide (x : Limb , y : Limb ) WideLimb {
const wide = math .mulWide (Limb , x , y );
return .{
.hi = @as (Limb , @truncate (wide >> @typeInfo (Limb ).int .bits )),
.lo = @as (Limb , @truncate (wide )),
};
}
}