Enum rustc_mir_build::build::matches::TestKind [−][src]
enum TestKind<'tcx> {
Switch {
adt_def: &'tcx AdtDef,
variants: BitSet<VariantIdx>,
},
SwitchInt {
switch_ty: Ty<'tcx>,
options: FxIndexMap<&'tcx Const<'tcx>, u128>,
},
Eq {
value: &'tcx Const<'tcx>,
ty: Ty<'tcx>,
},
Range(PatRange<'tcx>),
Len {
len: u64,
op: BinOp,
},
}Expand description
See Test for more.
Variants
Test what enum variant a value is.
Fields of Switch
adt_def: &'tcx AdtDefThe enum type being tested.
variants: BitSet<VariantIdx>The set of variants that we should create a branch for. We also create an additional “otherwise” case.
Test what value an integer, bool, or char has.
Fields of SwitchInt
switch_ty: Ty<'tcx>The type of the value that we’re testing.
options: FxIndexMap<&'tcx Const<'tcx>, u128>The (ordered) set of values that we test for.
For integers and chars we create a branch to each of the values in
options, as well as an “otherwise” branch for all other values, even
in the (rare) case that options is exhaustive.
For bool we always generate two edges, one for true and one for
false.
Test for equality with value, possibly after an unsizing coercion to
ty,
Range(PatRange<'tcx>)Test whether the value falls within an inclusive or exclusive range
Tuple Fields of Range
0: PatRange<'tcx>Test that the length of the slice is equal to len.
Trait Implementations
Auto Trait Implementations
impl<'tcx> !RefUnwindSafe for TestKind<'tcx>
impl<'tcx> !UnwindSafe for TestKind<'tcx>
Blanket Implementations
Mutably borrows from an owned value. Read more
Layout
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference’s “Type Layout” chapter for details on type layout guarantees.
Size: 72 bytes
Size for each variant:
Switch: 47 bytesSwitchInt: 71 bytesEq: 23 bytesRange: 31 bytesLen: 15 bytes