Skip to main content

DbInterner

Struct DbInterner 

Source
pub struct DbInterner<'db> {
    pub(crate) db: &'db dyn HirDatabase,
    krate: Option<Crate>,
    lang_items: Option<&'db LangItems>,
}

Fields§

§db: &'db dyn HirDatabase§krate: Option<Crate>§lang_items: Option<&'db LangItems>

Implementations§

Source§

impl<'db> DbInterner<'db>

Source

pub fn instantiate_bound_regions<T, F>( self, value: Binder<'db, T>, fld_r: F, ) -> (T, FxIndexMap<BoundRegion<'db>, Region<'db>>)
where F: FnMut(BoundRegion<'db>) -> Region<'db>, T: TypeFoldable<DbInterner<'db>>,

Replaces all regions bound by the given Binder with the results returned by the closure; the closure is expected to return a free region (relative to this binder), and hence the binder is removed in the return type. The closure is invoked once for each unique BoundRegionKind; multiple references to the same BoundRegionKind will reuse the previous result. A map is returned at the end with each bound region and the free region that replaced it.

§Panics

This method only replaces late bound regions. Any types or constants bound by value will cause an ICE.

Source

pub fn instantiate_bound_regions_uncached<T, F>( self, value: Binder<'db, T>, replace_regions: F, ) -> T
where F: FnMut(BoundRegion<'db>) -> Region<'db>, T: TypeFoldable<DbInterner<'db>>,

Source

pub fn instantiate_bound_regions_with_erased<T>( self, value: Binder<'db, T>, ) -> T
where T: TypeFoldable<DbInterner<'db>>,

Replaces any late-bound regions bound in value with 'erased. Useful in codegen but also method lookup and a few other places where precise region relationships are not required.

Source

pub fn liberate_late_bound_regions<T>( self, all_outlive_scope: SolverDefId<'db>, value: Binder<'db, T>, ) -> T
where T: TypeFoldable<DbInterner<'db>>,

Replaces any late-bound regions bound in value with free variants attached to all_outlive_scope.

Source§

impl<'db> DbInterner<'db>

Source

pub(super) fn mk_args(self, args: &[GenericArg<'db>]) -> GenericArgs<'db>

Source

pub(super) fn mk_args_from_iter<I, T>(self, iter: I) -> T::Output
where I: Iterator<Item = T>, T: CollectAndApply<GenericArg<'db>, GenericArgs<'db>>,

Source§

impl<'db> DbInterner<'db>

Source

pub fn new_no_crate(db: &'db dyn HirDatabase) -> Self

Creates a new interner without an active crate. Good only for interning things, not for trait solving etc.. As a rule of thumb, when you create an InferCtxt, you need to provide the crate (and the block).

Elaboration is a special kind: it needs lang items (for Sized), therefore it needs new_with().

Source

pub fn new_with(db: &'db dyn HirDatabase, krate: Crate) -> DbInterner<'db>

Source

pub fn db(&self) -> &'db dyn HirDatabase

Source

pub fn lang_items(&self) -> &'db LangItems

Source

pub fn default_types(&self) -> &'db DefaultAny<'db>

Source

pub(crate) fn expect_crate(&self) -> Crate

Source§

impl<'db> DbInterner<'db>

Source

pub fn shift_bound_var_indices<T>(self, bound_vars: usize, value: T) -> T
where T: TypeFoldable<Self>,

Source

pub fn replace_escaping_bound_vars_uncached<T: TypeFoldable<DbInterner<'db>>>( self, value: T, delegate: impl BoundVarReplacerDelegate<'db>, ) -> T

Source

pub fn replace_bound_vars_uncached<T: TypeFoldable<DbInterner<'db>>>( self, value: Binder<'db, T>, delegate: impl BoundVarReplacerDelegate<'db>, ) -> T

Source

pub fn mk_fn_sig<I>( self, inputs: I, output: Ty<'db>, c_variadic: bool, safety: Safety, abi: ExternAbi, ) -> FnSig<'db>
where I: IntoIterator<Item = Ty<'db>>,

Source

pub fn mk_fn_sig_safe_rust_abi<I>( self, inputs: I, output: Ty<'db>, ) -> FnSig<'db>
where I: IntoIterator<Item = Ty<'db>>,

mk_fn_sig, but with a safe Rust ABI, and no C-variadic argument.

Source§

impl<'db> DbInterner<'db>

Source

pub fn signature_unclosure( self, sig: PolyFnSig<'db>, safety: Safety, ) -> PolyFnSig<'db>

Given a closure signature, returns an equivalent fn signature. Detuples and so forth – so e.g., if we have a sig with Fn<(u32, i32)> then you would get a fn(u32, i32). unsafety determines the unsafety of the fn signature. If you pass Safety::Unsafe in the previous example, then you would get an unsafe fn (u32, i32). It cannot convert a closure that requires unsafe.

Trait Implementations§

Source§

impl<'db> AdtDef<DbInterner<'db>> for AdtDef

Source§

fn def_id(self) -> AdtIdWrapper

Source§

fn is_struct(self) -> bool

Source§

fn is_phantom_data(self) -> bool

Source§

fn is_manually_drop(self) -> bool

Source§

fn is_packed(self) -> bool

Source§

fn is_fundamental(self) -> bool

Source§

fn struct_tail_ty( self, interner: DbInterner<'db>, ) -> Option<EarlyBinder<DbInterner<'db>, Ty<'db>>>

Returns the type of the struct tail. Read more
Source§

fn all_field_tys( self, interner: DbInterner<'db>, ) -> EarlyBinder<DbInterner<'db>, impl IntoIterator<Item = Ty<'db>>>

Source§

fn sizedness_constraint( self, interner: DbInterner<'db>, sizedness: SizedTraitKind, ) -> Option<EarlyBinder<DbInterner<'db>, Ty<'db>>>

Source§

fn destructor(self, interner: DbInterner<'db>) -> Option<AdtDestructorKind>

Source§

fn field_representing_type_info( self, _interner: DbInterner<'db>, _args: GenericArgs<'db>, ) -> Option<FieldInfo<DbInterner<'db>>>

Source§

impl<'db> BoundExistentialPredicates<DbInterner<'db>> for BoundExistentialPredicates<'db>

Source§

fn principal_def_id(self) -> Option<TraitIdWrapper>

Source§

fn principal( self, ) -> Option<Binder<DbInterner<'db>, ExistentialTraitRef<DbInterner<'db>>>>

Source§

fn auto_traits(self) -> impl IntoIterator<Item = TraitIdWrapper>

Source§

fn projection_bounds( self, ) -> impl IntoIterator<Item = Binder<DbInterner<'db>, ExistentialProjection<DbInterner<'db>>>>

Source§

impl<'db> Clause<DbInterner<'db>> for Clause<'db>

Source§

fn as_predicate(self) -> <DbInterner<'db> as Interner>::Predicate

Source§

fn instantiate_supertrait( self, cx: DbInterner<'db>, trait_ref: Binder<DbInterner<'db>, TraitRef<DbInterner<'db>>>, ) -> Self

Performs a instantiation suitable for going from a poly-trait-ref to supertraits that must hold if that poly-trait-ref holds. This is slightly different from a normal instantiation in terms of what happens with bound regions.
§

fn as_trait_clause(self) -> Option<Binder<I, TraitPredicate<I>>>

§

fn as_host_effect_clause(self) -> Option<Binder<I, HostEffectPredicate<I>>>

§

fn as_projection_clause(self) -> Option<Binder<I, ProjectionPredicate<I>>>

Source§

impl<'db> Clone for DbInterner<'db>

Source§

fn clone(&self) -> DbInterner<'db>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'db> Const<DbInterner<'db>> for Const<'db>

Source§

fn new_infer(interner: DbInterner<'db>, var: InferConst) -> Self

Source§

fn new_var(interner: DbInterner<'db>, var: ConstVid) -> Self

Source§

fn new_bound( interner: DbInterner<'db>, debruijn: DebruijnIndex, var: BoundConst<'db>, ) -> Self

Source§

fn new_anon_bound( interner: DbInterner<'db>, debruijn: DebruijnIndex, var: BoundVar, ) -> Self

Source§

fn new_canonical_bound(interner: DbInterner<'db>, var: BoundVar) -> Self

Source§

fn new_placeholder( interner: DbInterner<'db>, param: PlaceholderConst<'db>, ) -> Self

Source§

fn new_unevaluated( interner: DbInterner<'db>, uv: UnevaluatedConst<DbInterner<'db>>, ) -> Self

Source§

fn new_expr(interner: DbInterner<'db>, expr: ExprConst) -> Self

Source§

fn new_error(interner: DbInterner<'db>, _guar: ErrorGuaranteed) -> Self

§

fn new_error_with_message(interner: I, msg: impl ToString) -> Self

§

fn is_ct_var(self) -> bool

§

fn is_ct_error(self) -> bool

Source§

impl<'db> DbInternerInferExt<'db> for DbInterner<'db>

Source§

impl<'db> Debug for DbInterner<'db>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'db> DefId<DbInterner<'db>> for AnyImplId

Source§

impl<'db> DefId<DbInterner<'db>> for CallableIdWrapper

Source§

impl<'db> DefId<DbInterner<'db>> for GeneralConstIdWrapper<'db>

Source§

impl<'db> DefId<DbInterner<'db>> for SolverDefId<'db>

Source§

impl<'db> DefId<DbInterner<'db>, OpaqueTyIdWrapper<'db>> for OpaqueTyIdWrapper<'db>

Source§

impl<'db> DefId<DbInterner<'db>, SolverDefId<'db>> for AdtIdWrapper

Source§

impl<'db> DefId<DbInterner<'db>, SolverDefId<'db>> for ClosureIdWrapper<'db>

Source§

impl<'db> DefId<DbInterner<'db>, SolverDefId<'db>> for CoroutineClosureIdWrapper<'db>

Source§

impl<'db> DefId<DbInterner<'db>, SolverDefId<'db>> for CoroutineIdWrapper<'db>

Source§

impl<'db> DefId<DbInterner<'db>, SolverDefId<'db>> for FreeConstAliasId

Source§

impl<'db> DefId<DbInterner<'db>, SolverDefId<'db>> for FreeTermAliasId

Source§

impl<'db> DefId<DbInterner<'db>, SolverDefId<'db>> for FreeTyAliasId

Source§

impl<'db> DefId<DbInterner<'db>, SolverDefId<'db>> for ImplOrTraitAssocConstId

Source§

impl<'db> DefId<DbInterner<'db>, SolverDefId<'db>> for ImplOrTraitAssocTermId

Source§

impl<'db> DefId<DbInterner<'db>, SolverDefId<'db>> for ImplOrTraitAssocTyId

Source§

impl<'db> DefId<DbInterner<'db>, SolverDefId<'db>> for InherentAssocConstId

Source§

impl<'db> DefId<DbInterner<'db>, SolverDefId<'db>> for InherentAssocTermId

Source§

impl<'db> DefId<DbInterner<'db>, SolverDefId<'db>> for InherentAssocTyId

Source§

impl<'db> DefId<DbInterner<'db>, SolverDefId<'db>> for TraitAssocConstId

Source§

impl<'db> DefId<DbInterner<'db>, SolverDefId<'db>> for TraitAssocTermId

Source§

impl<'db> DefId<DbInterner<'db>, SolverDefId<'db>> for TraitAssocTyId

Source§

impl<'db> DefId<DbInterner<'db>, SolverDefId<'db>> for TraitIdWrapper

Source§

impl<'db> DefId<DbInterner<'db>, SolverDefId<'db>> for TypeAliasIdWrapper

Source§

impl<'db> Elaboratable<DbInterner<'db>> for Clause<'db>

Source§

fn predicate(&self) -> <DbInterner<'db> as Interner>::Predicate

Source§

fn child(&self, clause: <DbInterner<'db> as Interner>::Clause) -> Self

Source§

fn child_with_derived_cause( &self, clause: <DbInterner<'db> as Interner>::Clause, _span: <DbInterner<'db> as Interner>::Span, _parent_trait_pred: Binder<DbInterner<'db>, TraitPredicate<DbInterner<'db>>>, _index: usize, ) -> Self

Source§

impl<'db> Elaboratable<DbInterner<'db>> for Obligation<'db, Predicate<'db>>

For Obligation, a sub-obligation is combined with the current obligation’s param-env and cause code.

Source§

fn predicate(&self) -> Predicate<'db>

Source§

fn child(&self, clause: Clause<'db>) -> Self

Source§

fn child_with_derived_cause( &self, clause: Clause<'db>, span: Span, _parent_trait_pred: PolyTraitPredicate<'db>, _index: usize, ) -> Self

Source§

impl<'db> Elaboratable<DbInterner<'db>> for Predicate<'db>

Source§

fn predicate(&self) -> <DbInterner<'db> as Interner>::Predicate

Source§

fn child(&self, clause: <DbInterner<'db> as Interner>::Clause) -> Self

Source§

fn child_with_derived_cause( &self, clause: <DbInterner<'db> as Interner>::Clause, _span: <DbInterner<'db> as Interner>::Span, _parent_trait_pred: Binder<DbInterner<'db>, TraitPredicate<DbInterner<'db>>>, _index: usize, ) -> Self

Source§

impl<'db> ExprConst<DbInterner<'db>> for ExprConst

Source§

fn args(self) -> <DbInterner<'db> as Interner>::GenericArgs

Source§

impl<'db> FallibleTypeFolder<DbInterner<'db>> for Filler<'db>

Source§

type Error = MirLowerError<'db>

Source§

fn cx(&self) -> DbInterner<'db>

Source§

fn try_fold_ty(&mut self, ty: Ty<'db>) -> Result<Ty<'db>, Self::Error>

Source§

fn try_fold_const(&mut self, ct: Const<'db>) -> Result<Const<'db>, Self::Error>

Source§

fn try_fold_region( &mut self, region: Region<'db>, ) -> Result<Region<'db>, Self::Error>

§

fn try_fold_binder<T>( &mut self, t: Binder<I, T>, ) -> Result<Binder<I, T>, Self::Error>
where T: TypeFoldable<I>,

§

fn try_fold_predicate( &mut self, p: <I as Interner>::Predicate, ) -> Result<<I as Interner>::Predicate, Self::Error>

§

fn try_fold_clauses( &mut self, c: <I as Interner>::Clauses, ) -> Result<<I as Interner>::Clauses, Self::Error>

Source§

impl<'db> FallibleTypeFolder<DbInterner<'db>> for NormalizationFolder<'_, 'db>

Source§

type Error = Vec<NextSolverError<'db>>

Source§

fn cx(&self) -> DbInterner<'db>

Source§

fn try_fold_binder<T: TypeFoldable<DbInterner<'db>>>( &mut self, t: Binder<'db, T>, ) -> Result<Binder<'db, T>, Self::Error>

Source§

fn try_fold_ty(&mut self, ty: Ty<'db>) -> Result<Ty<'db>, Self::Error>

Source§

fn try_fold_const(&mut self, ct: Const<'db>) -> Result<Const<'db>, Self::Error>

§

fn try_fold_region( &mut self, r: <I as Interner>::Region, ) -> Result<<I as Interner>::Region, Self::Error>

§

fn try_fold_predicate( &mut self, p: <I as Interner>::Predicate, ) -> Result<<I as Interner>::Predicate, Self::Error>

§

fn try_fold_clauses( &mut self, c: <I as Interner>::Clauses, ) -> Result<<I as Interner>::Clauses, Self::Error>

Source§

impl<'db> Features<DbInterner<'db>> for Features

Source§

impl<'db> GenericArg<DbInterner<'db>> for GenericArg<'db>

§

fn as_term(&self) -> Option<<I as Interner>::Term>

§

fn as_type(&self) -> Option<<I as Interner>::Ty>

§

fn expect_ty(&self) -> <I as Interner>::Ty

§

fn as_const(&self) -> Option<<I as Interner>::Const>

§

fn expect_const(&self) -> <I as Interner>::Const

§

fn as_region(&self) -> Option<<I as Interner>::Region>

§

fn expect_region(&self) -> <I as Interner>::Region

§

fn is_non_region_infer(self) -> bool

Source§

impl<'db> GenericArgs<DbInterner<'db>> for GenericArgs<'db>

Source§

fn as_closure(self) -> ClosureArgs<DbInterner<'db>>

Source§

fn as_coroutine(self) -> CoroutineArgs<DbInterner<'db>>

Source§

fn as_coroutine_closure(self) -> CoroutineClosureArgs<DbInterner<'db>>

Source§

fn rebase_onto( self, interner: DbInterner<'db>, source_def_id: <DbInterner<'db> as Interner>::DefId, target: <DbInterner<'db> as Interner>::GenericArgs, ) -> <DbInterner<'db> as Interner>::GenericArgs

Source§

fn identity_for_item( interner: DbInterner<'db>, def_id: <DbInterner<'db> as Interner>::DefId, ) -> <DbInterner<'db> as Interner>::GenericArgs

Source§

fn extend_with_error( interner: DbInterner<'db>, def_id: <DbInterner<'db> as Interner>::DefId, original_args: &[<DbInterner<'db> as Interner>::GenericArg], ) -> <DbInterner<'db> as Interner>::GenericArgs

Source§

fn type_at(self, i: usize) -> <DbInterner<'db> as Interner>::Ty

Source§

fn region_at(self, i: usize) -> <DbInterner<'db> as Interner>::Region

Source§

fn const_at(self, i: usize) -> <DbInterner<'db> as Interner>::Const

Source§

fn split_closure_args(self) -> ClosureArgsParts<DbInterner<'db>>

Source§

fn split_coroutine_closure_args( self, ) -> CoroutineClosureArgsParts<DbInterner<'db>>

Source§

fn split_coroutine_args(self) -> CoroutineArgsParts<DbInterner<'db>>

Source§

impl<'db> GenericsOf<DbInterner<'db>> for Generics<'db>

Source§

fn count(&self) -> usize

Source§

impl<'db> HasDataLayout for DbInterner<'db>

Source§

fn data_layout(&self) -> &TargetDataLayout

Source§

impl<'db> Interner for DbInterner<'db>

Source§

type DefId = SolverDefId<'db>

Source§

type LocalDefId = SolverDefId<'db>

Source§

type LocalDefIds = SolverDefIds<'db>

Source§

type TraitId = TraitIdWrapper

Source§

type ForeignId = TypeAliasIdWrapper

Source§

type FunctionId = CallableIdWrapper

Source§

type ClosureId = ClosureIdWrapper<'db>

Source§

type CoroutineClosureId = CoroutineClosureIdWrapper<'db>

Source§

type CoroutineId = CoroutineIdWrapper<'db>

Source§

type AdtId = AdtIdWrapper

Source§

type ImplId = AnyImplId

Source§

type UnevaluatedConstId = GeneralConstIdWrapper<'db>

Source§

type TraitAssocTyId = TraitAssocTyId

Source§

type TraitAssocConstId = TraitAssocConstId

Source§

type TraitAssocTermId = TraitAssocTermId

Source§

type OpaqueTyId = OpaqueTyIdWrapper<'db>

Source§

type LocalOpaqueTyId = OpaqueTyIdWrapper<'db>

Source§

type FreeTyAliasId = FreeTyAliasId

Source§

type FreeConstAliasId = FreeConstAliasId

Source§

type FreeTermAliasId = FreeTermAliasId

Source§

type ImplOrTraitAssocTyId = ImplOrTraitAssocTyId

Source§

type ImplOrTraitAssocConstId = ImplOrTraitAssocConstId

Source§

type ImplOrTraitAssocTermId = ImplOrTraitAssocTermId

Source§

type InherentAssocTyId = InherentAssocTyId

Source§

type InherentAssocConstId = InherentAssocConstId

Source§

type InherentAssocTermId = InherentAssocTermId

Source§

type Span = Span

Source§

type GenericArgs = GenericArgs<'db>

Source§

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

Source§

type GenericArg = GenericArg<'db>

Source§

type Term = Term<'db>

Source§

type BoundVarKinds = BoundVarKinds<'db>

Source§

type PredefinedOpaques = PredefinedOpaques<'db>

Source§

type CanonicalVarKinds = CanonicalVarKinds<'db>

Source§

type ExternalConstraints = ExternalConstraints<'db>

Source§

type DepNodeIndex = DepNodeIndex

Source§

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

Source§

type Ty = Ty<'db>

Source§

type Tys = Tys<'db>

Source§

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

Source§

type ParamTy = ParamTy

Source§

type Symbol = Symbol

Source§

type ErrorGuaranteed = ErrorGuaranteed

Source§

type BoundExistentialPredicates = BoundExistentialPredicates<'db>

Source§

type AllocId = AllocId

Source§

type Pat = Pattern<'db>

Source§

type PatList = PatList<'db>

Source§

type Safety = Safety

Source§

type Const = Const<'db>

Source§

type ParamConst = ParamConst

Source§

type ValueConst = ValueConst<'db>

Source§

type ValTree = ValTree<'db>

Source§

type Consts = Consts<'db>

Source§

type ScalarInt = ScalarInt

Source§

type ExprConst = ExprConst

Source§

type Region = Region<'db>

Source§

type EarlyParamRegion = EarlyParamRegion

Source§

type LateParamRegion = LateParamRegion<'db>

Source§

type RegionAssumptions = RegionAssumptions<'db>

Source§

type ParamEnv = ParamEnv<'db>

Source§

type Predicate = Predicate<'db>

Source§

type Clause = Clause<'db>

Source§

type Clauses = Clauses<'db>

Source§

type GenericsOf = Generics<'db>

Source§

type VariancesOf = VariancesOf<'db>

Source§

type AdtDef = AdtDef

Source§

type Features = Features

Source§

type UnsizingParams = UnsizingParams

Source§

type Probe = Probe<DbInterner<'db>>

Source§

fn mk_predefined_opaques_in_body( self, data: &[(OpaqueTypeKey<'db>, Self::Ty)], ) -> Self::PredefinedOpaques

Source§

fn mk_canonical_var_kinds( self, kinds: &[CanonicalVarKind<Self>], ) -> Self::CanonicalVarKinds

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

fn canonical_param_env_cache_get_or_insert<R>( self, _param_env: Self::ParamEnv, f: impl FnOnce() -> CanonicalParamEnvCacheEntry<Self>, from_entry: impl FnOnce(&CanonicalParamEnvCacheEntry<Self>) -> R, ) -> R

Source§

fn assert_evaluation_is_concurrent(&self)

Useful for testing. If a cache entry is replaced, this should (in theory) only happen when concurrent.
Source§

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

Source§

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

Source§

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

Source§

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

Source§

fn adt_def(self, def_id: Self::AdtId) -> Self::AdtDef

Source§

fn alias_term_kind_from_def_id( self, def_id: SolverDefId<'db>, ) -> AliasTermKind<'db>

Source§

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

Source§

fn check_args_compatible( self, _def_id: Self::DefId, _args: Self::GenericArgs, ) -> bool

Source§

fn debug_assert_args_compatible( self, _def_id: Self::DefId, _args: Self::GenericArgs, )

Source§

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.
Source§

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

Source§

fn projection_parent(self, def_id: Self::TraitAssocTermId) -> Self::TraitId

Source§

fn impl_or_trait_assoc_term_parent( self, def_id: Self::ImplOrTraitAssocTermId, ) -> Self::DefId

This can be an impl, or a trait if this is a defaulted term.
Source§

fn inherent_alias_term_parent( self, def_id: Self::InherentAssocTermId, ) -> Self::ImplId

Source§

fn recursion_limit(self) -> usize

Source§

fn is_type_const(self, _def_id: Self::DefId) -> bool

Source§

fn features(self) -> Features

Source§

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

Source§

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

Source§

fn coroutine_for_closure( self, def_id: Self::CoroutineClosureId, ) -> Self::CoroutineId

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

fn impl_super_outlives( self, impl_id: Self::ImplId, ) -> EarlyBinder<Self, impl IntoIterator<Item = Self::Clause>>

This is equivalent to computing the super-predicates of the trait for this impl and filtering them to the outlives predicates. This is purely for performance.
Source§

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

Source§

fn has_target_features(self, _def_id: Self::FunctionId) -> bool

Source§

fn require_projection_lang_item( self, lang_item: SolverProjectionLangItem, ) -> Self::TraitAssocTyId

Source§

fn require_trait_lang_item( self, lang_item: SolverTraitLangItem, ) -> TraitIdWrapper

Source§

fn require_adt_lang_item(self, lang_item: SolverAdtLangItem) -> AdtIdWrapper

Source§

fn is_projection_lang_item( self, def_id: Self::TraitAssocTyId, lang_item: SolverProjectionLangItem, ) -> bool

Source§

fn is_trait_lang_item( self, def_id: Self::TraitId, lang_item: SolverTraitLangItem, ) -> bool

Source§

fn is_adt_lang_item( self, def_id: Self::AdtId, lang_item: SolverAdtLangItem, ) -> bool

Source§

fn as_projection_lang_item( self, def_id: Self::TraitAssocTyId, ) -> Option<SolverProjectionLangItem>

Source§

fn as_trait_lang_item( self, def_id: Self::TraitId, ) -> Option<SolverTraitLangItem>

Source§

fn as_adt_lang_item(self, def_id: Self::AdtId) -> Option<SolverAdtLangItem>

Source§

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

Source§

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

Source§

fn for_each_blanket_impl( self, trait_def_id: Self::TraitId, f: impl FnMut(Self::ImplId), )

Source§

fn has_item_definition(self, _def_id: Self::ImplOrTraitAssocTermId) -> bool

Source§

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

Source§

fn impl_trait_ref( self, impl_id: Self::ImplId, ) -> EarlyBinder<Self, TraitRef<Self>>

Source§

fn impl_polarity(self, impl_id: Self::ImplId) -> ImplPolarity

Source§

fn trait_is_auto(self, trait_: Self::TraitId) -> bool

Source§

fn trait_is_alias(self, trait_: Self::TraitId) -> bool

Source§

fn trait_is_dyn_compatible(self, trait_: Self::TraitId) -> bool

Source§

fn trait_is_fundamental(self, trait_: Self::TraitId) -> bool

Source§

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

Source§

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

Source§

fn is_general_coroutine(self, def_id: Self::CoroutineId) -> bool

Source§

fn coroutine_is_async(self, def_id: Self::CoroutineId) -> bool

Source§

fn coroutine_is_gen(self, def_id: Self::CoroutineId) -> bool

Source§

fn coroutine_is_async_gen(self, def_id: Self::CoroutineId) -> bool

Source§

fn unsizing_params_for_adt(self, id: Self::AdtId) -> Self::UnsizingParams

Source§

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

Source§

fn opaque_types_defined_by(self, def_id: Self::LocalDefId) -> Self::LocalDefIds

Source§

fn opaque_types_and_coroutines_defined_by( self, def_id: Self::LocalDefId, ) -> Self::LocalDefIds

Source§

fn alias_has_const_conditions(self, _def_id: Self::DefId) -> bool

Source§

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

Source§

fn fn_is_const(self, id: Self::FunctionId) -> bool

Source§

fn impl_is_const(self, _def_id: Self::ImplId) -> bool

Source§

fn opt_alias_variances( self, _kind: impl Into<AliasTermKind<'db>>, ) -> Option<Self::VariancesOf>

Source§

fn type_of_opaque_hir_typeck( self, opaque: Self::LocalOpaqueTyId, ) -> EarlyBinder<Self, Self::Ty>

Source§

fn coroutine_hidden_types( self, _def_id: Self::CoroutineId, ) -> EarlyBinder<Self, Binder<'db, CoroutineWitnessTypes<Self>>>

Source§

fn is_default_trait(self, def_id: Self::TraitId) -> bool

Source§

fn trait_is_coinductive(self, trait_: Self::TraitId) -> bool

Source§

fn trait_is_unsafe(self, trait_: Self::TraitId) -> bool

Returns true if this is an unsafe trait.
Source§

fn impl_self_is_guaranteed_unsized(self, _def_id: Self::ImplId) -> bool

Source§

fn impl_specializes( self, specializing_impl_def_id: Self::ImplId, parent_impl_def_id: Self::ImplId, ) -> bool

Source§

fn next_trait_solver_globally(self) -> bool

Source§

fn mk_probe(self, probe: Probe<Self>) -> Self::Probe

Source§

fn evaluate_root_goal_for_proof_tree_raw( self, canonical_goal: CanonicalInput<Self>, ) -> (QueryResult<Self>, Self::Probe)

Source§

fn is_sizedness_trait(self, def_id: Self::TraitId) -> bool

Source§

fn const_of_item(self, def_id: Self::DefId) -> EarlyBinder<Self, Self::Const>

Source§

fn anon_const_kind(self, _def_id: Self::DefId) -> AnonConstKind

Source§

fn alias_ty_kind_from_def_id(self, def_id: Self::DefId) -> AliasTyKind<'db>

Source§

fn closure_is_const(self, _def_id: Self::ClosureId) -> bool

Source§

fn item_name(self, _item_index: Self::DefId) -> Self::Symbol

Source§

impl<'db> IrPrint<AliasTerm<DbInterner<'db>>> for DbInterner<'db>

Source§

fn print(t: &AliasTerm<Self>, fmt: &mut Formatter<'_>) -> Result

Source§

fn print_debug(t: &AliasTerm<Self>, fmt: &mut Formatter<'_>) -> Result

Source§

impl<'db> IrPrint<AliasTy<DbInterner<'db>>> for DbInterner<'db>

Source§

fn print(t: &AliasTy<Self>, fmt: &mut Formatter<'_>) -> Result

Source§

fn print_debug(t: &AliasTy<Self>, fmt: &mut Formatter<'_>) -> Result

Source§

impl<'db> IrPrint<CoercePredicate<DbInterner<'db>>> for DbInterner<'db>

Source§

fn print(t: &CoercePredicate<Self>, fmt: &mut Formatter<'_>) -> Result

Source§

fn print_debug(t: &CoercePredicate<Self>, fmt: &mut Formatter<'_>) -> Result

Source§

impl<'db> IrPrint<ExistentialProjection<DbInterner<'db>>> for DbInterner<'db>

Source§

fn print(t: &ExistentialProjection<Self>, fmt: &mut Formatter<'_>) -> Result

Source§

fn print_debug( t: &ExistentialProjection<Self>, fmt: &mut Formatter<'_>, ) -> Result

Source§

impl<'db> IrPrint<ExistentialTraitRef<DbInterner<'db>>> for DbInterner<'db>

Source§

fn print(t: &ExistentialTraitRef<Self>, fmt: &mut Formatter<'_>) -> Result

Source§

fn print_debug(t: &ExistentialTraitRef<Self>, fmt: &mut Formatter<'_>) -> Result

Source§

impl<'db> IrPrint<FnSig<DbInterner<'db>>> for DbInterner<'db>

Source§

fn print(t: &FnSig<Self>, fmt: &mut Formatter<'_>) -> Result

Source§

fn print_debug(t: &FnSig<Self>, fmt: &mut Formatter<'_>) -> Result

Source§

impl<'db> IrPrint<HostEffectPredicate<DbInterner<'db>>> for DbInterner<'db>

Source§

fn print(t: &HostEffectPredicate<Self>, fmt: &mut Formatter<'_>) -> Result

Source§

fn print_debug(t: &HostEffectPredicate<Self>, fmt: &mut Formatter<'_>) -> Result

Source§

impl<'db> IrPrint<NormalizesTo<DbInterner<'db>>> for DbInterner<'db>

Source§

fn print(t: &NormalizesTo<Self>, fmt: &mut Formatter<'_>) -> Result

Source§

fn print_debug(t: &NormalizesTo<Self>, fmt: &mut Formatter<'_>) -> Result

Source§

impl<'db> IrPrint<PatternKind<DbInterner<'db>>> for DbInterner<'db>

Source§

fn print(t: &PatternKind<DbInterner<'db>>, fmt: &mut Formatter<'_>) -> Result

Source§

fn print_debug( t: &PatternKind<DbInterner<'db>>, fmt: &mut Formatter<'_>, ) -> Result

Source§

impl<'db> IrPrint<ProjectionPredicate<DbInterner<'db>>> for DbInterner<'db>

Source§

fn print(t: &ProjectionPredicate<Self>, fmt: &mut Formatter<'_>) -> Result

Source§

fn print_debug(t: &ProjectionPredicate<Self>, fmt: &mut Formatter<'_>) -> Result

Source§

impl<'db> IrPrint<SubtypePredicate<DbInterner<'db>>> for DbInterner<'db>

Source§

fn print(t: &SubtypePredicate<Self>, fmt: &mut Formatter<'_>) -> Result

Source§

fn print_debug(t: &SubtypePredicate<Self>, fmt: &mut Formatter<'_>) -> Result

Source§

impl<'db> IrPrint<TraitPredicate<DbInterner<'db>>> for DbInterner<'db>

Source§

fn print(t: &TraitPredicate<Self>, fmt: &mut Formatter<'_>) -> Result

Source§

fn print_debug(t: &TraitPredicate<Self>, fmt: &mut Formatter<'_>) -> Result

Source§

impl<'db> IrPrint<TraitRef<DbInterner<'db>>> for DbInterner<'db>

Source§

fn print(t: &TraitRef<Self>, fmt: &mut Formatter<'_>) -> Result

Source§

fn print_debug(t: &TraitRef<Self>, fmt: &mut Formatter<'_>) -> Result

Source§

impl<'db> ParamEnv<DbInterner<'db>> for ParamEnv<'db>

Source§

fn caller_bounds(self) -> impl SliceLike<Item = Clause<'db>>

Source§

impl<'db> Predicate<DbInterner<'db>> for Predicate<'db>

Source§

fn as_clause(self) -> Option<<DbInterner<'db> as Interner>::Clause>

§

fn as_normalizes_to(self) -> Option<Binder<I, NormalizesTo<I>>>

§

fn allow_normalization(self) -> bool

Source§

impl<'db> Region<DbInterner<'db>> for Region<'db>

Source§

fn new_bound( interner: DbInterner<'db>, debruijn: DebruijnIndex, var: BoundRegion<'db>, ) -> Self

Source§

fn new_anon_bound( interner: DbInterner<'db>, debruijn: DebruijnIndex, var: BoundVar, ) -> Self

Source§

fn new_canonical_bound(interner: DbInterner<'db>, var: BoundVar) -> Self

Source§

fn new_static(interner: DbInterner<'db>) -> Self

Source§

fn new_placeholder( interner: DbInterner<'db>, var: PlaceholderRegion<'db>, ) -> Self

§

fn is_bound(self) -> bool

Source§

impl<'db> Relate<DbInterner<'db>> for BoundExistentialPredicates<'db>

Source§

fn relate<R: TypeRelation<DbInterner<'db>>>( relation: &mut R, a: Self, b: Self, ) -> RelateResult<DbInterner<'db>, Self>

Source§

impl<'db> Relate<DbInterner<'db>> for Const<'db>

Source§

fn relate<R: TypeRelation<DbInterner<'db>>>( relation: &mut R, a: Self, b: Self, ) -> RelateResult<DbInterner<'db>, Self>

Source§

impl<'db> Relate<DbInterner<'db>> for ExprConst

Source§

fn relate<R: TypeRelation<DbInterner<'db>>>( _relation: &mut R, a: Self, b: Self, ) -> RelateResult<DbInterner<'db>, Self>

Source§

impl<'db> Relate<DbInterner<'db>> for ExternAbi

Source§

fn relate<R: TypeRelation<DbInterner<'db>>>( _relation: &mut R, a: Self, b: Self, ) -> RelateResult<DbInterner<'db>, Self>

Source§

impl<'db> Relate<DbInterner<'db>> for GenericArg<'db>

Source§

fn relate<R: TypeRelation<DbInterner<'db>>>( relation: &mut R, a: Self, b: Self, ) -> RelateResult<DbInterner<'db>, Self>

Source§

impl<'db> Relate<DbInterner<'db>> for GenericArgs<'db>

Source§

fn relate<R: TypeRelation<DbInterner<'db>>>( relation: &mut R, a: Self, b: Self, ) -> RelateResult<DbInterner<'db>, Self>

Source§

impl<'db> Relate<DbInterner<'db>> for Pattern<'db>

Source§

fn relate<R: TypeRelation<DbInterner<'db>>>( relation: &mut R, a: Self, b: Self, ) -> RelateResult<DbInterner<'db>, Self>

Source§

impl<'db> Relate<DbInterner<'db>> for Region<'db>

Source§

fn relate<R: TypeRelation<DbInterner<'db>>>( relation: &mut R, a: Self, b: Self, ) -> RelateResult<DbInterner<'db>, Self>

Source§

impl<'db> Relate<DbInterner<'db>> for Safety

Source§

fn relate<R: TypeRelation<DbInterner<'db>>>( _relation: &mut R, a: Self, b: Self, ) -> RelateResult<DbInterner<'db>, Self>

Source§

impl<'db> Relate<DbInterner<'db>> for Term<'db>

Source§

fn relate<R: TypeRelation<DbInterner<'db>>>( relation: &mut R, a: Self, b: Self, ) -> RelateResult<DbInterner<'db>, Self>

Source§

impl<'db> Relate<DbInterner<'db>> for Ty<'db>

Source§

fn relate<R: TypeRelation<DbInterner<'db>>>( relation: &mut R, a: Self, b: Self, ) -> RelateResult<DbInterner<'db>, Self>

Source§

impl<'db> Safety<DbInterner<'db>> for Safety

Source§

fn safe() -> Self

The safe safety mode.
Source§

fn is_safe(self) -> bool

Is the safety mode Safe?
Source§

fn prefix_str(self) -> &'static str

The string prefix for this safety mode.
Source§

fn unsafe_mode() -> Self

The unsafe safety mode.
Source§

impl<'db> Span<DbInterner<'db>> for Span

Source§

fn dummy() -> Self

Source§

impl<'db> Symbol<DbInterner<'db>> for Symbol

Source§

impl<'db> Term<DbInterner<'db>> for Term<'db>

§

fn as_type(&self) -> Option<<I as Interner>::Ty>

§

fn expect_ty(&self) -> <I as Interner>::Ty

§

fn as_const(&self) -> Option<<I as Interner>::Const>

§

fn expect_const(&self) -> <I as Interner>::Const

§

fn is_infer(self) -> bool

§

fn is_error(self) -> bool

§

fn to_alias_term(self, interner: I) -> Option<AliasTerm<I>>

Source§

impl<'db> Ty<DbInterner<'db>> for Ty<'db>

Source§

fn new_unit(interner: DbInterner<'db>) -> Self

Source§

fn new_bool(interner: DbInterner<'db>) -> Self

Source§

fn new_u8(interner: DbInterner<'db>) -> Self

Source§

fn new_usize(interner: DbInterner<'db>) -> Self

Source§

fn new_infer(interner: DbInterner<'db>, var: InferTy) -> Self

Source§

fn new_var(interner: DbInterner<'db>, var: TyVid) -> Self

Source§

fn new_param(interner: DbInterner<'db>, param: ParamTy) -> Self

Source§

fn new_placeholder( interner: DbInterner<'db>, param: PlaceholderType<'db>, ) -> Self

Source§

fn new_bound( interner: DbInterner<'db>, debruijn: DebruijnIndex, var: BoundTy<'db>, ) -> Self

Source§

fn new_anon_bound( interner: DbInterner<'db>, debruijn: DebruijnIndex, var: BoundVar, ) -> Self

Source§

fn new_canonical_bound(interner: DbInterner<'db>, var: BoundVar) -> Self

Source§

fn new_alias(interner: DbInterner<'db>, alias_ty: AliasTy<'db>) -> Self

Source§

fn new_error(interner: DbInterner<'db>, guar: ErrorGuaranteed) -> Self

Source§

fn new_adt( interner: DbInterner<'db>, adt_def: <DbInterner<'db> as Interner>::AdtDef, args: GenericArgs<'db>, ) -> Self

Source§

fn new_foreign(interner: DbInterner<'db>, def_id: TypeAliasIdWrapper) -> Self

Source§

fn new_dynamic( interner: DbInterner<'db>, preds: <DbInterner<'db> as Interner>::BoundExistentialPredicates, region: <DbInterner<'db> as Interner>::Region, ) -> Self

Source§

fn new_coroutine( interner: DbInterner<'db>, def_id: CoroutineIdWrapper<'db>, args: <DbInterner<'db> as Interner>::GenericArgs, ) -> Self

Source§

fn new_coroutine_closure( interner: DbInterner<'db>, def_id: CoroutineClosureIdWrapper<'db>, args: <DbInterner<'db> as Interner>::GenericArgs, ) -> Self

Source§

fn new_closure( interner: DbInterner<'db>, def_id: ClosureIdWrapper<'db>, args: <DbInterner<'db> as Interner>::GenericArgs, ) -> Self

Source§

fn new_coroutine_witness( interner: DbInterner<'db>, def_id: CoroutineIdWrapper<'db>, args: <DbInterner<'db> as Interner>::GenericArgs, ) -> Self

Source§

fn new_coroutine_witness_for_coroutine( interner: DbInterner<'db>, def_id: CoroutineIdWrapper<'db>, coroutine_args: <DbInterner<'db> as Interner>::GenericArgs, ) -> Self

Source§

fn new_ptr(interner: DbInterner<'db>, ty: Self, mutbl: Mutability) -> Self

Source§

fn new_ref( interner: DbInterner<'db>, region: <DbInterner<'db> as Interner>::Region, ty: Self, mutbl: Mutability, ) -> Self

Source§

fn new_array_with_const_len( interner: DbInterner<'db>, ty: Self, len: <DbInterner<'db> as Interner>::Const, ) -> Self

Source§

fn new_slice(interner: DbInterner<'db>, ty: Self) -> Self

Source§

fn new_tup( interner: DbInterner<'db>, tys: &[<DbInterner<'db> as Interner>::Ty], ) -> Self

Source§

fn new_tup_from_iter<It, T>(interner: DbInterner<'db>, iter: It) -> T::Output
where It: Iterator<Item = T>, T: CollectAndApply<Self, Self>,

Source§

fn new_fn_def( interner: DbInterner<'db>, def_id: CallableIdWrapper, args: <DbInterner<'db> as Interner>::GenericArgs, ) -> Self

Source§

fn new_fn_ptr( interner: DbInterner<'db>, sig: Binder<DbInterner<'db>, FnSig<DbInterner<'db>>>, ) -> Self

Source§

fn new_pat( interner: DbInterner<'db>, ty: Self, pat: <DbInterner<'db> as Interner>::Pat, ) -> Self

Source§

fn new_unsafe_binder( interner: DbInterner<'db>, ty: Binder<DbInterner<'db>, <DbInterner<'db> as Interner>::Ty>, ) -> Self

Source§

fn tuple_fields(self) -> <DbInterner<'db> as Interner>::Tys

Source§

fn to_opt_closure_kind(self) -> Option<ClosureKind>

Source§

fn from_closure_kind(interner: DbInterner<'db>, kind: ClosureKind) -> Self

Source§

fn from_coroutine_closure_kind( interner: DbInterner<'db>, kind: ClosureKind, ) -> Self

Source§

fn has_unsafe_fields(self) -> bool

Checks whether this type is an ADT that has unsafe fields.
Source§

fn discriminant_ty(self, interner: DbInterner<'db>) -> Ty<'db>

§

fn new_projection_from_args( interner: I, def_id: <I as Interner>::TraitAssocTyId, args: <I as Interner>::GenericArgs, ) -> Self

§

fn new_projection( interner: I, def_id: <I as Interner>::TraitAssocTyId, args: impl IntoIterator>, ) -> Self
where <impl IntoIterator as IntoIterator>::Item: Into<<I as Interner>::GenericArg>,

§

fn is_ty_var(self) -> bool

§

fn is_ty_error(self) -> bool

§

fn is_floating_point(self) -> bool

§

fn is_integral(self) -> bool

§

fn is_fn_ptr(self) -> bool

§

fn fn_sig(self, interner: I) -> Binder<I, FnSig<I>>

§

fn is_known_rigid(self) -> bool

§

fn is_guaranteed_unsized_raw(self) -> bool

Source§

impl<'db> TypeFoldable<DbInterner<'db>> for AdtDef

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, _: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, _: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for AdtIdWrapper

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, _: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, _: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for AnyImplId

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, _: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, _: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for BoundExistentialPredicates<'db>

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, folder: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, folder: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for CallableIdWrapper

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, _: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, _: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for Clause<'db>

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, folder: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, folder: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for Clauses<'db>

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, folder: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, folder: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for ClosureIdWrapper<'_>

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, _: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, _: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for Const<'db>

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, folder: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, folder: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for Consts<'db>

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, folder: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, folder: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for CoroutineClosureIdWrapper<'_>

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, _: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, _: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for CoroutineIdWrapper<'_>

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, _: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, _: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for EarlyParamRegion

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, _: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, _: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for ErrorGuaranteed

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, _folder: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, _folder: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for ExprConst

Source§

fn try_fold_with<__F: FallibleTypeFolder<DbInterner<'db>>>( self, __folder: &mut __F, ) -> Result<Self, __F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<__F: TypeFolder<DbInterner<'db>>>(self, __folder: &mut __F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for ExternAbi

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, _folder: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, _folder: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for ExternalConstraints<'db>

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, folder: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, folder: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for FreeConstAliasId

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, _: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, _: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for FreeTermAliasId

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, _: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, _: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for FreeTyAliasId

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, _: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, _: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for GeneralConstIdWrapper<'_>

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, _: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, _: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for GenericArg<'db>

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, folder: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, folder: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for GenericArgs<'db>

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, folder: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, folder: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for ImplOrTraitAssocConstId

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, _: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, _: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for ImplOrTraitAssocTermId

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, _: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, _: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for ImplOrTraitAssocTyId

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, _: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, _: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db, N> TypeFoldable<DbInterner<'db>> for ImplSource<'db, N>
where N: TypeFoldable<DbInterner<'db>>,

Source§

fn try_fold_with<__F: FallibleTypeFolder<DbInterner<'db>>>( self, __folder: &mut __F, ) -> Result<Self, __F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<__F: TypeFolder<DbInterner<'db>>>(self, __folder: &mut __F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db, N> TypeFoldable<DbInterner<'db>> for ImplSourceUserDefinedData<'db, N>
where N: TypeFoldable<DbInterner<'db>>,

Source§

fn try_fold_with<__F: FallibleTypeFolder<DbInterner<'db>>>( self, __folder: &mut __F, ) -> Result<Self, __F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<__F: TypeFolder<DbInterner<'db>>>(self, __folder: &mut __F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for InferenceDiagnostic

Source§

fn try_fold_with<__F: FallibleTypeFolder<DbInterner<'db>>>( self, __folder: &mut __F, ) -> Result<Self, __F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<__F: TypeFolder<DbInterner<'db>>>(self, __folder: &mut __F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for InherentAssocConstId

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, _: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, _: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for InherentAssocTermId

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, _: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, _: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for InherentAssocTyId

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, _: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, _: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db, T> TypeFoldable<DbInterner<'db>> for Obligation<'db, T>
where T: TypeFoldable<DbInterner<'db>>,

Source§

fn try_fold_with<__F: FallibleTypeFolder<DbInterner<'db>>>( self, __folder: &mut __F, ) -> Result<Self, __F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<__F: TypeFolder<DbInterner<'db>>>(self, __folder: &mut __F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for ObligationCause

Source§

fn try_fold_with<__F: FallibleTypeFolder<DbInterner<'db>>>( self, __folder: &mut __F, ) -> Result<Self, __F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<__F: TypeFolder<DbInterner<'db>>>(self, __folder: &mut __F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for OpaqueHiddenType<'db>

Source§

fn try_fold_with<__F: FallibleTypeFolder<DbInterner<'db>>>( self, __folder: &mut __F, ) -> Result<Self, __F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<__F: TypeFolder<DbInterner<'db>>>(self, __folder: &mut __F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for OpaqueTyIdWrapper<'_>

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, _: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, _: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for ParamConst

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, _: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, _: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for ParamEnv<'db>

Source§

fn try_fold_with<__F: FallibleTypeFolder<DbInterner<'db>>>( self, __folder: &mut __F, ) -> Result<Self, __F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<__F: TypeFolder<DbInterner<'db>>>(self, __folder: &mut __F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for ParamTy

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, _: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, _: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for PatList<'db>

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, folder: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, folder: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for Pattern<'db>

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, folder: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, folder: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for Place

Source§

fn try_fold_with<__F: FallibleTypeFolder<DbInterner<'db>>>( self, __folder: &mut __F, ) -> Result<Self, __F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<__F: TypeFolder<DbInterner<'db>>>(self, __folder: &mut __F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for PlaceTy<'db>

Source§

fn try_fold_with<__F: FallibleTypeFolder<DbInterner<'db>>>( self, __folder: &mut __F, ) -> Result<Self, __F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<__F: TypeFolder<DbInterner<'db>>>(self, __folder: &mut __F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for PredefinedOpaques<'db>

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, folder: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, folder: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for Predicate<'db>

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, folder: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, folder: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for Projection

Source§

fn try_fold_with<__F: FallibleTypeFolder<DbInterner<'db>>>( self, __folder: &mut __F, ) -> Result<Self, __F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<__F: TypeFolder<DbInterner<'db>>>(self, __folder: &mut __F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for QueryRegionConstraints<'db>

Source§

fn try_fold_with<__F: FallibleTypeFolder<DbInterner<'db>>>( self, __folder: &mut __F, ) -> Result<Self, __F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<__F: TypeFolder<DbInterner<'db>>>(self, __folder: &mut __F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db, R> TypeFoldable<DbInterner<'db>> for QueryResponse<'db, R>
where R: TypeFoldable<DbInterner<'db>>,

Source§

fn try_fold_with<__F: FallibleTypeFolder<DbInterner<'db>>>( self, __folder: &mut __F, ) -> Result<Self, __F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<__F: TypeFolder<DbInterner<'db>>>(self, __folder: &mut __F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for Region<'db>

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, folder: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, folder: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for RegionAssumptions<'db>

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, folder: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, folder: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for Safety

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, _: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, _: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for ScalarInt

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, _: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, _: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for SolverDefId<'_>

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, _: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, _: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for SolverDefIds<'db>

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, folder: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, folder: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for SolverDiagnostic

Source§

fn try_fold_with<__F: FallibleTypeFolder<DbInterner<'db>>>( self, __folder: &mut __F, ) -> Result<Self, __F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<__F: TypeFolder<DbInterner<'db>>>(self, __folder: &mut __F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for SolverDiagnosticKind

Source§

fn try_fold_with<__F: FallibleTypeFolder<DbInterner<'db>>>( self, __folder: &mut __F, ) -> Result<Self, __F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<__F: TypeFolder<DbInterner<'db>>>(self, __folder: &mut __F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for Span

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, _: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, _: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for StoredGenericArg

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, folder: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, folder: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for StoredGenericArgs

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, folder: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, folder: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for StoredTraitPredicate

Source§

fn try_fold_with<__F: FallibleTypeFolder<DbInterner<'db>>>( self, __folder: &mut __F, ) -> Result<Self, __F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<__F: TypeFolder<DbInterner<'db>>>(self, __folder: &mut __F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for StoredTraitRef

Source§

fn try_fold_with<__F: FallibleTypeFolder<DbInterner<'db>>>( self, __folder: &mut __F, ) -> Result<Self, __F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<__F: TypeFolder<DbInterner<'db>>>(self, __folder: &mut __F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for StoredTy

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, folder: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, folder: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for Term<'db>

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, folder: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, folder: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for TraitAssocConstId

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, _: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, _: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for TraitAssocTermId

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, _: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, _: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for TraitAssocTyId

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, _: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, _: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for TraitIdWrapper

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, _: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, _: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for Ty<'db>

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, folder: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, folder: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for TypeAliasIdWrapper

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, _: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, _: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for Tys<'db>

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, folder: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, folder: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for UpvarArgs<'db>

Source§

fn try_fold_with<__F: FallibleTypeFolder<DbInterner<'db>>>( self, __folder: &mut __F, ) -> Result<Self, __F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<__F: TypeFolder<DbInterner<'db>>>(self, __folder: &mut __F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for ValTree<'db>

Source§

fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, folder: &mut F, ) -> Result<Self, F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<F: TypeFolder<DbInterner<'db>>>(self, folder: &mut F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db> TypeFoldable<DbInterner<'db>> for ValueConst<'db>

Source§

fn try_fold_with<__F: FallibleTypeFolder<DbInterner<'db>>>( self, __folder: &mut __F, ) -> Result<Self, __F::Error>

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
Source§

fn fold_with<__F: TypeFolder<DbInterner<'db>>>(self, __folder: &mut __F) -> Self

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
Source§

impl<'db, F, G, H> TypeFolder<DbInterner<'db>> for BottomUpFolder<'db, F, G, H>
where F: FnMut(Ty<'db>) -> Ty<'db>, G: FnMut(Region<'db>) -> Region<'db>, H: FnMut(Const<'db>) -> Const<'db>,

Source§

fn cx(&self) -> DbInterner<'db>

Source§

fn fold_ty(&mut self, ty: Ty<'db>) -> Ty<'db>

Source§

fn fold_region(&mut self, r: Region<'db>) -> Region<'db>

Source§

fn fold_const(&mut self, ct: Const<'db>) -> Const<'db>

§

fn fold_binder<T>(&mut self, t: Binder<I, T>) -> Binder<I, T>
where T: TypeFoldable<I>,

§

fn fold_predicate( &mut self, p: <I as Interner>::Predicate, ) -> <I as Interner>::Predicate

§

fn fold_clauses( &mut self, c: <I as Interner>::Clauses, ) -> <I as Interner>::Clauses

Source§

impl<'db, D> TypeFolder<DbInterner<'db>> for BoundVarReplacer<'db, D>

Source§

fn cx(&self) -> DbInterner<'db>

Source§

fn fold_binder<T: TypeFoldable<DbInterner<'db>>>( &mut self, t: Binder<'db, T>, ) -> Binder<'db, T>

Source§

fn fold_ty(&mut self, t: Ty<'db>) -> Ty<'db>

Source§

fn fold_region(&mut self, r: Region<'db>) -> Region<'db>

Source§

fn fold_const(&mut self, ct: Const<'db>) -> Const<'db>

Source§

fn fold_predicate(&mut self, p: Predicate<'db>) -> Predicate<'db>

§

fn fold_clauses( &mut self, c: <I as Interner>::Clauses, ) -> <I as Interner>::Clauses

Source§

impl<'db, 'a> TypeFolder<DbInterner<'db>> for CanonicalInstantiator<'db, 'a>

Source§

fn cx(&self) -> DbInterner<'db>

Source§

fn fold_ty(&mut self, t: Ty<'db>) -> Ty<'db>

Source§

fn fold_region(&mut self, r: Region<'db>) -> Region<'db>

Source§

fn fold_const(&mut self, ct: Const<'db>) -> Const<'db>

Source§

fn fold_predicate(&mut self, p: Predicate<'db>) -> Predicate<'db>

Source§

fn fold_clauses(&mut self, c: Clauses<'db>) -> Clauses<'db>

§

fn fold_binder<T>(&mut self, t: Binder<I, T>) -> Binder<I, T>
where T: TypeFoldable<I>,

Source§

impl<'cx, 'db> TypeFolder<DbInterner<'db>> for Canonicalizer<'cx, 'db>

Source§

fn cx(&self) -> DbInterner<'db>

Source§

fn fold_binder<T>(&mut self, t: Binder<'db, T>) -> Binder<'db, T>
where T: TypeFoldable<DbInterner<'db>>,

Source§

fn fold_region(&mut self, r: Region<'db>) -> Region<'db>

Source§

fn fold_ty(&mut self, t: Ty<'db>) -> Ty<'db>

Source§

fn fold_const(&mut self, ct: Const<'db>) -> Const<'db>

§

fn fold_predicate( &mut self, p: <I as Interner>::Predicate, ) -> <I as Interner>::Predicate

§

fn fold_clauses( &mut self, c: <I as Interner>::Clauses, ) -> <I as Interner>::Clauses

Source§

impl<'db> TypeFolder<DbInterner<'db>> for DeeplyNormalizeForDiagnosticsFolder<'_, 'db>

Source§

fn cx(&self) -> DbInterner<'db>

Source§

fn fold_ty(&mut self, ty: Ty<'db>) -> Ty<'db>

Source§

fn fold_const(&mut self, ct: Const<'db>) -> Const<'db>

§

fn fold_binder<T>(&mut self, t: Binder<I, T>) -> Binder<I, T>
where T: TypeFoldable<I>,

§

fn fold_region(&mut self, r: <I as Interner>::Region) -> <I as Interner>::Region

§

fn fold_predicate( &mut self, p: <I as Interner>::Predicate, ) -> <I as Interner>::Predicate

§

fn fold_clauses( &mut self, c: <I as Interner>::Clauses, ) -> <I as Interner>::Clauses

Source§

impl<'db> TypeFolder<DbInterner<'db>> for DiagnoseInferVars<'_, 'db>

Source§

fn cx(&self) -> DbInterner<'db>

Source§

fn fold_ty(&mut self, t: Ty<'db>) -> Ty<'db>

Source§

fn fold_const(&mut self, c: Const<'db>) -> Const<'db>

Source§

fn fold_predicate(&mut self, p: Predicate<'db>) -> Predicate<'db>

Source§

fn fold_region(&mut self, r: Region<'db>) -> Region<'db>

§

fn fold_binder<T>(&mut self, t: Binder<I, T>) -> Binder<I, T>
where T: TypeFoldable<I>,

§

fn fold_clauses( &mut self, c: <I as Interner>::Clauses, ) -> <I as Interner>::Clauses

Source§

impl<'a, 'db> TypeFolder<DbInterner<'db>> for InferenceFudger<'a, 'db>

Source§

fn cx(&self) -> DbInterner<'db>

Source§

fn fold_ty(&mut self, ty: Ty<'db>) -> Ty<'db>

Source§

fn fold_region(&mut self, r: Region<'db>) -> Region<'db>

Source§

fn fold_const(&mut self, ct: Const<'db>) -> Const<'db>

§

fn fold_binder<T>(&mut self, t: Binder<I, T>) -> Binder<I, T>
where T: TypeFoldable<I>,

§

fn fold_predicate( &mut self, p: <I as Interner>::Predicate, ) -> <I as Interner>::Predicate

§

fn fold_clauses( &mut self, c: <I as Interner>::Clauses, ) -> <I as Interner>::Clauses

Source§

impl<'a, 'db> TypeFolder<DbInterner<'db>> for OpportunisticVarResolver<'a, 'db>

Source§

fn cx(&self) -> DbInterner<'db>

Source§

fn fold_ty(&mut self, t: Ty<'db>) -> Ty<'db>

Source§

fn fold_const(&mut self, ct: Const<'db>) -> Const<'db>

§

fn fold_binder<T>(&mut self, t: Binder<I, T>) -> Binder<I, T>
where T: TypeFoldable<I>,

§

fn fold_region(&mut self, r: <I as Interner>::Region) -> <I as Interner>::Region

§

fn fold_predicate( &mut self, p: <I as Interner>::Predicate, ) -> <I as Interner>::Predicate

§

fn fold_clauses( &mut self, c: <I as Interner>::Clauses, ) -> <I as Interner>::Clauses

Source§

impl<'db> TypeFolder<DbInterner<'db>> for PlaceholderReplacer<'_, 'db>

Source§

fn cx(&self) -> DbInterner<'db>

Source§

fn fold_binder<T: TypeFoldable<DbInterner<'db>>>( &mut self, t: Binder<'db, T>, ) -> Binder<'db, T>

Source§

fn fold_region(&mut self, r0: Region<'db>) -> Region<'db>

Source§

fn fold_ty(&mut self, ty: Ty<'db>) -> Ty<'db>

Source§

fn fold_const(&mut self, ct: Const<'db>) -> Const<'db>

§

fn fold_predicate( &mut self, p: <I as Interner>::Predicate, ) -> <I as Interner>::Predicate

§

fn fold_clauses( &mut self, c: <I as Interner>::Clauses, ) -> <I as Interner>::Clauses

Source§

impl<'db> TypeFolder<DbInterner<'db>> for ReplaceInferWithError<'db>

Source§

fn cx(&self) -> DbInterner<'db>

Source§

fn fold_ty(&mut self, t: Ty<'db>) -> Ty<'db>

Source§

fn fold_const(&mut self, c: Const<'db>) -> Const<'db>

Source§

fn fold_region(&mut self, r: Region<'db>) -> Region<'db>

§

fn fold_binder<T>(&mut self, t: Binder<I, T>) -> Binder<I, T>
where T: TypeFoldable<I>,

§

fn fold_predicate( &mut self, p: <I as Interner>::Predicate, ) -> <I as Interner>::Predicate

§

fn fold_clauses( &mut self, c: <I as Interner>::Clauses, ) -> <I as Interner>::Clauses

Source§

impl<'db> TypeFolder<DbInterner<'db>> for Resolver<'_, 'db>

Source§

fn cx(&self) -> DbInterner<'db>

Source§

fn fold_region(&mut self, r: Region<'db>) -> Region<'db>

Source§

fn fold_ty(&mut self, ty: Ty<'db>) -> Ty<'db>

Source§

fn fold_const(&mut self, ct: Const<'db>) -> Const<'db>

Source§

fn fold_predicate(&mut self, predicate: Predicate<'db>) -> Predicate<'db>

§

fn fold_binder<T>(&mut self, t: Binder<I, T>) -> Binder<I, T>
where T: TypeFoldable<I>,

§

fn fold_clauses( &mut self, c: <I as Interner>::Clauses, ) -> <I as Interner>::Clauses

Source§

impl<'db> TypeRelation<DbInterner<'db>> for Generalizer<'_, 'db>

Source§

fn cx(&self) -> DbInterner<'db>

Source§

fn relate_ty_args( &mut self, a_ty: Ty<'db>, _: Ty<'db>, def_id: SolverDefId<'db>, a_args: GenericArgs<'db>, b_args: GenericArgs<'db>, mk: impl FnOnce(GenericArgs<'db>) -> Ty<'db>, ) -> RelateResult<'db, Ty<'db>>

Source§

fn relate_with_variance<T: Relate<DbInterner<'db>>>( &mut self, variance: Variance, _info: VarianceDiagInfo<DbInterner<'db>>, a: T, b: T, ) -> RelateResult<'db, T>

Switch variance for the purpose of relating a and b.
Source§

fn tys(&mut self, t: Ty<'db>, t2: Ty<'db>) -> RelateResult<'db, Ty<'db>>

Source§

fn regions( &mut self, r: Region<'db>, r2: Region<'db>, ) -> RelateResult<'db, Region<'db>>

Source§

fn consts( &mut self, c: Const<'db>, c2: Const<'db>, ) -> RelateResult<'db, Const<'db>>

Source§

fn binders<T>( &mut self, a: Binder<'db, T>, _: Binder<'db, T>, ) -> RelateResult<'db, Binder<'db, T>>
where T: Relate<DbInterner<'db>>,

§

fn relate<T>(&mut self, a: T, b: T) -> Result<T, TypeError<I>>
where T: Relate<I>,

Generic relation routine suitable for most anything.
Source§

impl<'db> TypeRelation<DbInterner<'db>> for LatticeOp<'_, 'db>

Source§

fn tys(&mut self, a: Ty<'db>, b: Ty<'db>) -> RelateResult<'db, Ty<'db>>

Relates two types using a given lattice.

Source§

fn cx(&self) -> DbInterner<'db>

Source§

fn relate_ty_args( &mut self, a_ty: Ty<'db>, b_ty: Ty<'db>, def_id: SolverDefId<'db>, a_args: GenericArgs<'db>, b_args: GenericArgs<'db>, mk: impl FnOnce(GenericArgs<'db>) -> Ty<'db>, ) -> RelateResult<'db, Ty<'db>>

Source§

fn relate_with_variance<T: Relate<DbInterner<'db>>>( &mut self, variance: Variance, _info: VarianceDiagInfo<DbInterner<'db>>, a: T, b: T, ) -> RelateResult<'db, T>

Switch variance for the purpose of relating a and b.
Source§

fn regions( &mut self, a: Region<'db>, b: Region<'db>, ) -> RelateResult<'db, Region<'db>>

Source§

fn consts( &mut self, a: Const<'db>, b: Const<'db>, ) -> RelateResult<'db, Const<'db>>

Source§

fn binders<T>( &mut self, a: Binder<'db, T>, b: Binder<'db, T>, ) -> RelateResult<'db, Binder<'db, T>>
where T: Relate<DbInterner<'db>>,

§

fn relate<T>(&mut self, a: T, b: T) -> Result<T, TypeError<I>>
where T: Relate<I>,

Generic relation routine suitable for most anything.
Source§

impl<'db> TypeSuperFoldable<DbInterner<'db>> for Clauses<'db>

Source§

fn try_super_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, folder: &mut F, ) -> Result<Self, F::Error>

Provides a default fold for a recursive type of interest. This should only be called within TypeFolder methods, when a non-custom traversal is desired for the value of the type of interest passed to that method. For example, in MyFolder::try_fold_ty(ty), it is valid to call ty.try_super_fold_with(self), but any other folding should be done with xyz.try_fold_with(self).
Source§

fn super_fold_with<F: TypeFolder<DbInterner<'db>>>(self, folder: &mut F) -> Self

A convenient alternative to try_super_fold_with for use with infallible folders. Do not override this method, to ensure coherence with try_super_fold_with.
Source§

impl<'db> TypeSuperFoldable<DbInterner<'db>> for Const<'db>

Source§

fn try_super_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, folder: &mut F, ) -> Result<Self, F::Error>

Provides a default fold for a recursive type of interest. This should only be called within TypeFolder methods, when a non-custom traversal is desired for the value of the type of interest passed to that method. For example, in MyFolder::try_fold_ty(ty), it is valid to call ty.try_super_fold_with(self), but any other folding should be done with xyz.try_fold_with(self).
Source§

fn super_fold_with<F: TypeFolder<DbInterner<'db>>>(self, folder: &mut F) -> Self

A convenient alternative to try_super_fold_with for use with infallible folders. Do not override this method, to ensure coherence with try_super_fold_with.
Source§

impl<'db> TypeSuperFoldable<DbInterner<'db>> for Predicate<'db>

Source§

fn try_super_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, folder: &mut F, ) -> Result<Self, F::Error>

Provides a default fold for a recursive type of interest. This should only be called within TypeFolder methods, when a non-custom traversal is desired for the value of the type of interest passed to that method. For example, in MyFolder::try_fold_ty(ty), it is valid to call ty.try_super_fold_with(self), but any other folding should be done with xyz.try_fold_with(self).
Source§

fn super_fold_with<F: TypeFolder<DbInterner<'db>>>(self, folder: &mut F) -> Self

A convenient alternative to try_super_fold_with for use with infallible folders. Do not override this method, to ensure coherence with try_super_fold_with.
Source§

impl<'db> TypeSuperFoldable<DbInterner<'db>> for Ty<'db>

Source§

fn try_super_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, folder: &mut F, ) -> Result<Self, F::Error>

Provides a default fold for a recursive type of interest. This should only be called within TypeFolder methods, when a non-custom traversal is desired for the value of the type of interest passed to that method. For example, in MyFolder::try_fold_ty(ty), it is valid to call ty.try_super_fold_with(self), but any other folding should be done with xyz.try_fold_with(self).
Source§

fn super_fold_with<F: TypeFolder<DbInterner<'db>>>(self, folder: &mut F) -> Self

A convenient alternative to try_super_fold_with for use with infallible folders. Do not override this method, to ensure coherence with try_super_fold_with.
Source§

impl<'db> TypeSuperVisitable<DbInterner<'db>> for Clauses<'db>

Source§

fn super_visit_with<V: TypeVisitor<DbInterner<'db>>>( &self, visitor: &mut V, ) -> V::Result

Provides a default visit for a recursive type of interest. This should only be called within TypeVisitor methods, when a non-custom traversal is desired for the value of the type of interest passed to that method. For example, in MyVisitor::visit_ty(ty), it is valid to call ty.super_visit_with(self), but any other visiting should be done with xyz.visit_with(self).
Source§

impl<'db> TypeSuperVisitable<DbInterner<'db>> for Const<'db>

Source§

fn super_visit_with<V: TypeVisitor<DbInterner<'db>>>( &self, visitor: &mut V, ) -> V::Result

Provides a default visit for a recursive type of interest. This should only be called within TypeVisitor methods, when a non-custom traversal is desired for the value of the type of interest passed to that method. For example, in MyVisitor::visit_ty(ty), it is valid to call ty.super_visit_with(self), but any other visiting should be done with xyz.visit_with(self).
Source§

impl<'db> TypeSuperVisitable<DbInterner<'db>> for Predicate<'db>

Source§

fn super_visit_with<V: TypeVisitor<DbInterner<'db>>>( &self, visitor: &mut V, ) -> V::Result

Provides a default visit for a recursive type of interest. This should only be called within TypeVisitor methods, when a non-custom traversal is desired for the value of the type of interest passed to that method. For example, in MyVisitor::visit_ty(ty), it is valid to call ty.super_visit_with(self), but any other visiting should be done with xyz.visit_with(self).
Source§

impl<'db> TypeSuperVisitable<DbInterner<'db>> for Ty<'db>

Source§

fn super_visit_with<V: TypeVisitor<DbInterner<'db>>>( &self, visitor: &mut V, ) -> V::Result

Provides a default visit for a recursive type of interest. This should only be called within TypeVisitor methods, when a non-custom traversal is desired for the value of the type of interest passed to that method. For example, in MyVisitor::visit_ty(ty), it is valid to call ty.super_visit_with(self), but any other visiting should be done with xyz.visit_with(self).
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for AdtDef

Source§

fn visit_with<F: TypeVisitor<DbInterner<'db>>>(&self, _: &mut F) -> F::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for AdtIdWrapper

Source§

fn visit_with<F: TypeVisitor<DbInterner<'db>>>(&self, _: &mut F) -> F::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for AnyImplId

Source§

fn visit_with<F: TypeVisitor<DbInterner<'db>>>(&self, _: &mut F) -> F::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for BoundExistentialPredicates<'db>

Source§

fn visit_with<V: TypeVisitor<DbInterner<'db>>>( &self, visitor: &mut V, ) -> V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for CallableIdWrapper

Source§

fn visit_with<F: TypeVisitor<DbInterner<'db>>>(&self, _: &mut F) -> F::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for Clause<'db>

Source§

fn visit_with<V: TypeVisitor<DbInterner<'db>>>( &self, visitor: &mut V, ) -> V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for Clauses<'db>

Source§

fn visit_with<V: TypeVisitor<DbInterner<'db>>>( &self, visitor: &mut V, ) -> V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for ClosureIdWrapper<'_>

Source§

fn visit_with<F: TypeVisitor<DbInterner<'db>>>(&self, _: &mut F) -> F::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for Const<'db>

Source§

fn visit_with<V: TypeVisitor<DbInterner<'db>>>( &self, visitor: &mut V, ) -> V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for Consts<'db>

Source§

fn visit_with<V: TypeVisitor<DbInterner<'db>>>( &self, visitor: &mut V, ) -> V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for CoroutineClosureIdWrapper<'_>

Source§

fn visit_with<F: TypeVisitor<DbInterner<'db>>>(&self, _: &mut F) -> F::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for CoroutineIdWrapper<'_>

Source§

fn visit_with<F: TypeVisitor<DbInterner<'db>>>(&self, _: &mut F) -> F::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for EarlyParamRegion

Source§

fn visit_with<F: TypeVisitor<DbInterner<'db>>>(&self, _: &mut F) -> F::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for ErrorGuaranteed

Source§

fn visit_with<V: TypeVisitor<DbInterner<'db>>>( &self, visitor: &mut V, ) -> V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for ExprConst

Source§

fn visit_with<__V: TypeVisitor<DbInterner<'db>>>( &self, __visitor: &mut __V, ) -> __V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for ExternAbi

Source§

fn visit_with<V: TypeVisitor<DbInterner<'db>>>( &self, _visitor: &mut V, ) -> V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for ExternalConstraints<'db>

Source§

fn visit_with<V: TypeVisitor<DbInterner<'db>>>( &self, visitor: &mut V, ) -> V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for FreeConstAliasId

Source§

fn visit_with<F: TypeVisitor<DbInterner<'db>>>(&self, _: &mut F) -> F::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for FreeTermAliasId

Source§

fn visit_with<F: TypeVisitor<DbInterner<'db>>>(&self, _: &mut F) -> F::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for FreeTyAliasId

Source§

fn visit_with<F: TypeVisitor<DbInterner<'db>>>(&self, _: &mut F) -> F::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for GeneralConstIdWrapper<'_>

Source§

fn visit_with<F: TypeVisitor<DbInterner<'db>>>(&self, _: &mut F) -> F::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for GenericArg<'db>

Source§

fn visit_with<V: TypeVisitor<DbInterner<'db>>>( &self, visitor: &mut V, ) -> V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for GenericArgs<'db>

Source§

fn visit_with<V: TypeVisitor<DbInterner<'db>>>( &self, visitor: &mut V, ) -> V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for ImplOrTraitAssocConstId

Source§

fn visit_with<F: TypeVisitor<DbInterner<'db>>>(&self, _: &mut F) -> F::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for ImplOrTraitAssocTermId

Source§

fn visit_with<F: TypeVisitor<DbInterner<'db>>>(&self, _: &mut F) -> F::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for ImplOrTraitAssocTyId

Source§

fn visit_with<F: TypeVisitor<DbInterner<'db>>>(&self, _: &mut F) -> F::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db, N> TypeVisitable<DbInterner<'db>> for ImplSource<'db, N>
where N: TypeVisitable<DbInterner<'db>>,

Source§

fn visit_with<__V: TypeVisitor<DbInterner<'db>>>( &self, __visitor: &mut __V, ) -> __V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db, N> TypeVisitable<DbInterner<'db>> for ImplSourceUserDefinedData<'db, N>
where N: TypeVisitable<DbInterner<'db>>,

Source§

fn visit_with<__V: TypeVisitor<DbInterner<'db>>>( &self, __visitor: &mut __V, ) -> __V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for InferenceDiagnostic

Source§

fn visit_with<__V: TypeVisitor<DbInterner<'db>>>( &self, __visitor: &mut __V, ) -> __V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for InherentAssocConstId

Source§

fn visit_with<F: TypeVisitor<DbInterner<'db>>>(&self, _: &mut F) -> F::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for InherentAssocTermId

Source§

fn visit_with<F: TypeVisitor<DbInterner<'db>>>(&self, _: &mut F) -> F::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for InherentAssocTyId

Source§

fn visit_with<F: TypeVisitor<DbInterner<'db>>>(&self, _: &mut F) -> F::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db, T> TypeVisitable<DbInterner<'db>> for Obligation<'db, T>
where T: TypeVisitable<DbInterner<'db>>,

Source§

fn visit_with<__V: TypeVisitor<DbInterner<'db>>>( &self, __visitor: &mut __V, ) -> __V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for ObligationCause

Source§

fn visit_with<__V: TypeVisitor<DbInterner<'db>>>( &self, __visitor: &mut __V, ) -> __V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for OpaqueHiddenType<'db>

Source§

fn visit_with<__V: TypeVisitor<DbInterner<'db>>>( &self, __visitor: &mut __V, ) -> __V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for OpaqueTyIdWrapper<'_>

Source§

fn visit_with<F: TypeVisitor<DbInterner<'db>>>(&self, _: &mut F) -> F::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for ParamConst

Source§

fn visit_with<F: TypeVisitor<DbInterner<'db>>>(&self, _: &mut F) -> F::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for ParamEnv<'db>

Source§

fn visit_with<__V: TypeVisitor<DbInterner<'db>>>( &self, __visitor: &mut __V, ) -> __V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for ParamTy

Source§

fn visit_with<F: TypeVisitor<DbInterner<'db>>>(&self, _: &mut F) -> F::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for PatList<'db>

Source§

fn visit_with<V: TypeVisitor<DbInterner<'db>>>( &self, visitor: &mut V, ) -> V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for Pattern<'db>

Source§

fn visit_with<V: TypeVisitor<DbInterner<'db>>>( &self, visitor: &mut V, ) -> V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for Place

Source§

fn visit_with<__V: TypeVisitor<DbInterner<'db>>>( &self, __visitor: &mut __V, ) -> __V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for PlaceTy<'db>

Source§

fn visit_with<__V: TypeVisitor<DbInterner<'db>>>( &self, __visitor: &mut __V, ) -> __V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for PredefinedOpaques<'db>

Source§

fn visit_with<V: TypeVisitor<DbInterner<'db>>>( &self, visitor: &mut V, ) -> V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for Predicate<'db>

Source§

fn visit_with<V: TypeVisitor<DbInterner<'db>>>( &self, visitor: &mut V, ) -> V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for Projection

Source§

fn visit_with<__V: TypeVisitor<DbInterner<'db>>>( &self, __visitor: &mut __V, ) -> __V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for QueryRegionConstraints<'db>

Source§

fn visit_with<__V: TypeVisitor<DbInterner<'db>>>( &self, __visitor: &mut __V, ) -> __V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db, R> TypeVisitable<DbInterner<'db>> for QueryResponse<'db, R>
where R: TypeVisitable<DbInterner<'db>>,

Source§

fn visit_with<__V: TypeVisitor<DbInterner<'db>>>( &self, __visitor: &mut __V, ) -> __V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for Region<'db>

Source§

fn visit_with<V: TypeVisitor<DbInterner<'db>>>( &self, visitor: &mut V, ) -> V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for RegionAssumptions<'db>

Source§

fn visit_with<V: TypeVisitor<DbInterner<'db>>>( &self, visitor: &mut V, ) -> V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for Safety

Source§

fn visit_with<F: TypeVisitor<DbInterner<'db>>>(&self, _: &mut F) -> F::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for ScalarInt

Source§

fn visit_with<F: TypeVisitor<DbInterner<'db>>>(&self, _: &mut F) -> F::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for SolverDefId<'_>

Source§

fn visit_with<F: TypeVisitor<DbInterner<'db>>>(&self, _: &mut F) -> F::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for SolverDefIds<'db>

Source§

fn visit_with<V: TypeVisitor<DbInterner<'db>>>( &self, visitor: &mut V, ) -> V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for SolverDiagnostic

Source§

fn visit_with<__V: TypeVisitor<DbInterner<'db>>>( &self, __visitor: &mut __V, ) -> __V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for SolverDiagnosticKind

Source§

fn visit_with<__V: TypeVisitor<DbInterner<'db>>>( &self, __visitor: &mut __V, ) -> __V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for Span

Source§

fn visit_with<F: TypeVisitor<DbInterner<'db>>>(&self, _: &mut F) -> F::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for StoredGenericArg

Source§

fn visit_with<V: TypeVisitor<DbInterner<'db>>>( &self, visitor: &mut V, ) -> V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for StoredGenericArgs

Source§

fn visit_with<V: TypeVisitor<DbInterner<'db>>>( &self, visitor: &mut V, ) -> V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for StoredTraitPredicate

Source§

fn visit_with<__V: TypeVisitor<DbInterner<'db>>>( &self, __visitor: &mut __V, ) -> __V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for StoredTraitRef

Source§

fn visit_with<__V: TypeVisitor<DbInterner<'db>>>( &self, __visitor: &mut __V, ) -> __V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for StoredTy

Source§

fn visit_with<V: TypeVisitor<DbInterner<'db>>>( &self, visitor: &mut V, ) -> V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for Term<'db>

Source§

fn visit_with<V: TypeVisitor<DbInterner<'db>>>( &self, visitor: &mut V, ) -> V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for TraitAssocConstId

Source§

fn visit_with<F: TypeVisitor<DbInterner<'db>>>(&self, _: &mut F) -> F::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for TraitAssocTermId

Source§

fn visit_with<F: TypeVisitor<DbInterner<'db>>>(&self, _: &mut F) -> F::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for TraitAssocTyId

Source§

fn visit_with<F: TypeVisitor<DbInterner<'db>>>(&self, _: &mut F) -> F::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for TraitIdWrapper

Source§

fn visit_with<F: TypeVisitor<DbInterner<'db>>>(&self, _: &mut F) -> F::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for Ty<'db>

Source§

fn visit_with<V: TypeVisitor<DbInterner<'db>>>( &self, visitor: &mut V, ) -> V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for TypeAliasIdWrapper

Source§

fn visit_with<F: TypeVisitor<DbInterner<'db>>>(&self, _: &mut F) -> F::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for Tys<'db>

Source§

fn visit_with<V: TypeVisitor<DbInterner<'db>>>( &self, visitor: &mut V, ) -> V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for UpvarArgs<'db>

Source§

fn visit_with<__V: TypeVisitor<DbInterner<'db>>>( &self, __visitor: &mut __V, ) -> __V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for ValTree<'db>

Source§

fn visit_with<V: TypeVisitor<DbInterner<'db>>>( &self, visitor: &mut V, ) -> V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitable<DbInterner<'db>> for ValueConst<'db>

Source§

fn visit_with<__V: TypeVisitor<DbInterner<'db>>>( &self, __visitor: &mut __V, ) -> __V::Result

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
Source§

impl<'db> TypeVisitor<DbInterner<'db>> for ContainsTypeErrors

Source§

type Result = ControlFlow<()>

Source§

fn visit_ty(&mut self, t: Ty<'db>) -> Self::Result

§

fn visit_binder<T>(&mut self, t: &Binder<I, T>) -> Self::Result
where T: TypeVisitable<I>,

§

fn visit_region(&mut self, r: <I as Interner>::Region) -> Self::Result

§

fn visit_const(&mut self, c: <I as Interner>::Const) -> Self::Result

§

fn visit_predicate(&mut self, p: <I as Interner>::Predicate) -> Self::Result

§

fn visit_clauses(&mut self, c: <I as Interner>::Clauses) -> Self::Result

§

fn visit_error( &mut self, _guar: <I as Interner>::ErrorGuaranteed, ) -> Self::Result

Source§

impl<'db> TypeVisitor<DbInterner<'db>> for MaxUniverse

Source§

type Result = ()

Source§

fn visit_ty(&mut self, t: Ty<'db>)

Source§

fn visit_const(&mut self, c: Const<'db>)

Source§

fn visit_region(&mut self, r: Region<'db>)

§

fn visit_binder<T>(&mut self, t: &Binder<I, T>) -> Self::Result
where T: TypeVisitable<I>,

§

fn visit_predicate(&mut self, p: <I as Interner>::Predicate) -> Self::Result

§

fn visit_clauses(&mut self, c: <I as Interner>::Clauses) -> Self::Result

§

fn visit_error( &mut self, _guar: <I as Interner>::ErrorGuaranteed, ) -> Self::Result

Source§

impl<'db> TypeVisitor<DbInterner<'db>> for MentionsPointee

Source§

type Result = ControlFlow<()>

Source§

fn visit_ty(&mut self, t: Ty<'db>) -> Self::Result

§

fn visit_binder<T>(&mut self, t: &Binder<I, T>) -> Self::Result
where T: TypeVisitable<I>,

§

fn visit_region(&mut self, r: <I as Interner>::Region) -> Self::Result

§

fn visit_const(&mut self, c: <I as Interner>::Const) -> Self::Result

§

fn visit_predicate(&mut self, p: <I as Interner>::Predicate) -> Self::Result

§

fn visit_clauses(&mut self, c: <I as Interner>::Clauses) -> Self::Result

§

fn visit_error( &mut self, _guar: <I as Interner>::ErrorGuaranteed, ) -> Self::Result

Source§

impl<'db> TypeVisitor<DbInterner<'db>> for ParamCollector

Source§

type Result = ()

Source§

fn visit_ty(&mut self, ty: Ty<'db>) -> Self::Result

Source§

fn visit_const(&mut self, konst: Const<'db>) -> Self::Result

§

fn visit_binder<T>(&mut self, t: &Binder<I, T>) -> Self::Result
where T: TypeVisitable<I>,

§

fn visit_region(&mut self, r: <I as Interner>::Region) -> Self::Result

§

fn visit_predicate(&mut self, p: <I as Interner>::Predicate) -> Self::Result

§

fn visit_clauses(&mut self, c: <I as Interner>::Clauses) -> Self::Result

§

fn visit_error( &mut self, _guar: <I as Interner>::ErrorGuaranteed, ) -> Self::Result

Source§

impl<'db> TypeVisitor<DbInterner<'db>> for ReferencesOnlyTyError

Source§

type Result = ControlFlow<()>

Source§

fn visit_ty(&mut self, ty: Ty<'db>) -> Self::Result

Source§

fn visit_const(&mut self, c: Const<'db>) -> Self::Result

Source§

fn visit_predicate(&mut self, p: Predicate<'db>) -> Self::Result

§

fn visit_binder<T>(&mut self, t: &Binder<I, T>) -> Self::Result
where T: TypeVisitable<I>,

§

fn visit_region(&mut self, r: <I as Interner>::Region) -> Self::Result

§

fn visit_clauses(&mut self, c: <I as Interner>::Clauses) -> Self::Result

§

fn visit_error( &mut self, _guar: <I as Interner>::ErrorGuaranteed, ) -> Self::Result

Source§

impl<'db> TypeVisitor<DbInterner<'db>> for StalledOnCoroutines<'_, 'db>

Source§

type Result = ControlFlow<()>

Source§

fn visit_ty(&mut self, ty: Ty<'db>) -> Self::Result

§

fn visit_binder<T>(&mut self, t: &Binder<I, T>) -> Self::Result
where T: TypeVisitable<I>,

§

fn visit_region(&mut self, r: <I as Interner>::Region) -> Self::Result

§

fn visit_const(&mut self, c: <I as Interner>::Const) -> Self::Result

§

fn visit_predicate(&mut self, p: <I as Interner>::Predicate) -> Self::Result

§

fn visit_clauses(&mut self, c: <I as Interner>::Clauses) -> Self::Result

§

fn visit_error( &mut self, _guar: <I as Interner>::ErrorGuaranteed, ) -> Self::Result

Source§

impl<'db> TypeVisitor<DbInterner<'db>> for UninhabitedFrom<'_, 'db>

Source§

type Result = ControlFlow<VisiblyUninhabited>

Source§

fn visit_ty(&mut self, ty: Ty<'db>) -> ControlFlow<VisiblyUninhabited>

§

fn visit_binder<T>(&mut self, t: &Binder<I, T>) -> Self::Result
where T: TypeVisitable<I>,

§

fn visit_region(&mut self, r: <I as Interner>::Region) -> Self::Result

§

fn visit_const(&mut self, c: <I as Interner>::Const) -> Self::Result

§

fn visit_predicate(&mut self, p: <I as Interner>::Predicate) -> Self::Result

§

fn visit_clauses(&mut self, c: <I as Interner>::Clauses) -> Self::Result

§

fn visit_error( &mut self, _guar: <I as Interner>::ErrorGuaranteed, ) -> Self::Result

Source§

impl<'db> Tys<DbInterner<'db>> for Tys<'db>

Source§

fn inputs(self) -> <DbInterner<'db> as Interner>::FnInputTys

Source§

fn output(self) -> <DbInterner<'db> as Interner>::Ty

Source§

impl<'db> UpcastFrom<DbInterner<'db>, Binder<DbInterner<'db>, ClauseKind<DbInterner<'db>>>> for Clause<'db>

Source§

fn upcast_from( from: Binder<DbInterner<'db>, ClauseKind<DbInterner<'db>>>, interner: DbInterner<'db>, ) -> Self

Source§

impl<'db> UpcastFrom<DbInterner<'db>, Binder<DbInterner<'db>, ClauseKind<DbInterner<'db>>>> for Predicate<'db>

Source§

fn upcast_from( from: Binder<DbInterner<'db>, ClauseKind<DbInterner<'db>>>, interner: DbInterner<'db>, ) -> Self

Source§

impl<'db> UpcastFrom<DbInterner<'db>, Binder<DbInterner<'db>, OutlivesPredicate<DbInterner<'db>, Region<'db>>>> for Predicate<'db>

Source§

fn upcast_from( from: PolyRegionOutlivesPredicate<'db>, tcx: DbInterner<'db>, ) -> Self

Source§

impl<'db> UpcastFrom<DbInterner<'db>, Binder<DbInterner<'db>, PredicateKind<DbInterner<'db>>>> for Predicate<'db>

Source§

fn upcast_from( from: Binder<DbInterner<'db>, PredicateKind<DbInterner<'db>>>, interner: DbInterner<'db>, ) -> Self

Source§

impl<'db> UpcastFrom<DbInterner<'db>, Binder<DbInterner<'db>, ProjectionPredicate<DbInterner<'db>>>> for Clause<'db>

Source§

fn upcast_from( from: Binder<DbInterner<'db>, ProjectionPredicate<DbInterner<'db>>>, interner: DbInterner<'db>, ) -> Self

Source§

impl<'db> UpcastFrom<DbInterner<'db>, Binder<DbInterner<'db>, ProjectionPredicate<DbInterner<'db>>>> for Predicate<'db>

Source§

fn upcast_from( from: Binder<'db, ProjectionPredicate<'db>>, interner: DbInterner<'db>, ) -> Self

Source§

impl<'db> UpcastFrom<DbInterner<'db>, Binder<DbInterner<'db>, TraitPredicate<DbInterner<'db>>>> for Clause<'db>

Source§

fn upcast_from( from: Binder<DbInterner<'db>, TraitPredicate<DbInterner<'db>>>, interner: DbInterner<'db>, ) -> Self

Source§

impl<'db> UpcastFrom<DbInterner<'db>, Binder<DbInterner<'db>, TraitPredicate<DbInterner<'db>>>> for Predicate<'db>

Source§

fn upcast_from( from: Binder<'db, TraitPredicate<DbInterner<'db>>>, interner: DbInterner<'db>, ) -> Self

Source§

impl<'db> UpcastFrom<DbInterner<'db>, Binder<DbInterner<'db>, TraitRef<DbInterner<'db>>>> for Clause<'db>

Source§

fn upcast_from( from: Binder<DbInterner<'db>, TraitRef<DbInterner<'db>>>, interner: DbInterner<'db>, ) -> Self

Source§

impl<'db> UpcastFrom<DbInterner<'db>, Binder<DbInterner<'db>, TraitRef<DbInterner<'db>>>> for Predicate<'db>

Source§

fn upcast_from( from: Binder<DbInterner<'db>, TraitRef<DbInterner<'db>>>, interner: DbInterner<'db>, ) -> Self

Source§

impl<'db> UpcastFrom<DbInterner<'db>, Clause<'db>> for Predicate<'db>

Source§

fn upcast_from(from: Clause<'db>, _interner: DbInterner<'db>) -> Self

Source§

impl<'db> UpcastFrom<DbInterner<'db>, ClauseKind<DbInterner<'db>>> for Predicate<'db>

Source§

fn upcast_from( from: ClauseKind<DbInterner<'db>>, interner: DbInterner<'db>, ) -> Self

Source§

impl<'db> UpcastFrom<DbInterner<'db>, NormalizesTo<DbInterner<'db>>> for Predicate<'db>

Source§

fn upcast_from( from: NormalizesTo<DbInterner<'db>>, interner: DbInterner<'db>, ) -> Self

Source§

impl<'db> UpcastFrom<DbInterner<'db>, OutlivesPredicate<DbInterner<'db>, Region<'db>>> for Clause<'db>

Source§

fn upcast_from( from: OutlivesPredicate<DbInterner<'db>, Region<'db>>, interner: DbInterner<'db>, ) -> Self

Source§

impl<'db> UpcastFrom<DbInterner<'db>, OutlivesPredicate<DbInterner<'db>, Region<'db>>> for Predicate<'db>

Source§

fn upcast_from( from: OutlivesPredicate<DbInterner<'db>, Region<'db>>, interner: DbInterner<'db>, ) -> Self

Source§

impl<'db> UpcastFrom<DbInterner<'db>, OutlivesPredicate<DbInterner<'db>, Ty<'db>>> for Clause<'db>

Source§

fn upcast_from( from: OutlivesPredicate<DbInterner<'db>, Ty<'db>>, interner: DbInterner<'db>, ) -> Self

Source§

impl<'db> UpcastFrom<DbInterner<'db>, OutlivesPredicate<DbInterner<'db>, Ty<'db>>> for Predicate<'db>

Source§

fn upcast_from( from: OutlivesPredicate<DbInterner<'db>, Ty<'db>>, interner: DbInterner<'db>, ) -> Self

Source§

impl<'db> UpcastFrom<DbInterner<'db>, PredicateKind<DbInterner<'db>>> for Predicate<'db>

Source§

fn upcast_from( from: PredicateKind<DbInterner<'db>>, interner: DbInterner<'db>, ) -> Self

Source§

impl<'db> UpcastFrom<DbInterner<'db>, ProjectionPredicate<DbInterner<'db>>> for Clause<'db>

Source§

fn upcast_from( from: ProjectionPredicate<DbInterner<'db>>, interner: DbInterner<'db>, ) -> Self

Source§

impl<'db> UpcastFrom<DbInterner<'db>, ProjectionPredicate<DbInterner<'db>>> for Predicate<'db>

Source§

fn upcast_from( from: ProjectionPredicate<'db>, interner: DbInterner<'db>, ) -> Self

Source§

impl<'db> UpcastFrom<DbInterner<'db>, TraitPredicate<DbInterner<'db>>> for Clause<'db>

Source§

fn upcast_from( from: TraitPredicate<DbInterner<'db>>, interner: DbInterner<'db>, ) -> Self

Source§

impl<'db> UpcastFrom<DbInterner<'db>, TraitPredicate<DbInterner<'db>>> for Predicate<'db>

Source§

fn upcast_from( from: TraitPredicate<DbInterner<'db>>, interner: DbInterner<'db>, ) -> Self

Source§

impl<'db> UpcastFrom<DbInterner<'db>, TraitRef<DbInterner<'db>>> for Clause<'db>

Source§

fn upcast_from( from: TraitRef<DbInterner<'db>>, interner: DbInterner<'db>, ) -> Self

Source§

impl<'db> UpcastFrom<DbInterner<'db>, TraitRef<DbInterner<'db>>> for Predicate<'db>

Source§

fn upcast_from( from: TraitRef<DbInterner<'db>>, interner: DbInterner<'db>, ) -> Self

Source§

impl<'db> ValueConst<DbInterner<'db>> for ValueConst<'db>

Source§

fn ty(self) -> Ty<'db>

Source§

fn valtree(self) -> ValTree<'db>

Source§

impl<'db> Clauses<DbInterner<'db>> for Clauses<'db>

Source§

impl<'db> Copy for DbInterner<'db>

Source§

impl Send for DbInterner<'_>

Source§

impl Sync for DbInterner<'_>

Auto Trait Implementations§

§

impl<'db> Freeze for DbInterner<'db>

§

impl<'db> !RefUnwindSafe for DbInterner<'db>

§

impl<'db> Unpin for DbInterner<'db>

§

impl<'db> UnsafeUnpin for DbInterner<'db>

§

impl<'db> !UnwindSafe for DbInterner<'db>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<T, R> CollectAndApply<T, R> for T

§

fn collect_and_apply<I, F>(iter: I, f: F) -> R
where I: Iterator<Item = T>, F: FnOnce(&[T]) -> R,

Equivalent to f(&iter.collect::<Vec<_>>()).

§

type Output = R

§

impl<I> Cx for I
where I: Interner,

§

type Input = CanonicalQueryInput<I, QueryInput<I, <I as Interner>::Predicate>>

§

type Result = (Result<Canonical<I, Response<I>>, NoSolution>, AccessedOpaques<I>)

§

type AmbiguityInfo = Certainty

§

type DepNodeIndex = <I as Interner>::DepNodeIndex

§

type Tracked<T: Debug + Clone> = <I as Interner>::Tracked<T>

§

fn mk_tracked<T>( self, data: T, dep_node_index: <I as Interner>::DepNodeIndex, ) -> <I as Interner>::Tracked<T>
where T: Debug + Clone,

§

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

§

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

§

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

§

fn assert_evaluation_is_concurrent(&self)

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> IntoBox<dyn Any> for T
where T: Any,

§

fn into_box(self) -> Box<dyn Any>

Convert self into the appropriate boxed form.
§

impl<T> IntoBox<dyn Any + Send> for T
where T: Any + Send,

§

fn into_box(self) -> Box<dyn Any + Send>

Convert self into the appropriate boxed form.
§

impl<T> IntoBox<dyn Any + Send + Sync> for T
where T: Any + Send + Sync,

§

fn into_box(self) -> Box<dyn Any + Send + Sync>

Convert self into the appropriate boxed form.
Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> Lookup<T> for T

§

fn into_owned(self) -> T

§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<I, T, U> Upcast<I, U> for T
where U: UpcastFrom<I, T>,

§

fn upcast(self, interner: I) -> U

§

impl<I, T> UpcastFrom<I, T> for T

§

fn upcast_from(from: T, _tcx: I) -> T

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more