MacroKata
欢迎来到MacroKata,这是一套用于学习如何在Rust中编写宏的练习。完成每个任务时,有三个目标:
- 让你的代码编译时没有警告或错误。
- 让你的代码"正确工作"(即产生相同的输出)。
- 重要的是,生成与示例解决方案相同的代码。
你应该按顺序完成这些训练,因为它们的难度会逐渐增加,并且依赖于之前的训练。
这套练习是为已经花了一些时间编程Rust的人编写的。在完成这个之前,请先学习一个Rust教程并自己构建一些小程序。
入门
克隆这个仓库:
$ git clone https://www.github.com/tfpk/macrokata/
你还需要安装Rust "nightly" 工具链,这样我们才能展示展开后的宏:
$ rustup toolchain install nightly
接下来,安装 cargo-expand
:
$ cargo install cargo-expand
构建此仓库提供的主要二进制文件:
$ cargo build --bin macrokata
你可以在 exercises/01_my_first_macro
中找到第一个训练(my_first_macro
)。
阅读书籍的第一章
并通过编辑 main.rs
文件开始。
要将你展开的代码与"目标"进行比较,请使用 test
子命令:
$ cargo run -- test 01_my_first_macro
你可以按如下方式运行你自己的代码:
$ cargo run --bin 01_my_first_macro
如何学习过程宏
我最初计划将 macrokata
扩展到讨论过程宏。在研究过程中,我发现dtolnay的卓越Proc Macro Workshop。
Jon Gjengset关于过程宏的视频也是一个非常棒的资源(尽管很长)。
我已经暂停了尝试写类似的东西,因为我认为上述资源在各方面都更好。不过,如果你认为我们可以在这里做些什么来补充那个工作坊,请提出问题。