Struct rustc_mir_build::build::expr::as_place::PlaceBuilder [−][src]
Expand description
PlaceBuilder
is used to create places during MIR construction. It allows you to “build up” a
place by pushing more and more projections onto the end, and then convert the final set into a
place using the into_place
method.
This is used internally when building a place for an expression like a.b.c
. The fields b
and c
can be progressively pushed onto the place builder that is created when converting a
.
Fields
base: PlaceBase
projection: Vec<PlaceElem<'tcx>>
Implementations
pub(crate) fn into_place<'a>(
self,
tcx: TyCtxt<'tcx>,
typeck_results: &'a TypeckResults<'tcx>
) -> Place<'tcx>
fn expect_upvars_resolved<'a>(
self,
tcx: TyCtxt<'tcx>,
typeck_results: &'a TypeckResults<'tcx>
) -> PlaceBuilder<'tcx>
pub(crate) fn try_upvars_resolved<'a>(
self,
tcx: TyCtxt<'tcx>,
typeck_results: &'a TypeckResults<'tcx>
) -> Result<PlaceBuilder<'tcx>, PlaceBuilder<'tcx>>
pub(crate) fn try_upvars_resolved<'a>(
self,
tcx: TyCtxt<'tcx>,
typeck_results: &'a TypeckResults<'tcx>
) -> Result<PlaceBuilder<'tcx>, PlaceBuilder<'tcx>>
Attempts to resolve the PlaceBuilder
.
On success, it will return the resolved PlaceBuilder
.
On failure, it will return itself.
Upvars resolve may fail for a PlaceBuilder
when attempting to
resolve a disjoint field whose root variable is not captured
(destructured assignments) or when attempting to resolve a root
variable (discriminant matching with only wildcard arm) that is
not captured. This can happen because the final mir that will be
generated doesn’t require a read for this place. Failures will only
happen inside closures.
Trait Implementations
This method tests for self
and other
values to be equal, and is used
by ==
. Read more
This method tests for !=
.
Auto Trait Implementations
impl<'tcx> !RefUnwindSafe for PlaceBuilder<'tcx>
impl<'tcx> !Send for PlaceBuilder<'tcx>
impl<'tcx> !Sync for PlaceBuilder<'tcx>
impl<'tcx> Unpin for PlaceBuilder<'tcx>
impl<'tcx> !UnwindSafe for PlaceBuilder<'tcx>
Blanket Implementations
Mutably borrows from an owned value. Read more
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: 48 bytes