Vacro Report
Better Panic Reporting for Procedural Macros
Introduction
vacro-report is a diagnostic enhancement tool designed to improve the debugging experience for Rust Procedural Macros.
It currently focuses on solving the opaque panic messages generated by syn::parse_quote! or parse_quote_spanned. When parse_quote! or parse_quote_spanned fails, it usually just says "failed to parse". vacro-report intercepts these calls and prints the actual generated token stream formatted as code, highlighting the syntax error.
Installation
[]
= "0.1.3"
Usage
Simply decorate your function with #[vacro_report::scope].
Inside the scope, any usage of parse_quote! and parse_quote_spanned will be automatically instrumented. No other code changes are required.
use ;
use scope;
Features
- Automatic Interception: Rewrites
parse_quote!andparse_quote_spanned!calls within the#[scope]function. - Detailed Diagnostics: When a parsing error occurs, it displays the generated code (formatted) and the error location.
- Zero Overhead (Success): Adds minimal overhead only when an error actually occurs (panic path).
⚠️ Warning
We use
debug_assertionsto make this judgment, which means that if you have enabled certain optimizations, the effect may not trigger.
Macro help! (v0.1.3)
Creates a wrapper type with enhanced error reporting and smart hints.
This macro defines a new struct (wrapper type) that proxies the behavior of the underlying parsing type (such as syn::Ident or syn::Expr) and allows you to attach context-aware error messages, help text, and code examples.
Syntax
help!;
Basic Usage
# use help;
use Ident;
help!;
Support for vacro-parser
When both the parser and report features of vacro are enabled, or when vacro-report is installed independently with the parser feature enabled, you can use the example field to provide additional support for vacro-parser, enabling it to generate more detailed help information.
# use help;
use Expr;
help!;