Enum rustc_mir_build::thir::PatKind [−][src]
pub enum PatKind<'tcx> {
Wild,
AscribeUserType {
ascription: Ascription<'tcx>,
subpattern: Pat<'tcx>,
},
Binding {
mutability: Mutability,
name: Symbol,
mode: BindingMode,
var: HirId,
ty: Ty<'tcx>,
subpattern: Option<Pat<'tcx>>,
is_primary: bool,
},
Variant {
adt_def: &'tcx AdtDef,
substs: SubstsRef<'tcx>,
variant_index: VariantIdx,
subpatterns: Vec<FieldPat<'tcx>>,
},
Leaf {
subpatterns: Vec<FieldPat<'tcx>>,
},
Deref {
subpattern: Pat<'tcx>,
},
Constant {
value: &'tcx Const<'tcx>,
},
Range(PatRange<'tcx>),
Slice {
prefix: Vec<Pat<'tcx>>,
slice: Option<Pat<'tcx>>,
suffix: Vec<Pat<'tcx>>,
},
Array {
prefix: Vec<Pat<'tcx>>,
slice: Option<Pat<'tcx>>,
suffix: Vec<Pat<'tcx>>,
},
Or {
pats: Vec<Pat<'tcx>>,
},
}Variants
Show fields
Fields of AscribeUserType
ascription: Ascription<'tcx>subpattern: Pat<'tcx>Expand description
x, ref x, x @ P, etc.
Show fields
Fields of Binding
mutability: Mutabilityname: Symbolmode: BindingModevar: HirIdty: Ty<'tcx>subpattern: Option<Pat<'tcx>>is_primary: boolExpand description
Is this the leftmost occurrence of the binding, i.e., is var the
HirId of this pattern?
Expand description
Foo(...) or Foo{...} or Foo, where Foo is a variant name from an ADT with
multiple variants.
Show fields
Fields of Variant
adt_def: &'tcx AdtDefsubsts: SubstsRef<'tcx>variant_index: VariantIdxsubpatterns: Vec<FieldPat<'tcx>>Expand description
(...), Foo(...), Foo{...}, or Foo, where Foo is a variant name from an ADT with
a single variant.
Expand description
box P, &P, &mut P, etc.
Show fields
Fields of Deref
subpattern: Pat<'tcx>Expand description
One of the following:
&str, which will be handled as a string pattern and thus exhaustiveness checking will detect if you use the same string twice in different patterns.- integer, bool, char or float, which will be handled by exhaustivenes to cover exactly
its own value, similar to
&str, but these values are much simpler. - Opaque constants, that must not be matched structurally. So anything that does not derive
PartialEqandEq.
Show fields
Fields of Constant
value: &'tcx Const<'tcx>Range(PatRange<'tcx>)Expand description
Matches against a slice, checking the length and extracting elements.
irrefutable when there is a slice pattern and both prefix and suffix are empty.
e.g., &[ref xs @ ..].
Expand description
Fixed match against an array; irrefutable.
Expand description
An or-pattern, e.g. p | q.
Invariant: pats.len() >= 2.
Trait Implementations
impl<'tcx> PatternFoldable<'tcx> for PatKind<'tcx>[src]
impl<'tcx> PatternFoldable<'tcx> for PatKind<'tcx>[src]fn fold_with<F: PatternFolder<'tcx>>(&self, folder: &mut F) -> Self[src]
fn super_fold_with<F: PatternFolder<'tcx>>(&self, folder: &mut F) -> Self[src]
impl<'tcx> StructuralPartialEq for PatKind<'tcx>[src]
Auto Trait Implementations
impl<'tcx> !RefUnwindSafe for PatKind<'tcx>
impl<'tcx> !Send for PatKind<'tcx>
impl<'tcx> !Sync for PatKind<'tcx>
impl<'tcx> Unpin for PatKind<'tcx>
impl<'tcx> !UnwindSafe for PatKind<'tcx>
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]pub fn borrow_mut(&mut self) -> &mut T[src]
pub fn borrow_mut(&mut self) -> &mut T[src]Mutably borrows from an owned value. Read more
impl<T> ToOwned for T where
T: Clone, [src]
impl<T> ToOwned for T where
T: Clone, [src]type Owned = T
type Owned = TThe resulting type after obtaining ownership.
pub fn to_owned(&self) -> T[src]
pub fn to_owned(&self) -> T[src]Creates owned data from borrowed data, usually by cloning. Read more
pub fn clone_into(&self, target: &mut T)[src]
pub fn clone_into(&self, target: &mut T)[src]🔬 This is a nightly-only experimental API. (toowned_clone_into)
recently added
Uses borrowed data to replace owned data, usually by cloning. Read more
impl<'a, T> Captures<'a> for T where
T: ?Sized, [src]
T: ?Sized,