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.
pubfnfromInt(comptimeE: type, integer: anytype) ?E {
constenum_info = @typeInfo(E).@"enum";
if (enum_info.mode == .nonexhaustive) {
if (std.math.cast(enum_info.tag_type, integer)) |tag| {
return@fromBackingInt(@intCast(tag));
}
returnnull;
}
// We don't directly iterate over the fields of E, as that
// would require an inline loop. Instead, we create an array of
// values that is comptime-know, but can be iterated at runtime
// without requiring an inline loop.
// This generates better machine code.
for (values(E)) |value| {
if (@backingInt(value) == integer) returnvalue;
}
returnnull;
}