Rust宏调试与不安全代码使用指南
1. 宏调试
在开发复杂宏时,我们常常需要分析代码如何根据输入进行展开。虽然可以使用 println! 或 panic! 来查看生成的代码,但这是一种比较粗糙的调试方式。Rust社区提供了一个名为 cargo-expand 的子命令,它由David Tonlay开发,代码托管在 https://github.com/dtolnay/cargo-expand ,他也是 syn 和 quote crate的作者。
这个命令内部调用了夜间版编译器标志 -Z unstable-options --pretty=expanded ,但设计上不需要手动切换到夜间版工具链,它会自动完成切换。以下是使用示例,以 IntoMap 派生宏为例,切换到相应目录并运行 cargo expand :
As you can see, the impl block at the bottom is what was generated by
the IntoMap derive macro. cargo-expand also includes pretty printed syntax
highlighted output.
超级会员免费看
订阅专栏 解锁全文

788

被折叠的 条评论
为什么被折叠?



