关键字
keywords.md
commit 64923185890763048d190ce92cb668b58acbc49a
Rust 将关键字分为三类:
译者注:下文
KW
为 keywords 的简写。
严格关键字
严格关键字仅能在正确的上下文中使用。它们不能用作:
Lexer:
KW_AS :as
KW_BREAK :break
KW_CONST :const
KW_CONTINUE :continue
KW_CRATE :crate
KW_ELSE :else
KW_ENUM :enum
KW_EXTERN :extern
KW_FALSE :false
KW_FN :fn
KW_FOR :for
KW_IF :if
KW_IMPL :impl
KW_IN :in
KW_LET :let
KW_LOOP :loop
KW_MATCH :match
KW_MOD :mod
KW_MOVE :move
KW_MUT :mut
KW_PUB :pub
KW_REF :ref
KW_RETURN :return
KW_SELFVALUE :self
KW_SELFTYPE :Self
KW_STATIC :static
KW_STRUCT :struct
KW_SUPER :super
KW_TRAIT :trait
KW_TRUE :true
KW_TYPE :type
KW_UNSAFE :unsafe
KW_USE :use
KW_WHERE :where
KW_WHILE :while
2018 版本增加了下述规定关键字。
Lexer 2018+
KW_ASYNC :async
KW_AWAIT :await
KW_DYN :dyn
保留关键字
保留关键字尚未使用,但已保留供将来使用。它们与严格的关键字有相同的限制。其背后的原因是,禁止当前程序使用这些关键字,从而使当前程序与未来版本的 Rust 兼容。
Lexer
KW_ABSTRACT :abstract
KW_BECOME :become
KW_BOX :box
KW_DO :do
KW_FINAL :final
KW_MACRO :macro
KW_OVERRIDE :override
KW_PRIV :priv
KW_TYPEOF :typeof
KW_UNSIZED :unsized
KW_VIRTUAL :virtual
KW_YIELD :yield
2018 版本增加了下述保留关键字。
Lexer 2018+
KW_TRY :try
弱待修正关键字
弱待修正关键字仅在特定的上下文中才有特殊的含义。例如,可以声明一个名为 union
的变量或方法。
-
union
用来声明一个联合体,且仅在联合体声明中是关键字。 -
'static
用于静态生命周期,且不能用作泛型生命周期参数。// error[E0262]: invalid lifetime parameter name: `'static` fn invalid_lifetime_parameter<'static>(s: &'static str) -> &'static str { s }
-
2015 版本中,
dyn
是一个关键字,当在类型位置使用时,其后跟随的路径不能以::
开头。自 2018 版本开始,
dyn
被提升为规定关键字。
Lexer
KW_UNION :union
KW_STATICLIFETIME :'static
Lexer 2015
KW_DYN :dyn