Struct rustc_mir::borrow_check::places_conflict::PlaceComponents [−][src]
struct PlaceComponents<'p, 'tcx: 'p> { component: &'p Place<'tcx>, next: Option<&'p PlaceComponents<'p, 'tcx>>, }
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
A linked list of places running up the stack; begins with the
innermost place and extends to projections (e.g., a.b
would have
the place a
with a "next" pointer to a.b
). Created by
unroll_place
.
NB: This particular impl strategy is not the most obvious. It was
chosen because it makes a measurable difference to NLL
performance, as this code (places_conflict
) is somewhat hot.
Fields
component: &'p Place<'tcx>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
next: Option<&'p PlaceComponents<'p, 'tcx>>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Methods
impl<'p, 'tcx> PlaceComponents<'p, 'tcx>
[src]
impl<'p, 'tcx> PlaceComponents<'p, 'tcx>
fn iter(&self) -> PlaceComponentsIter<'_, 'tcx>
[src]
fn iter(&self) -> PlaceComponentsIter<'_, 'tcx>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Converts a list of Place
components into an iterator; this
iterator yields up a never-ending stream of Option<&Place>
.
These begin with the "innermst" place and then with each
projection therefrom. So given a place like a.b.c
it would
yield up:
Some(`a`), Some(`a.b`), Some(`a.b.c`), None, None, ...
Auto Trait Implementations
impl<'p, 'tcx> !Send for PlaceComponents<'p, 'tcx>
impl<'p, 'tcx> !Send for PlaceComponents<'p, 'tcx>
impl<'p, 'tcx> !Sync for PlaceComponents<'p, 'tcx>
impl<'p, 'tcx> !Sync for PlaceComponents<'p, 'tcx>