[][src]Struct rustc_mir::borrow_check::nll::universal_regions::UniversalRegions

pub struct UniversalRegions<'tcx> {
    indices: UniversalRegionIndices<'tcx>,
    pub fr_static: RegionVid,
    pub fr_fn_body: RegionVid,
    first_extern_index: usize,
    first_local_index: usize,
    num_universals: usize,
    pub defining_ty: DefiningTy<'tcx>,
    pub unnormalized_output_ty: Ty<'tcx>,
    pub unnormalized_input_tys: &'tcx [Ty<'tcx>],
    pub yield_ty: Option<Ty<'tcx>>,
}
⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Fields

indices: UniversalRegionIndices<'tcx>
⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

fr_static: RegionVid
⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

The vid assigned to 'static

fr_fn_body: RegionVid
⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

A special region vid created to represent the current MIR fn body. It will outlive the entire CFG but it will not outlive any other universal regions.

first_extern_index: usize
⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

We create region variables such that they are ordered by their RegionClassification. The first block are globals, then externals, then locals. So, things from:

first_local_index: usize
⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

See first_extern_index.

num_universals: usize
⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

The total number of universal region variables instantiated.

defining_ty: DefiningTy<'tcx>
⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

The "defining" type for this function, with all universal regions instantiated. For a closure or generator, this is the closure type, but for a top-level function it's the FnDef.

unnormalized_output_ty: Ty<'tcx>
⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

The return type of this function, with all regions replaced by their universal RegionVid equivalents.

N.B., associated types in this type have not been normalized, as the name suggests. =)

unnormalized_input_tys: &'tcx [Ty<'tcx>]
⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

The fully liberated input types of this function, with all regions replaced by their universal RegionVid equivalents.

N.B., associated types in these types have not been normalized, as the name suggests. =)

yield_ty: Option<Ty<'tcx>>
⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Methods

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

pub fn new(
    infcx: &InferCtxt<'_, 'tcx>,
    mir_def_id: DefId,
    param_env: ParamEnv<'tcx>
) -> Self
[src]

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Creates a new and fully initialized UniversalRegions that contains indices for all the free regions found in the given MIR -- that is, all the regions that appear in the function's signature. This will also compute the relationships that are known between those regions.

pub fn closure_mapping(
    tcx: TyCtxt<'tcx>,
    closure_substs: SubstsRef<'tcx>,
    expected_num_vars: usize,
    closure_base_def_id: DefId
) -> IndexVec<RegionVid, Region<'tcx>>
[src]

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Given a reference to a closure type, extracts all the values from its free regions and returns a vector with them. This is used when the closure's creator checks that the ClosureRegionRequirements are met. The requirements from ClosureRegionRequirements are expressed in terms of RegionVid entries that map into the returned vector V: so if the ClosureRegionRequirements contains something like '1: '2, then the caller would impose the constraint that V[1]: V[2].

pub fn is_universal_region(&self, r: RegionVid) -> bool[src]

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Returns true if r is a member of this set of universal regions.

pub fn region_classification(
    &self,
    r: RegionVid
) -> Option<RegionClassification>
[src]

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Classifies r as a universal region, returning None if this is not a member of this set of universal regions.

pub fn universal_regions(&self) -> impl Iterator<Item = RegionVid>[src]

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Returns an iterator over all the RegionVids corresponding to universally quantified free regions.

pub fn is_local_free_region(&self, r: RegionVid) -> bool[src]

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Returns true if r is classified as an local region.

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

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Returns the number of universal regions created in any category.

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

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Returns the number of global plus external universal regions. For closures, these are the regions that appear free in the closure type (versus those bound in the closure signature). They are therefore the regions between which the closure may impose constraints that its creator must verify.

pub fn named_universal_regions<'s>(
    &'s self
) -> impl Iterator<Item = (Region<'tcx>, RegionVid)> + 's
[src]

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Gets an iterator over all the early-bound regions that have names.

pub fn to_region_vid(&self, r: Region<'tcx>) -> RegionVid[src]

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

See UniversalRegionIndices::to_region_vid.

pub(crate) fn annotate(&self, tcx: TyCtxt<'tcx>, err: &mut DiagnosticBuilder)[src]

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

As part of the NLL unit tests, you can annotate a function with #[rustc_regions], and we will emit information about the region inference context and -- in particular -- the external constraints that this region imposes on others. The methods in this file handle the part about dumping the inference context internal state.

Trait Implementations

impl<'tcx> Debug for UniversalRegions<'tcx>[src]

Auto Trait Implementations

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

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

impl<'tcx> Unpin for UniversalRegions<'tcx>

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

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

Blanket Implementations

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

impl<T> From<T> for 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> Borrow<T> for T where
    T: ?Sized
[src]

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

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

impl<E> SpecializationError for E[src]

impl<T> Erased for T[src]

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

type Error = !

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

impl<'a, T> Captures<'a> for T where
    T: ?Sized
[src]