7个版本
0.0.7 | 2024年5月31日 |
---|---|
0.0.6 | 2024年4月10日 |
0.0.5 | 2024年1月3日 |
0.0.4 | 2023年12月20日 |
0.0.1 | 2023年2月25日 |
#1167 in 过程宏
在 4 个crate中使用(通过 ezno-parser)
8KB
139 代码行
一个生成AST节点可变和不可变 访问 实现的包。
访问者是实现一个特质的实现者,该特质的函数在每一个节点上被调用。
此模块针对 解析器 模块,并具有扩展数据的能力。
用法
use visitable_derive::Visitable;
#[derive(Visitable)]
struct MyAstNode {
...
}
属性
visit_self
首先访问所有字段,然后访问自身
#[derive(Visitable)]
#[visit_self]
struct MyAstNode {
...
}
选项
also_visit_first_if
如果条件为真,将额外访问自身
#[derive(Visitable)]
#[visit_self(also_visit_first_if="self.predicate()"]
struct MyAstNode {
...
}
impl MyAstNode {
fn predicate(&self) -> bool {
...
}
}
visit_skip_field
跳过访问字段。如果类型没有实现 Visitable
#[derive(Visitable)]
struct MyAstNode {
#[visit_skip_field]
a: String
}
依赖项
~325–770KB
~18K SLoC