syn-file-expand

This library allows you to load full source code of multi-file crates into a single syn::File.

Features:

Start exploring the library from the [read_full_crate_source_code] function.

Bonus: CLI tool

synfileexpand tool expands Rust sources, like cargo expand, but without macro expansion, only for modules. rustc is not involved.

```text $ synfileexpand src/lib.rs | rustfmt

! [doc = include_str ! ("../README.md")]

![forbid(unsafe_code)]

... mod attrs { use super::AttrParseError; ... } mod expand_impl { use crate::{attrs, Error, ErrorCase, Resolver}; ... }

$ synfileexpand Usage: synfileexpand Reads rust source file, including referred modules and expands them into a single source with all modules inline Conditional paths like #[cfgattr(feature="qqq"),path=...) are resolved using environment variables like SYNFILEEXPANDFEATUREQQQ=1 Other influential envvars: SYNFILEEXPANDDEBUGVARS=1 SYNFILEEXPAND_DEFAULTTRUE=1 ```

There is a Github release with the tool pre-built for various platforms. To build the tool from source code, use expand example.