Trait rustc_middle::ty::TypeFoldable
source · pub trait TypeFoldable<I>: TypeVisitable<I>where
I: Interner,{
// Required method
fn try_fold_with<F>(
self,
folder: &mut F
) -> Result<Self, <F as FallibleTypeFolder<I>>::Error>
where F: FallibleTypeFolder<I>;
// Provided method
fn fold_with<F>(self, folder: &mut F) -> Self
where F: TypeFolder<I> { ... }
}
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
.
Required Methods§
sourcefn try_fold_with<F>(
self,
folder: &mut F
) -> Result<Self, <F as FallibleTypeFolder<I>>::Error>where
F: FallibleTypeFolder<I>,
fn try_fold_with<F>( self, folder: &mut F ) -> Result<Self, <F as FallibleTypeFolder<I>>::Error>where F: FallibleTypeFolder<I>,
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 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§
sourcefn fold_with<F>(self, folder: &mut F) -> Selfwhere
F: TypeFolder<I>,
fn fold_with<F>(self, folder: &mut F) -> Selfwhere F: TypeFolder<I>,
A convenient alternative to try_fold_with
for use with infallible
folders. Do not override this method, to ensure coherence with
try_fold_with
.
Implementations on Foreign Types§
source§impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for LocalDefId
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for LocalDefId
fn try_fold_with<F: FallibleTypeFolder<TyCtxt<'tcx>>>( self, _: &mut F ) -> Result<Self, F::Error>
fn fold_with<F: TypeFolder<TyCtxt<'tcx>>>(self, _: &mut F) -> Self
source§impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for &'tcx [Span]
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for &'tcx [Span]
fn try_fold_with<F: FallibleTypeFolder<TyCtxt<'tcx>>>( self, _folder: &mut F ) -> Result<Self, F::Error>
source§impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for InlineAsmRegOrRegClass
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for InlineAsmRegOrRegClass
fn try_fold_with<F: FallibleTypeFolder<TyCtxt<'tcx>>>( self, _: &mut F ) -> Result<Self, F::Error>
fn fold_with<F: TypeFolder<TyCtxt<'tcx>>>(self, _: &mut F) -> Self
source§impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for &'tcx [InlineAsmTemplatePiece]
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for &'tcx [InlineAsmTemplatePiece]
fn try_fold_with<F: FallibleTypeFolder<TyCtxt<'tcx>>>( self, _folder: &mut F ) -> Result<Self, F::Error>
source§impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for InlineAsmTemplatePiece
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for InlineAsmTemplatePiece
fn try_fold_with<F: FallibleTypeFolder<TyCtxt<'tcx>>>( self, _: &mut F ) -> Result<Self, F::Error>
fn fold_with<F: TypeFolder<TyCtxt<'tcx>>>(self, _: &mut F) -> Self
source§impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Ident
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Ident
fn try_fold_with<F: FallibleTypeFolder<TyCtxt<'tcx>>>( self, _: &mut F ) -> Result<Self, F::Error>
fn fold_with<F: TypeFolder<TyCtxt<'tcx>>>(self, _: &mut F) -> Self
source§impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Size
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Size
fn try_fold_with<F: FallibleTypeFolder<TyCtxt<'tcx>>>( self, _: &mut F ) -> Result<Self, F::Error>
fn fold_with<F: TypeFolder<TyCtxt<'tcx>>>(self, _: &mut F) -> Self
source§impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for GeneratorKind
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for GeneratorKind
fn try_fold_with<F: FallibleTypeFolder<TyCtxt<'tcx>>>( self, _: &mut F ) -> Result<Self, F::Error>
fn fold_with<F: TypeFolder<TyCtxt<'tcx>>>(self, _: &mut F) -> Self
source§impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for FieldIdx
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for FieldIdx
fn try_fold_with<F: FallibleTypeFolder<TyCtxt<'tcx>>>( self, _: &mut F ) -> Result<Self, F::Error>
fn fold_with<F: TypeFolder<TyCtxt<'tcx>>>(self, _: &mut F) -> Self
source§impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Symbol
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Symbol
fn try_fold_with<F: FallibleTypeFolder<TyCtxt<'tcx>>>( self, _: &mut F ) -> Result<Self, F::Error>
fn fold_with<F: TypeFolder<TyCtxt<'tcx>>>(self, _: &mut F) -> Self
source§impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Abi
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Abi
fn try_fold_with<F: FallibleTypeFolder<TyCtxt<'tcx>>>( self, _: &mut F ) -> Result<Self, F::Error>
fn fold_with<F: TypeFolder<TyCtxt<'tcx>>>(self, _: &mut F) -> Self
source§impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Movability
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Movability
fn try_fold_with<F: FallibleTypeFolder<TyCtxt<'tcx>>>( self, _: &mut F ) -> Result<Self, F::Error>
fn fold_with<F: TypeFolder<TyCtxt<'tcx>>>(self, _: &mut F) -> Self
source§impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for InlineAsmOptions
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for InlineAsmOptions
fn try_fold_with<F: FallibleTypeFolder<TyCtxt<'tcx>>>( self, _: &mut F ) -> Result<Self, F::Error>
fn fold_with<F: TypeFolder<TyCtxt<'tcx>>>(self, _: &mut F) -> Self
source§impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for NodeId
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for NodeId
fn try_fold_with<F: FallibleTypeFolder<TyCtxt<'tcx>>>( self, _: &mut F ) -> Result<Self, F::Error>
fn fold_with<F: TypeFolder<TyCtxt<'tcx>>>(self, _: &mut F) -> Self
source§impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for HirId
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for HirId
fn try_fold_with<F: FallibleTypeFolder<TyCtxt<'tcx>>>( self, _: &mut F ) -> Result<Self, F::Error>
fn fold_with<F: TypeFolder<TyCtxt<'tcx>>>(self, _: &mut F) -> Self
source§impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for DefId
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for DefId
fn try_fold_with<F: FallibleTypeFolder<TyCtxt<'tcx>>>( self, _: &mut F ) -> Result<Self, F::Error>
fn fold_with<F: TypeFolder<TyCtxt<'tcx>>>(self, _: &mut F) -> Self
source§impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ErrorGuaranteed
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ErrorGuaranteed
fn try_fold_with<F: FallibleTypeFolder<TyCtxt<'tcx>>>( self, _: &mut F ) -> Result<Self, F::Error>
fn fold_with<F: TypeFolder<TyCtxt<'tcx>>>(self, _: &mut F) -> Self
source§impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Span
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Span
fn try_fold_with<F: FallibleTypeFolder<TyCtxt<'tcx>>>( self, _: &mut F ) -> Result<Self, F::Error>
fn fold_with<F: TypeFolder<TyCtxt<'tcx>>>(self, _: &mut F) -> Self
source§impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Res
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Res
fn try_fold_with<F: FallibleTypeFolder<TyCtxt<'tcx>>>( self, _: &mut F ) -> Result<Self, F::Error>
fn fold_with<F: TypeFolder<TyCtxt<'tcx>>>(self, _: &mut F) -> Self
source§impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for VariantIdx
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for VariantIdx
fn try_fold_with<F: FallibleTypeFolder<TyCtxt<'tcx>>>( self, _: &mut F ) -> Result<Self, F::Error>
fn fold_with<F: TypeFolder<TyCtxt<'tcx>>>(self, _: &mut F) -> Self
source§impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Unsafety
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Unsafety
fn try_fold_with<F: FallibleTypeFolder<TyCtxt<'tcx>>>( self, _: &mut F ) -> Result<Self, F::Error>
fn fold_with<F: TypeFolder<TyCtxt<'tcx>>>(self, _: &mut F) -> Self
source§impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for MatchSource
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for MatchSource
fn try_fold_with<F: FallibleTypeFolder<TyCtxt<'tcx>>>( self, _: &mut F ) -> Result<Self, F::Error>
fn fold_with<F: TypeFolder<TyCtxt<'tcx>>>(self, _: &mut F) -> Self
Implementors§
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for &'tcx List<Const<'tcx>>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for &'tcx List<Predicate<'tcx>>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for &'tcx List<Ty<'tcx>>
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 PlaceBase
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ProjectionKind
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for CanonicalTyVarKind
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for CanonicalVarKind<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for rustc_middle::infer::canonical::Certainty
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for CoverageKind
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Op
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for BindingForm<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ConstantKind<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for LocalInfo<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Mutability
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for VarDebugInfoContents<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ErrorHandled
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ConstValue<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Scalar
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ConstraintCategory<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ReturnConstraint
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for AggregateKind<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for BinOp
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for rustc_middle::mir::syntax::BorrowKind
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for rustc_middle::mir::syntax::CastKind
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for FakeReadCause
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for InlineAsmOperand<'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 RetagKind
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 DefiningAnchor
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ObligationCauseCode<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Reveal
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 rustc_middle::traits::solve::Certainty
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for MaybeCause
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for rustc_middle::ty::abstract_const::CastKind
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for NotConstEvaluatable
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Adjust<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for AutoBorrow<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for AutoBorrowMutability
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for PointerCast
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for AdtKind
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for AssocKind
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for BindingMode
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for rustc_middle::ty::closure::BorrowKind
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ClosureKind
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for UpvarCapture
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ConstKind<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Expr<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for InferConst<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ValTree<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for AliasKind
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for AliasRelationDirection
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for BoundConstness
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Clause<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for FloatTy
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ImplPolarity
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ImplSubject<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for InferTy
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for IntVarValue
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for PredicateKind<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for TermKind<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Variance
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for InstanceDef<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for BoundRegionKind
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ExistentialPredicate<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for UserType<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for rustc_middle::hir::place::Place<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Projection<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for CanonicalVarInfo<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for CanonicalVarValues<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for QueryRegionConstraints<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for MemberConstraint<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Scope
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for BasicBlocks<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Cache
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for CodeRegion
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for CounterValueReference
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ExpressionOperandId
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for InjectedExpressionId
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for InjectedExpressionIndex
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for MappedExpressionIndex
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for GlobalId<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for GeneratorLayout<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for GeneratorSavedLocal
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for GeneratorSavedTy<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for BasicBlock
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for BasicBlockData<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for BlockTailInfo
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Body<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Constant<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for GeneratorInfo<'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 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 SourceScopeLocalData
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Statement<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for rustc_middle::mir::UnevaluatedConst<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for UserTypeProjection
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for UserTypeProjections
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for VarDebugInfo<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for VarDebugInfoFragment<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for CopyNonOverlapping<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Coverage
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for rustc_middle::mir::syntax::Place<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for PlaceTy<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for SwitchTargets
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Terminator<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ChalkEnvironmentAndGoal<'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 Eq<'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 Response<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for DerivedObligationCause<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for IfExpressionCause<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ImplDerivedObligationCause<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for InternedObligationCauseCode<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for MatchExpressionArmCause<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ObligationCause<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for UnifyReceiverContext<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Adjustment<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for OverloadedDeref<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for AssocItem
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for CaptureInfo
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for CapturedPlace<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for UpvarId
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for UpvarPath
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for rustc_middle::ty::consts::kind::UnevaluatedConst<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Const<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Instance<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for TraitPredPrintModifiersAndPath<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for TraitRefPrintOnlyTraitName<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for TraitRefPrintOnlyTraitPath<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for GeneratorWitness<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ClosureSizeProfileData<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for CoercePredicate<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ImplHeader<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for InstantiatedPredicates<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for OpaqueHiddenType<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for OpaqueTypeKey<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ParamEnv<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Placeholder<BoundRegion>
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 ProjectionPredicate<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for SubtypePredicate<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Term<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for TraitPredicate<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Ty<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for UniverseIndex
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for AliasTy<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for BoundVar
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ClosureSubsts<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ExistentialProjection<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ExistentialTraitRef<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for FnSig<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for FreeRegion
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for GenSig<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for GeneratorSubsts<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ParamConst
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ParamTy
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for Region<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for RegionVid
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for TraitRef<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for TypeAndMut<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for GenericArg<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for UserSelfTy<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for UserSubsts<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for CanonicalUserTypeAnnotation<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for GeneratorInteriorTypeCause<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for UserTypeAnnotationIndex
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for CanonicalVarInfos<'tcx>
impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for SubstsRef<'tcx>
impl<'tcx, A, B> TypeFoldable<TyCtxt<'tcx>> for OutlivesPredicate<A, B>where A: TypeFoldable<TyCtxt<'tcx>>, B: TypeFoldable<TyCtxt<'tcx>>,
impl<'tcx, N> TypeFoldable<TyCtxt<'tcx>> for ImplSource<'tcx, N>where N: TypeFoldable<TyCtxt<'tcx>>,
impl<'tcx, N> TypeFoldable<TyCtxt<'tcx>> for ImplSourceAutoImplData<N>where N: TypeFoldable<TyCtxt<'tcx>>,
impl<'tcx, N> TypeFoldable<TyCtxt<'tcx>> for ImplSourceBuiltinData<N>where N: TypeFoldable<TyCtxt<'tcx>>,
impl<'tcx, N> TypeFoldable<TyCtxt<'tcx>> for ImplSourceClosureData<'tcx, N>where N: TypeFoldable<TyCtxt<'tcx>>,
impl<'tcx, N> TypeFoldable<TyCtxt<'tcx>> for ImplSourceConstDestructData<N>where N: TypeFoldable<TyCtxt<'tcx>>,
impl<'tcx, N> TypeFoldable<TyCtxt<'tcx>> for ImplSourceFnPointerData<'tcx, N>where N: TypeFoldable<TyCtxt<'tcx>>,
impl<'tcx, N> TypeFoldable<TyCtxt<'tcx>> for ImplSourceFutureData<'tcx, N>where N: TypeFoldable<TyCtxt<'tcx>>,
impl<'tcx, N> TypeFoldable<TyCtxt<'tcx>> for ImplSourceGeneratorData<'tcx, N>where N: TypeFoldable<TyCtxt<'tcx>>,
impl<'tcx, N> TypeFoldable<TyCtxt<'tcx>> for ImplSourceObjectData<'tcx, N>where N: TypeFoldable<TyCtxt<'tcx>>,
impl<'tcx, N> TypeFoldable<TyCtxt<'tcx>> for ImplSourceTraitAliasData<'tcx, N>where N: TypeFoldable<TyCtxt<'tcx>>,
impl<'tcx, N> TypeFoldable<TyCtxt<'tcx>> for ImplSourceTraitUpcastingData<'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, P> TypeFoldable<TyCtxt<'tcx>> for Goal<'tcx, P>where P: 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 EarlyBinder<T>
For early binders, you should first call subst
before using any visitors.