[][src]Struct rustc_mir::borrow_check::type_check::MirTypeckRegionConstraints

pub(crate) struct MirTypeckRegionConstraints<'tcx> {
    pub(crate) placeholder_indices: PlaceholderIndices,
    pub(crate) placeholder_index_to_region: IndexVec<PlaceholderIndex, Region<'tcx>>,
    pub(crate) liveness_constraints: LivenessValues<RegionVid>,
    pub(crate) outlives_constraints: OutlivesConstraintSet,
    pub(crate) member_constraints: MemberConstraintSet<'tcx, RegionVid>,
    pub(crate) closure_bounds_mapping: FxHashMap<Location, FxHashMap<(RegionVid, RegionVid), (ConstraintCategory, Span)>>,
    pub(crate) type_tests: Vec<TypeTest<'tcx>>,
}

A collection of region constraints that must be satisfied for the program to be considered well-typed.

Fields

placeholder_indices: PlaceholderIndices

Maps from a ty::Placeholder to the corresponding PlaceholderIndex bit that we will use for it.

To keep everything in sync, do not insert this set directly. Instead, use the placeholder_region helper.

placeholder_index_to_region: IndexVec<PlaceholderIndex, Region<'tcx>>

Each time we add a placeholder to placeholder_indices, we also create a corresponding "representative" region vid for that wraps it. This vector tracks those. This way, when we convert the same ty::RePlaceholder(p) twice, we can map to the same underlying RegionVid.

liveness_constraints: LivenessValues<RegionVid>

In general, the type-checker is not responsible for enforcing liveness constraints; this job falls to the region inferencer, which performs a liveness analysis. However, in some limited cases, the MIR type-checker creates temporary regions that do not otherwise appear in the MIR -- in particular, the late-bound regions that it instantiates at call-sites -- and hence it must report on their liveness constraints.

outlives_constraints: OutlivesConstraintSetmember_constraints: MemberConstraintSet<'tcx, RegionVid>closure_bounds_mapping: FxHashMap<Location, FxHashMap<(RegionVid, RegionVid), (ConstraintCategory, Span)>>type_tests: Vec<TypeTest<'tcx>>

Implementations

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

fn placeholder_region(
    &mut self,
    infcx: &InferCtxt<'_, 'tcx>,
    placeholder: PlaceholderRegion
) -> Region<'tcx>
[src]

Auto Trait Implementations

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

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

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

impl<'tcx> Unpin for MirTypeckRegionConstraints<'tcx>

impl<'tcx> !UnwindSafe for MirTypeckRegionConstraints<'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]