1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
pub mod protocols;
pub mod walkers;

use crate::protocol::Implementer;

pub trait Walk<'ctx>: Sized {
    type Walker: Walker<'ctx> + From<Self>;
}

pub trait Walker<'ctx> {
    type Error;
    type Value;

    fn walk(self, visitor: &mut dyn Implementer<'ctx>) -> Result<Self::Value, Self::Error>;
}