对各种复杂的 Rust 代码的分析
使人们能够在追求强大且易于使用的宏库 API 方面突破可能性极限的90% 是他们对 Rust 中除了宏之外的一切内容的掌握,以及他们将普通语言特性以有趣的方式组合在一起的创造力,这种方式可能不会出现在手写代码中。
有时你会遇到一些你觉得非常先进或神奇的 Rust 宏。如果你有这种感觉,我鼓励你仔细观察一下,你会发现,就宏实现本身而言,这些库都没有做任何有趣的事情。如果是一个过程式宏,它们总是以一种无聊的方式解析输入,以无聊的方式爬行一些语法树,以了解输入,并以无聊的方式粘贴一些输出代码,就像你通过阅读我 [过程式宏研讨会][workshop] 的任何部分,在几个小时内就能学到的一样。如果是一个 macro_rules 宏,一切都从概念上来说都很无聊,但如果扩展到极限,它就会变成只能写入的语法,即使是作者也难以跟上和理解,更不用说其他人,他们还没有掌握 macro_rules 的基本知识。
在宏程序开发方面,所有的技巧都围绕着宏程序生成的代码 是什么 来展开,而不是 如何 生成代码。这对那些以程序宏作为一种"编译器插件"的模糊概念来进入宏程序开发的用户来说可能会令人惊讶。他们想象必须提供各种复杂的 API,用于与编译器的其余部分进行集成。事实并非如此。宏程序所做的唯一一件事就是
暂无开放 Issues,或尚未同步最近议题。