visitor
pub trait Visitor { type Error; fn visit(&mut self, data: u32) -> Result<(), Self::Error>; }
type Error
fn visit(&mut self, data: u32) -> Result<(), Self::Error>