rustc_infer::infer::canonical::ir

Trait Interner

pub trait Interner:
    Sized
    + Copy
    + IrPrint<AliasTy<Self>>
    + IrPrint<AliasTerm<Self>>
    + IrPrint<TraitRef<Self>>
    + IrPrint<TraitPredicate<Self>>
    + IrPrint<HostEffectPredicate<Self>>
    + IrPrint<ExistentialTraitRef<Self>>
    + IrPrint<ExistentialProjection<Self>>
    + IrPrint<ProjectionPredicate<Self>>
    + IrPrint<NormalizesTo<Self>>
    + IrPrint<SubtypePredicate<Self>>
    + IrPrint<CoercePredicate<Self>>
    + IrPrint<FnSig<Self>> {
Show 111 associated items type DefId: DefId<Self>; type LocalDefId: Copy + Debug + Hash + Eq + Into<Self::DefId> + TypeFoldable<Self>; type Span: Span<Self>; type GenericArgs: GenericArgs<Self>; type GenericArgsSlice: Copy + Debug + Hash + Eq + SliceLike<Item = Self::GenericArg>; type GenericArg: GenericArg<Self>; type Term: Term<Self>; type BoundVarKinds: Copy + Debug + Hash + Eq + SliceLike<Item = Self::BoundVarKind> + Default; type BoundVarKind: Copy + Debug + Hash + Eq; type PredefinedOpaques: Copy + Debug + Hash + Eq + TypeFoldable<Self> + Deref<Target = PredefinedOpaquesData<Self>>; type DefiningOpaqueTypes: Copy + Debug + Hash + Default + Eq + TypeVisitable<Self> + SliceLike<Item = Self::LocalDefId>; type CanonicalVars: Copy + Debug + Hash + Eq + SliceLike<Item = CanonicalVarInfo<Self>> + Default; type ExternalConstraints: Copy + Debug + Hash + Eq + TypeFoldable<Self> + Deref<Target = ExternalConstraintsData<Self>>; type DepNodeIndex; type Tracked<T: Debug + Clone>: Debug; type Ty: Ty<Self>; type Tys: Tys<Self>; type FnInputTys: Copy + Debug + Hash + Eq + SliceLike<Item = Self::Ty> + TypeVisitable<Self>; type ParamTy: Copy + Debug + Hash + Eq + ParamLike; type BoundTy: Copy + Debug + Hash + Eq + BoundVarLike<Self>; type PlaceholderTy: PlaceholderLike; type ErrorGuaranteed: Copy + Debug + Hash + Eq; type BoundExistentialPredicates: BoundExistentialPredicates<Self>; type AllocId: Copy + Debug + Hash + Eq; type Pat: Copy + Debug + Hash + Eq + Relate<Self>; type Safety: Safety<Self>; type Abi: Abi<Self>; type Const: Const<Self>; type PlaceholderConst: PlaceholderLike; type ParamConst: Copy + Debug + Hash + Eq + ParamLike; type BoundConst: Copy + Debug + Hash + Eq + BoundVarLike<Self>; type ValueConst: Copy + Debug + Hash + Eq; type ExprConst: ExprConst<Self>; type Region: Region<Self>; type EarlyParamRegion: Copy + Debug + Hash + Eq + ParamLike; type LateParamRegion: Copy + Debug + Hash + Eq; type BoundRegion: Copy + Debug + Hash + Eq + BoundVarLike<Self>; type PlaceholderRegion: PlaceholderLike; type ParamEnv: ParamEnv<Self>; type Predicate: Predicate<Self>; type Clause: Clause<Self>; type Clauses: Copy + Debug + Hash + Eq + TypeSuperVisitable<Self> + Flags; type GenericsOf: GenericsOf<Self>; type VariancesOf: Copy + Debug + SliceLike<Item = Variance>; type AdtDef: AdtDef<Self>; type Features: Features<Self>; type UnsizingParams: Deref<Target = BitSet<u32>>; // Required methods fn mk_predefined_opaques_in_body( self, data: PredefinedOpaquesData<Self>, ) -> Self::PredefinedOpaques; fn mk_canonical_var_infos( self, infos: &[CanonicalVarInfo<Self>], ) -> Self::CanonicalVars; fn mk_external_constraints( self, data: ExternalConstraintsData<Self>, ) -> Self::ExternalConstraints; fn mk_tracked<T>( self, data: T, dep_node: Self::DepNodeIndex, ) -> Self::Tracked<T> where T: Debug + Clone; fn get_tracked<T>(self, tracked: &Self::Tracked<T>) -> T where T: Debug + Clone; fn with_cached_task<T>( self, task: impl FnOnce() -> T, ) -> (T, Self::DepNodeIndex); fn with_global_cache<R>( self, f: impl FnOnce(&mut GlobalCache<Self>) -> R, ) -> R; fn evaluation_is_concurrent(&self) -> bool; fn expand_abstract_consts<T>(self, t: T) -> T where T: TypeFoldable<Self>; fn generics_of(self, def_id: Self::DefId) -> Self::GenericsOf; fn variances_of(self, def_id: Self::DefId) -> Self::VariancesOf; fn type_of(self, def_id: Self::DefId) -> EarlyBinder<Self, Self::Ty>; fn adt_def(self, adt_def_id: Self::DefId) -> Self::AdtDef; fn alias_ty_kind(self, alias: AliasTy<Self>) -> AliasTyKind; fn alias_term_kind(self, alias: AliasTerm<Self>) -> AliasTermKind; fn trait_ref_and_own_args_for_alias( self, def_id: Self::DefId, args: Self::GenericArgs, ) -> (TraitRef<Self>, Self::GenericArgsSlice); fn mk_args(self, args: &[Self::GenericArg]) -> Self::GenericArgs; fn mk_args_from_iter<I, T>( self, args: I, ) -> <T as CollectAndApply<Self::GenericArg, Self::GenericArgs>>::Output where I: Iterator<Item = T>, T: CollectAndApply<Self::GenericArg, Self::GenericArgs>; fn check_args_compatible( self, def_id: Self::DefId, args: Self::GenericArgs, ) -> bool; fn debug_assert_args_compatible( self, def_id: Self::DefId, args: Self::GenericArgs, ); fn debug_assert_existential_args_compatible( self, def_id: Self::DefId, args: Self::GenericArgs, ); fn mk_type_list_from_iter<I, T>( self, args: I, ) -> <T as CollectAndApply<Self::Ty, Self::Tys>>::Output where I: Iterator<Item = T>, T: CollectAndApply<Self::Ty, Self::Tys>; fn parent(self, def_id: Self::DefId) -> Self::DefId; fn recursion_limit(self) -> usize; fn features(self) -> Self::Features; fn bound_coroutine_hidden_types( self, def_id: Self::DefId, ) -> impl IntoIterator<Item = EarlyBinder<Self, Binder<Self, Self::Ty>>>; fn fn_sig( self, def_id: Self::DefId, ) -> EarlyBinder<Self, Binder<Self, FnSig<Self>>>; fn coroutine_movability(self, def_id: Self::DefId) -> Movability; fn coroutine_for_closure(self, def_id: Self::DefId) -> Self::DefId; fn generics_require_sized_self(self, def_id: Self::DefId) -> bool; fn item_bounds( self, def_id: Self::DefId, ) -> EarlyBinder<Self, impl IntoIterator<Item = Self::Clause>>; fn predicates_of( self, def_id: Self::DefId, ) -> EarlyBinder<Self, impl IntoIterator<Item = Self::Clause>>; fn own_predicates_of( self, def_id: Self::DefId, ) -> EarlyBinder<Self, impl IntoIterator<Item = Self::Clause>>; fn explicit_super_predicates_of( self, def_id: Self::DefId, ) -> EarlyBinder<Self, impl IntoIterator<Item = (Self::Clause, Self::Span)>>; fn explicit_implied_predicates_of( self, def_id: Self::DefId, ) -> EarlyBinder<Self, impl IntoIterator<Item = (Self::Clause, Self::Span)>>; fn is_const_impl(self, def_id: Self::DefId) -> bool; fn const_conditions( self, def_id: Self::DefId, ) -> EarlyBinder<Self, impl IntoIterator<Item = Binder<Self, TraitRef<Self>>>>; fn implied_const_bounds( self, def_id: Self::DefId, ) -> EarlyBinder<Self, impl IntoIterator<Item = Binder<Self, TraitRef<Self>>>>; fn has_target_features(self, def_id: Self::DefId) -> bool; fn require_lang_item(self, lang_item: TraitSolverLangItem) -> Self::DefId; fn is_lang_item( self, def_id: Self::DefId, lang_item: TraitSolverLangItem, ) -> bool; fn as_lang_item(self, def_id: Self::DefId) -> Option<TraitSolverLangItem>; fn associated_type_def_ids( self, def_id: Self::DefId, ) -> impl IntoIterator<Item = Self::DefId>; fn for_each_relevant_impl( self, trait_def_id: Self::DefId, self_ty: Self::Ty, f: impl FnMut(Self::DefId), ); fn has_item_definition(self, def_id: Self::DefId) -> bool; fn impl_is_default(self, impl_def_id: Self::DefId) -> bool; fn impl_trait_ref( self, impl_def_id: Self::DefId, ) -> EarlyBinder<Self, TraitRef<Self>>; fn impl_polarity(self, impl_def_id: Self::DefId) -> ImplPolarity; fn trait_is_auto(self, trait_def_id: Self::DefId) -> bool; fn trait_is_alias(self, trait_def_id: Self::DefId) -> bool; fn trait_is_dyn_compatible(self, trait_def_id: Self::DefId) -> bool; fn trait_is_fundamental(self, def_id: Self::DefId) -> bool; fn trait_may_be_implemented_via_object( self, trait_def_id: Self::DefId, ) -> bool; fn is_impl_trait_in_trait(self, def_id: Self::DefId) -> bool; fn delay_bug(self, msg: impl ToString) -> Self::ErrorGuaranteed; fn is_general_coroutine(self, coroutine_def_id: Self::DefId) -> bool; fn coroutine_is_async(self, coroutine_def_id: Self::DefId) -> bool; fn coroutine_is_gen(self, coroutine_def_id: Self::DefId) -> bool; fn coroutine_is_async_gen(self, coroutine_def_id: Self::DefId) -> bool; fn layout_is_pointer_like( self, param_env: Self::ParamEnv, ty: Self::Ty, ) -> bool; fn unsizing_params_for_adt( self, adt_def_id: Self::DefId, ) -> Self::UnsizingParams; fn find_const_ty_from_env( self, param_env: Self::ParamEnv, placeholder: Self::PlaceholderConst, ) -> Self::Ty; fn anonymize_bound_vars<T>(self, binder: Binder<Self, T>) -> Binder<Self, T> where T: TypeFoldable<Self>; fn opaque_types_defined_by( self, defining_anchor: Self::LocalDefId, ) -> Self::DefiningOpaqueTypes;
}

Required Associated Types§

type DefId: DefId<Self>

type LocalDefId: Copy + Debug + Hash + Eq + Into<Self::DefId> + TypeFoldable<Self>

type Span: Span<Self>

type GenericArgs: GenericArgs<Self>

type GenericArgsSlice: Copy + Debug + Hash + Eq + SliceLike<Item = Self::GenericArg>

type GenericArg: GenericArg<Self>

type Term: Term<Self>

type BoundVarKinds: Copy + Debug + Hash + Eq + SliceLike<Item = Self::BoundVarKind> + Default

type BoundVarKind: Copy + Debug + Hash + Eq

type PredefinedOpaques: Copy + Debug + Hash + Eq + TypeFoldable<Self> + Deref<Target = PredefinedOpaquesData<Self>>

type DefiningOpaqueTypes: Copy + Debug + Hash + Default + Eq + TypeVisitable<Self> + SliceLike<Item = Self::LocalDefId>

type CanonicalVars: Copy + Debug + Hash + Eq + SliceLike<Item = CanonicalVarInfo<Self>> + Default

type ExternalConstraints: Copy + Debug + Hash + Eq + TypeFoldable<Self> + Deref<Target = ExternalConstraintsData<Self>>

type DepNodeIndex

type Tracked<T: Debug + Clone>: Debug

type Ty: Ty<Self>

type Tys: Tys<Self>

type FnInputTys: Copy + Debug + Hash + Eq + SliceLike<Item = Self::Ty> + TypeVisitable<Self>

type ParamTy: Copy + Debug + Hash + Eq + ParamLike

type BoundTy: Copy + Debug + Hash + Eq + BoundVarLike<Self>

type PlaceholderTy: PlaceholderLike

type ErrorGuaranteed: Copy + Debug + Hash + Eq

type BoundExistentialPredicates: BoundExistentialPredicates<Self>

type AllocId: Copy + Debug + Hash + Eq

type Pat: Copy + Debug + Hash + Eq + Relate<Self>

type Safety: Safety<Self>

type Abi: Abi<Self>

type Const: Const<Self>

type PlaceholderConst: PlaceholderLike

type ParamConst: Copy + Debug + Hash + Eq + ParamLike

type BoundConst: Copy + Debug + Hash + Eq + BoundVarLike<Self>

type ValueConst: Copy + Debug + Hash + Eq

type ExprConst: ExprConst<Self>

type Region: Region<Self>

type EarlyParamRegion: Copy + Debug + Hash + Eq + ParamLike

type LateParamRegion: Copy + Debug + Hash + Eq

type BoundRegion: Copy + Debug + Hash + Eq + BoundVarLike<Self>

type PlaceholderRegion: PlaceholderLike

type ParamEnv: ParamEnv<Self>

type Predicate: Predicate<Self>

type Clause: Clause<Self>

type Clauses: Copy + Debug + Hash + Eq + TypeSuperVisitable<Self> + Flags

type GenericsOf: GenericsOf<Self>

type VariancesOf: Copy + Debug + SliceLike<Item = Variance>

type AdtDef: AdtDef<Self>

type Features: Features<Self>

type UnsizingParams: Deref<Target = BitSet<u32>>

Required Methods§

fn mk_predefined_opaques_in_body( self, data: PredefinedOpaquesData<Self>, ) -> Self::PredefinedOpaques

fn mk_canonical_var_infos( self, infos: &[CanonicalVarInfo<Self>], ) -> Self::CanonicalVars

fn mk_external_constraints( self, data: ExternalConstraintsData<Self>, ) -> Self::ExternalConstraints

fn mk_tracked<T>( self, data: T, dep_node: Self::DepNodeIndex, ) -> Self::Tracked<T>
where T: Debug + Clone,

fn get_tracked<T>(self, tracked: &Self::Tracked<T>) -> T
where T: Debug + Clone,

fn with_cached_task<T>( self, task: impl FnOnce() -> T, ) -> (T, Self::DepNodeIndex)

fn with_global_cache<R>(self, f: impl FnOnce(&mut GlobalCache<Self>) -> R) -> R

fn evaluation_is_concurrent(&self) -> bool

fn expand_abstract_consts<T>(self, t: T) -> T
where T: TypeFoldable<Self>,

fn generics_of(self, def_id: Self::DefId) -> Self::GenericsOf

fn variances_of(self, def_id: Self::DefId) -> Self::VariancesOf

fn type_of(self, def_id: Self::DefId) -> EarlyBinder<Self, Self::Ty>

fn adt_def(self, adt_def_id: Self::DefId) -> Self::AdtDef

fn alias_ty_kind(self, alias: AliasTy<Self>) -> AliasTyKind

fn alias_term_kind(self, alias: AliasTerm<Self>) -> AliasTermKind

fn trait_ref_and_own_args_for_alias( self, def_id: Self::DefId, args: Self::GenericArgs, ) -> (TraitRef<Self>, Self::GenericArgsSlice)

fn mk_args(self, args: &[Self::GenericArg]) -> Self::GenericArgs

fn mk_args_from_iter<I, T>( self, args: I, ) -> <T as CollectAndApply<Self::GenericArg, Self::GenericArgs>>::Output
where I: Iterator<Item = T>, T: CollectAndApply<Self::GenericArg, Self::GenericArgs>,

fn check_args_compatible( self, def_id: Self::DefId, args: Self::GenericArgs, ) -> bool

fn debug_assert_args_compatible( self, def_id: Self::DefId, args: Self::GenericArgs, )

fn debug_assert_existential_args_compatible( self, def_id: Self::DefId, args: Self::GenericArgs, )

Assert that the args from an ExistentialTraitRef or ExistentialProjection are compatible with the DefId.

fn mk_type_list_from_iter<I, T>( self, args: I, ) -> <T as CollectAndApply<Self::Ty, Self::Tys>>::Output
where I: Iterator<Item = T>, T: CollectAndApply<Self::Ty, Self::Tys>,

fn parent(self, def_id: Self::DefId) -> Self::DefId

fn recursion_limit(self) -> usize

fn features(self) -> Self::Features

fn bound_coroutine_hidden_types( self, def_id: Self::DefId, ) -> impl IntoIterator<Item = EarlyBinder<Self, Binder<Self, Self::Ty>>>

fn fn_sig( self, def_id: Self::DefId, ) -> EarlyBinder<Self, Binder<Self, FnSig<Self>>>

fn coroutine_movability(self, def_id: Self::DefId) -> Movability

fn coroutine_for_closure(self, def_id: Self::DefId) -> Self::DefId

fn generics_require_sized_self(self, def_id: Self::DefId) -> bool

fn item_bounds( self, def_id: Self::DefId, ) -> EarlyBinder<Self, impl IntoIterator<Item = Self::Clause>>

fn predicates_of( self, def_id: Self::DefId, ) -> EarlyBinder<Self, impl IntoIterator<Item = Self::Clause>>

fn own_predicates_of( self, def_id: Self::DefId, ) -> EarlyBinder<Self, impl IntoIterator<Item = Self::Clause>>

fn explicit_super_predicates_of( self, def_id: Self::DefId, ) -> EarlyBinder<Self, impl IntoIterator<Item = (Self::Clause, Self::Span)>>

fn explicit_implied_predicates_of( self, def_id: Self::DefId, ) -> EarlyBinder<Self, impl IntoIterator<Item = (Self::Clause, Self::Span)>>

fn is_const_impl(self, def_id: Self::DefId) -> bool

fn const_conditions( self, def_id: Self::DefId, ) -> EarlyBinder<Self, impl IntoIterator<Item = Binder<Self, TraitRef<Self>>>>

fn implied_const_bounds( self, def_id: Self::DefId, ) -> EarlyBinder<Self, impl IntoIterator<Item = Binder<Self, TraitRef<Self>>>>

fn has_target_features(self, def_id: Self::DefId) -> bool

fn require_lang_item(self, lang_item: TraitSolverLangItem) -> Self::DefId

fn is_lang_item( self, def_id: Self::DefId, lang_item: TraitSolverLangItem, ) -> bool

fn as_lang_item(self, def_id: Self::DefId) -> Option<TraitSolverLangItem>

fn associated_type_def_ids( self, def_id: Self::DefId, ) -> impl IntoIterator<Item = Self::DefId>

fn for_each_relevant_impl( self, trait_def_id: Self::DefId, self_ty: Self::Ty, f: impl FnMut(Self::DefId), )

fn has_item_definition(self, def_id: Self::DefId) -> bool

fn impl_is_default(self, impl_def_id: Self::DefId) -> bool

fn impl_trait_ref( self, impl_def_id: Self::DefId, ) -> EarlyBinder<Self, TraitRef<Self>>

fn impl_polarity(self, impl_def_id: Self::DefId) -> ImplPolarity

fn trait_is_auto(self, trait_def_id: Self::DefId) -> bool

fn trait_is_alias(self, trait_def_id: Self::DefId) -> bool

fn trait_is_dyn_compatible(self, trait_def_id: Self::DefId) -> bool

fn trait_is_fundamental(self, def_id: Self::DefId) -> bool

fn trait_may_be_implemented_via_object(self, trait_def_id: Self::DefId) -> bool

fn is_impl_trait_in_trait(self, def_id: Self::DefId) -> bool

fn delay_bug(self, msg: impl ToString) -> Self::ErrorGuaranteed

fn is_general_coroutine(self, coroutine_def_id: Self::DefId) -> bool

fn coroutine_is_async(self, coroutine_def_id: Self::DefId) -> bool

fn coroutine_is_gen(self, coroutine_def_id: Self::DefId) -> bool

fn coroutine_is_async_gen(self, coroutine_def_id: Self::DefId) -> bool

fn layout_is_pointer_like(self, param_env: Self::ParamEnv, ty: Self::Ty) -> bool

fn unsizing_params_for_adt( self, adt_def_id: Self::DefId, ) -> Self::UnsizingParams

fn find_const_ty_from_env( self, param_env: Self::ParamEnv, placeholder: Self::PlaceholderConst, ) -> Self::Ty

fn anonymize_bound_vars<T>(self, binder: Binder<Self, T>) -> Binder<Self, T>
where T: TypeFoldable<Self>,

fn opaque_types_defined_by( self, defining_anchor: Self::LocalDefId, ) -> Self::DefiningOpaqueTypes

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.

Implementations on Foreign Types§

Source§

impl<'tcx> Interner for TyCtxt<'tcx>

Source§

fn debug_assert_existential_args_compatible( self, def_id: DefId, args: &'tcx RawList<(), GenericArg<'tcx>>, )

Assert that the args from an ExistentialTraitRef or ExistentialProjection are compatible with the DefId. Since we’re missing a Self type, stick on a dummy self type and forward to debug_assert_args_compatible.

Source§

type DefId = DefId

Source§

type LocalDefId = LocalDefId

Source§

type Span = Span

Source§

type GenericArgs = &'tcx RawList<(), GenericArg<'tcx>>

Source§

type GenericArgsSlice = &'tcx [GenericArg<'tcx>]

Source§

type GenericArg = GenericArg<'tcx>

Source§

type Term = Term<'tcx>

Source§

type BoundVarKinds = &'tcx RawList<(), BoundVariableKind>

Source§

type BoundVarKind = BoundVariableKind

Source§

type PredefinedOpaques = PredefinedOpaques<'tcx>

Source§

type DefiningOpaqueTypes = &'tcx RawList<(), LocalDefId>

Source§

type CanonicalVars = &'tcx RawList<(), CanonicalVarInfo<TyCtxt<'tcx>>>

Source§

type ExternalConstraints = ExternalConstraints<'tcx>

Source§

type DepNodeIndex = DepNodeIndex

Source§

type Ty = Ty<'tcx>

Source§

type Tys = &'tcx RawList<(), Ty<'tcx>>

Source§

type FnInputTys = &'tcx [Ty<'tcx>]

Source§

type ParamTy = ParamTy

Source§

type BoundTy = BoundTy

Source§

type PlaceholderTy = Placeholder<BoundTy>

Source§

type ErrorGuaranteed = ErrorGuaranteed

Source§

type BoundExistentialPredicates = &'tcx RawList<(), Binder<TyCtxt<'tcx>, ExistentialPredicate<TyCtxt<'tcx>>>>

Source§

type AllocId = AllocId

Source§

type Pat = Pattern<'tcx>

Source§

type Safety = Safety

Source§

type Abi = ExternAbi

Source§

type Const = Const<'tcx>

Source§

type PlaceholderConst = Placeholder<BoundVar>

Source§

type ParamConst = ParamConst

Source§

type BoundConst = BoundVar

Source§

type ValueConst = ValTree<'tcx>

Source§

type ExprConst = Expr<'tcx>

Source§

type Region = Region<'tcx>

Source§

type EarlyParamRegion = EarlyParamRegion

Source§

type LateParamRegion = LateParamRegion

Source§

type BoundRegion = BoundRegion

Source§

type PlaceholderRegion = Placeholder<BoundRegion>

Source§

type ParamEnv = ParamEnv<'tcx>

Source§

type Predicate = Predicate<'tcx>

Source§

type Clause = Clause<'tcx>

Source§

type Clauses = &'tcx RawList<TypeInfo, Clause<'tcx>>

Source§

type Tracked<T: Debug + Clone> = WithDepNode<T>

Source§

type GenericsOf = &'tcx Generics

Source§

type VariancesOf = &'tcx [Variance]

Source§

type AdtDef = AdtDef<'tcx>

Source§

type Features = &'tcx Features

Source§

type UnsizingParams = &'tcx BitSet<u32>

Source§

fn mk_predefined_opaques_in_body( self, data: PredefinedOpaquesData<TyCtxt<'tcx>>, ) -> PredefinedOpaques<'tcx>

Source§

fn mk_canonical_var_infos( self, infos: &[CanonicalVarInfo<TyCtxt<'tcx>>], ) -> &'tcx RawList<(), CanonicalVarInfo<TyCtxt<'tcx>>>

Source§

fn mk_external_constraints( self, data: ExternalConstraintsData<TyCtxt<'tcx>>, ) -> ExternalConstraints<'tcx>

Source§

fn with_cached_task<T>(self, task: impl FnOnce() -> T) -> (T, DepNodeIndex)

Source§

fn mk_tracked<T>( self, data: T, dep_node: DepNodeIndex, ) -> <TyCtxt<'tcx> as Interner>::Tracked<T>
where T: Debug + Clone,

Source§

fn get_tracked<T>(self, tracked: &<TyCtxt<'tcx> as Interner>::Tracked<T>) -> T
where T: Debug + Clone,

Source§

fn with_global_cache<R>( self, f: impl FnOnce(&mut GlobalCache<TyCtxt<'tcx>>) -> R, ) -> R

Source§

fn evaluation_is_concurrent(&self) -> bool

Source§

fn expand_abstract_consts<T>(self, t: T) -> T
where T: TypeFoldable<TyCtxt<'tcx>>,

Source§

fn generics_of(self, def_id: DefId) -> &'tcx Generics

Source§

fn variances_of(self, def_id: DefId) -> &'tcx [Variance]

Source§

fn type_of(self, def_id: DefId) -> EarlyBinder<TyCtxt<'tcx>, Ty<'tcx>>

Source§

fn adt_def(self, adt_def_id: DefId) -> AdtDef<'tcx>

Source§

fn alias_ty_kind(self, alias: AliasTy<TyCtxt<'tcx>>) -> AliasTyKind

Source§

fn alias_term_kind(self, alias: AliasTerm<TyCtxt<'tcx>>) -> AliasTermKind

Source§

fn trait_ref_and_own_args_for_alias( self, def_id: DefId, args: &'tcx RawList<(), GenericArg<'tcx>>, ) -> (TraitRef<TyCtxt<'tcx>>, &'tcx [GenericArg<'tcx>])

Source§

fn mk_args( self, args: &[GenericArg<'tcx>], ) -> &'tcx RawList<(), GenericArg<'tcx>>

Source§

fn mk_args_from_iter<I, T>( self, args: I, ) -> <T as CollectAndApply<GenericArg<'tcx>, &'tcx RawList<(), GenericArg<'tcx>>>>::Output
where I: Iterator<Item = T>, T: CollectAndApply<GenericArg<'tcx>, &'tcx RawList<(), GenericArg<'tcx>>>,

Source§

fn check_args_compatible( self, def_id: DefId, args: &'tcx RawList<(), GenericArg<'tcx>>, ) -> bool

Source§

fn debug_assert_args_compatible( self, def_id: DefId, args: &'tcx RawList<(), GenericArg<'tcx>>, )

Source§

fn mk_type_list_from_iter<I, T>( self, args: I, ) -> <T as CollectAndApply<Ty<'tcx>, &'tcx RawList<(), Ty<'tcx>>>>::Output
where I: Iterator<Item = T>, T: CollectAndApply<Ty<'tcx>, &'tcx RawList<(), Ty<'tcx>>>,

Source§

fn parent(self, def_id: DefId) -> DefId

Source§

fn recursion_limit(self) -> usize

Source§

fn features(self) -> &'tcx Features

Source§

fn bound_coroutine_hidden_types( self, def_id: DefId, ) -> impl IntoIterator<Item = EarlyBinder<TyCtxt<'tcx>, Binder<TyCtxt<'tcx>, Ty<'tcx>>>>

Source§

fn fn_sig( self, def_id: DefId, ) -> EarlyBinder<TyCtxt<'tcx>, Binder<TyCtxt<'tcx>, FnSig<TyCtxt<'tcx>>>>

Source§

fn coroutine_movability(self, def_id: DefId) -> Movability

Source§

fn coroutine_for_closure(self, def_id: DefId) -> DefId

Source§

fn generics_require_sized_self(self, def_id: DefId) -> bool

Source§

fn item_bounds( self, def_id: DefId, ) -> EarlyBinder<TyCtxt<'tcx>, impl IntoIterator<Item = Clause<'tcx>>>

Source§

fn predicates_of( self, def_id: DefId, ) -> EarlyBinder<TyCtxt<'tcx>, impl IntoIterator<Item = Clause<'tcx>>>

Source§

fn own_predicates_of( self, def_id: DefId, ) -> EarlyBinder<TyCtxt<'tcx>, impl IntoIterator<Item = Clause<'tcx>>>

Source§

fn explicit_super_predicates_of( self, def_id: DefId, ) -> EarlyBinder<TyCtxt<'tcx>, impl IntoIterator<Item = (Clause<'tcx>, Span)>>

Source§

fn explicit_implied_predicates_of( self, def_id: DefId, ) -> EarlyBinder<TyCtxt<'tcx>, impl IntoIterator<Item = (Clause<'tcx>, Span)>>

Source§

fn is_const_impl(self, def_id: DefId) -> bool

Source§

fn const_conditions( self, def_id: DefId, ) -> EarlyBinder<TyCtxt<'tcx>, impl IntoIterator<Item = Binder<TyCtxt<'tcx>, TraitRef<TyCtxt<'tcx>>>>>

Source§

fn implied_const_bounds( self, def_id: DefId, ) -> EarlyBinder<TyCtxt<'tcx>, impl IntoIterator<Item = Binder<TyCtxt<'tcx>, TraitRef<TyCtxt<'tcx>>>>>

Source§

fn has_target_features(self, def_id: DefId) -> bool

Source§

fn require_lang_item(self, lang_item: TraitSolverLangItem) -> DefId

Source§

fn is_lang_item(self, def_id: DefId, lang_item: TraitSolverLangItem) -> bool

Source§

fn as_lang_item(self, def_id: DefId) -> Option<TraitSolverLangItem>

Source§

fn associated_type_def_ids( self, def_id: DefId, ) -> impl IntoIterator<Item = DefId>

Source§

fn for_each_relevant_impl( self, trait_def_id: DefId, self_ty: Ty<'tcx>, f: impl FnMut(DefId), )

Source§

fn has_item_definition(self, def_id: DefId) -> bool

Source§

fn impl_is_default(self, impl_def_id: DefId) -> bool

Source§

fn impl_trait_ref( self, impl_def_id: DefId, ) -> EarlyBinder<TyCtxt<'tcx>, TraitRef<TyCtxt<'tcx>>>

Source§

fn impl_polarity(self, impl_def_id: DefId) -> ImplPolarity

Source§

fn trait_is_auto(self, trait_def_id: DefId) -> bool

Source§

fn trait_is_alias(self, trait_def_id: DefId) -> bool

Source§

fn trait_is_dyn_compatible(self, trait_def_id: DefId) -> bool

Source§

fn trait_is_fundamental(self, def_id: DefId) -> bool

Source§

fn trait_may_be_implemented_via_object(self, trait_def_id: DefId) -> bool

Source§

fn is_impl_trait_in_trait(self, def_id: DefId) -> bool

Source§

fn delay_bug(self, msg: impl ToString) -> ErrorGuaranteed

Source§

fn is_general_coroutine(self, coroutine_def_id: DefId) -> bool

Source§

fn coroutine_is_async(self, coroutine_def_id: DefId) -> bool

Source§

fn coroutine_is_gen(self, coroutine_def_id: DefId) -> bool

Source§

fn coroutine_is_async_gen(self, coroutine_def_id: DefId) -> bool

Source§

fn layout_is_pointer_like(self, param_env: ParamEnv<'tcx>, ty: Ty<'tcx>) -> bool

Source§

fn unsizing_params_for_adt(self, adt_def_id: DefId) -> &'tcx BitSet<u32>

Source§

fn find_const_ty_from_env( self, param_env: ParamEnv<'tcx>, placeholder: Placeholder<BoundVar>, ) -> Ty<'tcx>

Source§

fn anonymize_bound_vars<T>( self, binder: Binder<TyCtxt<'tcx>, T>, ) -> Binder<TyCtxt<'tcx>, T>
where T: TypeFoldable<TyCtxt<'tcx>>,

Source§

fn opaque_types_defined_by( self, defining_anchor: LocalDefId, ) -> &'tcx RawList<(), LocalDefId>

Implementors§