pub fn visitor<T, B, F1, F2>(enter: F1, leave: F2) -> FnVisitor<T, B, F1, F2>Expand description
Create a visitor that only visits items of a specific type from enter and leave closures.
This is a convenience function for creating simple visitors without defining
a new struct and implementing the Visitor trait manually.
ยงExample
use core::ops::ControlFlow;
use traversable::Traversable;
use traversable::Visitor;
use traversable::function::visitor;
#[derive(Traversable)]
struct Item {
value: i32,
}
let item = Item { value: 10 };
let mut total_value = 0;
let mut visitor = visitor::<Item, (), _, _>(
|node: &Item| {
// enter closure
total_value += node.value;
ControlFlow::Continue(())
},
|_node: &Item| {
// leave closure
ControlFlow::Continue(())
},
);
item.traverse(&mut visitor);
assert_eq!(total_value, 10);