Struct rustc_mir_build::build::matches::MatchTreeSubBranch
source · struct MatchTreeSubBranch<'tcx> {
span: Span,
success_block: BasicBlock,
otherwise_block: BasicBlock,
bindings: Vec<Binding<'tcx>>,
ascriptions: Vec<Ascription<'tcx>>,
is_never: bool,
}
Expand description
A sub-branch in the output of match lowering. Match lowering has generated MIR code that will
branch to success_block
when the matched value matches the corresponding pattern. If there is
a guard, its failure must continue to otherwise_block
, which will resume testing patterns.
Fields§
§span: Span
§success_block: BasicBlock
The block that is branched to if the corresponding subpattern matches.
otherwise_block: BasicBlock
The block to branch to if this arm had a guard and the guard fails.
bindings: Vec<Binding<'tcx>>
The bindings to set up in this sub-branch.
ascriptions: Vec<Ascription<'tcx>>
The ascriptions to set up in this sub-branch.
is_never: bool
Whether the sub-branch corresponds to a never pattern.
Implementations§
source§impl<'tcx> MatchTreeSubBranch<'tcx>
impl<'tcx> MatchTreeSubBranch<'tcx>
fn from_sub_candidate( candidate: Candidate<'_, 'tcx>, parent_data: &Vec<PatternExtraData<'tcx>>, ) -> Self
Trait Implementations§
Auto Trait Implementations§
impl<'tcx> Freeze for MatchTreeSubBranch<'tcx>
impl<'tcx> !RefUnwindSafe for MatchTreeSubBranch<'tcx>
impl<'tcx> !Send for MatchTreeSubBranch<'tcx>
impl<'tcx> !Sync for MatchTreeSubBranch<'tcx>
impl<'tcx> Unpin for MatchTreeSubBranch<'tcx>
impl<'tcx> !UnwindSafe for MatchTreeSubBranch<'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, 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<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: 72 bytes