hir_ty

Trait TypeVisitable

pub trait TypeVisitable<I>: Debug
where I: Interner,
{ // Required method fn visit_with<B>( &self, visitor: &mut dyn TypeVisitor<I, BreakTy = B>, outer_binder: DebruijnIndex, ) -> ControlFlow<B>; }
Expand description

Applies the given visitor to a value, producing a visited result of type TypeVisitor::Result.

Required Methods§

fn visit_with<B>( &self, visitor: &mut dyn TypeVisitor<I, BreakTy = B>, outer_binder: DebruijnIndex, ) -> ControlFlow<B>

Apply the given visitor visitor to self; binders is the number of binders that are in scope when beginning the visitor. Typically binders starts as 0, but is adjusted when we encounter Binders<T> in the IR or other similar constructs.

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§

§

impl<A, B, C, D, E, I> TypeVisitable<I> for (A, B, C, D, E)
where A: TypeVisitable<I>, B: TypeVisitable<I>, C: TypeVisitable<I>, D: TypeVisitable<I>, E: TypeVisitable<I>, I: Interner,

§

fn visit_with<BT>( &self, visitor: &mut dyn TypeVisitor<I, BreakTy = BT>, outer_binder: DebruijnIndex, ) -> ControlFlow<BT>

§

impl<A, B, C, D, I> TypeVisitable<I> for (A, B, C, D)
where A: TypeVisitable<I>, B: TypeVisitable<I>, C: TypeVisitable<I>, D: TypeVisitable<I>, I: Interner,

§

fn visit_with<BT>( &self, visitor: &mut dyn TypeVisitor<I, BreakTy = BT>, outer_binder: DebruijnIndex, ) -> ControlFlow<BT>

§

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

§

fn visit_with<BT>( &self, visitor: &mut dyn TypeVisitor<I, BreakTy = BT>, outer_binder: DebruijnIndex, ) -> ControlFlow<BT>

§

impl<A, B, I> TypeVisitable<I> for (A, B)
where A: TypeVisitable<I>, B: TypeVisitable<I>, I: Interner,

§

fn visit_with<BT>( &self, visitor: &mut dyn TypeVisitor<I, BreakTy = BT>, outer_binder: DebruijnIndex, ) -> ControlFlow<BT>

§

impl<I> TypeVisitable<I> for bool
where I: Interner,

§

fn visit_with<B>( &self, _visitor: &mut dyn TypeVisitor<I, BreakTy = B>, _outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<I> TypeVisitable<I> for ()
where I: Interner,

§

fn visit_with<B>( &self, _visitor: &mut dyn TypeVisitor<I, BreakTy = B>, _outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<I> TypeVisitable<I> for usize
where I: Interner,

§

fn visit_with<B>( &self, _visitor: &mut dyn TypeVisitor<I, BreakTy = B>, _outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<I> TypeVisitable<I> for PhantomData<I>
where I: Interner,

§

fn visit_with<B>( &self, _visitor: &mut dyn TypeVisitor<I, BreakTy = B>, _outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<I> TypeVisitable<I> for AdtDatum<I>
where I: Interner,

§

fn visit_with<B>( &self, visitor: &mut dyn TypeVisitor<I, BreakTy = B>, outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<I> TypeVisitable<I> for AdtDatumBound<I>
where I: Interner,

§

fn visit_with<B>( &self, visitor: &mut dyn TypeVisitor<I, BreakTy = B>, outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<I> TypeVisitable<I> for AdtFlags
where I: Interner,

§

fn visit_with<B>( &self, _visitor: &mut dyn TypeVisitor<I, BreakTy = B>, _outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<I> TypeVisitable<I> for AdtKind
where I: Interner,

§

fn visit_with<B>( &self, _visitor: &mut dyn TypeVisitor<I, BreakTy = B>, _outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<I> TypeVisitable<I> for AdtVariantDatum<I>
where I: Interner,

§

fn visit_with<B>( &self, visitor: &mut dyn TypeVisitor<I, BreakTy = B>, outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<I> TypeVisitable<I> for AliasEqBound<I>
where I: Interner,

§

fn visit_with<B>( &self, visitor: &mut dyn TypeVisitor<I, BreakTy = B>, outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<I> TypeVisitable<I> for AssociatedTyDatum<I>
where I: Interner,

§

fn visit_with<B>( &self, visitor: &mut dyn TypeVisitor<I, BreakTy = B>, outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<I> TypeVisitable<I> for AssociatedTyDatumBound<I>
where I: Interner,

§

fn visit_with<B>( &self, visitor: &mut dyn TypeVisitor<I, BreakTy = B>, outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<I> TypeVisitable<I> for AssociatedTyValue<I>
where I: Interner,

§

fn visit_with<B>( &self, visitor: &mut dyn TypeVisitor<I, BreakTy = B>, outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<I> TypeVisitable<I> for AssociatedTyValueBound<I>
where I: Interner,

§

fn visit_with<B>( &self, visitor: &mut dyn TypeVisitor<I, BreakTy = B>, outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<I> TypeVisitable<I> for AssociatedTyValueId<I>
where I: Interner,

§

fn visit_with<B>( &self, _visitor: &mut dyn TypeVisitor<I, BreakTy = B>, _outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<I> TypeVisitable<I> for FnDefDatum<I>
where I: Interner,

Avoids visiting I::FnAbi

§

fn visit_with<B>( &self, visitor: &mut dyn TypeVisitor<I, BreakTy = B>, outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<I> TypeVisitable<I> for FnDefDatumBound<I>
where I: Interner,

§

fn visit_with<B>( &self, visitor: &mut dyn TypeVisitor<I, BreakTy = B>, outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<I> TypeVisitable<I> for FnDefInputsAndOutputDatum<I>
where I: Interner,

§

fn visit_with<B>( &self, visitor: &mut dyn TypeVisitor<I, BreakTy = B>, outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<I> TypeVisitable<I> for ImplDatum<I>
where I: Interner,

§

fn visit_with<B>( &self, visitor: &mut dyn TypeVisitor<I, BreakTy = B>, outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<I> TypeVisitable<I> for ImplDatumBound<I>
where I: Interner,

§

fn visit_with<B>( &self, visitor: &mut dyn TypeVisitor<I, BreakTy = B>, outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<I> TypeVisitable<I> for ImplType
where I: Interner,

§

fn visit_with<B>( &self, _visitor: &mut dyn TypeVisitor<I, BreakTy = B>, _outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<I> TypeVisitable<I> for InlineBound<I>
where I: Interner,

§

fn visit_with<B>( &self, visitor: &mut dyn TypeVisitor<I, BreakTy = B>, outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<I> TypeVisitable<I> for OpaqueTyDatum<I>
where I: Interner,

§

fn visit_with<B>( &self, visitor: &mut dyn TypeVisitor<I, BreakTy = B>, outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<I> TypeVisitable<I> for OpaqueTyDatumBound<I>
where I: Interner,

§

fn visit_with<B>( &self, visitor: &mut dyn TypeVisitor<I, BreakTy = B>, outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<I> TypeVisitable<I> for Polarity
where I: Interner,

§

fn visit_with<B>( &self, _visitor: &mut dyn TypeVisitor<I, BreakTy = B>, _outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<I> TypeVisitable<I> for TraitBound<I>
where I: Interner,

§

fn visit_with<B>( &self, visitor: &mut dyn TypeVisitor<I, BreakTy = B>, outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<I> TypeVisitable<I> for TraitDatum<I>
where I: Interner,

§

fn visit_with<B>( &self, visitor: &mut dyn TypeVisitor<I, BreakTy = B>, outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<I> TypeVisitable<I> for TraitDatumBound<I>
where I: Interner,

§

fn visit_with<B>( &self, visitor: &mut dyn TypeVisitor<I, BreakTy = B>, outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<I> TypeVisitable<I> for TraitFlags
where I: Interner,

§

fn visit_with<B>( &self, _visitor: &mut dyn TypeVisitor<I, BreakTy = B>, _outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<I> TypeVisitable<I> for WellKnownTrait
where I: Interner,

§

fn visit_with<B>( &self, _visitor: &mut dyn TypeVisitor<I, BreakTy = B>, _outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<T, I> TypeVisitable<I> for &[T]
where T: TypeVisitable<I>, I: Interner,

§

fn visit_with<B>( &self, visitor: &mut dyn TypeVisitor<I, BreakTy = B>, outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<T, I> TypeVisitable<I> for Option<T>
where T: TypeVisitable<I>, I: Interner,

§

fn visit_with<B>( &self, visitor: &mut dyn TypeVisitor<I, BreakTy = B>, outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<T, I> TypeVisitable<I> for &T
where T: TypeVisitable<I>, I: Interner,

§

fn visit_with<B>( &self, visitor: &mut dyn TypeVisitor<I, BreakTy = B>, outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<T, I> TypeVisitable<I> for Box<T>
where T: TypeVisitable<I>, I: Interner,

§

fn visit_with<B>( &self, visitor: &mut dyn TypeVisitor<I, BreakTy = B>, outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<T, I> TypeVisitable<I> for Arc<T>
where T: TypeVisitable<I>, I: Interner,

§

fn visit_with<B>( &self, visitor: &mut dyn TypeVisitor<I, BreakTy = B>, outer_binder: DebruijnIndex, ) -> ControlFlow<B>

§

impl<T, I> TypeVisitable<I> for Vec<T>
where T: TypeVisitable<I>, I: Interner,

§

fn visit_with<B>( &self, visitor: &mut dyn TypeVisitor<I, BreakTy = B>, outer_binder: DebruijnIndex, ) -> ControlFlow<B>

Implementors§

§

impl<G, _I> TypeVisitable<_I> for InEnvironment<G>
where G: HasInterner<Interner = _I> + HasInterner + TypeVisitable<_I>, _I: Interner,

§

impl<I> TypeVisitable<I> for Mutability
where I: Interner,

§

impl<I> TypeVisitable<I> for Safety
where I: Interner,

§

impl<I> TypeVisitable<I> for Scalar
where I: Interner,

§

impl<I> TypeVisitable<I> for FloatTy
where I: Interner,

§

impl<I> TypeVisitable<I> for IntTy
where I: Interner,

§

impl<I> TypeVisitable<I> for UintTy
where I: Interner,

§

impl<I> TypeVisitable<I> for AdtId<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for DebruijnIndex
where I: Interner,

§

impl<I> TypeVisitable<I> for FnSubst<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for AliasEq<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for AliasTy<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for AnswerSubst<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for AssocTypeId<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for ClausePriority
where I: Interner,

§

impl<I> TypeVisitable<I> for ClosureId<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for Const<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for ConstrainedSubst<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for Constraint<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for Constraints<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for CoroutineId<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for DomainGoal<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for DynTy<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for Environment<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for EqGoal<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for FnDefId<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for FnPointer<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for ForeignDefId<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for FromEnv<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for GenericArg<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for GenericArgData<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for Goal<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for GoalData<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for Goals<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for ImplId<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for Lifetime<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for LifetimeOutlives<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for Normalize<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for OpaqueTy<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for OpaqueTyId<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for PlaceholderIndex
where I: Interner,

§

impl<I> TypeVisitable<I> for ProgramClause<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for ProgramClauseImplication<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for ProgramClauses<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for ProjectionTy<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for QuantifiedWhereClauses<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for QuantifierKind
where I: Interner,

§

impl<I> TypeVisitable<I> for Substitution<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for SubtypeGoal<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for TraitId<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for TraitRef<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for Ty<I>
where I: Interner,

“visiting” a type invokes the visit_ty method on the visitor; this usually (in turn) invokes super_visit_ty to visit the individual parts.

§

impl<I> TypeVisitable<I> for TypeOutlives<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for UniverseIndex
where I: Interner,

§

impl<I> TypeVisitable<I> for WellFormed<I>
where I: Interner,

§

impl<I> TypeVisitable<I> for WhereClause<I>
where I: Interner,

§

impl<I, T> TypeVisitable<I> for Canonical<T>
where I: Interner, T: HasInterner<Interner = I> + TypeVisitable<I>,

§

impl<T, I> TypeVisitable<I> for Binders<T>
where I: Interner, T: HasInterner + TypeVisitable<I>,