Struct rustc::infer::region_inference::RegionVarBindings [] [src]

pub struct RegionVarBindings<'a, 'gcx: 'a + 'tcx, 'tcx: 'a> { /* fields omitted */ }
🔬 This is a nightly-only experimental API. (rustc_private)

Methods

impl<'a, 'gcx, 'tcx> RegionVarBindings<'a, 'gcx, 'tcx>
[src]

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

Creates a new skolemized region. Skolemized regions are fresh regions used when performing higher-ranked computations. They must be used in a very particular way and are never supposed to "escape" out into error messages or the code at large.

The idea is to always create a snapshot. Skolemized regions can be created in the context of this snapshot, but before the snapshot is committed or rolled back, they must be popped (using pop_skolemized_regions), so that their numbers can be recycled. Normally you don't have to think about this: you use the APIs in higher_ranked/mod.rs, such as skolemize_late_bound_regions and plug_leaks, which will guide you on this path (ensure that the SkolemizationMap is consumed and you are good). There are also somewhat extensive comments in higher_ranked/README.md.

The snapshot argument to this function is not really used; it's just there to make it explicit which snapshot bounds the skolemized region that results. It should always be the top-most snapshot.

🔬 This is a nightly-only experimental API. (rustc_private)

Removes all the edges to/from the skolemized regions that are in skols. This is used after a higher-ranked operation completes to remove all trace of the skolemized regions created in that time.

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

See Verify::VerifyGenericBound

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

🔬 This is a nightly-only experimental API. (rustc_private)

Computes all regions that have been related to r0 since the mark mark was made---r0 itself will be the first entry. The directions parameter controls what kind of relations are considered. For example, one can say that only "incoming" edges to r0 are desired, in which case one will get the set of regions {r|r <= r0}. This is used when checking whether skolemized regions are being improperly related to other regions.

🔬 This is a nightly-only experimental API. (rustc_private)

This function performs the actual region resolution. It must be called after all constraints have been added. It performs a fixed-point iteration to find region values which satisfy all constraints, assuming such values can be found; if they cannot, errors are reported.