Struct rustc_mir_build::build::BlockContext
source · struct BlockContext(Vec<BlockFrame>);
Tuple Fields§
§0: Vec<BlockFrame>
Implementations§
source§impl BlockContext
impl BlockContext
fn new() -> Self
fn push(&mut self, bf: BlockFrame)
fn pop(&mut self) -> Option<BlockFrame>
sourcefn currently_in_block_tail(&self) -> Option<BlockTailInfo>
fn currently_in_block_tail(&self) -> Option<BlockTailInfo>
Traverses the frames on the BlockContext
, searching for either
the first block-tail expression frame with no intervening
statement frame.
Notably, this skips over SubExpr
frames; this method is
meant to be used in the context of understanding the
relationship of a temp (created within some complicated
expression) with its containing expression, and whether the
value of that containing expression (not the temp!) is
ignored.
sourcefn currently_ignores_tail_results(&self) -> bool
fn currently_ignores_tail_results(&self) -> bool
Looks at the topmost frame on the BlockContext and reports whether its one that would discard a block tail result.
Unlike currently_within_ignored_tail_expression
, this does
not skip over SubExpr
frames: here, we want to know
whether the block result itself is discarded.
Trait Implementations§
Auto Trait Implementations§
impl DynSend for BlockContext
impl DynSync for BlockContext
impl Freeze for BlockContext
impl RefUnwindSafe for BlockContext
impl Send for BlockContext
impl Sync for BlockContext
impl Unpin for BlockContext
impl UnwindSafe for BlockContext
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
§impl<T> Filterable for T
impl<T> Filterable for T
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<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
§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<'tcx, T> ToPredicate<'tcx, T> for T
impl<'tcx, T> ToPredicate<'tcx, T> for T
fn to_predicate(self, _tcx: TyCtxt<'tcx>) -> 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: 24 bytes