[][src]Crate walkabout

Visitor generation for Rust structs and enums.

Usage documentation is a work in progress, but for an example of the generated visitor, see the sqlparser::ast::visit module.

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 Visit and VisitMut traits precludes the use of a custom derive procedural macro. We need to consider the entire AST at once to build the Visit and 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.

Modules

ir

Intermediate representation (IR) for codegen.

Functions

gen_visit

Generates a visitor for an immutable AST.

gen_visit_mut

Generates a visitor for a mutable AST.

load

Loads type definitions from the specified module.