fromInt
Function parameters
Parameters
- E:type
- integer:anytype
Functions in this namespace
Functions
- EnumFieldStruct
- Returns a struct with a field matching each unique named enum element.
- valuesFromFields
- Looks up the supplied fields in the given enum type.
- values
- Returns the set of all named values in the given enum, in
- tagName
- A safe alternative to @tagName() for non-exhaustive enums that doesn't
- directEnumArrayLen
- Determines the length of a direct-mapped enum array, indexed by
- directEnumArray
- Initializes an array of Data which can be indexed by
- directEnumArrayDefault
- Initializes an array of Data which can be indexed by
- nameCast
- Deprecated: Use @field(E, @tagName(tag)) or @field(E, string)
- EnumSet
- A set of enum elements, backed by a bitfield.
- EnumMap
- A map keyed by an enum, backed by a bitfield and a dense array.
- EnumMultiset
- A multiset of enum elements up to a count of usize.
- BoundedEnumMultiset
- A multiset of enum elements up to CountSize.
- EnumArray
- An array keyed by an enum, backed by a dense array.
Source
Implementation
pub fn fromInt(comptime E: type, integer: anytype) ?E {
const enum_info = @typeInfo(E).@"enum";
if (!enum_info.is_exhaustive) {
if (std.math.cast(enum_info.tag_type, integer)) |tag| {
return @enumFromInt(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 (@intFromEnum(value) == integer) return @enumFromInt(integer);
}
return null;
}