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/ › meta.zig › TupleTester
TupleTester
meta.TupleTester
const TupleTester = struct
File
Code
const TupleTester = struct {
fn assertTypeEqual (comptime Expected : type , comptime Actual : type ) void {
if (Expected != Actual )
@compileError ("Expected type " ++ @typeName (Expected ) ++ ", but got type " ++ @typeName (Actual ));
}
fn assertTuple (comptime expected : anytype , comptime Actual : type ) void {
const info = @typeInfo (Actual );
if (info != .@"struct" )
@compileError ("Expected struct type" );
if (!info .@"struct" .is_tuple )
@compileError ("Struct type must be a tuple type" );
const field_names = info .@"struct" .field_names ;
if (expected .len != field_names .len ) {
const msg = std .fmt .comptimePrint ("Argument count mismatch: expected {d}, got {d}" , .{ expected .len , field_names .len });
@compileError (msg );
}
inline for (field_names , info .@"struct" .field_types , 0 ..) |fld_name , fld_type , i | {
if (expected [i ] != fld_type ) {
@compileError ("Field " ++ fld_name ++ " expected to be type " ++ @typeName (expected [i ]) ++ ", but was type " ++ @typeName (fld_type ));
}
}
}
}