Enum rustc_hir::PatKind [−][src]
pub enum PatKind<'hir> {
Wild,
Binding(BindingAnnotation, HirId, Ident, Option<&'hir Pat<'hir>>),
Struct(QPath<'hir>, &'hir [PatField<'hir>], bool),
TupleStruct(QPath<'hir>, &'hir [&'hir Pat<'hir>], Option<usize>),
Or(&'hir [&'hir Pat<'hir>]),
Path(QPath<'hir>),
Tuple(&'hir [&'hir Pat<'hir>], Option<usize>),
Box(&'hir Pat<'hir>),
Ref(&'hir Pat<'hir>, Mutability),
Lit(&'hir Expr<'hir>),
Range(Option<&'hir Expr<'hir>>, Option<&'hir Expr<'hir>>, RangeEnd),
Slice(&'hir [&'hir Pat<'hir>], Option<&'hir Pat<'hir>>, &'hir [&'hir Pat<'hir>]),
}Variants
Expand description
Represents a wildcard pattern (i.e., _).
Binding(BindingAnnotation, HirId, Ident, Option<&'hir Pat<'hir>>)Expand description
A fresh binding ref mut binding @ OPT_SUBPATTERN.
The HirId is the canonical ID for the variable being bound,
(e.g., in Ok(x) | Err(x), both x use the same canonical ID),
which is the pattern ID of the first x.
Expand description
A struct or struct variant pattern (e.g., Variant {x, y, ..}).
The bool is true in the presence of a ...
Expand description
A tuple struct/variant pattern Variant(x, y, .., z).
If the .. pattern fragment is present, then Option<usize> denotes its position.
0 <= position <= subpats.len()
Expand description
An or-pattern A | B | C.
Invariant: pats.len() >= 2.
Path(QPath<'hir>)Expand description
A path pattern for an unit struct/variant or a (maybe-associated) constant.
Expand description
A tuple pattern (e.g., (a, b)).
If the .. pattern fragment is present, then Option<usize> denotes its position.
0 <= position <= subpats.len()
Box(&'hir Pat<'hir>)Expand description
A box pattern.
Ref(&'hir Pat<'hir>, Mutability)Expand description
A reference pattern (e.g., &mut (a, b)).
Lit(&'hir Expr<'hir>)Expand description
A literal.
Expand description
A range pattern (e.g., 1..=2 or 1..2).
Expand description
A slice pattern, [before_0, ..., before_n, (slice, after_0, ..., after_n)?].
Here, slice is lowered from the syntax ($binding_mode $ident @)? ...
If slice exists, then after can be non-empty.
The representation for e.g., [a, b, .., c, d] is:
PatKind::Slice([Binding(a), Binding(b)], Some(Wild), [Binding(c), Binding(d)])
Trait Implementations
impl<'hir, __CTX> HashStable<__CTX> for PatKind<'hir> where
__CTX: HashStableContext, [src]
impl<'hir, __CTX> HashStable<__CTX> for PatKind<'hir> where
__CTX: HashStableContext, [src]