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.

BackingInt

For enums, packed unions and packed structs, returns their backing integer type. For tagged unions, returns the backing integer type of their enum tag type.

meta.BackingInt
pub fn BackingInt(comptime T: type) type

File

lib/std/meta.zig:514

Code

pub fn BackingInt(comptime T: type) type {
    switch (@typeInfo(T)) {
        .@"enum" => |info| return info.tag_type,
        .@"struct" => |info| if (info.backing_integer) |Int| return Int,
        .@"union" => |info| switch (info.layout) {
            .@"packed" => return info.backing_integer.?,
            .auto => if (info.tag_type) |EnumTag|
                return @typeInfo(EnumTag).@"enum".tag_type,
            .@"extern" => {},
        },
        else => {},
    }
    @compileError("expected enum, tagged union, packed union or packed struct type, found '" ++ @typeName(T) ++ "'");
}