Enum rustc_ap_rustc_target::abi::TagEncoding [−][src]
pub enum TagEncoding { Direct, Niche { dataful_variant: VariantIdx, niche_variants: RangeInclusive<VariantIdx>, niche_start: u128, }, }
Variants
The tag directly stores the discriminant, but possibly with a smaller layout (so converting the tag to the discriminant can require sign extension).
Niche (values invalid for a type) encoding the discriminant:
Discriminant and variant index coincide.
The variant dataful_variant
contains a niche at an arbitrary
offset (field tag_field
of the enum), which for a variant with
discriminant d
is set to
(d - niche_variants.start).wrapping_add(niche_start)
.
For example, Option<(usize, &T)>
is represented such that
None
has a null pointer for the second tuple field, and
Some
is the identity function (with a non-null reference).
Show fields
Fields of Niche
Trait Implementations
This method tests for self
and other
values to be equal, and is used
by ==
. Read more
This method tests for !=
.
Auto Trait Implementations
impl RefUnwindSafe for TagEncoding
impl Send for TagEncoding
impl Sync for TagEncoding
impl Unpin for TagEncoding
impl UnwindSafe for TagEncoding