InferCtxtLike

Trait InferCtxtLike 

Source
pub trait InferCtxtLike: Sized {
    type Interner: Interner;
    type OpaqueTypeStorageEntries: OpaqueTypeStorageEntries;

Show 46 methods // Required methods fn cx(&self) -> Self::Interner; fn typing_mode(&self) -> TypingMode<Self::Interner>; fn universe(&self) -> UniverseIndex; fn create_next_universe(&self) -> UniverseIndex; fn universe_of_ty(&self, ty: TyVid) -> Option<UniverseIndex>; fn universe_of_lt(&self, lt: RegionVid) -> Option<UniverseIndex>; fn universe_of_ct(&self, ct: ConstVid) -> Option<UniverseIndex>; fn root_ty_var(&self, var: TyVid) -> TyVid; fn root_const_var(&self, var: ConstVid) -> ConstVid; fn opportunistic_resolve_ty_var( &self, vid: TyVid, ) -> <Self::Interner as Interner>::Ty; fn opportunistic_resolve_int_var( &self, vid: IntVid, ) -> <Self::Interner as Interner>::Ty; fn opportunistic_resolve_float_var( &self, vid: FloatVid, ) -> <Self::Interner as Interner>::Ty; fn opportunistic_resolve_ct_var( &self, vid: ConstVid, ) -> <Self::Interner as Interner>::Const; fn opportunistic_resolve_lt_var( &self, vid: RegionVid, ) -> <Self::Interner as Interner>::Region; fn is_changed_arg( &self, arg: <Self::Interner as Interner>::GenericArg, ) -> bool; fn next_region_infer(&self) -> <Self::Interner as Interner>::Region; fn next_ty_infer(&self) -> <Self::Interner as Interner>::Ty; fn next_const_infer(&self) -> <Self::Interner as Interner>::Const; fn fresh_args_for_item( &self, def_id: <Self::Interner as Interner>::DefId, ) -> <Self::Interner as Interner>::GenericArgs; fn instantiate_binder_with_infer<T>( &self, value: Binder<Self::Interner, T>, ) -> T where T: TypeFoldable<Self::Interner> + Copy; fn enter_forall<T, U>( &self, value: Binder<Self::Interner, T>, f: impl FnOnce(T) -> U, ) -> U where T: TypeFoldable<Self::Interner>; fn equate_ty_vids_raw(&self, a: TyVid, b: TyVid); fn equate_int_vids_raw(&self, a: IntVid, b: IntVid); fn equate_float_vids_raw(&self, a: FloatVid, b: FloatVid); fn equate_const_vids_raw(&self, a: ConstVid, b: ConstVid); fn instantiate_ty_var_raw<R>( &self, relation: &mut R, target_is_expected: bool, target_vid: TyVid, instantiation_variance: Variance, source_ty: <Self::Interner as Interner>::Ty, ) -> Result<(), TypeError<Self::Interner>> where R: PredicateEmittingRelation<Self>; fn instantiate_int_var_raw(&self, vid: IntVid, value: IntVarValue); fn instantiate_float_var_raw(&self, vid: FloatVid, value: FloatVarValue); fn instantiate_const_var_raw<R>( &self, relation: &mut R, target_is_expected: bool, target_vid: ConstVid, source_ct: <Self::Interner as Interner>::Const, ) -> Result<(), TypeError<Self::Interner>> where R: PredicateEmittingRelation<Self>; fn set_tainted_by_errors( &self, e: <Self::Interner as Interner>::ErrorGuaranteed, ); fn shallow_resolve( &self, ty: <Self::Interner as Interner>::Ty, ) -> <Self::Interner as Interner>::Ty; fn shallow_resolve_const( &self, ty: <Self::Interner as Interner>::Const, ) -> <Self::Interner as Interner>::Const; fn resolve_vars_if_possible<T>(&self, value: T) -> T where T: TypeFoldable<Self::Interner>; fn probe<T>(&self, probe: impl FnOnce() -> T) -> T; fn sub_regions( &self, sub: <Self::Interner as Interner>::Region, sup: <Self::Interner as Interner>::Region, span: <Self::Interner as Interner>::Span, ); fn equate_regions( &self, a: <Self::Interner as Interner>::Region, b: <Self::Interner as Interner>::Region, span: <Self::Interner as Interner>::Span, ); fn register_ty_outlives( &self, ty: <Self::Interner as Interner>::Ty, r: <Self::Interner as Interner>::Region, span: <Self::Interner as Interner>::Span, ); fn opaque_types_storage_num_entries(&self) -> Self::OpaqueTypeStorageEntries; fn clone_opaque_types_lookup_table( &self, ) -> Vec<(OpaqueTypeKey<Self::Interner>, <Self::Interner as Interner>::Ty)>; fn clone_duplicate_opaque_types( &self, ) -> Vec<(OpaqueTypeKey<Self::Interner>, <Self::Interner as Interner>::Ty)>; fn clone_opaque_types_added_since( &self, prev_entries: Self::OpaqueTypeStorageEntries, ) -> Vec<(OpaqueTypeKey<Self::Interner>, <Self::Interner as Interner>::Ty)>; fn register_hidden_type_in_storage( &self, opaque_type_key: OpaqueTypeKey<Self::Interner>, hidden_ty: <Self::Interner as Interner>::Ty, span: <Self::Interner as Interner>::Span, ) -> Option<<Self::Interner as Interner>::Ty>; fn add_duplicate_opaque_type( &self, opaque_type_key: OpaqueTypeKey<Self::Interner>, hidden_ty: <Self::Interner as Interner>::Ty, span: <Self::Interner as Interner>::Span, ); fn reset_opaque_types(&self); // Provided methods fn next_trait_solver(&self) -> bool { ... } fn in_hir_typeck(&self) -> bool { ... }
}

Required Associated Types§

Required Methods§

Source

fn cx(&self) -> Self::Interner

Source

fn typing_mode(&self) -> TypingMode<Self::Interner>

Source

fn universe(&self) -> UniverseIndex

Source

fn create_next_universe(&self) -> UniverseIndex

Source

fn universe_of_ty(&self, ty: TyVid) -> Option<UniverseIndex>

Source

fn universe_of_lt(&self, lt: RegionVid) -> Option<UniverseIndex>

Source

fn universe_of_ct(&self, ct: ConstVid) -> Option<UniverseIndex>

Source

fn root_ty_var(&self, var: TyVid) -> TyVid

Source

fn root_const_var(&self, var: ConstVid) -> ConstVid

Source

fn opportunistic_resolve_ty_var( &self, vid: TyVid, ) -> <Self::Interner as Interner>::Ty

Source

fn opportunistic_resolve_int_var( &self, vid: IntVid, ) -> <Self::Interner as Interner>::Ty

Source

fn opportunistic_resolve_float_var( &self, vid: FloatVid, ) -> <Self::Interner as Interner>::Ty

Source

fn opportunistic_resolve_ct_var( &self, vid: ConstVid, ) -> <Self::Interner as Interner>::Const

Source

fn opportunistic_resolve_lt_var( &self, vid: RegionVid, ) -> <Self::Interner as Interner>::Region

Source

fn is_changed_arg(&self, arg: <Self::Interner as Interner>::GenericArg) -> bool

Source

fn next_region_infer(&self) -> <Self::Interner as Interner>::Region

Source

fn next_ty_infer(&self) -> <Self::Interner as Interner>::Ty

Source

fn next_const_infer(&self) -> <Self::Interner as Interner>::Const

Source

fn fresh_args_for_item( &self, def_id: <Self::Interner as Interner>::DefId, ) -> <Self::Interner as Interner>::GenericArgs

Source

fn instantiate_binder_with_infer<T>( &self, value: Binder<Self::Interner, T>, ) -> T
where T: TypeFoldable<Self::Interner> + Copy,

Source

fn enter_forall<T, U>( &self, value: Binder<Self::Interner, T>, f: impl FnOnce(T) -> U, ) -> U
where T: TypeFoldable<Self::Interner>,

Source

fn equate_ty_vids_raw(&self, a: TyVid, b: TyVid)

Source

fn equate_int_vids_raw(&self, a: IntVid, b: IntVid)

Source

fn equate_float_vids_raw(&self, a: FloatVid, b: FloatVid)

Source

fn equate_const_vids_raw(&self, a: ConstVid, b: ConstVid)

Source

fn instantiate_ty_var_raw<R>( &self, relation: &mut R, target_is_expected: bool, target_vid: TyVid, instantiation_variance: Variance, source_ty: <Self::Interner as Interner>::Ty, ) -> Result<(), TypeError<Self::Interner>>

Source

fn instantiate_int_var_raw(&self, vid: IntVid, value: IntVarValue)

Source

fn instantiate_float_var_raw(&self, vid: FloatVid, value: FloatVarValue)

Source

fn instantiate_const_var_raw<R>( &self, relation: &mut R, target_is_expected: bool, target_vid: ConstVid, source_ct: <Self::Interner as Interner>::Const, ) -> Result<(), TypeError<Self::Interner>>

Source

fn set_tainted_by_errors( &self, e: <Self::Interner as Interner>::ErrorGuaranteed, )

Source

fn shallow_resolve( &self, ty: <Self::Interner as Interner>::Ty, ) -> <Self::Interner as Interner>::Ty

Source

fn shallow_resolve_const( &self, ty: <Self::Interner as Interner>::Const, ) -> <Self::Interner as Interner>::Const

Source

fn resolve_vars_if_possible<T>(&self, value: T) -> T
where T: TypeFoldable<Self::Interner>,

Source

fn probe<T>(&self, probe: impl FnOnce() -> T) -> T

Source

fn sub_regions( &self, sub: <Self::Interner as Interner>::Region, sup: <Self::Interner as Interner>::Region, span: <Self::Interner as Interner>::Span, )

Source

fn equate_regions( &self, a: <Self::Interner as Interner>::Region, b: <Self::Interner as Interner>::Region, span: <Self::Interner as Interner>::Span, )

Source

fn register_ty_outlives( &self, ty: <Self::Interner as Interner>::Ty, r: <Self::Interner as Interner>::Region, span: <Self::Interner as Interner>::Span, )

Source

fn opaque_types_storage_num_entries(&self) -> Self::OpaqueTypeStorageEntries

Source

fn clone_opaque_types_lookup_table( &self, ) -> Vec<(OpaqueTypeKey<Self::Interner>, <Self::Interner as Interner>::Ty)>

Source

fn clone_duplicate_opaque_types( &self, ) -> Vec<(OpaqueTypeKey<Self::Interner>, <Self::Interner as Interner>::Ty)>

Source

fn clone_opaque_types_added_since( &self, prev_entries: Self::OpaqueTypeStorageEntries, ) -> Vec<(OpaqueTypeKey<Self::Interner>, <Self::Interner as Interner>::Ty)>

Source

fn register_hidden_type_in_storage( &self, opaque_type_key: OpaqueTypeKey<Self::Interner>, hidden_ty: <Self::Interner as Interner>::Ty, span: <Self::Interner as Interner>::Span, ) -> Option<<Self::Interner as Interner>::Ty>

Source

fn add_duplicate_opaque_type( &self, opaque_type_key: OpaqueTypeKey<Self::Interner>, hidden_ty: <Self::Interner as Interner>::Ty, span: <Self::Interner as Interner>::Span, )

Source

fn reset_opaque_types(&self)

Provided Methods§

Source

fn next_trait_solver(&self) -> bool

Whether the new trait solver is enabled. This only exists because rustc shares code between the new and old trait solvers; for all other users, this should always be true. If this is unknowingly false and you try to use the new trait solver, things will break badly.

Source

fn in_hir_typeck(&self) -> bool

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§