Struct rustc_mir_build::build::matches::MatchPair
source · pub(crate) struct MatchPair<'pat, 'tcx> {
place: Option<Place<'tcx>>,
test_case: TestCase<'pat, 'tcx>,
subpairs: Vec<Self>,
pattern: &'pat Pat<'tcx>,
}Expand description
Node in a tree of “match pairs”, where each pair consists of a place to be tested, and a test to perform on that place.
Each node also has a list of subpairs (possibly empty) that must also match, and a reference to the THIR pattern it represents.
Fields§
§place: Option<Place<'tcx>>This place…
This can be None if it referred to a non-captured place in a closure.
Invariant: Can only be None when test_case is Irrefutable.
Therefore this must be Some(_) after simplification.
test_case: TestCase<'pat, 'tcx>… must pass this test…
Invariant: after creation and simplification in FlatPat::new,
this must not be TestCase::Irrefutable.
subpairs: Vec<Self>… and these subpairs must match.
pattern: &'pat Pat<'tcx>The pattern this was created from.
Implementations§
Trait Implementations§
Auto Trait Implementations§
impl<'pat, 'tcx> DynSend for MatchPair<'pat, 'tcx>
impl<'pat, 'tcx> DynSync for MatchPair<'pat, 'tcx>
impl<'pat, 'tcx> Freeze for MatchPair<'pat, 'tcx>
impl<'pat, 'tcx> !RefUnwindSafe for MatchPair<'pat, 'tcx>
impl<'pat, 'tcx> Send for MatchPair<'pat, 'tcx>
impl<'pat, 'tcx> Sync for MatchPair<'pat, 'tcx>
impl<'pat, 'tcx> Unpin for MatchPair<'pat, 'tcx>
impl<'pat, 'tcx> !UnwindSafe for MatchPair<'pat, 'tcx>
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,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit)source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
source§impl<T> Filterable for T
impl<T> Filterable for T
source§fn filterable(
self,
filter_name: &'static str,
) -> RequestFilterDataProvider<T, fn(_: DataRequest<'_>) -> bool>
fn filterable( self, filter_name: &'static str, ) -> RequestFilterDataProvider<T, fn(_: DataRequest<'_>) -> bool>
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moresource§impl<P> IntoQueryParam<P> for P
impl<P> IntoQueryParam<P> for P
fn into_query_param(self) -> P
source§impl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
source§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
source§impl<I, T> UpcastFrom<I, T> for T
impl<I, T> UpcastFrom<I, T> for T
fn upcast_from(from: T, _tcx: I) -> T
source§impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
default fn from_cycle_error( tcx: Tcx, cycle_error: &CycleError, _guar: ErrorGuaranteed, ) -> T
source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<'a, T> Captures<'a> for Twhere
T: ?Sized,
impl<'a, T> Captures<'a> for Twhere
T: ?Sized,
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<T> MaybeSendSync for T
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 136 bytes