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

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 region_bound_pairs: Vec<(Region<'tcx>, GenericKind<'tcx>)>,
    pub yield_ty: Option<Ty<'tcx>>,
    relations: UniversalRegionRelations,
}
🔬 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?

Fields

🔬 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?

🔬 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?

The vid assigned to 'static

🔬 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 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.

🔬 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?

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

🔬 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?

See first_extern_index.

🔬 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?

The total number of universal region variables instantiated.

🔬 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?

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 TyFnDef.

🔬 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?

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

NB. Associated types in this type have not been normalized, as the name suggests. =)

🔬 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?

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

NB. Associated types in these types have not been normalized, as the name suggests. =)

🔬 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?

Each RBP ('a, GK) indicates that GK: 'a can be assumed to be true. These encode relationships like T: 'a that are added via implicit bounds.

Each region here is guaranteed to be a key in the indices map. We use the "original" regions (i.e., the keys from the map, and not the values) because the code in process_registered_region_obligations has some special-cased logic expecting to see (e.g.) ReStatic, and if we supplied our special inference variable there, we would mess that up.

🔬 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?

🔬 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<'tcx> UniversalRegions<'tcx>
[src]

🔬 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?

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.

🔬 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?

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].

🔬 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?

True if r is a member of this set of universal regions.

🔬 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?

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

🔬 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?

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

🔬 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?

True if r is classified as an local region.

🔬 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?

Returns the number of universal regions created in any category.

🔬 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?

Given two universal regions, returns the postdominating upper-bound (effectively the least upper bound).

(See TransitiveRelation::postdom_upper_bound for details on the postdominating upper bound in general.)

🔬 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?

Finds an "upper bound" for fr that is not local. In other words, returns the smallest (*) known region fr1 that (a) outlives fr and (b) is not local. This cannot fail, because we will always find 'static at worst.

(*) If there are multiple competing choices, we pick the "postdominating" one. See TransitiveRelation::postdom_upper_bound for details.

🔬 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?

Finds a "lower bound" for fr that is not local. In other words, returns the largest (*) known region fr1 that (a) is outlived by fr and (b) is not local. This cannot fail, because we will always find 'static at worst.

(*) If there are multiple competing choices, we pick the "postdominating" one. See TransitiveRelation::postdom_upper_bound for details.

🔬 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?

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.

🔬 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?

Helper for non_local_upper_bound and non_local_lower_bound. Repeatedly invokes postdom_parent until we find something that is not local. Returns None if we never do so.

🔬 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?

True if fr1 is known to outlive fr2.

This will only ever be true for universally quantified regions.

Important traits for Vec<u8>

🔬 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?

Returns a vector of free regions x such that fr1: x is known to hold.

🔬 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?

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

🔬 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?

See UniversalRegionIndices::to_region_vid.

Trait Implementations

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

Formats the value using the given formatter. Read more

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

This trait is used by the impl-trait constraint code to abstract over the FreeRegionMap from lexical regions and UniversalRegions (from NLL)`.

🔬 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?

Tests whether r_a <= r_b. Both must be free regions or 'static. Read more

Auto Trait Implementations

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

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