Trait rustc_mir::borrow_check::nll::universal_regions::InferCtxtExt [−][src]
trait InferCtxtExt<'tcx> { fn replace_free_regions_with_nll_infer_vars<T>(
&self,
origin: NLLRegionVariableOrigin,
value: &T
) -> T
where
T: TypeFoldable<'tcx>; fn replace_bound_regions_with_nll_infer_vars<T>(
&self,
origin: NLLRegionVariableOrigin,
all_outlive_scope: DefId,
value: &Binder<T>,
indices: &mut UniversalRegionIndices<'tcx>
) -> T
where
T: TypeFoldable<'tcx>; fn replace_late_bound_regions_with_nll_infer_vars(
&self,
mir_def_id: DefId,
indices: &mut UniversalRegionIndices<'tcx>
); }
🔬 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?
Required Methods
fn replace_free_regions_with_nll_infer_vars<T>(
&self,
origin: NLLRegionVariableOrigin,
value: &T
) -> T where
T: TypeFoldable<'tcx>,
&self,
origin: NLLRegionVariableOrigin,
value: &T
) -> T where
T: TypeFoldable<'tcx>,
🔬 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?
fn replace_bound_regions_with_nll_infer_vars<T>(
&self,
origin: NLLRegionVariableOrigin,
all_outlive_scope: DefId,
value: &Binder<T>,
indices: &mut UniversalRegionIndices<'tcx>
) -> T where
T: TypeFoldable<'tcx>,
&self,
origin: NLLRegionVariableOrigin,
all_outlive_scope: DefId,
value: &Binder<T>,
indices: &mut UniversalRegionIndices<'tcx>
) -> T where
T: TypeFoldable<'tcx>,
🔬 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?
fn replace_late_bound_regions_with_nll_infer_vars(
&self,
mir_def_id: DefId,
indices: &mut UniversalRegionIndices<'tcx>
)
&self,
mir_def_id: DefId,
indices: &mut UniversalRegionIndices<'tcx>
)
🔬 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?
Implementations on Foreign Types
impl<'cx, 'gcx, 'tcx> InferCtxtExt<'tcx> for InferCtxt<'cx, 'gcx, 'tcx>
[src]
impl<'cx, 'gcx, 'tcx> InferCtxtExt<'tcx> for InferCtxt<'cx, 'gcx, 'tcx>
fn replace_free_regions_with_nll_infer_vars<T>(
&self,
origin: NLLRegionVariableOrigin,
value: &T
) -> T where
T: TypeFoldable<'tcx>,
[src]
fn replace_free_regions_with_nll_infer_vars<T>(
&self,
origin: NLLRegionVariableOrigin,
value: &T
) -> T where
T: TypeFoldable<'tcx>,
🔬 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?
fn replace_bound_regions_with_nll_infer_vars<T>(
&self,
origin: NLLRegionVariableOrigin,
all_outlive_scope: DefId,
value: &Binder<T>,
indices: &mut UniversalRegionIndices<'tcx>
) -> T where
T: TypeFoldable<'tcx>,
[src]
fn replace_bound_regions_with_nll_infer_vars<T>(
&self,
origin: NLLRegionVariableOrigin,
all_outlive_scope: DefId,
value: &Binder<T>,
indices: &mut UniversalRegionIndices<'tcx>
) -> T where
T: TypeFoldable<'tcx>,
🔬 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?
fn replace_late_bound_regions_with_nll_infer_vars(
&self,
mir_def_id: DefId,
indices: &mut UniversalRegionIndices<'tcx>
)
[src]
fn replace_late_bound_regions_with_nll_infer_vars(
&self,
mir_def_id: DefId,
indices: &mut UniversalRegionIndices<'tcx>
)
🔬 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 late-bound regions that do not appear in the parameter listing and adds them to the indices vector. Typically, we identify late-bound regions as we process the inputs and outputs of the closure/function. However, sometimes there are late-bound regions which do not appear in the fn parameters but which are nonetheless in scope. The simplest case of this are unused functions, like fn foo<'a>() { } (see eg., #51351). Despite not being used, users can still reference these regions (e.g., let x: &'a u32 = &22;), so we need to create entries for them and store them in the indices map. This code iterates over the complete set of late-bound regions and checks for any that we have not yet seen, adding them to the inputs vector.