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

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>>
Expand description

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>>
Expand description

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>>
Expand description

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.

fn index(&self, index: BorrowIndex) -> &BorrowData<'tcx>[src]

Performs the indexing (container[index]) operation. Read more

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]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

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

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

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

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

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

pub fn from(t: T) -> T[src]

Performs the conversion.

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

pub fn into(self) -> U[src]

Performs the conversion.

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.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

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.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.

impl<T> WithConstness for T[src]

fn with_constness(self, constness: Constness) -> ConstnessAnd<Self>[src]

fn with_const(self) -> ConstnessAnd<Self>[src]

fn without_const(self) -> ConstnessAnd<Self>[src]