5 releases
0.0.5 | Jan 3, 2024 |
---|---|
0.0.4 | Dec 20, 2023 |
0.0.3 | Sep 29, 2023 |
0.0.2 | Aug 25, 2023 |
0.0.1 | Feb 25, 2023 |
#1415 in Procedural macros
33 downloads per month
Used in 4 crates
(via ezno-parser)
8KB
125 lines
A package which generates mutable and immutable visiting implementations for AST nodes.
A visitor is a implementor a trait of which the a function is called of a each node.
This module is specific for the parser module and contains the ability to extend with data.
Usage
use visitable_derive::Visitable;
#[derive(Visitable)]
struct MyAstNode {
...
}
Attributes
visit_self
Will visit all fields first then self
#[derive(Visitable)]
#[visit_self]
struct MyAstNode {
...
}
Options:
also_visit_first_if
Will visit self additionally before if predicate is true
#[derive(Visitable)]
#[visit_self(also_visit_first_if="self.predicate()"]
struct MyAstNode {
...
}
impl MyAstNode {
fn predicate(&self) -> bool {
...
}
}
visit_skip_field
Skips visiting the field. Used if type does not implement Visitable
#[derive(Visitable)]
struct MyAstNode {
#[visit_skip_field]
a: String
}
Dependencies
~1.5MB
~35K SLoC