Useful crates for creating macros:
Crate | Usage |
---|---|
prettyplease | print token stream as rust code |
Uses bat::PrettyPinter
and prettyplease::unparse
fn pretty_print(token_stream: &proc_macro2::TokenStream) {
let token_stream = token_stream.to_string();
let string = match syn::parse_file(&token_stream) {
Ok(file) => prettyplease::unparse(&file),
Err(error) => {
format! {"Error parsing tokenstream: {error:?}\n\n{token_stream }\n\n"}
}
};
bat::PrettyPrinter::new()
.input_from_bytes(string.as_bytes())
.language("Rust")
.print()
.unwrap();
}