Trait libunseemly::walk_mode::Dir [−][src]
pub trait Dir: Debug + Copy + Clone where
Self: Sized, {
type Mode: WalkMode;
type Out: Clone + Debug + Reifiable;
fn pre_walk(
node: Ast,
cnc: LazyWalkReses<Self::Mode>
) -> (Ast, LazyWalkReses<Self::Mode>);
fn walk_quasi_literally(
node: Ast,
cnc: &LazyWalkReses<Self::Mode>
) -> Result<<<Self::Mode as WalkMode>::D as Dir>::Out, <Self::Mode as WalkMode>::Err>;
fn walk_var(
name: Name,
cnc: &LazyWalkReses<Self::Mode>
) -> Result<<<Self::Mode as WalkMode>::D as Dir>::Out, <Self::Mode as WalkMode>::Err>;
fn walk_atom(
name: Name,
cnc: &LazyWalkReses<Self::Mode>
) -> Result<<<Self::Mode as WalkMode>::D as Dir>::Out, <Self::Mode as WalkMode>::Err>;
fn out_as_elt(out: Self::Out) -> <Self::Mode as WalkMode>::Elt;
fn out_as_env(out: Self::Out) -> Assoc<Name, <Self::Mode as WalkMode>::Elt>;
fn env_as_out(env: Assoc<Name, <Self::Mode as WalkMode>::Elt>) -> Self::Out;
fn is_positive() -> bool;
fn oeh_if_negative() -> Option<OutEnvHandle<Self::Mode>>;
}
Associated Types
Required methods
fn pre_walk(
node: Ast,
cnc: LazyWalkReses<Self::Mode>
) -> (Ast, LazyWalkReses<Self::Mode>)
fn pre_walk(
node: Ast,
cnc: LazyWalkReses<Self::Mode>
) -> (Ast, LazyWalkReses<Self::Mode>)
Get ready to destructure a node. Includes freshening (including the context_elt, if necessary) and and mode-specific leaf-processing
fn walk_quasi_literally(
node: Ast,
cnc: &LazyWalkReses<Self::Mode>
) -> Result<<<Self::Mode as WalkMode>::D as Dir>::Out, <Self::Mode as WalkMode>::Err>
Look up variable in the environment!
fn walk_atom(
name: Name,
cnc: &LazyWalkReses<Self::Mode>
) -> Result<<<Self::Mode as WalkMode>::D as Dir>::Out, <Self::Mode as WalkMode>::Err>
fn is_positive() -> bool
fn is_positive() -> bool
For when we hackishly need to execute some code depending on the direction
fn oeh_if_negative() -> Option<OutEnvHandle<Self::Mode>>
fn oeh_if_negative() -> Option<OutEnvHandle<Self::Mode>>
If necessary, prepare to smuggle results across more-quoted AST