struct Bits [src]
Fields
has_multi_cases: boolIf true, one or more prongs have multiple items.
has_else: boolIf true, there is an else prong. This is mutually exclusive with has_under.
has_under: boolIf true, there is an underscore prong. This is mutually exclusive with has_else.
any_has_tag_capture: boolIf true, at least one prong has an inline tag capture.
any_non_inline_capture: boolIf true, at least one prong has a capture which may not
be comptime-known via inline.
has_continue: bool
scalar_cases_len: ScalarCasesLen
Members
- ScalarCasesLen (Type)
- specialProng (Function)
Source
pub const Bits = packed struct(u32) {
/// If true, one or more prongs have multiple items.
has_multi_cases: bool,
/// If true, there is an else prong. This is mutually exclusive with `has_under`.
has_else: bool,
/// If true, there is an underscore prong. This is mutually exclusive with `has_else`.
has_under: bool,
/// If true, at least one prong has an inline tag capture.
any_has_tag_capture: bool,
/// If true, at least one prong has a capture which may not
/// be comptime-known via `inline`.
any_non_inline_capture: bool,
has_continue: bool,
scalar_cases_len: ScalarCasesLen,
pub const ScalarCasesLen = u26;
pub fn specialProng(bits: Bits) SpecialProng {
const has_else: u2 = @intFromBool(bits.has_else);
const has_under: u2 = @intFromBool(bits.has_under);
return switch ((has_else << 1) | has_under) {
0b00 => .none,
0b01 => .under,
0b10 => .@"else",
0b11 => unreachable,
};
}
}