File: rust/compiler/rustc_expand/src/mbe/metavar_expr.rs 在Rust源代码中,文件rust/compiler/rustc_expand/src/mbe/metavar_expr.rs是Rust编译器中的一个子模块,主要用于处理宏展开(Macro Expansion)过程中的元变量表达式(Metavariable Expression)。 元变量表达式是指在宏展开的过程中,使用$ident或$(...)形式...
[feature(macro_metavar_expr)] 转录器可以包含元变量表达式(metavariable expressions)。元变量表达式提供转录器关于元变量的一些难获取的信息。除了$$表达式之外,常用的格式为:${ op(...) }。看格式就知道,是用来处理重复内容的(不包括$$)。 ${count(ident)}:$ident在最里面(inner-most)重复内容的重复次数,...
Rust 语言的一个关键特性macro_metavar_expr的子集正在提案稳定化。这个特性包括count、ignore、index和length,它们将极大地增强宏的表达能力。稳定化这些功能将为 Rust 开发者提供更多的灵活性和强大的宏编写工具。该提案计划在 Rust 1.80 版本中实现稳定化,预计在 2024 年 6 月进入 Beta 阶段,7 月正式稳定。 相关...
macro metavariable expressions Unstable now (2023.3.27) and we can not use it in a stable channel #![feature(macro_metavar_expr)]// at the very beginning of filemacro_rules!ident_counter{($($i:ident)*,$($i1:ident)*)=>{println!("{}",${count(i)});};} 实战 斐波纳切数列 构建步...
MetaVarExprUnrecognizedVar:在宏中无法识别元变量表达式变量的错误。 VarStillRepeating:重复变量还在重复时发生的错误。 MetaVarsDifSeqMatchers:宏元变量与不同序列匹配器冲突的错误。 ResolveRelativePath:解析相对路径时发生的错误。 MacroConstStability:宏常量的稳定性错误。
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...
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...
现在的macro是强制卫生性,任何标识符都没法逃逸到外部环境中——简单来说:你在宏展开处定义的“new”展开后不是“new”,会被编译器保留为一个“内部名称” 这一点跟Julia的macro是比较相似的: Julia的宏默认也无法直接将Expr里边的Symbol放入上下文,比如 ...
attr-empty-expr.stderr 529.0 B 2024-02-27 11:59 attr-from-macro.rs 460.0 B 2024-02-27 11:59 auxiliary/ - 2024-02-27 11:59 bad-concat.rs 176.0 B 2024-02-27 11:59 bad-concat.stderr 270.0 B 2024-02-27 11:59 bad_hello.rs 167.0 B 2024-02-27 11:59 bad_hello.stderr 558.0 ...
当您需要重复某个表达式的次数与元变量相同,但不将其包含在表达式中时,有一个技巧:定义一个内部宏...