For now, this reference is a best-effort document. We strive for validity and completeness, but are not yet there. In the future, the docs and lang teams will work together to figure out how best to do this. Until then, this is a best-effort attempt. If you find something wrong or missing, file an issue or send in a pull request.

关键词

keywords Commit: eb02dd5194a747277bfa46b0185d1f5c248f177b

Rust将关键字分为三类:

严格关键字

这些关键字只能在正确的上下文中使用。 它们不能用作以下名称:

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_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_ASYNC : async
KW_AWAIT : await
KW_TRY : try

弱关键字

这些关键字仅在某些情况下具有特殊含义。 例如,它可以声明一个名为union的变量或方法。

  • union用于声明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