pub(crate) struct PromoteTemps<'tcx> {
pub promoted_fragments: Cell<IndexVec<Promoted, Body<'tcx>>>,
}Expand description
A MirPass for promotion.
Promotion is the extraction of promotable temps into separate MIR bodies so they can have
'static lifetime.
After this pass is run, promoted_fragments will hold the MIR body corresponding to each
newly created Constant.
Fields§
§promoted_fragments: Cell<IndexVec<Promoted, Body<'tcx>>>Trait Implementations§
Source§impl<'tcx> Default for PromoteTemps<'tcx>
impl<'tcx> Default for PromoteTemps<'tcx>
Source§fn default() -> PromoteTemps<'tcx>
fn default() -> PromoteTemps<'tcx>
Returns the “default value” for a type. Read more
Source§impl<'tcx> MirPass<'tcx> for PromoteTemps<'tcx>
impl<'tcx> MirPass<'tcx> for PromoteTemps<'tcx>
fn run_pass(&self, tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>)
Source§fn policy(&self, _sess: &Session) -> PassPolicy
fn policy(&self, _sess: &Session) -> PassPolicy
Describes how this pass is enabled and which mechanisms may disable it.
fn name(&self) -> &'static str
fn profiler_name(&self) -> &'static str
fn is_mir_dump_enabled(&self) -> bool
Auto Trait Implementations§
impl<'tcx> !DynSync for PromoteTemps<'tcx>
impl<'tcx> !Freeze for PromoteTemps<'tcx>
impl<'tcx> !RefUnwindSafe for PromoteTemps<'tcx>
impl<'tcx> !Sync for PromoteTemps<'tcx>
impl<'tcx> !UnwindSafe for PromoteTemps<'tcx>
impl<'tcx> DynSend for PromoteTemps<'tcx>
impl<'tcx> Send for PromoteTemps<'tcx>
impl<'tcx> Unpin for PromoteTemps<'tcx>
impl<'tcx> UnsafeUnpin for PromoteTemps<'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
Mutably borrows from an owned value. Read more
Source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
impl<T> ErasedDestructor for Twhere
T: 'static,
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> ⓘ
Converts
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> ⓘ
Converts
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<K> IntoQueryKey<K> for K
impl<K> IntoQueryKey<K> for K
Source§fn into_query_key(self) -> K
fn into_query_key(self) -> K
Argument conversion from
Self to K.
This should always be a very cheap conversion, e.g. LocalDefId::to_def_id.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<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> ⓘ
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