pub trait TypeVisitable<I>: Debug + Clonewhere
I: Interner,{
// Required method
fn visit_with<V>(&self, visitor: &mut V) -> <V as TypeVisitor<I>>::Result
where V: TypeVisitor<I>;
}
Expand description
This trait is implemented for every type that can be visited, providing the skeleton of the traversal.
To implement this conveniently, use the derive macro located in
rustc_macros
.
Required Methods§
Sourcefn visit_with<V>(&self, visitor: &mut V) -> <V as TypeVisitor<I>>::Resultwhere
V: TypeVisitor<I>,
fn visit_with<V>(&self, visitor: &mut V) -> <V as TypeVisitor<I>>::Resultwhere
V: TypeVisitor<I>,
The entry point for visiting. To visit a value t
with a visitor v
call: t.visit_with(v)
.
For most types, this just traverses the value, calling visit_with
on
each field/element.
For types of interest (such as Ty
), the implementation of this method
that calls a visitor method specifically for that type (such as
V::visit_ty
). This is where control transfers from TypeVisitable
to
TypeVisitor
.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.
Implementations on Foreign Types§
Source§impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for ByRef
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for ByRef
fn visit_with<F: TypeVisitor<TyCtxt<'tcx>>>(&self, _: &mut F) -> F::Result
Source§impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for InlineAsmTemplatePiece
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for InlineAsmTemplatePiece
fn visit_with<F: TypeVisitor<TyCtxt<'tcx>>>(&self, _: &mut F) -> F::Result
Source§impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Res
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Res
fn visit_with<F: TypeVisitor<TyCtxt<'tcx>>>(&self, _: &mut F) -> F::Result
Source§impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for CoroutineKind
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for CoroutineKind
fn visit_with<F: TypeVisitor<TyCtxt<'tcx>>>(&self, _: &mut F) -> F::Result
Source§impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for MatchSource
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for MatchSource
fn visit_with<F: TypeVisitor<TyCtxt<'tcx>>>(&self, _: &mut F) -> F::Result
Source§impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for InlineAsmRegOrRegClass
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for InlineAsmRegOrRegClass
fn visit_with<F: TypeVisitor<TyCtxt<'tcx>>>(&self, _: &mut F) -> F::Result
Source§impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for FieldIdx
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for FieldIdx
fn visit_with<F: TypeVisitor<TyCtxt<'tcx>>>(&self, _: &mut F) -> F::Result
Source§impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for TyAndLayout<'tcx, Ty<'tcx>>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for TyAndLayout<'tcx, Ty<'tcx>>
fn visit_with<V: TypeVisitor<TyCtxt<'tcx>>>(&self, visitor: &mut V) -> V::Result
Source§impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for VariantIdx
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for VariantIdx
fn visit_with<F: TypeVisitor<TyCtxt<'tcx>>>(&self, _: &mut F) -> F::Result
Source§impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Size
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Size
fn visit_with<F: TypeVisitor<TyCtxt<'tcx>>>(&self, _: &mut F) -> F::Result
Source§impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for InlineAsmOptions
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for InlineAsmOptions
fn visit_with<F: TypeVisitor<TyCtxt<'tcx>>>(&self, _: &mut F) -> F::Result
Source§impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for NodeId
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for NodeId
fn visit_with<F: TypeVisitor<TyCtxt<'tcx>>>(&self, _: &mut F) -> F::Result
Source§impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for HirId
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for HirId
fn visit_with<F: TypeVisitor<TyCtxt<'tcx>>>(&self, _: &mut F) -> F::Result
Source§impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for DefId
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for DefId
fn visit_with<F: TypeVisitor<TyCtxt<'tcx>>>(&self, _: &mut F) -> F::Result
Source§impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for LocalDefId
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for LocalDefId
fn visit_with<F: TypeVisitor<TyCtxt<'tcx>>>(&self, _: &mut F) -> F::Result
Source§impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Span
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Span
fn visit_with<F: TypeVisitor<TyCtxt<'tcx>>>(&self, _: &mut F) -> F::Result
Source§impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for ErrorGuaranteed
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for ErrorGuaranteed
fn visit_with<V: TypeVisitor<TyCtxt<'tcx>>>(&self, visitor: &mut V) -> V::Result
Source§impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Ident
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Ident
fn visit_with<F: TypeVisitor<TyCtxt<'tcx>>>(&self, _: &mut F) -> F::Result
Source§impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Symbol
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Symbol
fn visit_with<F: TypeVisitor<TyCtxt<'tcx>>>(&self, _: &mut F) -> F::Result
Source§impl<'tcx, T: TypeVisitable<TyCtxt<'tcx>> + Debug + Clone> TypeVisitable<TyCtxt<'tcx>> for Spanned<T>
impl<'tcx, T: TypeVisitable<TyCtxt<'tcx>> + Debug + Clone> TypeVisitable<TyCtxt<'tcx>> for Spanned<T>
fn visit_with<V: TypeVisitor<TyCtxt<'tcx>>>(&self, visitor: &mut V) -> V::Result
Source§impl<I> TypeVisitable<I> for boolwhere
I: Interner,
impl<I> TypeVisitable<I> for boolwhere
I: Interner,
fn visit_with<F>(&self, _: &mut F) -> <F as TypeVisitor<I>>::Resultwhere
F: TypeVisitor<I>,
Source§impl<I> TypeVisitable<I> for u16where
I: Interner,
impl<I> TypeVisitable<I> for u16where
I: Interner,
fn visit_with<F>(&self, _: &mut F) -> <F as TypeVisitor<I>>::Resultwhere
F: TypeVisitor<I>,
Source§impl<I> TypeVisitable<I> for u32where
I: Interner,
impl<I> TypeVisitable<I> for u32where
I: Interner,
fn visit_with<F>(&self, _: &mut F) -> <F as TypeVisitor<I>>::Resultwhere
F: TypeVisitor<I>,
Source§impl<I> TypeVisitable<I> for u64where
I: Interner,
impl<I> TypeVisitable<I> for u64where
I: Interner,
fn visit_with<F>(&self, _: &mut F) -> <F as TypeVisitor<I>>::Resultwhere
F: TypeVisitor<I>,
Source§impl<I> TypeVisitable<I> for ()where
I: Interner,
impl<I> TypeVisitable<I> for ()where
I: Interner,
fn visit_with<F>(&self, _: &mut F) -> <F as TypeVisitor<I>>::Resultwhere
F: TypeVisitor<I>,
Source§impl<I> TypeVisitable<I> for usizewhere
I: Interner,
impl<I> TypeVisitable<I> for usizewhere
I: Interner,
fn visit_with<F>(&self, _: &mut F) -> <F as TypeVisitor<I>>::Resultwhere
F: TypeVisitor<I>,
Source§impl<I> TypeVisitable<I> for Stringwhere
I: Interner,
impl<I> TypeVisitable<I> for Stringwhere
I: Interner,
fn visit_with<F>(&self, _: &mut F) -> <F as TypeVisitor<I>>::Resultwhere
F: TypeVisitor<I>,
Source§impl<I, A, B, C> TypeVisitable<I> for (A, B, C)
impl<I, A, B, C> TypeVisitable<I> for (A, B, C)
fn visit_with<V>(&self, visitor: &mut V) -> <V as TypeVisitor<I>>::Resultwhere
V: TypeVisitor<I>,
Source§impl<I, T> TypeVisitable<I> for &[T]where
I: Interner,
T: TypeVisitable<I>,
impl<I, T> TypeVisitable<I> for &[T]where
I: Interner,
T: TypeVisitable<I>,
fn visit_with<V>(&self, visitor: &mut V) -> <V as TypeVisitor<I>>::Resultwhere
V: TypeVisitor<I>,
Source§impl<I, T> TypeVisitable<I> for Option<T>where
I: Interner,
T: TypeVisitable<I>,
impl<I, T> TypeVisitable<I> for Option<T>where
I: Interner,
T: TypeVisitable<I>,
fn visit_with<V>(&self, visitor: &mut V) -> <V as TypeVisitor<I>>::Resultwhere
V: TypeVisitor<I>,
Source§impl<I, T> TypeVisitable<I> for Box<[T]>where
I: Interner,
T: TypeVisitable<I>,
impl<I, T> TypeVisitable<I> for Box<[T]>where
I: Interner,
T: TypeVisitable<I>,
fn visit_with<V>(&self, visitor: &mut V) -> <V as TypeVisitor<I>>::Resultwhere
V: TypeVisitor<I>,
Source§impl<I, T> TypeVisitable<I> for Box<T>where
I: Interner,
T: TypeVisitable<I>,
impl<I, T> TypeVisitable<I> for Box<T>where
I: Interner,
T: TypeVisitable<I>,
fn visit_with<V>(&self, visitor: &mut V) -> <V as TypeVisitor<I>>::Resultwhere
V: TypeVisitor<I>,
Source§impl<I, T> TypeVisitable<I> for Vec<T>where
I: Interner,
T: TypeVisitable<I>,
impl<I, T> TypeVisitable<I> for Vec<T>where
I: Interner,
T: TypeVisitable<I>,
fn visit_with<V>(&self, visitor: &mut V) -> <V as TypeVisitor<I>>::Resultwhere
V: TypeVisitor<I>,
Source§impl<I, T> TypeVisitable<I> for ThinVec<T>where
I: Interner,
T: TypeVisitable<I>,
impl<I, T> TypeVisitable<I> for ThinVec<T>where
I: Interner,
T: TypeVisitable<I>,
fn visit_with<V>(&self, visitor: &mut V) -> <V as TypeVisitor<I>>::Resultwhere
V: TypeVisitor<I>,
Source§impl<I, T, E> TypeVisitable<I> for Result<T, E>
impl<I, T, E> TypeVisitable<I> for Result<T, E>
fn visit_with<V>(&self, visitor: &mut V) -> <V as TypeVisitor<I>>::Resultwhere
V: TypeVisitor<I>,
Source§impl<I, T, Ix> TypeVisitable<I> for IndexVec<Ix, T>
impl<I, T, Ix> TypeVisitable<I> for IndexVec<Ix, T>
fn visit_with<V>(&self, visitor: &mut V) -> <V as TypeVisitor<I>>::Resultwhere
V: TypeVisitor<I>,
Source§impl<I, T, U> TypeVisitable<I> for (T, U)
impl<I, T, U> TypeVisitable<I> for (T, U)
fn visit_with<V>(&self, visitor: &mut V) -> <V as TypeVisitor<I>>::Resultwhere
V: TypeVisitor<I>,
Implementors§
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for PlaceBase
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for ProjectionKind
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for rustc_middle::infer::canonical::Certainty
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for rustc_middle::mir::consts::Const<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for ConstValue<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for CovTerm
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for CoverageKind
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for MappingKind
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Op
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for BindingForm<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for LocalInfo<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for MentionedItem<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for VarDebugInfoContents<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for ErrorHandled
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Scalar
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for ConstraintCategory<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for ReturnConstraint
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for AggregateKind<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for BackwardIncompatibleDropReason
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for BinOp
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for rustc_middle::mir::syntax::BorrowKind
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for CallSource
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for rustc_middle::mir::syntax::CastKind
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for FakeReadCause
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for InlineAsmMacro
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for InlineAsmOperand<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for MirPhase
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for NonDivergingIntrinsic<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for NullOp<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Operand<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for RetagKind
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Rvalue<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for StatementKind<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for TerminatorKind<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for UnOp
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for UnwindAction
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for UnwindTerminateReason
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for PatKind<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for PatRangeBoundary<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for IsConstable
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for ObligationCauseCode<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for SelectionError<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for WellFormedLoc
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for OutlivesBound<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for OverflowError
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for SelectionCandidate<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for rustc_middle::ty::abstract_const::CastKind
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for NotConstEvaluatable
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Adjust
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for AutoBorrow
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for AutoBorrowMutability
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for PointerCoercion
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for AdtKind
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for AssocKind
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for rustc_middle::ty::closure::BorrowKind
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for UpvarCapture
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for ExprKind
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for ValTree<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Asyncness
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for ClosureKind
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for ImplSubject<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for InferConst
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for InstanceKind<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for ReifyReason
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for PatternKind<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for BoundRegionKind
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Reveal
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for UpvarArgs<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for UserType<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for rustc_middle::hir::place::Place<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Projection<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for QueryRegionConstraints<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for MemberConstraint<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Scope
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for BasicBlocks<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Cache
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for rustc_middle::mir::consts::UnevaluatedConst<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for BlockMarkerId
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for BranchSpan
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for ConditionId
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for ConditionInfo
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for CounterId
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for CoverageInfoHi
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for DecisionInfo
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Expression
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for ExpressionId
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for FunctionCoverageInfo
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for MCDCBranchSpan
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for MCDCDecisionSpan
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Mapping
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for SourceRegion
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for CtfeProvenance
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for AllocId
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for GlobalId<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for CoroutineLayout<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for CoroutineSavedLocal
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for CoroutineSavedTy<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Statement<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for BasicBlock
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for BasicBlockData<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for BlockTailInfo
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Body<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for CoroutineInfo<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Local
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for LocalDecl<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for MirSource<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Promoted
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for SourceInfo
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for SourceScope
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for SourceScopeData<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for SourceScopeLocalData
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for UserTypeProjection
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for UserTypeProjections
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for VarDebugInfo<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for VarDebugInfoFragment<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for ConstOperand<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for CopyNonOverlapping<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for rustc_middle::mir::syntax::Place<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for SwitchTargets
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for PlaceTy<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Terminator<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Ascription<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for FieldPat<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Pat<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for PatRange<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for DropckOutlivesResult<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for NormalizationResult<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for AscribeUserType<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for DropckOutlives<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Eq<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for ImpliedOutlivesBounds<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for ProvePredicate<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Subtype<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for ExternalConstraints<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for PredefinedOpaques<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for DerivedCause<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for IfExpressionCause<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for ImplDerivedCause<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for InternedObligationCauseCode<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for MatchExpressionArmCause<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for ObligationCause<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for SignatureMismatchData<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for UnifyReceiverContext<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Adjustment<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for OverloadedDeref
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for AdtDef<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for AssocItem
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for CaptureInfo
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for CapturedPlace<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for UpvarId
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for UpvarPath
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Expr<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for rustc_middle::ty::consts::Const<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for GenericArg<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for UserArgs<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for UserSelfTy<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Instance<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Pattern<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Clause<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Predicate<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for TraitPredPrintModifiersAndPath<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for TraitPredPrintWithBoundConstness<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for TraitRefPrintOnlyTraitName<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for TraitRefPrintOnlyTraitPath<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for TraitRefPrintSugared<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for BoundRegion
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for LateParamRegion
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Region<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for BoundVar
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for ClosureSizeProfileData<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for ImplHeader<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for InstantiatedPredicates<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for OpaqueHiddenType<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for ParamEnv<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Placeholder<BoundRegion>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Placeholder<BoundVar>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Placeholder<BoundTy>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Term<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Ty<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for TypingEnv<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for ParamConst
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for ParamTy
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for CanonicalUserTypeAnnotation<'tcx>
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for UserTypeAnnotationIndex
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for Clauses<'tcx>
impl<'tcx, N> TypeVisitable<TyCtxt<'tcx>> for ImplSource<'tcx, N>where
N: TypeVisitable<TyCtxt<'tcx>>,
impl<'tcx, N> TypeVisitable<TyCtxt<'tcx>> for ImplSourceUserDefinedData<'tcx, N>where
N: TypeVisitable<TyCtxt<'tcx>>,
impl<'tcx, O> TypeVisitable<TyCtxt<'tcx>> for AssertKind<O>where
O: TypeVisitable<TyCtxt<'tcx>>,
impl<'tcx, R> TypeVisitable<TyCtxt<'tcx>> for QueryResponse<'tcx, R>where
R: TypeVisitable<TyCtxt<'tcx>>,
impl<'tcx, T> TypeVisitable<TyCtxt<'tcx>> for ClearCrossCrate<T>where
T: TypeVisitable<TyCtxt<'tcx>>,
impl<'tcx, T> TypeVisitable<TyCtxt<'tcx>> for Normalize<T>where
T: TypeVisitable<TyCtxt<'tcx>>,
impl<'tcx, T> TypeVisitable<TyCtxt<'tcx>> for ParamEnvAnd<'tcx, T>where
T: TypeVisitable<TyCtxt<'tcx>>,
impl<'tcx, T> TypeVisitable<TyCtxt<'tcx>> for PseudoCanonicalInput<'tcx, T>where
T: TypeVisitable<TyCtxt<'tcx>>,
impl<'tcx, T: TypeVisitable<TyCtxt<'tcx>>> TypeVisitable<TyCtxt<'tcx>> for &'tcx List<T>
impl<'tcx, V, T> TypeVisitable<TyCtxt<'tcx>> for ProjectionElem<V, T>
impl<I> TypeVisitable<I> for TypeError<I>where
I: Interner,
<I as Interner>::Region: TypeVisitable<I>,
<I as Interner>::BoundRegion: TypeVisitable<I>,
ExpectedFound<<I as Interner>::Ty>: TypeVisitable<I>,
ExpectedFound<<I as Interner>::DefId>: TypeVisitable<I>,
<I as Interner>::Ty: TypeVisitable<I>,
<I as Interner>::Const: TypeVisitable<I>,
ExpectedFound<<I as Interner>::BoundExistentialPredicates>: TypeVisitable<I>,
ExpectedFound<<I as Interner>::Const>: TypeVisitable<I>,
<I as Interner>::DefId: TypeVisitable<I>,
impl<I> TypeVisitable<I> for TypingMode<I>
impl<I> TypeVisitable<I> for ExistentialPredicate<I>where
I: Interner,
ExistentialTraitRef<I>: TypeVisitable<I>,
ExistentialProjection<I>: TypeVisitable<I>,
<I as Interner>::DefId: TypeVisitable<I>,
impl<I> TypeVisitable<I> for ClauseKind<I>where
I: Interner,
TraitPredicate<I>: TypeVisitable<I>,
OutlivesPredicate<I, <I as Interner>::Region>: TypeVisitable<I>,
OutlivesPredicate<I, <I as Interner>::Ty>: TypeVisitable<I>,
ProjectionPredicate<I>: TypeVisitable<I>,
<I as Interner>::Const: TypeVisitable<I>,
<I as Interner>::Ty: TypeVisitable<I>,
<I as Interner>::GenericArg: TypeVisitable<I>,
HostEffectPredicate<I>: TypeVisitable<I>,
impl<I> TypeVisitable<I> for PredicateKind<I>where
I: Interner,
ClauseKind<I>: TypeVisitable<I>,
<I as Interner>::DefId: TypeVisitable<I>,
SubtypePredicate<I>: TypeVisitable<I>,
CoercePredicate<I>: TypeVisitable<I>,
<I as Interner>::Const: TypeVisitable<I>,
NormalizesTo<I>: TypeVisitable<I>,
<I as Interner>::Term: TypeVisitable<I>,
impl<I> TypeVisitable<I> for AliasRelationDirectionwhere
I: Interner,
impl<I> TypeVisitable<I> for AliasTyKindwhere
I: Interner,
impl<I> TypeVisitable<I> for BoundConstnesswhere
I: Interner,
impl<I> TypeVisitable<I> for CanonicalTyVarKindwhere
I: Interner,
impl<I> TypeVisitable<I> for CanonicalVarKind<I>where
I: Interner,
<I as Interner>::PlaceholderTy: TypeVisitable<I>,
<I as Interner>::PlaceholderRegion: TypeVisitable<I>,
<I as Interner>::PlaceholderConst: TypeVisitable<I>,
impl<I> TypeVisitable<I> for FloatTywhere
I: Interner,
impl<I> TypeVisitable<I> for InferTywhere
I: Interner,
impl<I> TypeVisitable<I> for IntVarValuewhere
I: Interner,
impl<I> TypeVisitable<I> for Movabilitywhere
I: Interner,
impl<I> TypeVisitable<I> for Mutabilitywhere
I: Interner,
impl<I> TypeVisitable<I> for PredicatePolaritywhere
I: Interner,
impl<I> TypeVisitable<I> for Variancewhere
I: Interner,
impl<I> TypeVisitable<I> for BuiltinImplSourcewhere
I: Interner,
impl<I> TypeVisitable<I> for rustc_middle::ty::solve::Certaintywhere
I: Interner,
impl<I> TypeVisitable<I> for GoalSourcewhere
I: Interner,
impl<I> TypeVisitable<I> for MaybeCausewhere
I: Interner,
impl<I> TypeVisitable<I> for ProbeKind<I>where
I: Interner,
Result<Canonical<I, Response<I>>, NoSolution>: TypeVisitable<I>,
CandidateSource<I>: TypeVisitable<I>,
impl<I> TypeVisitable<I> for rustc_type_ir::const_kind::UnevaluatedConst<I>where
I: Interner,
<I as Interner>::DefId: TypeVisitable<I>,
<I as Interner>::GenericArgs: TypeVisitable<I>,
impl<I> TypeVisitable<I> for OpaqueTypeKey<I>where
I: Interner,
<I as Interner>::LocalDefId: TypeVisitable<I>,
<I as Interner>::GenericArgs: TypeVisitable<I>,
impl<I> TypeVisitable<I> for AliasTerm<I>where
I: Interner,
<I as Interner>::GenericArgs: TypeVisitable<I>,
<I as Interner>::DefId: TypeVisitable<I>,
impl<I> TypeVisitable<I> for CoercePredicate<I>
impl<I> TypeVisitable<I> for ExistentialProjection<I>where
I: Interner,
<I as Interner>::DefId: TypeVisitable<I>,
<I as Interner>::GenericArgs: TypeVisitable<I>,
<I as Interner>::Term: TypeVisitable<I>,
impl<I> TypeVisitable<I> for ExistentialTraitRef<I>where
I: Interner,
<I as Interner>::DefId: TypeVisitable<I>,
<I as Interner>::GenericArgs: TypeVisitable<I>,
impl<I> TypeVisitable<I> for HostEffectPredicate<I>
impl<I> TypeVisitable<I> for NormalizesTo<I>
impl<I> TypeVisitable<I> for ProjectionPredicate<I>
impl<I> TypeVisitable<I> for SubtypePredicate<I>
impl<I> TypeVisitable<I> for TraitPredicate<I>
impl<I> TypeVisitable<I> for TraitRef<I>where
I: Interner,
<I as Interner>::DefId: TypeVisitable<I>,
<I as Interner>::GenericArgs: TypeVisitable<I>,
impl<I> TypeVisitable<I> for AliasTy<I>where
I: Interner,
<I as Interner>::GenericArgs: TypeVisitable<I>,
<I as Interner>::DefId: TypeVisitable<I>,
impl<I> TypeVisitable<I> for FnSig<I>
impl<I> TypeVisitable<I> for TypeAndMut<I>
impl<I> TypeVisitable<I> for ExternalConstraintsData<I>where
I: Interner,
Vec<OutlivesPredicate<I, <I as Interner>::GenericArg>>: TypeVisitable<I>,
Vec<(OpaqueTypeKey<I>, <I as Interner>::Ty)>: TypeVisitable<I>,
NestedNormalizationGoals<I>: TypeVisitable<I>,
impl<I> TypeVisitable<I> for NestedNormalizationGoals<I>
impl<I> TypeVisitable<I> for NoSolutionwhere
I: Interner,
impl<I> TypeVisitable<I> for PredefinedOpaquesData<I>
impl<I> TypeVisitable<I> for Response<I>where
I: Interner,
CanonicalVarValues<I>: TypeVisitable<I>,
<I as Interner>::ExternalConstraints: TypeVisitable<I>,
impl<I> TypeVisitable<I> for CanonicalVarInfo<I>
impl<I> TypeVisitable<I> for CanonicalVarValues<I>
impl<I> TypeVisitable<I> for ClosureArgs<I>
impl<I> TypeVisitable<I> for CoroutineArgs<I>
impl<I> TypeVisitable<I> for CoroutineClosureArgs<I>
impl<I> TypeVisitable<I> for CoroutineClosureSignature<I>
impl<I> TypeVisitable<I> for DebruijnIndexwhere
I: Interner,
impl<I> TypeVisitable<I> for FnHeader<I>where
I: Interner,
<I as Interner>::Safety: TypeVisitable<I>,
<I as Interner>::Abi: TypeVisitable<I>,
impl<I> TypeVisitable<I> for FnSigTys<I>
impl<I> TypeVisitable<I> for GenSig<I>
impl<I> TypeVisitable<I> for RegionVidwhere
I: Interner,
impl<I> TypeVisitable<I> for UniverseIndexwhere
I: Interner,
impl<I, A> TypeVisitable<I> for OutlivesPredicate<I, A>
impl<I, P> TypeVisitable<I> for Goal<I, P>
impl<I, P> TypeVisitable<I> for QueryInput<I, P>where
I: Interner,
Goal<I, P>: TypeVisitable<I>,
<I as Interner>::PredefinedOpaques: TypeVisitable<I>,
impl<I, T> !TypeVisitable<I> for EarlyBinder<I, T>where
I: Interner,
For early binders, you should first call instantiate
before using any visitors.