pub trait TypeVisitor<I>: Sizedwhere
I: Interner,{
type Result: VisitorResult = ();
// Provided methods
fn visit_binder<T>(&mut self, t: &Binder<I, T>) -> Self::Result
where T: TypeVisitable<I> { ... }
fn visit_ty(&mut self, t: <I as Interner>::Ty) -> Self::Result { ... }
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, p: <I as Interner>::Clauses) -> Self::Result { ... }
fn visit_error(
&mut self,
_guar: <I as Interner>::ErrorGuaranteed,
) -> Self::Result { ... }
}
Expand description
This trait is implemented for every visiting traversal. There is a visit method defined for every type of interest. Each such method has a default that recurses into the type’s fields in a non-custom fashion.
Provided Associated Types§
type Result: VisitorResult = ()
Provided Methods§
fn visit_binder<T>(&mut self, t: &Binder<I, T>) -> Self::Resultwhere
T: TypeVisitable<I>,
fn visit_ty(&mut self, t: <I as Interner>::Ty) -> Self::Result
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, p: <I as Interner>::Clauses) -> Self::Result
fn visit_error( &mut self, _guar: <I as Interner>::ErrorGuaranteed, ) -> Self::Result
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.