Trait rustc_type_ir::InferCtxtLike
source · pub trait InferCtxtLike {
type Interner: Interner;
// Required methods
fn interner(&self) -> Self::Interner;
fn universe_of_ty(&self, ty: TyVid) -> Option<UniverseIndex>;
fn root_ty_var(&self, vid: TyVid) -> TyVid;
fn probe_ty_var(
&self,
vid: TyVid
) -> Option<<Self::Interner as Interner>::Ty>;
fn universe_of_lt(
&self,
lt: <Self::Interner as Interner>::InferRegion
) -> Option<UniverseIndex>;
fn opportunistic_resolve_lt_var(
&self,
vid: <Self::Interner as Interner>::InferRegion
) -> Option<<Self::Interner as Interner>::Region>;
fn universe_of_ct(&self, ct: ConstVid) -> Option<UniverseIndex>;
fn root_ct_var(&self, vid: ConstVid) -> ConstVid;
fn probe_ct_var(
&self,
vid: ConstVid
) -> Option<<Self::Interner as Interner>::Const>;
}
Required Associated Types§
Required Methods§
fn interner(&self) -> Self::Interner
fn universe_of_ty(&self, ty: TyVid) -> Option<UniverseIndex>
sourcefn root_ty_var(&self, vid: TyVid) -> TyVid
fn root_ty_var(&self, vid: TyVid) -> TyVid
Resolve TyVid
to its root TyVid
.
sourcefn probe_ty_var(&self, vid: TyVid) -> Option<<Self::Interner as Interner>::Ty>
fn probe_ty_var(&self, vid: TyVid) -> Option<<Self::Interner as Interner>::Ty>
Resolve TyVid
to its inferred type, if it has been equated with a non-infer type.
fn universe_of_lt( &self, lt: <Self::Interner as Interner>::InferRegion ) -> Option<UniverseIndex>
sourcefn opportunistic_resolve_lt_var(
&self,
vid: <Self::Interner as Interner>::InferRegion
) -> Option<<Self::Interner as Interner>::Region>
fn opportunistic_resolve_lt_var( &self, vid: <Self::Interner as Interner>::InferRegion ) -> Option<<Self::Interner as Interner>::Region>
Resolve InferRegion
to its inferred region, if it has been equated with
a non-infer region.
FIXME: This has slightly different semantics than {probe,resolve}_{ty,ct}_var
,
that has to do with the fact unlike Ty
or Const
vars, in rustc, we may
not always be able to name the root region var from the universe of the
var we’re trying to resolve. That’s why it’s called opportunistic.
fn universe_of_ct(&self, ct: ConstVid) -> Option<UniverseIndex>
sourcefn root_ct_var(&self, vid: ConstVid) -> ConstVid
fn root_ct_var(&self, vid: ConstVid) -> ConstVid
Resolve ConstVid
to its root ConstVid
.