[−][src]Enum rustc_hir::hir::PatKind

pub enum PatKind<'hir> {
    Wild,
    Binding(BindingAnnotation, HirId, Ident, Option<&'hir Pat<'hir>>),
    Struct(QPath<'hir>, &'hir [FieldPat<'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

Wild

Represents a wildcard pattern (i.e., _).

Binding(BindingAnnotation, HirId, Ident, Option<&'hir Pat<'hir>>)

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.

Struct(QPath<'hir>, &'hir [FieldPat<'hir>], bool)

A struct or struct variant pattern (e.g., Variant {x, y, ..}). The bool is true in the presence of a ...

TupleStruct(QPath<'hir>, &'hir [&'hir Pat<'hir>], Option<usize>)

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()

Or(&'hir [&'hir Pat<'hir>])

An or-pattern A | B | C. Invariant: pats.len() >= 2.

Path(QPath<'hir>)

A path pattern for an unit struct/variant or a (maybe-associated) constant.

Tuple(&'hir [&'hir Pat<'hir>], Option<usize>)

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>)

A box pattern.

Ref(&'hir Pat<'hir>, Mutability)

A reference pattern (e.g., &mut (a, b)).

Lit(&'hir Expr<'hir>)

A literal.

Range(Option<&'hir Expr<'hir>>, Option<&'hir Expr<'hir>>, RangeEnd)

A range pattern (e.g., 1..=2 or 1..2).

Slice(&'hir [&'hir Pat<'hir>], Option<&'hir Pat<'hir>>, &'hir [&'hir Pat<'hir>])

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> Debug for PatKind<'hir>[src]

impl<'hir, __CTX> HashStable<__CTX> for PatKind<'hir> where
    __CTX: HashStableContext, 
[src]

Auto Trait Implementations

impl<'hir> !RefUnwindSafe for PatKind<'hir>

impl<'hir> !Send for PatKind<'hir>

impl<'hir> !Sync for PatKind<'hir>

impl<'hir> Unpin for PatKind<'hir>

impl<'hir> !UnwindSafe for PatKind<'hir>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized, 
[src]

impl<T> Borrow<T> for T where
    T: ?Sized, 
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized, 
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.