非夜间版Rust能否查看展开宏?稳定版有替代方案吗?
稳定版Rust查看宏展开的替代方案
好问题!确实从Rust 1.31开始,依赖-Z系列的宏展开选项(比如-Z macro-backtrace)就只对夜间构建开放了,但稳定版里依然有几个实用的方法可以查看宏展开后的代码:
使用
cargo expand工具(最推荐)
这是社区维护的一个非常好用的工具,专门用来查看宏展开后的代码,还会自动用rustfmt格式化输出,可读性拉满。- 先安装工具:
cargo install cargo-expand - 直接在项目根目录运行:
cargo expand,它会展开当前 crate 里的所有宏 - 也可以指定具体的模块或函数:
cargo expand my_crate::my_module或者cargo expand my_function
- 先安装工具:
使用rustc的
--pretty=expanded选项
虽然这个选项已经被标记为废弃,但目前稳定版仍然支持使用。它会直接输出未格式化的宏展开代码:rustc --pretty=expanded src/main.rs如果觉得输出太乱,可以配合rustfmt格式化:
rustc --pretty=expanded src/main.rs | rustfmt注意:这个选项可能在未来的稳定版中被移除,所以长期来看还是更推荐
cargo expand。IDE集成工具
如果你用的是IDE开发,大部分Rust相关的插件都内置了宏展开功能:- VS Code + rust-analyzer:右键点击宏,选择「Expand Macro」(或者用快捷键,默认是
Ctrl+Shift+P然后输入「Expand Macro」) - IntelliJ Rust:右键宏,选择「Expand Macro Recursively」或者「Expand Macro Once」
- VS Code + rust-analyzer:右键点击宏,选择「Expand Macro」(或者用快捷键,默认是
这些方法都能帮你在稳定版Rust里轻松查看宏展开后的代码,日常开发里用cargo expand或者IDE集成功能会更顺手~
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

