Trait TypeFoldable

Source
pub trait TypeFoldable<I: Interner>: TypeVisitable<I> + Clone {
    // Required method
    fn try_fold_with<F: FallibleTypeFolder<I>>(
        self,
        folder: &mut F,
    ) -> Result<Self, F::Error>;

    // Provided method
    fn fold_with<F: TypeFolder<I>>(self, folder: &mut F) -> Self { ... }
}
Expand description

This trait is implemented for every type that can be folded, providing the skeleton of the traversal.

To implement this conveniently, use the derive macro located in rustc_macros.

This trait is a sub-trait of TypeVisitable. This is because many TypeFolder instances use the methods in TypeVisitableExt while folding, which means in practice almost every foldable type needs to also be visitable. (However, there are some types that are visitable without being foldable.)

Required Methods§

Source

fn try_fold_with<F: FallibleTypeFolder<I>>( 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).

For most types, this just traverses the value, calling try_fold_with on each field/element.

For types of interest (such as Ty), the implementation of this method calls a folder method specifically for that type (such as F::try_fold_ty). This is where control transfers from TypeFoldable to TypeFolder.

Provided Methods§

Source

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

A convenient alternative to try_fold_with for use with infallible folders. Do not override this method, to ensure coherence with try_fold_with.

Dyn Compatibility§

This trait is not dyn compatible.

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

Implementations on Foreign Types§

Source§

impl<I: Interner> TypeFoldable<I> for bool

Source§

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

Source§

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

Source§

impl<I: Interner> TypeFoldable<I> for u16

Source§

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

Source§

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

Source§

impl<I: Interner> TypeFoldable<I> for u32

Source§

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

Source§

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

Source§

impl<I: Interner> TypeFoldable<I> for u64

Source§

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

Source§

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

Source§

impl<I: Interner> TypeFoldable<I> for ()

Source§

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

Source§

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

Source§

impl<I: Interner> TypeFoldable<I> for usize

Source§

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

Source§

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

Source§

impl<I: Interner, A: TypeFoldable<I>, B: TypeFoldable<I>, C: TypeFoldable<I>> TypeFoldable<I> for (A, B, C)

Source§

impl<I: Interner, T: TypeFoldable<I>> TypeFoldable<I> for Option<T>

Source§

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

Source§

impl<I: Interner, T: TypeFoldable<I>> TypeFoldable<I> for Box<[T]>

Source§

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

Source§

impl<I: Interner, T: TypeFoldable<I>> TypeFoldable<I> for Box<T>

Source§

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

Source§

impl<I: Interner, T: TypeFoldable<I>> TypeFoldable<I> for Arc<T>

Source§

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

Source§

impl<I: Interner, T: TypeFoldable<I>> TypeFoldable<I> for Vec<T>

Source§

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

Source§

impl<I: Interner, T: TypeFoldable<I>> TypeFoldable<I> for ThinVec<T>

Source§

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

Source§

impl<I: Interner, T: TypeFoldable<I>, E: TypeFoldable<I>> TypeFoldable<I> for Result<T, E>

Source§

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

Source§

impl<I: Interner, T: TypeFoldable<I>, Ix: Idx> TypeFoldable<I> for IndexVec<Ix, T>

Source§

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

Source§

impl<I: Interner, T: TypeFoldable<I>, U: TypeFoldable<I>> TypeFoldable<I> for (T, U)

Implementors§

Source§

impl<I> TypeFoldable<I> for CanonicalTyVarKind
where I: Interner,

Source§

impl<I> TypeFoldable<I> for CanonicalVarKind<I>

Source§

impl<I> TypeFoldable<I> for ClauseKind<I>

Source§

impl<I> TypeFoldable<I> for ExistentialPredicate<I>

Source§

impl<I> TypeFoldable<I> for PredicateKind<I>

Source§

impl<I> TypeFoldable<I> for TypingMode<I>

Source§

impl<I> TypeFoldable<I> for ProbeKind<I>

Source§

impl<I> TypeFoldable<I> for ExternalConstraintsData<I>

Source§

impl<I> TypeFoldable<I> for NestedNormalizationGoals<I>
where I: Interner, Vec<(GoalSource, Goal<I, I::Predicate>)>: TypeFoldable<I>,

Source§

impl<I> TypeFoldable<I> for PredefinedOpaquesData<I>
where I: Interner, Vec<(OpaqueTypeKey<I>, I::Ty)>: TypeFoldable<I>,

Source§

impl<I> TypeFoldable<I> for Response<I>

Source§

impl<I> TypeFoldable<I> for AliasTerm<I>

Source§

impl<I> TypeFoldable<I> for AliasTy<I>

Source§

impl<I> TypeFoldable<I> for CanonicalVarInfo<I>

Source§

impl<I> TypeFoldable<I> for CanonicalVarValues<I>

Source§

impl<I> TypeFoldable<I> for ClosureArgs<I>

Source§

impl<I> TypeFoldable<I> for CoercePredicate<I>
where I: Interner, I::Ty: TypeFoldable<I>,

Source§

impl<I> TypeFoldable<I> for CoroutineArgs<I>

Source§

impl<I> TypeFoldable<I> for CoroutineClosureArgs<I>

Source§

impl<I> TypeFoldable<I> for CoroutineClosureSignature<I>
where I: Interner, I::Ty: TypeFoldable<I>,

Source§

impl<I> TypeFoldable<I> for ExistentialProjection<I>

Source§

impl<I> TypeFoldable<I> for ExistentialTraitRef<I>

Source§

impl<I> TypeFoldable<I> for FnHeader<I>
where I: Interner, I::Safety: TypeFoldable<I>, I::Abi: TypeFoldable<I>,

Source§

impl<I> TypeFoldable<I> for FnSig<I>
where I: Interner, I::Tys: TypeFoldable<I>,

Source§

impl<I> TypeFoldable<I> for FnSigTys<I>
where I: Interner, I::Tys: TypeFoldable<I>,

Source§

impl<I> TypeFoldable<I> for GenSig<I>
where I: Interner, I::Ty: TypeFoldable<I>,

Source§

impl<I> TypeFoldable<I> for HostEffectPredicate<I>
where I: Interner, TraitRef<I>: TypeFoldable<I>,

Source§

impl<I> TypeFoldable<I> for NormalizesTo<I>
where I: Interner, AliasTerm<I>: TypeFoldable<I>, I::Term: TypeFoldable<I>,

Source§

impl<I> TypeFoldable<I> for OpaqueTypeKey<I>

Source§

impl<I> TypeFoldable<I> for ProjectionPredicate<I>
where I: Interner, AliasTerm<I>: TypeFoldable<I>, I::Term: TypeFoldable<I>,

Source§

impl<I> TypeFoldable<I> for SubtypePredicate<I>
where I: Interner, I::Ty: TypeFoldable<I>,

Source§

impl<I> TypeFoldable<I> for TraitPredicate<I>
where I: Interner, TraitRef<I>: TypeFoldable<I>,

Source§

impl<I> TypeFoldable<I> for TraitRef<I>

Source§

impl<I> TypeFoldable<I> for TypeAndMut<I>
where I: Interner, I::Ty: TypeFoldable<I>,

Source§

impl<I> TypeFoldable<I> for UnevaluatedConst<I>

Source§

impl<I> TypeFoldable<I> for UnsafeBinderInner<I>
where I: Interner, Binder<I, I::Ty>: TypeFoldable<I>,

Source§

impl<I, A> TypeFoldable<I> for OutlivesPredicate<I, A>
where I: Interner, A: TypeFoldable<I>, I::Region: TypeFoldable<I>,

Source§

impl<I, P> TypeFoldable<I> for Goal<I, P>
where I: Interner, I::ParamEnv: TypeFoldable<I>, P: TypeFoldable<I>,

Source§

impl<I, P> TypeFoldable<I> for QueryInput<I, P>

Source§

impl<I, T> TypeFoldable<I> for State<I, T>

Source§

impl<I, V> TypeFoldable<I> for Canonical<I, V>

Source§

impl<I: Interner> TypeFoldable<I> for AliasRelationDirection

Source§

impl<I: Interner> TypeFoldable<I> for BoundConstness

Source§

impl<I: Interner> TypeFoldable<I> for Mutability

Source§

impl<I: Interner> TypeFoldable<I> for PredicatePolarity

Source§

impl<I: Interner> TypeFoldable<I> for Variance

Source§

impl<I: Interner> TypeFoldable<I> for BuiltinImplSource

Source§

impl<I: Interner> TypeFoldable<I> for Certainty

Source§

impl<I: Interner> TypeFoldable<I> for GoalSource

Source§

impl<I: Interner> TypeFoldable<I> for DebruijnIndex

Source§

impl<I: Interner> TypeFoldable<I> for UniverseIndex

Source§

impl<I: Interner, T> !TypeFoldable<I> for EarlyBinder<I, T>

For early binders, you should first call instantiate before using any visitors.

Source§

impl<I: Interner, T: TypeFoldable<I>> TypeFoldable<I> for Binder<I, T>

Source§

impl<T, I> TypeFoldable<I> for ExpectedFound<T>
where I: Interner, T: TypeFoldable<I>,

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for PointerKind<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ExpectedSig<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ValuePairs<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for GenericKind<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for VerifyBound<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for VerifyIfEq<'tcx>

impl<'tcx, O: TypeFoldable<TyCtxt<'tcx>>> TypeFoldable<TyCtxt<'tcx>> for Obligation<'tcx, O>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for &'tcx List<Const<'tcx>>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for &'tcx List<Ty<'tcx>>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for &'tcx List<LocalDefId>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for &'tcx List<PlaceElem<'tcx>>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for &'tcx List<PolyExistentialPredicate<'tcx>>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for &'tcx [InlineAsmTemplatePiece]

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for &'tcx [Span]

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for CoroutineKind

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for MatchSource

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for RangeEnd

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for PlaceBase

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ProjectionKind

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Certainty

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for AggregateKind<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for AnnotationSource

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for BinOp

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for BindingForm<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for BorrowKind

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for CallSource

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for CastKind

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Const<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ConstValue<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ConstraintCategory<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for FakeReadCause

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for InlineAsmMacro

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for InlineAsmOperand<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for LocalInfo<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for MentionedItem<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for MirPhase

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for NonDivergingIntrinsic<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for NullOp<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Operand<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for RawPtrKind

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for RetagKind

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ReturnConstraint

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Rvalue<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for StatementKind<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for TerminatorKind<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for UnOp

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for UnwindAction

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for VarDebugInfoContents<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for IsConstable

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ObligationCauseCode<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for WellFormedLoc

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for OutlivesBound<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for OverflowError

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for CastKind

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Adjust

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for AutoBorrow

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for PointerCoercion

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for AdtKind

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for AssocKind

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Asyncness

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for BorrowKind

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ExprKind

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ImplSubject<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for InferConst

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for InstanceKind<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ReifyReason

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for UpvarArgs<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for UpvarCapture

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for UserTypeKind<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for PatternKind<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for FieldIdx

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for VariantIdx

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for InlineAsmOptions

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for HirId

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Place<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Projection<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for QueryRegionConstraints<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Cache

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for GlobalId<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for BasicBlock

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for BasicBlockData<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for BasicBlocks<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for BlockTailInfo

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Body<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ConstOperand<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for CopyNonOverlapping<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for CoroutineInfo<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for CoroutineLayout<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for CoroutineSavedTy<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Local

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for LocalDecl<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for MirSource<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Place<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for PlaceTy<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Promoted

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for SourceInfo

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for SourceScope

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for SourceScopeData<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Statement<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for SwitchTargets

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Terminator<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for UnevaluatedConst<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for UserTypeProjection

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for VarDebugInfo<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for VarDebugInfoFragment<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for DropckOutlivesResult<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for NormalizationResult<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for AscribeUserType<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for DropckOutlives<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Eq<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ImpliedOutlivesBounds<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ProvePredicate<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Subtype<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ExternalConstraints<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for PredefinedOpaques<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for DerivedCause<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for DerivedHostCause<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for IfExpressionCause<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ImplDerivedCause<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ImplDerivedHostCause<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for MatchExpressionArmCause<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ObligationCause<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ObligationCauseCodeHandle<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for PatternOriginExpr

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Adjustment<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for OverloadedDeref

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Pattern<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for TraitRefPrintOnlyTraitName<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for TraitRefPrintOnlyTraitPath<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for TraitRefPrintSugared<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for AssocItem

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for BoundRegion

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for BoundVar

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for CanonicalUserTypeAnnotation<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for CaptureInfo

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for CapturedPlace<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Clause<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ClosureSizeProfileData<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Const<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Expr<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for GenericArg<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ImplHeader<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Instance<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for InstantiatedPredicates<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for OpaqueHiddenType<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ParamConst

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ParamEnv<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ParamTy

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Placeholder<BoundTy>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Placeholder<BoundVar>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Predicate<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Region<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Term<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Ty<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for TypingEnv<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for UpvarId

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for UpvarPath

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for UserArgs<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for UserSelfTy<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for UserType<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ValTree<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Value<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for DefId

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for LocalDefId

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Span

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ErrorGuaranteed

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Ident

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Symbol

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for CanonicalVarInfos<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Clauses<'tcx>

impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for GenericArgsRef<'tcx>

impl<'tcx, N> TypeFoldable<TyCtxt<'tcx>> for ImplSource<'tcx, N>
where N: TypeFoldable<TyCtxt<'tcx>>,

impl<'tcx, N> TypeFoldable<TyCtxt<'tcx>> for ImplSourceUserDefinedData<'tcx, N>
where N: TypeFoldable<TyCtxt<'tcx>>,

impl<'tcx, O> TypeFoldable<TyCtxt<'tcx>> for AssertKind<O>
where O: TypeFoldable<TyCtxt<'tcx>>,

impl<'tcx, R> TypeFoldable<TyCtxt<'tcx>> for QueryResponse<'tcx, R>
where R: TypeFoldable<TyCtxt<'tcx>>,

impl<'tcx, T> TypeFoldable<TyCtxt<'tcx>> for ClearCrossCrate<T>
where T: TypeFoldable<TyCtxt<'tcx>>,

impl<'tcx, T> TypeFoldable<TyCtxt<'tcx>> for DeeplyNormalize<T>
where T: TypeFoldable<TyCtxt<'tcx>>,

impl<'tcx, T> TypeFoldable<TyCtxt<'tcx>> for Normalize<T>
where T: TypeFoldable<TyCtxt<'tcx>>,

impl<'tcx, T> TypeFoldable<TyCtxt<'tcx>> for ParamEnvAnd<'tcx, T>
where T: TypeFoldable<TyCtxt<'tcx>>,

impl<'tcx, T> TypeFoldable<TyCtxt<'tcx>> for PseudoCanonicalInput<'tcx, T>
where T: TypeFoldable<TyCtxt<'tcx>>,

impl<'tcx, T: TypeFoldable<TyCtxt<'tcx>> + Debug + Clone> TypeFoldable<TyCtxt<'tcx>> for Spanned<T>

impl<'tcx, V, T> TypeFoldable<TyCtxt<'tcx>> for ProjectionElem<V, T>
where T: TypeFoldable<TyCtxt<'tcx>>, V: TypeFoldable<TyCtxt<'tcx>>,

impl<I> TypeFoldable<I> for NestedGoals<I>