Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

标识符

Syntax
IDENTIFIER_OR_KEYWORD → ( XID_Start | _ ) XID_Continue*

XID_Start<XID_Start defined by Unicode>

XID_Continue<XID_Continue defined by Unicode>

RAW_IDENTIFIERr# IDENTIFIER_OR_KEYWORD

NON_KEYWORD_IDENTIFIERIDENTIFIER_OR_KEYWORDexcept a strict or reserved keyword

IDENTIFIERNON_KEYWORD_IDENTIFIER | RAW_IDENTIFIER

RESERVED_RAW_IDENTIFIER
    r# ( _ | crate | self | Self | super )not immediately followed by XID_Continue

XID_Start `XID_Start` defined by Unicode
XID_Continue `XID_Continue` defined by Unicode
NON_KEYWORD_IDENTIFIER except a strict or reserved keyword IDENTIFIER_OR_KEYWORD
RESERVED_RAW_IDENTIFIER r# not immediately followed by XID_Continue _ crate self Self super

标识符遵循Unicode标准附件#31中针对Unicode 16.0版的规范,并增加了下述内容。一些标识符的例子:

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

UAX #31中使用的概要是:

注意

_开头的标识符通常用于表明一个有意不使用的标识符,并且会消除rustc中的未使用警告。

标识符不能是严格保留关键字,除非带上下述原始标识符中描述的r#前缀。

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

在以下情况,标识符被限制为XID_StartXID_Continue的ASCII子集:

规范化

标识符使用规范化形式 C (NFC) 进行规范化,如Unicode标准附件#15中所定义。两个标识符在它们的 NFC 形式相等时才相等。

过程宏和声明式宏在它们的输入中接收规范化的标识符。

原始标识符

原始标识符类似于普通标识符,但带有r#前缀。(请注意,r#前缀不作为实际标识符的一部分。)

与普通标识符不同,原始标识符可以是任何严格保留关键字,除了上面为RAW_IDENTIFIER列出的那些。

使用RESERVED_RAW_IDENTIFIER词法单元是错误的。