Automatically generate code for the Visitor pattern.
visit! {
// Automatically generates `Visitor` and `AcceptVisitor` traits
// The `Visitor` trait will contain `visit_<child>` functions for all items inside of the macro call.
// The `AcceptVisitor` trait will be implemented automatically for all items.
#![visitor(name = "Visitor")]
struct Bar {
a: Child,
b: Child,
}
struct Child {}
}
struct MyVisitor;
impl Visitor for MyVisitor {
fn visit_child(&mut self, _child: &Child) {
// Do something cool
}
}
visit is licensed under either of the following licenses, at your option: