我开始学习 Rust 宏,但文档有些有限。这很好——我猜它们是一个专家功能。虽然我可以进行基本的代码生成、特征的实现等,但一些内置宏似乎远不止这些,例如各种打印宏,它们检查字符串文字并将其用于代码扩展。
我查看了源代码print!
,它调用了另一个名为format_args
. 不幸的是,这似乎不是在“纯 Rust”中构建的,评论只是说“编译器内置”。
是否可以编写像print!
纯 Rust 宏一样复杂的东西?如果是这样,它会怎么做?
我实际上对构建“编译时树”很感兴趣——基本上将某些固定字符串识别为在编译时固定的“关键字”。这将是高性能的(可能),但主要是我只对代码生成感兴趣。