pub trait TypeFolder<I>: FallibleTypeFolder<I, Error = !>where
I: Interner,{
// Required method
fn cx(&self) -> I;
// Provided methods
fn fold_binder<T>(&mut self, t: Binder<I, T>) -> Binder<I, T>
where T: TypeFoldable<I> { ... }
fn fold_ty(&mut self, t: <I as Interner>::Ty) -> <I as Interner>::Ty { ... }
fn fold_region(
&mut self,
r: <I as Interner>::Region,
) -> <I as Interner>::Region { ... }
fn fold_const(
&mut self,
c: <I as Interner>::Const,
) -> <I as Interner>::Const { ... }
fn fold_predicate(
&mut self,
p: <I as Interner>::Predicate,
) -> <I as Interner>::Predicate { ... }
}
Expand description
This trait is implemented for every infallible folding traversal. There is
a fold method defined for every type of interest. Each such method has a
default that does an “identity” fold. Implementations of these methods
often fall back to a super_fold_with
method if the primary argument
doesn’t satisfy a particular condition.
A blanket implementation of FallibleTypeFolder
will defer to
the infallible methods of this trait to ensure that the two APIs
are coherent.
Required Methods§
Provided Methods§
fn fold_binder<T>(&mut self, t: Binder<I, T>) -> Binder<I, T>where
T: TypeFoldable<I>,
fn fold_ty(&mut self, t: <I as Interner>::Ty) -> <I as Interner>::Ty
fn fold_region(&mut self, r: <I as Interner>::Region) -> <I as Interner>::Region
fn fold_const(&mut self, c: <I as Interner>::Const) -> <I as Interner>::Const
fn fold_predicate( &mut self, p: <I as Interner>::Predicate, ) -> <I as Interner>::Predicate
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.