17-小结
9.15 小结
在本章中,我们介绍了Rust的元编程,并且研究了多种宏。最常用的宏是macro_rules!,它是一个声明性宏。声明性宏在AST层面工作,这意味着它不支持任意扩展,但要求宏扩展在AST中格式良好。对于更复杂的用例,你可以使用过程宏来完全控制输入,并生成所需的代码。我们还研究了cargo子命令cargo-expand的应用。
宏确实是一种强大的工具,但不应该被深度依赖。只有当更常见的抽象机制(例如函数、特征及泛型)不足以解决相关的问题时,我们才可以考虑宏。此外,宏应用代码会使其对初学者的可读性降低,应该尽量避免。话虽如此,在编写测试用例条件时它们会非常有用,并且被开发人员广泛采用。
在第10章中,我们将看到Rust的另一面,即不安全的特性。如果你想使用不同的语言与Rust进行相互操作,那么这些特性虽然不太值得推荐却能不可避免地被实现。