标识符

词法:
标识符或关键字 :
      XID_起始 XID_延续*
   | _ XID_延续+

原始标识符 : r# 标识符或关键字 不包括 crate, self, super, Self

非关键字标识符 : 标识符或关键字 不包括 strictreserved 关键字

标识符 :
非关键字标识符 | 原始标识符

标识符遵循 Unicode 标准附录 #31 的规范,使用的是 Unicode 15.0 版本,此外还有下面的增强规则。 以下是一些标识符的例子:

  • foo
  • _identifier
  • r#true
  • Москва
  • 東京

UAX #31 使用的编译设置是:

附加约束条件是,单个下划线字符不是标识符。

注意: 标识符以下划线开头通常用于指示该标识符有意未使用,并将消除 rustc 中的未使用警告。

标识符不能是 严格字保留字 关键字,可以是下面所述的 r# 前缀的 原始标识符

零宽度不连字符 (ZWNJ U+200C) 和零宽度连字符 (ZWJ U+200D) 不能出现在标识符中。

在以下情况,标识符受到 ASCII 子集的 XID_起始XID_延续 的限制:

规范化

标识符使用 Unicode 标准附录 #15 中定义的规范化形式 C (NFC) 进行规范化。如果两个标识符的 NFC 形式相同,那么它们就是相等的。

过程宏声明宏 在其输入中接收规范化的标识符。

原始标识符

原始标识符类似于普通标识符,但带有 r# 前缀。 (注意,实际的标识符不包括 r# 。) 与普通标识符不同,原始标识符可以是任意严格字或保留字,除了词法中 原始标识符 不包括的关键字。