gpt4 book ai didi

rust - 可以编写什么样的 Rust 插件/语法扩展,它们在哪里记录?

转载 作者:行者123 更新时间:2023-11-29 07:42:53 25 4
gpt4 key购买 nike

This从 1.0 开始,站点介绍了 Rust 中的六种语法扩展。 DecoratorModifierMultiModifierNormalTTIdentTTMacroRulesTT

不幸的是,它指向这些(以及相关的编译器扩展)项目的文档的所有链接似乎都已失效。事实上,甚至手动搜索 Rust 文档中的 SyntaxExtension甚至 syntax模块不产生任何结果。它still似乎在 master 分支的主要 Rust 存储库中,所以这显然不仅仅是在某个地方的托儿所的问题。

值得注意的是,该页面提到在某些时候“很快”(从 1.0 开始)MultiModifierModifier 可能会合并,但由于文档消失,我可以从当前的 Nightly 开始确认这一点。

book仅记录基本的 lints 和“过程宏”,它们的范围似乎相当有限。

那么,到现在还有6种语法扩展类型吗?他们的文档是否在某个新位置保持最新?它们中的每一个是否仍然执行与 1.0 前后大致相同的功能?

最佳答案

那个网站已经过时了——它是在 Rust 稳定之前的。 Rust 1.20 中唯一支持的“插件/语法扩展”是示例宏和自定义派生,它们都在 The Rust Programming Language 中。 .不稳定的 Rust 也有 custom attributesprocedural macros ,但这两者都可能在稳定之前发生变化。

该站点中列出的扩展类型与当前宏类型的粗略映射类似于:

  • 装饰器 -> 自定义派生
  • 修饰符、多重修饰符 -> 自定义属性
  • NormalTT -> 程序宏
  • IdentTT -> Procedural Macros(我不完全理解它们是什么,所以我不确定)
  • MacroRulesTT -> 示例宏(又名声明性宏)

宏的示例很容易找到(例如 stdlog crate 广泛使用它们)。 serde_derive crate 可能是使用自定义派生的最佳示例。

更新:

程序宏(包括自定义属性)在 Rust 1.30 中得到稳定。参见 https://doc.rust-lang.org/stable/book/ch19-06-macros.html

关于rust - 可以编写什么样的 Rust 插件/语法扩展,它们在哪里记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40256524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com