Enum rustc_typeck::hir::PatKind [] [src]

pub enum PatKind {
    Wild,
    Ident(BindingModeSpanned<Name>, Option<P<Pat>>),
    Struct(PathP<[Spanned<FieldPat>]>, bool),
    TupleStruct(PathOption<P<[P<Pat>]>>),
    Path(Path),
    QPath(QSelfPath),
    Tup(P<[P<Pat>]>),
    Box(P<Pat>),
    Ref(P<Pat>, Mutability),
    Lit(P<Expr>),
    Range(P<Expr>, P<Expr>),
    Vec(P<[P<Pat>]>, Option<P<Pat>>, P<[P<Pat>]>),
}
Unstable (rustc_private)

Variants

Wild
Unstable (rustc_private)

Represents a wildcard pattern (_)

Ident(BindingModeSpanned<Name>, Option<P<Pat>>)
Unstable (rustc_private)

A PatKind::Ident may either be a new bound variable, or a unit struct/variant pattern, or a const pattern (in the last two cases the third field must be None).

In the unit or const pattern case, the parser can't determine which it is. The resolver determines this, and records this pattern's NodeId in an auxiliary set (of "PatIdents that refer to unit patterns or constants").

Struct(PathP<[Spanned<FieldPat>]>, bool)
Unstable (rustc_private)

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

TupleStruct(PathOption<P<[P<Pat>]>>)
Unstable (rustc_private)

A tuple struct/variant pattern Variant(x, y, z). "None" means a Variant(..) pattern where we don't bind the fields to names.

Path(Path)
Unstable (rustc_private)

A path pattern. Such pattern can be resolved to a unit struct/variant or a constant.

QPath(QSelfPath)
Unstable (rustc_private)

An associated const named using the qualified path <T>::CONST or <T as Trait>::CONST. Associated consts from inherent impls can be referred to as simply T::CONST, in which case they will end up as PatKind::Path, and the resolver will have to sort that out.

Tup(P<[P<Pat>]>)
Unstable (rustc_private)

A tuple pattern (a, b)

Box(P<Pat>)
Unstable (rustc_private)

A box pattern

Ref(P<Pat>, Mutability)
Unstable (rustc_private)

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

Lit(P<Expr>)
Unstable (rustc_private)

A literal

Range(P<Expr>, P<Expr>)
Unstable (rustc_private)

A range pattern, e.g. 1...2

Vec(P<[P<Pat>]>, Option<P<Pat>>, P<[P<Pat>]>)
Unstable (rustc_private)

[a, b, ..i, y, z] is represented as: PatKind::Vec(box [a, b], Some(i), box [y, z])

Trait Implementations

Derived Implementations

impl Debug for PatKind

fn fmt(&self, __arg_0: &mut Formatter) -> Result<()Error>

Formats the value using the given formatter.

impl Hash for PatKind

fn hash<__H>(&self, __arg_0: &mut __H) where __H: Hasher

Feeds this value into the state given, updating the hasher as necessary.

fn hash_slice<H>(data: &[Self], state: &mut H) where H: Hasher
1.3.0

Feeds a slice of this type into the state provided.

impl Decodable for PatKind

fn decode<__D>(__arg_0: &mut __D) -> Result<PatKind, __D::Error> where __D: Decoder

impl Encodable for PatKind

fn encode<__S>(&self, __arg_0: &mut __S) -> Result<(), __S::Error> where __S: Encoder

impl Eq for PatKind

impl PartialEq<PatKind> for PatKind

fn eq(&self, __arg_0: &PatKind) -> bool

This method tests for self and other values to be equal, and is used by ==. Read more

fn ne(&self, __arg_0: &PatKind) -> bool

This method tests for !=.

impl Clone for PatKind

fn clone(&self) -> PatKind

Returns a copy of the value. Read more

fn clone_from(&mut self, source: &Self)
1.0.0

Performs copy-assignment from source. Read more