Visitor generation for Rust structs and enums.
Usage documentation is a work in progress, but for an example of the
generated visitor, see the
Some of our ASTs, which we represent with a tree of Rust structs and enums, are sufficiently complicated that maintaining a visitor by hand is onerous. This crate provides a generalizable framework for parsing Rust struct and enum definitions from source code and automatically generating tree traversal (“visitor”) code.
Note that the desired structure of the
precludes the use of a custom derive procedural macro. We need to consider
the entire AST at once to build the
VisitMut traits, and
derive macros only allow you to see one struct at a time.
The design of the visitors is modeled after the visitors provided by the
syn crate. See: https://github.com/dtolnay/syn/tree/master/codegen
The name of this crate is an homage to CockroachDB’s Go package of the same name.
- Intermediate representation (IR) for codegen.
- Generates a fold transformer for a mutable AST.
- Generates a visitor for an immutable AST.
- Generates a visitor for a mutable AST.
- Loads type definitions from the specified module.