【发布时间】:2019-05-18 08:23:23
【问题描述】:
我喜欢 Rust 带有许多宏,它们将计算转移到编译时而不是重复地转移到运行时。
print! 及其所有使用format_args! See source code 的变体都是很好的例子。
不幸的是,在源代码中您看到的是注释/* compiler built-in */,而不是源文件中的直接实现。
Rust 是否也有能力让用户编写宏这样的复杂逻辑?如果是这样,我该怎么做?
【问题讨论】:
我喜欢 Rust 带有许多宏,它们将计算转移到编译时而不是重复地转移到运行时。
print! 及其所有使用format_args! See source code 的变体都是很好的例子。
不幸的是,在源代码中您看到的是注释/* compiler built-in */,而不是源文件中的直接实现。
Rust 是否也有能力让用户编写宏这样的复杂逻辑?如果是这样,我该怎么做?
【问题讨论】:
复杂的宏通常实现为过程宏,您可以在The Rust Programming Language 或The Rust Reference 书籍中了解更多信息。
你也可以用所谓的声明性宏来实现非常复杂的事情,看看优秀的The Little Book of Rust Macros。
YouTube 上有几个关于这些的讨论,但您可能会发现以下内容特别有趣,这是 Chris Wong 在 RustConf 2018 上发表的,我的小程序宏:
【讨论】: