Trait rustc::middle::ty_fold::TypeFolder[src]
pub trait TypeFolder {
fn tcx<'a>(&'a self) -> &'a ctxt;
fn fold_ty(&mut self, t: t) -> t { ... }
fn fold_mt(&mut self, t: &mt) -> mt { ... }
fn fold_trait_ref(&mut self, t: &TraitRef) -> TraitRef { ... }
fn fold_sty(&mut self, sty: &sty) -> sty { ... }
fn fold_substs(&mut self, substs: &Substs) -> Substs { ... }
fn fold_sig(&mut self, sig: &FnSig) -> FnSig { ... }
fn fold_bare_fn_ty(&mut self, fty: &BareFnTy) -> BareFnTy { ... }
fn fold_closure_ty(&mut self, fty: &ClosureTy) -> ClosureTy { ... }
fn fold_region(&mut self, r: Region) -> Region { ... }
fn fold_trait_store(&mut self, s: TraitStore) -> TraitStore { ... }
fn fold_autoref(&mut self, ar: &AutoRef) -> AutoRef { ... }
fn fold_item_substs(&mut self, i: ItemSubsts) -> ItemSubsts { ... }
}The TypeFolder trait defines the actual folding. There is a
method defined for every foldable type. Each of these has a
default implementation that does an "identity" fold. Within each
identity fold, it should invoke foo.fold_with(self) to fold each
sub-item.
Required Methods
Provided Methods
fn fold_ty(&mut self, t: t) -> t
fn fold_mt(&mut self, t: &mt) -> mt
fn fold_trait_ref(&mut self, t: &TraitRef) -> TraitRef
fn fold_sty(&mut self, sty: &sty) -> sty
fn fold_substs(&mut self, substs: &Substs) -> Substs
fn fold_sig(&mut self, sig: &FnSig) -> FnSig
fn fold_bare_fn_ty(&mut self, fty: &BareFnTy) -> BareFnTy
fn fold_closure_ty(&mut self, fty: &ClosureTy) -> ClosureTy
fn fold_region(&mut self, r: Region) -> Region
fn fold_trait_store(&mut self, s: TraitStore) -> TraitStore
fn fold_autoref(&mut self, ar: &AutoRef) -> AutoRef
fn fold_item_substs(&mut self, i: ItemSubsts) -> ItemSubsts
Implementors
impl<'a> TypeFolder for BottomUpFolder<'a>impl<'a> TypeFolder for RegionFolder<'a>impl<'a> TypeFolder for ResolveState<'a>