查看 Rust 宏输出

tve*_*eeg 1 macros rust

如何查看扩展 Rust 宏的代码输出?

例如我有这个片段:

macro_rules! five_times {
    ($x:expr) => (5 * $x);
}

fn main() {
    let a = five_times!(2 + 3);
}
Run Code Online (Sandbox Code Playgroud)

我想看到这样的事情:

fn main() {
    let a = 5 * (2 + 3);
}
Run Code Online (Sandbox Code Playgroud)

tve*_*eeg 6

使用 nightly Rust 时,您可以在源文件上使用以下命令:

rustc --pretty expanded -Z unstable-options FILENAME.rs
Run Code Online (Sandbox Code Playgroud)

这将打印以下输出:

macro_rules! five_times(( $ x : expr ) => ( 5 * $ x ) ;);

fn main() { let a = 5 * (2 + 3); }
Run Code Online (Sandbox Code Playgroud)

  • 现在是 2021 年,事情发生了一些变化。现在你需要使用 `rustc -Zunpretty=expanded some.rs` (3认同)