[−][src]Trait rustc_trait_selection::infer::nll_relate::TypeRelatingDelegate
Required methods
pub fn push_outlives(&mut self, sup: &'tcx RegionKind, sub: &'tcx RegionKind)[src]
Push a constraint sup: sub -- this constraint must be
satisfied for the two types to be related. sub and sup may
be regions from the type or new variables created through the
delegate.
pub fn const_equate(&mut self, a: &'tcx Const<'tcx>, b: &'tcx Const<'tcx>)[src]
pub fn create_next_universe(&mut self) -> UniverseIndex[src]
Creates a new universe index. Used when instantiating placeholders.
pub fn next_existential_region_var(
&mut self,
was_placeholder: bool
) -> &'tcx RegionKind[src]
&mut self,
was_placeholder: bool
) -> &'tcx RegionKind
Creates a new region variable representing a higher-ranked region that is instantiated existentially. This creates an inference variable, typically.
So e.g., if you have for<'a> fn(..) <: for<'b> fn(..), then
we will invoke this method to instantiate 'a with an
inference variable (though 'b would be instantiated first,
as a placeholder).
pub fn next_placeholder_region(
&mut self,
placeholder: Placeholder<BoundRegion>
) -> &'tcx RegionKind[src]
&mut self,
placeholder: Placeholder<BoundRegion>
) -> &'tcx RegionKind
Creates a new region variable representing a higher-ranked region that is instantiated universally. This creates a new region placeholder, typically.
So e.g., if you have for<'a> fn(..) <: for<'b> fn(..), then
we will invoke this method to instantiate 'b with a
placeholder region.
pub fn generalize_existential(
&mut self,
universe: UniverseIndex
) -> &'tcx RegionKind[src]
&mut self,
universe: UniverseIndex
) -> &'tcx RegionKind
Creates a new existential region in the given universe. This
is used when handling subtyping and type variables -- if we
have that ?X <: Foo<'a>, for example, we would instantiate
?X with a type like Foo<'?0> where '?0 is a fresh
existential variable created by this function. We would then
relate Foo<'?0> with Foo<'a> (and probably add an outlives
relation stating that '?0: 'a).
pub fn normalization() -> NormalizationStrategy[src]
Define the normalization strategy to use, eager or lazy.
pub fn forbid_inference_vars() -> bool[src]
Enables some optimizations if we do not expect inference variables in the RHS of the relation.