pub enum Variants<V: Idx> {
Single {
index: V,
},
Multiple {
tag: Scalar,
tag_encoding: TagEncoding<V>,
tag_field: usize,
variants: IndexVec<V, LayoutS<V>>,
},
}
Variants§
Single
Fields
§
index: V
Single enum variants, structs/tuples, unions, and all non-ADTs.
Multiple
Enum-likes with more than one inhabited variant: each variant comes with a discriminant (usually the same as the variant index but the user can assign explicit discriminant values). That discriminant is encoded as a tag on the machine. The layout of each variant is a struct, and they all have space reserved for the tag. For enums, the tag is the sole field of the layout.
Trait Implementations§
source§impl<V, __CTX> HashStable<__CTX> for Variants<V>where
__CTX: HashStableContext,
V: HashStable<__CTX> + Idx,
impl<V, __CTX> HashStable<__CTX> for Variants<V>where
__CTX: HashStableContext,
V: HashStable<__CTX> + Idx,
fn hash_stable(&self, __hcx: &mut __CTX, __hasher: &mut StableHasher)
source§impl<V: PartialEq + Idx> PartialEq<Variants<V>> for Variants<V>
impl<V: PartialEq + Idx> PartialEq<Variants<V>> for Variants<V>
impl<V: Eq + Idx> Eq for Variants<V>
impl<V: Idx> StructuralEq for Variants<V>
impl<V: Idx> StructuralPartialEq for Variants<V>
Auto Trait Implementations§
impl<V> RefUnwindSafe for Variants<V>where
V: RefUnwindSafe,
impl<V> Send for Variants<V>where
V: Send,
impl<V> Sync for Variants<V>where
V: Sync,
impl<V> Unpin for Variants<V>where
V: Unpin,
impl<V> UnwindSafe for Variants<V>where
V: UnwindSafe,
Blanket Implementations§
Layout§
Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.