Traits for transforming bits of IR.
pub use self::shift::Shift; |
shift | Shifting of debruijn indices
|
Subst | Substitution used during folding
|
Fold | Applies the given Folder to a value, producing a folded result
of type Self::Result . The result is in the interner
TI . The result type is typically the same as the source type
(modulo interner), but in some cases we convert from borrowed
to owned as well (e.g., the folder for &T will fold to a fresh
T ; well, actually T::Result ).
|
Folder | A "folder" is a transformer that can be used to make a copy of
some term -- that is, some bit of IR, such as a Goal -- with
certain changes applied. The idea is that it contains methods that
let you swap types/lifetimes for new types/lifetimes; meanwhile,
each bit of IR implements the Fold trait which, given a
Folder , will reconstruct itself, invoking the folder's methods
to transform each of the types/lifetimes embedded within.
|
SuperFold | For types where "fold" invokes a callback on the Folder , the
SuperFold trait captures the recursive behavior that folds all
the contents of the type.
|