8 releases
0.0.8 | Aug 29, 2024 |
---|---|
0.0.7 | May 31, 2024 |
0.0.6 | Apr 10, 2024 |
0.0.5 | Jan 3, 2024 |
0.0.1 | Feb 25, 2023 |
#1376 in Procedural macros
61 downloads per month
Used in 4 crates
(via ezno-parser)
8KB
139 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
~310–760KB
~18K SLoC