pub fn init(init_values: EnumFieldStruct(E, ?Value, @as(?Value, null))) Self init_values: EnumFieldStruct(E, ?Value, @as(?Value, null))445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468 pub fn init(init_values: EnumFieldStruct(E, ?Value, @as(?Value, null))) Self {
@setEvalBranchQuota(2 * @typeInfo(E).@"enum".field_names.len);
var result: Self = .{};
if (@typeInfo(E).@"enum".mode == .exhaustive) {
inline for (0..Self.len) |i| {
const key = comptime Indexer.keyForIndex(i);
const tag = @tagName(key);
if (@field(init_values, tag)) |*v| {
result.bits.set(i);
result.values[i] = v.*;
}
}
} else {
inline for (@typeInfo(E).@"enum".field_names) |field_name| {
const key = @field(E, field_name);
if (@field(init_values, field_name)) |*v| {
const i = comptime Indexer.indexOf(key);
result.bits.set(i);
result.values[i] = v.*;
}
}
}
return result;
}
Initializes the map using a sparse struct of optionals