功能:#![feature(macro_metavar_expr)] 转录器可以包含元变量表达式(metavariable expressions)。元变量表达式提供转录器关于元变量的一些难获取的信息。除了$$表达式之外,常用的格式为:${ op(...) }。看格式就知道,是用来处理重复内容的(不包括$$)。 ${count(ident)}:$ident在最里面(inner-most)重复内容的重...
在Rust源代码中,文件rust/compiler/rustc_expand/src/mbe/metavar_expr.rs是Rust编译器中的一个子模块,主要用于处理宏展开(Macro Expansion)过程中的元变量表达式(Metavariable Expression)。 元变量表达式是指在宏展开的过程中,使用$ident或$(...)形式的语法将标识符或模式绑定到一个名字,并在宏模式匹配中进行引用。
Rust 宏元变量表达式特性提案稳定化 Rust 语言的一个关键特性macro_metavar_expr的子集正在提案稳定化。这个特性包括count、ignore、index和length,它们将极大地增强宏的表达能力。稳定化这些功能将为 Rust 开发者提供更多的灵活性和强大的宏编写工具。该提案计划在 Rust 1.80 版本中实现稳定化,预计在 2024 年 6 月进...
compiler/rustc_expand/src/mbe/metavar_expr.rs Comment on lines +58 to +60 kind: token::LitKind::Char | token::LitKind::Integer | token::LitKind::Str, symbol, suffix: None, Contributor Author c410-f3r Jun 22, 2024 • edited At least for now, only a subset of "unsuffix...
MetaVarExprUnrecognizedVar:在宏中无法识别元变量表达式变量的错误。 VarStillRepeating:重复变量还在重复时发生的错误。 MetaVarsDifSeqMatchers:宏元变量与不同序列匹配器冲突的错误。 ResolveRelativePath:解析相对路径时发生的错误。 MacroConstStability:宏常量的稳定性错误。
This is a tracking issue for the experimental feature macro metavariable expression concat (RFC pending). The feature gate for the issue is #![feature(macro_metavar_expr_concat)]. Provides a modern alternative to the concat_idents! macro...
die-macro-2.rs 106.0 B 2024-02-27 11:59 die-macro-expr.rs 127.0 B 2024-02-27 11:59 die-macro-pure.rs 127.0 B 2024-02-27 11:59 die-macro.rs 204.0 B 2024-02-27 11:59 doc-comment.rs 407.0 B 2024-02-27 11:59 dollar-crate-nested-encoding.rs 172.0 B 2024-02-27 11:59 dupl...
当您需要重复某个表达式的次数与元变量相同,但不将其包含在表达式中时,有一个技巧:定义一个内部宏...
[feature(macro_metavar_expr)] 展开器可以包含元变量表达式。元变量表达式提供了展开器中重复递归匹配到的值的元数据信息。 除了$$,元变量表达式的形式如 ${op(...)} 除了 $$,都可以递归匹配。 ${count(ident)}: $ident 重复递归的次数。这个表达式等同于${count(ident, 0)}. ${count(ident, depth)}:...
Stabilization proposal This PR proposes the stabilization of a subset of #![feature(macro_metavar_expr)] or more specifically, the stabilization of count, ignore, index and length. Tracking issue: ...