[][src]Struct rustc_mir::borrow_check::borrow_set::BorrowSet

pub(crate) struct BorrowSet<'tcx> {
    pub(crate) location_map: FxIndexMap<Location, BorrowData<'tcx>>,
    pub(crate) activation_map: FxHashMap<Location, Vec<BorrowIndex>>,
    pub(crate) local_map: FxHashMap<Local, FxHashSet<BorrowIndex>>,
    pub(crate) locals_state_at_exit: LocalsStateAtExit,
}

Fields

location_map: FxIndexMap<Location, BorrowData<'tcx>>

The fundamental map relating bitvector indexes to the borrows in the MIR. Each borrow is also uniquely identified in the MIR by the Location of the assignment statement in which it appears on the right hand side. Thus the location is the map key, and its position in the map corresponds to BorrowIndex.

activation_map: FxHashMap<Location, Vec<BorrowIndex>>

Locations which activate borrows. NOTE: a given location may activate more than one borrow in the future when more general two-phase borrow support is introduced, but for now we only need to store one borrow index.

local_map: FxHashMap<Local, FxHashSet<BorrowIndex>>

Map from local to all the borrows on that local.

locals_state_at_exit: LocalsStateAtExit

Implementations

impl<'tcx> BorrowSet<'tcx>[src]

pub fn build(
    tcx: TyCtxt<'tcx>,
    body: &Body<'tcx>,
    locals_are_invalidated_at_exit: bool,
    move_data: &MoveData<'tcx>
) -> Self
[src]

pub(crate) fn activations_at_location(
    &self,
    location: Location
) -> &[BorrowIndex]
[src]

pub(crate) fn len(&self) -> usize[src]

pub(crate) fn indices(&self) -> impl Iterator<Item = BorrowIndex>[src]

pub(crate) fn iter_enumerated(
    &self
) -> impl Iterator<Item = (BorrowIndex, &BorrowData<'tcx>)>
[src]

pub(crate) fn get_index_of(&self, location: &Location) -> Option<BorrowIndex>[src]

pub(crate) fn contains(&self, location: &Location) -> bool[src]

Trait Implementations

impl<'tcx> Index<BorrowIndex> for BorrowSet<'tcx>[src]

type Output = BorrowData<'tcx>

The returned type after indexing.

Auto Trait Implementations

impl<'tcx> !RefUnwindSafe for BorrowSet<'tcx>

impl<'tcx> !Send for BorrowSet<'tcx>

impl<'tcx> !Sync for BorrowSet<'tcx>

impl<'tcx> Unpin for BorrowSet<'tcx>

impl<'tcx> !UnwindSafe for BorrowSet<'tcx>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> WithConstness for T[src]