rust - 如何在用户空间中实现复杂的宏,如 `format_args!`?

标签 rust macros

我喜欢 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 上有几个关于这些的讨论,但您可能会发现以下内容特别有趣,这是在 2018 年 RustConf 上给出的,Chris Wong 的 My Little Procedural Macro:

youtube

关于rust - 如何在用户空间中实现复杂的宏,如 `format_args!`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56197213/

相关文章:

rust - tokio::net::TcpStream是如何实现tokio::prelude::Stream的?

rust - 使用 Rc 和对象安全

c - C 中的宏和前/后增量

rust - 将宏参数传递给其他宏

c - 如何检查参数是否是 C 预处理器宏中的整型常量表达式?

rust - 如何格式化这样的字符串?

rust - 在使用rust 中,我如何在一行中进行这种类型转换

c - 在结构中使用 Option<unsafe fn ...> 的奇怪内存布局

c - token 粘贴困惑

c++ - 在 gdb 的帮助下调试宏