Trait chalk_ir::fold::shift::Shift[][src]

pub trait Shift<I: Interner>: Fold<I> {
    fn shifted_in(self, interner: &I) -> Self::Result;
fn shifted_in_from(
        self,
        interner: &I,
        source_binder: DebruijnIndex
    ) -> Self::Result;
fn shifted_out(self, interner: &I) -> Fallible<Self::Result>;
fn shifted_out_to(
        self,
        interner: &I,
        target_binder: DebruijnIndex
    ) -> Fallible<Self::Result>; }
Expand description

Methods for converting debruijn indices to move values into or out of binders.

Required methods

fn shifted_in(self, interner: &I) -> Self::Result[src]

Shifts this term in one level of binders.

fn shifted_in_from(
    self,
    interner: &I,
    source_binder: DebruijnIndex
) -> Self::Result
[src]

Shifts a term valid at outer_binder so that it is valid at the innermost binder. See DebruijnIndex::shifted_in_from for a detailed explanation.

fn shifted_out(self, interner: &I) -> Fallible<Self::Result>[src]

Shifts this term out one level of binders.

fn shifted_out_to(
    self,
    interner: &I,
    target_binder: DebruijnIndex
) -> Fallible<Self::Result>
[src]

Shifts a term valid at the innermost binder so that it is valid at outer_binder. See DebruijnIndex::shifted_out_to for a detailed explanation.

Implementors

impl<T: Fold<I>, I: Interner> Shift<I> for T[src]

fn shifted_in(self, interner: &I) -> Self::Result[src]

fn shifted_in_from(
    self,
    interner: &I,
    source_binder: DebruijnIndex
) -> T::Result
[src]

fn shifted_out_to(
    self,
    interner: &I,
    target_binder: DebruijnIndex
) -> Fallible<T::Result>
[src]

fn shifted_out(self, interner: &I) -> Fallible<Self::Result>[src]