标识符
词法:
标识符或关键字 :
XID_起始 XID_延续*
|_
XID_延续+原始标识符 :
r#
标识符或关键字 不包括crate
,self
,super
,Self
非关键字标识符 : 标识符或关键字 不包括 strict 或 reserved 关键字
标识符 :
非关键字标识符 | 原始标识符
标识符遵循 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#
。)
与普通标识符不同,原始标识符可以是任意严格字或保留字,除了词法中 原始标识符
不包括的关键字。