#[repr(u32)]pub enum PatternKind {
Wildcard = 0,
Int = 1,
Bool = 2,
Path = 3,
DataVariant = 4,
StructVariant = 5,
Ident = 6,
Tuple = 7,
Struct = 8,
ComptimeUnrollArm = 9,
}Expand description
Stored representation of match arm in the extra array. Layout: pattern data + [body: u32] Pattern data varies by kind (see PatternKind enum). Pattern kinds encoded in extra array
Variants§
Wildcard = 0
Wildcard pattern: [kind, span_start, span_len]
Int = 1
Int pattern: [kind, span_start, span_len, value_lo, value_hi]
Bool = 2
Bool pattern: [kind, span_start, span_len, value]
Path = 3
Path pattern: [kind, span_start, span_len, module, type_name, variant] module is u32::MAX for None, otherwise an InstRef
DataVariant = 4
Data variant pattern: [kind, span_start, span_len, module, type_name, variant, body, bindings_len, (flags, name)…] Each binding is 2 u32s: flags (bit0=is_wildcard, bit1=is_mut), name (Spur, u32::MAX if wildcard)
StructVariant = 5
Struct variant pattern: [kind, span_start, span_len, module, type_name, variant, body, bindings_len, (field_name, flags, binding_name)…] Each field binding is 3 u32s: field_name (Spur), flags (bit0=is_wildcard, bit1=is_mut), binding_name (Spur, u32::MAX if wildcard)
Ident = 6
ADR-0051 Ident pattern: [kind, span_start, span_len, body, name, flags] flags bit 0 = is_mut.
Tuple = 7
ADR-0051 Tuple pattern: [kind, span_start, span_len, body, elems_len, …recursive_tree per elem]
Struct = 8
ADR-0051 Struct pattern: [kind, span_start, span_len, body, module_raw, type_name, has_rest, fields_len, (field_name, …recursive_tree) * fields_len]
ComptimeUnrollArm = 9
ADR-0079 Phase 3 unroll arm template: [kind, span_start, span_len, body, binding, iterable]
Trait Implementations§
Source§impl Clone for PatternKind
impl Clone for PatternKind
Source§fn clone(&self) -> PatternKind
fn clone(&self) -> PatternKind
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for PatternKind
impl Debug for PatternKind
Source§impl<'de> Deserialize<'de> for PatternKind
impl<'de> Deserialize<'de> for PatternKind
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for PatternKind
impl PartialEq for PatternKind
Source§impl Serialize for PatternKind
impl Serialize for PatternKind
impl Copy for PatternKind
impl Eq for PatternKind
impl StructuralPartialEq for PatternKind
Auto Trait Implementations§
impl Freeze for PatternKind
impl RefUnwindSafe for PatternKind
impl Send for PatternKind
impl Sync for PatternKind
impl Unpin for PatternKind
impl UnsafeUnpin for PatternKind
impl UnwindSafe for PatternKind
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<'src, T> IntoMaybe<'src, T> for Twhere
T: 'src,
impl<'src, T> IntoMaybe<'src, T> for Twhere
T: 'src,
§impl<'p, T> Seq<'p, T> for Twhere
T: Clone,
impl<'p, T> Seq<'p, T> for Twhere
T: Clone,
§type Iter<'a> = Once<&'a T>
where
T: 'a
type Iter<'a> = Once<&'a T> where T: 'a
§fn contains(&self, val: &T) -> boolwhere
T: PartialEq,
fn contains(&self, val: &T) -> boolwhere
T: PartialEq,
§fn to_maybe_ref<'b>(item: <T as Seq<'p, T>>::Item<'b>) -> Maybe<T, &'p T>where
'p: 'b,
fn to_maybe_ref<'b>(item: <T as Seq<'p, T>>::Item<'b>) -> Maybe<T, &'p T>where
'p: 'b,
MaybeRef].