Zig 0.17.0-dev (Split by item)

Shortcut keys
?
Show these tips
S
Focus search field
Esc
Clear focus & close tips
U
Jump to source code
↑
Move up in search results
↓
Move down in search results
↵
Go to active search result
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. Public Function

fromInt

Public Function
std.enums.fromInt
pub fn fromInt(comptime E: type, integer: anytype) ?E

Params

  • E: type
  • integer

File

enums.zig:10
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
pub fn fromInt(comptime E: type, integer: anytype) ?E {
    const enum_info = @typeInfo(E).@"enum";
    if (enum_info.mode == .nonexhaustive) {
        if (std.math.cast(enum_info.tag_type, integer)) |tag| {
            return @fromBackingInt(@intCast(tag));
        }
        return null;
    }
    // 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) return value;
    }
    return null;
}