如何在用户空间中实现诸如`format_args!`之类的复杂宏?

时间:2019-05-18 08:23:24

标签: rust macros

我喜欢Rust带有很多宏,这些宏将计算移至编译时,而不是重复地移至运行时。

print!及其使用format_args! See source code的所有变体就是很好的例子。

不幸的是,在源代码中,您看到的是注释 /* compiler built-in */ ,而不是直接在源文件中的实现。

Rust是否有能力让用户编写诸如宏之类的复杂逻辑?如果是这样,我该怎么办?

1 个答案:

答案 0 :(得分:1)

复杂宏通常被实现为过程宏,您可以在The Rust Programming LanguageThe Rust Reference书籍中了解更多信息。

您还可以使用所谓的声明性宏完成非常复杂的事情,看看出色的The Little Book of Rust Macros

在YouTube上有很多关于这些的讨论,但是您可能会发现以下内容特别有趣,这是克里斯·王(Chris Wong)在RustConf 2018的“我的小程序宏”中发表的:

youtube