Trait chalk_ir::fold::SuperFold[][src]

pub trait SuperFold<I: Interner>: Fold<I> {
    fn super_fold_with<'i>(
        self,
        folder: &mut dyn Folder<'i, I>,
        outer_binder: DebruijnIndex
    ) -> Fallible<Self::Result>
    where
        I: 'i
; }
Expand description

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.

Required methods

fn super_fold_with<'i>(
    self,
    folder: &mut dyn Folder<'i, I>,
    outer_binder: DebruijnIndex
) -> Fallible<Self::Result> where
    I: 'i, 
[src]

Recursively folds the value.

Implementors

impl<I> SuperFold<I> for Const<I> where
    I: Interner
[src]

fn super_fold_with<'i>(
    self,
    folder: &mut dyn Folder<'i, I>,
    outer_binder: DebruijnIndex
) -> Fallible<Const<I>> where
    I: 'i, 
[src]

impl<I> SuperFold<I> for Lifetime<I> where
    I: Interner
[src]

fn super_fold_with<'i>(
    self,
    folder: &mut dyn Folder<'i, I>,
    outer_binder: DebruijnIndex
) -> Fallible<Lifetime<I>> where
    I: 'i, 
[src]

impl<I> SuperFold<I> for Ty<I> where
    I: Interner
[src]

“Super fold” for a type invokes te more detailed callbacks on the type

fn super_fold_with<'i>(
    self,
    folder: &mut dyn Folder<'i, I>,
    outer_binder: DebruijnIndex
) -> Fallible<Ty<I>> where
    I: 'i, 
[src]

impl<I: Interner> SuperFold<I> for Goal<I>[src]

Superfold folds recursively.

fn super_fold_with<'i>(
    self,
    folder: &mut dyn Folder<'i, I>,
    outer_binder: DebruijnIndex
) -> Fallible<Self::Result> where
    I: 'i, 
[src]

impl<I: Interner> SuperFold<I> for ProgramClause<I>[src]

fn super_fold_with<'i>(
    self,
    folder: &mut dyn Folder<'i, I>,
    outer_binder: DebruijnIndex
) -> Fallible<Self::Result> where
    I: 'i, 
[src]

impl<I: Interner> SuperFold<I> for ProgramClauseData<I>[src]

fn super_fold_with<'i>(
    self,
    folder: &mut dyn Folder<'i, I>,
    outer_binder: DebruijnIndex
) -> Fallible<Self::Result> where
    I: 'i, 
[src]