Struct lib_ruby_parser::traverse::visitor::Visitor [−][src]
pub struct Visitor<T> where
T: Observer, {
pub observer: T,
}
Expand description
Generic visitor of Node
.
It doesn’t do anything on its own,
but it notifies given Observer
.
struct MyObserver {
pub numbers: Vec<nodes::Int>,
}
impl Observer for MyObserver {
fn on_int(&mut self, node: &nodes::Int) {
self.numbers.push(node.clone())
}
}
let source = "2 + 3";
let mut parser = Parser::new(source.as_bytes(), ParserOptions::default());
let ast = parser.do_parse().ast.unwrap();
let observer = MyObserver { numbers: vec![] };
let visitor = Visitor { observer };
visitor.visit_root(&ast);
println!("{:?}", visitor.observer.numbers);
// => [Int { value: "2" }, Int { value: "3" }]
Fields
observer: T
Observer of the visitor, receives calls like on_int(&mut self, node: nodes::Int)
Implementations
Starts traversing on a given node
Trait Implementations
Auto Trait Implementations
impl<T> RefUnwindSafe for Visitor<T> where
T: RefUnwindSafe,
impl<T> UnwindSafe for Visitor<T> where
T: UnwindSafe,