--- /srv/rebuilderd/tmp/rebuilderdIQb0if/inputs/rust-doc_1.95.0+dfsg1-2_all.deb +++ /srv/rebuilderd/tmp/rebuilderdIQb0if/out/rust-doc_1.95.0+dfsg1-2_all.deb ├── file list │ @@ -1,3 +1,3 @@ │ -rw-r--r-- 0 0 0 4 2026-05-28 18:58:07.000000 debian-binary │ --rw-r--r-- 0 0 0 1096472 2026-05-28 18:58:07.000000 control.tar.xz │ --rw-r--r-- 0 0 0 24929816 2026-05-28 18:58:07.000000 data.tar.xz │ +-rw-r--r-- 0 0 0 1096416 2026-05-28 18:58:07.000000 control.tar.xz │ +-rw-r--r-- 0 0 0 24929488 2026-05-28 18:58:07.000000 data.tar.xz ├── control.tar.xz │ ├── control.tar │ │ ├── ./md5sums │ │ │ ├── ./md5sums │ │ │ │┄ Files differ ├── data.tar.xz │ ├── data.tar │ │ ├── ./usr/share/doc/rust-doc/html/reference/grammar.html │ │ │ @@ -179,3018 +179,77 @@ │ │ │ }); │ │ │ │ │ │ │ │ │
│ │ │
│ │ │

Grammar summary

│ │ │

The following is a summary of the grammar production rules. For details on the syntax of this grammar, see notation.grammar.syntax.

│ │ │ -

Attributes summary

│ │ │ -
│ │ │ -

Syntax │ │ │ -
│ │ │ -ProcMacroDeriveAttribute
    proc_macro_derive ( DeriveMacroName ( , DeriveMacroAttributes )? ,? )

│ │ │ -

DeriveMacroNameIDENTIFIER

│ │ │ -

DeriveMacroAttributes
    attributes ( ( IDENTIFIER ( , IDENTIFIER )* ,? )? )

│ │ │ -

InnerAttribute# ! [ Attr ]

│ │ │ -

OuterAttribute# [ Attr ]

│ │ │ -

Attr
      SimplePath AttrInput?
    | unsafe ( SimplePath AttrInput? )

│ │ │ -

AttrInput
      DelimTokenTree
    | = Expression

│ │ │ -

MetaItem
      SimplePath
    | SimplePath = Expression
    | SimplePath ( MetaSeq? )

│ │ │ -

MetaSeq
    MetaItemInner ( , MetaItemInner )* ,?

│ │ │ -

MetaItemInner
      MetaItem
    | Expression

│ │ │ -

MetaWord
    IDENTIFIER

│ │ │ -

MetaNameValueStr
    IDENTIFIER = ( STRING_LITERAL | RAW_STRING_LITERAL )

│ │ │ -

MetaListPaths
    IDENTIFIER ( ( SimplePath ( , SimplePath )* ,? )? )

│ │ │ -

MetaListIdents
    IDENTIFIER ( ( IDENTIFIER ( , IDENTIFIER )* ,? )? )

│ │ │ -

MetaListNameValueStr
    IDENTIFIER ( ( MetaNameValueStr ( , MetaNameValueStr )* ,? )? )

│ │ │ -

CollapseDebuginfoAttributecollapse_debuginfo ( CollapseDebuginfoOption )

│ │ │ -

CollapseDebuginfoOption
      yes
    | no
    | external

│ │ │ -

InlineAttribute
      inline ( always )
    | inline ( never )
    | inline

│ │ │ -

│ │ │ -
│ │ │ - │ │ │ -
│ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ProcMacroDeriveAttribute │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -proc_macro_derive │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -DeriveMacroName │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -DeriveMacroAttributes │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -DeriveMacroName │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -DeriveMacroAttributes │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -attributes │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -InnerAttribute │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -# │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -! │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -[ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Attr │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -] │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -OuterAttribute │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -# │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -[ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Attr │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -] │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Attr │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AttrInput │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -unsafe │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AttrInput │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AttrInput │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -DelimTokenTree │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -= │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MetaItem │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -= │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MetaSeq │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MetaSeq │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MetaItemInner │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MetaItemInner │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MetaItemInner │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MetaItem │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MetaWord │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MetaNameValueStr │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -= │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -STRING_LITERAL │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RAW_STRING_LITERAL │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MetaListPaths │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MetaListIdents │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MetaListNameValueStr │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MetaNameValueStr │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MetaNameValueStr │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CollapseDebuginfoAttribute │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -collapse_debuginfo │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CollapseDebuginfoOption │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CollapseDebuginfoOption │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -yes │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -no │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -external │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -InlineAttribute │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -inline │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -always │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -inline │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -never │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -inline │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ -

Configuration summary

│ │ │ -
│ │ │ -

Syntax │ │ │ -
│ │ │ -ConfigurationPredicate
      ConfigurationOption
    | ConfigurationAll
    | ConfigurationAny
    | ConfigurationNot
    | true
    | false

│ │ │ -

ConfigurationOption
    IDENTIFIER ( = ( STRING_LITERAL | RAW_STRING_LITERAL ) )?

│ │ │ -

ConfigurationAll
    all ( ConfigurationPredicateList? )

│ │ │ -

ConfigurationAny
    any ( ConfigurationPredicateList? )

│ │ │ -

ConfigurationNot
    not ( ConfigurationPredicate )

│ │ │ -

ConfigurationPredicateList
    ConfigurationPredicate ( , ConfigurationPredicate )* ,?

│ │ │ -

CfgAttributecfg ( ConfigurationPredicate )

│ │ │ -

CfgAttrAttributecfg_attr ( ConfigurationPredicate , CfgAttrs? )

│ │ │ -

CfgAttrsAttr ( , Attr )* ,?

│ │ │ -

CfgSelectCfgSelectArms?

│ │ │ -

CfgSelectArms
    CfgSelectConfigurationPredicate =>
    (
        { ^ TokenTree } ,? CfgSelectArms?
      | ExpressionWithBlockNoAttrs ,? CfgSelectArms?
      | ExpressionWithoutBlockNoAttrs ( , CfgSelectArms? )?
    )

│ │ │ -

CfgSelectConfigurationPredicate
    ConfigurationPredicate | _

│ │ │ -

│ │ │ -
│ │ │ - │ │ │ -
│ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationPredicate │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationOption │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationAll │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationAny │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationNot │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -true │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -false │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationOption │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -= │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -STRING_LITERAL │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RAW_STRING_LITERAL │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationAll │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -all │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationPredicateList │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationAny │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -any │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationPredicateList │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationNot │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -not │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationPredicate │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationPredicateList │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationPredicate │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationPredicate │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CfgAttribute │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -cfg │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationPredicate │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CfgAttrAttribute │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -cfg_attr │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationPredicate │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CfgAttrs │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CfgAttrs │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Attr │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Attr │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CfgSelect │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CfgSelectArms │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CfgSelectArms │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CfgSelectConfigurationPredicate │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -=> │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -{ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -no backtracking │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TokenTree │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -} │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CfgSelectArms │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ExpressionWithBlockNoAttrs │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CfgSelectArms │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ExpressionWithoutBlockNoAttrs │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CfgSelectArms │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CfgSelectConfigurationPredicate │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationPredicate │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -_ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ -

Assembly summary

│ │ │ -
│ │ │ -

Syntax │ │ │ -
│ │ │ -AsmArgsAsmAttrFormatString ( , AsmAttrFormatString )* ( , AsmAttrOperand )* ,?

│ │ │ -

FormatStringSTRING_LITERAL | RAW_STRING_LITERAL | MacroInvocation

│ │ │ -

AsmAttrFormatString → ( OuterAttribute )* FormatString

│ │ │ -

AsmOperand
      ClobberAbi
    | AsmOptions
    | RegOperand

│ │ │ -

AsmAttrOperand → ( OuterAttribute )* AsmOperand

│ │ │ -

ClobberAbiclobber_abi ( Abi ( , Abi )* ,? )

│ │ │ -

AsmOptions
    options ( ( AsmOption ( , AsmOption )* ,? )? )

│ │ │ -

AsmOption
      pure
    | nomem
    | readonly
    | preserves_flags
    | noreturn
    | nostack
    | att_syntax
    | raw

│ │ │ -

RegOperand → ( ParamName = )?
    (
          DirSpec ( RegSpec ) Expression
        | DualDirSpec ( RegSpec ) DualDirSpecExpression
        | sym PathExpression
        | const Expression
        | label { Statements? }
    )

│ │ │ -

ParamNameIDENTIFIER_OR_KEYWORD | RAW_IDENTIFIER

│ │ │ -

DualDirSpecExpression
      Expression
    | Expression => Expression

│ │ │ -

RegSpecRegisterClass | ExplicitRegister

│ │ │ -

RegisterClassIDENTIFIER_OR_KEYWORD

│ │ │ -

ExplicitRegisterSTRING_LITERAL

│ │ │ -

DirSpec
      in
    | out
    | lateout

│ │ │ -

DualDirSpec
      inout
    | inlateout

│ │ │ -

│ │ │ -
│ │ │ - │ │ │ -
│ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AsmArgs │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AsmAttrFormatString │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AsmAttrFormatString │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AsmAttrOperand │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -FormatString │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -STRING_LITERAL │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RAW_STRING_LITERAL │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MacroInvocation │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AsmAttrFormatString │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -OuterAttribute │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -FormatString │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AsmOperand │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ClobberAbi │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AsmOptions │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RegOperand │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AsmAttrOperand │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -OuterAttribute │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AsmOperand │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ClobberAbi │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -clobber_abi │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Abi │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Abi │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AsmOptions │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -options │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AsmOption │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AsmOption │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AsmOption │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -pure │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -nomem │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -readonly │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -preserves_flags │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -noreturn │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -nostack │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -att_syntax │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -raw │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RegOperand │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ParamName │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -= │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -DirSpec │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RegSpec │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -DualDirSpec │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RegSpec │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -DualDirSpecExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -sym │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -PathExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -const │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -label │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -{ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Statements │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -} │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ParamName │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER_OR_KEYWORD │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RAW_IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -DualDirSpecExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -=> │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RegSpec │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RegisterClass │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ExplicitRegister │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RegisterClass │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER_OR_KEYWORD │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ExplicitRegister │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -STRING_LITERAL │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -DirSpec │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -in │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -out │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -lateout │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -DualDirSpec │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -inout │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -inlateout │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │

Items summary

│ │ │
│ │ │

Syntax │ │ │
│ │ │ -Visibility
      pub
    | pub ( crate )
    | pub ( self )
    | pub ( super )
    | pub ( in SimplePath )

│ │ │ -

Item
    OuterAttribute* ( VisItem | MacroItem )

│ │ │ +Item
    OuterAttribute* ( VisItem | MacroItem )

│ │ │

VisItem
    Visibility?
    (
        Module
      | ExternCrate
      | UseDeclaration
      | Function
      | TypeAlias
      | Struct
      | Enumeration
      | Union
      | ConstantItem
      | StaticItem
      | Trait
      | Implementation
      | ExternBlock
    )

│ │ │

MacroItem
      MacroInvocationSemi
    | MacroRulesDefinition

│ │ │

Crate
    InnerAttribute*
    Item*

│ │ │ +

Visibility
      pub
    | pub ( crate )
    | pub ( self )
    | pub ( super )
    | pub ( in SimplePath )

│ │ │

Trait
    unsafe? trait IDENTIFIER GenericParams? ( : TypeParamBounds? )? WhereClause?
    {
        InnerAttribute*
        AssociatedItem*
    }

│ │ │ +

TypeAlias
    type IDENTIFIER GenericParams? ( : TypeParamBounds )?
        WhereClause?
        ( = Type WhereClause? )? ;

│ │ │ +

ConstantItem
    const ( IDENTIFIER | _ ) : Type ( = Expression )? ;

│ │ │

Struct
      StructStruct
    | TupleStruct

│ │ │

StructStruct
    struct IDENTIFIER GenericParams? WhereClause? ( { StructFields? } | ; )

│ │ │

TupleStruct
    struct IDENTIFIER GenericParams? ( TupleFields? ) WhereClause? ;

│ │ │

StructFieldsStructField ( , StructField )* ,?

│ │ │

StructFieldOuterAttribute* Visibility? IDENTIFIER : Type

│ │ │

TupleFieldsTupleField ( , TupleField )* ,?

│ │ │

TupleFieldOuterAttribute* Visibility? Type

│ │ │ +

ImplementationInherentImpl | TraitImpl

│ │ │ +

InherentImpl
    impl GenericParams? Type WhereClause? {
        InnerAttribute*
        AssociatedItem*
    }

│ │ │ +

TraitImpl
    unsafe? impl GenericParams? !? TypePath for Type
    WhereClause?
    {
        InnerAttribute*
        AssociatedItem*
    }

│ │ │

Function
    FunctionQualifiers fn IDENTIFIER GenericParams?
        ( FunctionParameters? )
        FunctionReturnType? WhereClause?
        ( BlockExpression | ; )

│ │ │

FunctionQualifiersconst? async? ItemSafety? ( extern Abi? )?

│ │ │

ItemSafetysafe | unsafe

│ │ │

AbiSTRING_LITERAL | RAW_STRING_LITERAL

│ │ │

FunctionParameters
      SelfParam ,?
    | ( SelfParam , )? FunctionParam ( , FunctionParam )* ,?

│ │ │

SelfParamOuterAttribute* ( ShorthandSelf | TypedSelf )

│ │ │

ShorthandSelf → ( & | & Lifetime )? mut? self

│ │ │

TypedSelfmut? self : Type

│ │ │

FunctionParamOuterAttribute* ( FunctionParamPattern | ... | Type )

│ │ │

FunctionParamPatternPatternNoTopAlt : ( Type | ... )

│ │ │

FunctionReturnType-> Type

│ │ │ -

ImplementationInherentImpl | TraitImpl

│ │ │ -

InherentImpl
    impl GenericParams? Type WhereClause? {
        InnerAttribute*
        AssociatedItem*
    }

│ │ │ -

TraitImpl
    unsafe? impl GenericParams? !? TypePath for Type
    WhereClause?
    {
        InnerAttribute*
        AssociatedItem*
    }

│ │ │ -

Enumeration
    enum IDENTIFIER GenericParams? WhereClause? { EnumVariants? }

│ │ │ -

EnumVariantsEnumVariant ( , EnumVariant )* ,?

│ │ │ -

EnumVariant
    OuterAttribute* Visibility?
    IDENTIFIER ( EnumVariantTuple | EnumVariantStruct )? EnumVariantDiscriminant?

│ │ │ -

EnumVariantTuple( TupleFields? )

│ │ │ -

EnumVariantStruct{ StructFields? }

│ │ │ -

EnumVariantDiscriminant= Expression

│ │ │ -

UseDeclarationuse UseTree ;

│ │ │ -

UseTree
      ( SimplePath? :: )? *
    | ( SimplePath? :: )? { ( UseTree ( , UseTree )* ,? )? }
    | SimplePath ( as ( IDENTIFIER | _ ) )?

│ │ │ -

Union
    union IDENTIFIER GenericParams? WhereClause? { StructFields? }

│ │ │ -

ConstantItem
    const ( IDENTIFIER | _ ) : Type ( = Expression )? ;

│ │ │ -

AssociatedItem
    OuterAttribute* (
        MacroInvocationSemi
      | ( Visibility? ( TypeAlias | ConstantItem | Function ) )
    )

│ │ │ -

StaticItem
    ItemSafety? static mut? IDENTIFIER : Type ( = Expression )? ;

│ │ │ -

ExternBlock
    unsafe? extern Abi? {
        InnerAttribute*
        ExternalItem*
    }

│ │ │ -

ExternalItem
    OuterAttribute* (
        MacroInvocationSemi
      | Visibility? StaticItem
      | Visibility? Function
    )

│ │ │ -

ExternCrateextern crate CrateRef AsClause? ;

│ │ │ -

CrateRefIDENTIFIER | self

│ │ │ -

AsClauseas ( IDENTIFIER | _ )

│ │ │ -

TypeAlias
    type IDENTIFIER GenericParams? ( : TypeParamBounds )?
        WhereClause?
        ( = Type WhereClause? )? ;

│ │ │ -

Module
      unsafe? mod IDENTIFIER ;
    | unsafe? mod IDENTIFIER {
        InnerAttribute*
        Item*
      }

│ │ │

GenericParams< ( GenericParam ( , GenericParam )* ,? )? >

│ │ │

GenericParamOuterAttribute* ( LifetimeParam | TypeParam | ConstParam )

│ │ │

LifetimeParamLifetime ( : LifetimeBounds )?

│ │ │

TypeParamIDENTIFIER ( : TypeParamBounds? )? ( = Type )?

│ │ │

ConstParam
    const IDENTIFIER : Type
    ( = ( BlockExpression | IDENTIFIER | -? LiteralExpression ) )?

│ │ │

WhereClausewhere ( WhereClauseItem , )* WhereClauseItem?

│ │ │

WhereClauseItem
      LifetimeWhereClauseItem
    | TypeBoundWhereClauseItem

│ │ │

LifetimeWhereClauseItemLifetime : LifetimeBounds

│ │ │

TypeBoundWhereClauseItemForLifetimes? Type : TypeParamBounds?

│ │ │ +

StaticItem
    ItemSafety? static mut? IDENTIFIER : Type ( = Expression )? ;

│ │ │ +

ExternCrateextern crate CrateRef AsClause? ;

│ │ │ +

CrateRefIDENTIFIER | self

│ │ │ +

AsClauseas ( IDENTIFIER | _ )

│ │ │ +

AssociatedItem
    OuterAttribute* (
        MacroInvocationSemi
      | ( Visibility? ( TypeAlias | ConstantItem | Function ) )
    )

│ │ │ +

ExternBlock
    unsafe? extern Abi? {
        InnerAttribute*
        ExternalItem*
    }

│ │ │ +

ExternalItem
    OuterAttribute* (
        MacroInvocationSemi
      | Visibility? StaticItem
      | Visibility? Function
    )

│ │ │ +

Union
    union IDENTIFIER GenericParams? WhereClause? { StructFields? }

│ │ │ +

UseDeclarationuse UseTree ;

│ │ │ +

UseTree
      ( SimplePath? :: )? *
    | ( SimplePath? :: )? { ( UseTree ( , UseTree )* ,? )? }
    | SimplePath ( as ( IDENTIFIER | _ ) )?

│ │ │ +

Module
      unsafe? mod IDENTIFIER ;
    | unsafe? mod IDENTIFIER {
        InnerAttribute*
        Item*
      }

│ │ │ +

Enumeration
    enum IDENTIFIER GenericParams? WhereClause? { EnumVariants? }

│ │ │ +

EnumVariantsEnumVariant ( , EnumVariant )* ,?

│ │ │ +

EnumVariant
    OuterAttribute* Visibility?
    IDENTIFIER ( EnumVariantTuple | EnumVariantStruct )? EnumVariantDiscriminant?

│ │ │ +

EnumVariantTuple( TupleFields? )

│ │ │ +

EnumVariantStruct{ StructFields? }

│ │ │ +

EnumVariantDiscriminant= Expression

│ │ │

│ │ │
│ │ │ │ │ │
│ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Visibility │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -pub │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -pub │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -crate │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -pub │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -self │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -pub │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -super │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -pub │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -in │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Item │ │ │ │ │ │ @@ -3496,14 +555,157 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Visibility │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +pub │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +pub │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +crate │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +pub │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +self │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +pub │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +super │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +pub │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +in │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Trait │ │ │ │ │ │ @@ -3635,14 +837,212 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypeAlias │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericParams │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypeParamBounds │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +WhereClause │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ += │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +WhereClause │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +; │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ConstantItem │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +const │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +_ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ += │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +; │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Struct │ │ │ │ │ │ @@ -4079,14 +1479,298 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Implementation │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +InherentImpl │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TraitImpl │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +InherentImpl │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +impl │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericParams │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +WhereClause │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +{ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +InnerAttribute │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +AssociatedItem │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +} │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TraitImpl │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +unsafe │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +impl │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericParams │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +! │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypePath │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +for │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +WhereClause │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +{ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +InnerAttribute │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +AssociatedItem │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +} │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Function │ │ │ │ │ │ @@ -4744,1001 +2428,767 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ -InherentImpl │ │ │ +GenericParam │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -impl │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -GenericParams │ │ │ + │ │ │ + │ │ │ +OuterAttribute │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -WhereClause │ │ │ + │ │ │ + │ │ │ +LifetimeParam │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -{ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -InnerAttribute │ │ │ + │ │ │ + │ │ │ +TypeParam │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -AssociatedItem │ │ │ + │ │ │ + │ │ │ +ConstParam │ │ │ │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -} │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypeParam │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -WhereClause │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -{ │ │ │ - │ │ │ + │ │ │ + │ │ │ +: │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -InnerAttribute │ │ │ + │ │ │ + │ │ │ +TypeParamBounds │ │ │ │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ += │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -AssociatedItem │ │ │ + │ │ │ + │ │ │ +Type │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -} │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -Enumeration │ │ │ + │ │ │ + │ │ │ +ConstParam │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -enum │ │ │ + │ │ │ + │ │ │ +const │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ IDENTIFIER │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +: │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -GenericParams │ │ │ + │ │ │ + │ │ │ +Type │ │ │ │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ += │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -WhereClause │ │ │ + │ │ │ + │ │ │ +BlockExpression │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -{ │ │ │ + │ │ │ + │ │ │ +- │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -EnumVariants │ │ │ + │ │ │ + │ │ │ +LiteralExpression │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -} │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ - │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ - │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -UseTree │ │ │ + │ │ │ + │ │ │ +StaticItem │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ + │ │ │ + │ │ │ +ItemSafety │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -:: │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -* │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ +static │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -:: │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -{ │ │ │ + │ │ │ + │ │ │ +mut │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -UseTree │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -UseTree │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -} │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ +: │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ + │ │ │ + │ │ │ +Type │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -as │ │ │ + │ │ │ + │ │ │ += │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -_ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +; │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +AsClause │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -= │ │ │ + │ │ │ + │ │ │ +as │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -; │ │ │ + │ │ │ + │ │ │ +_ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │ @@ -5827,105 +3277,14 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -StaticItem │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ItemSafety │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -static │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -mut │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -: │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -= │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -; │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ExternBlock │ │ │ │ │ │ @@ -6094,257 +3453,295 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeAlias │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -type │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +:: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +{ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -GenericParams │ │ │ + │ │ │ + │ │ │ +UseTree │ │ │ │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -: │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TypeParamBounds │ │ │ + │ │ │ + │ │ │ +UseTree │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -WhereClause │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -= │ │ │ + │ │ │ + │ │ │ +} │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Type │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +as │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -WhereClause │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +_ │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -; │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │ @@ -6460,545 +3857,350 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ - │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConstParam │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -const │ │ │ - │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ IDENTIFIER │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -: │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -= │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -BlockExpression │ │ │ + │ │ │ + │ │ │ +EnumVariantTuple │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ + │ │ │ + │ │ │ +EnumVariantStruct │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -- │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -LiteralExpression │ │ │ + │ │ │ + │ │ │ +EnumVariantDiscriminant │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeBoundWhereClauseItem │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ForLifetimes │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -: │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeParamBounds │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │ @@ -7016,21 +4218,14 @@ │ │ │

INNER_LINE_DOC
    //! ^ LINE_DOC_COMMENT_CONTENT ( LF | EOF )

│ │ │

LINE_DOC_COMMENT_CONTENT → ( !CR ~LF )*

│ │ │

INNER_BLOCK_DOC
    /*! ^ ( BLOCK_COMMENT_OR_DOC | BLOCK_CHAR )* */

│ │ │

OUTER_LINE_DOC
    /// ^ LINE_DOC_COMMENT_CONTENT ( LF | EOF )

│ │ │

OUTER_BLOCK_DOC
    /** ![* /]
      ^
      ( ~* | BLOCK_COMMENT_OR_DOC )
      ( BLOCK_COMMENT_OR_DOC | BLOCK_CHAR )*
    */

│ │ │

BLOCK_CHAR → ( !( */ | CR ) CHAR )

│ │ │

BLOCK_COMMENT_OR_DOC
      BLOCK_COMMENT
    | OUTER_BLOCK_DOC
    | INNER_BLOCK_DOC

│ │ │ -

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 ) !XID_Continue

│ │ │

Token
      RESERVED_TOKEN
    | RAW_IDENTIFIER
    | CHAR_LITERAL
    | STRING_LITERAL
    | RAW_STRING_LITERAL
    | BYTE_LITERAL
    | BYTE_STRING_LITERAL
    | RAW_BYTE_STRING_LITERAL
    | C_STRING_LITERAL
    | RAW_C_STRING_LITERAL
    | FLOAT_LITERAL
    | INTEGER_LITERAL
    | LIFETIME_TOKEN
    | PUNCTUATION
    | IDENTIFIER_OR_KEYWORD

│ │ │

SUFFIXIDENTIFIER_OR_KEYWORDexcept _

│ │ │

SUFFIX_NO_E → ![e E] SUFFIX

│ │ │

CHAR_LITERAL
    '
        ( ~[' \ LF CR TAB] | QUOTE_ESCAPE | ASCII_ESCAPE | UNICODE_ESCAPE )
    ' SUFFIX?

│ │ │

QUOTE_ESCAPE\' | \"

│ │ │

ASCII_ESCAPE
      \x OCT_DIGIT HEX_DIGIT
    | \n | \r | \t | \\ | \0

│ │ │

UNICODE_ESCAPE
    \u{ ( HEX_DIGIT _* )1..=6valid hex char value }

│ │ │ @@ -7073,14 +4268,21 @@ │ │ │

RESERVED_TOKEN
      RESERVED_GUARDED_STRING_LITERAL
    | RESERVED_NUMBER
    | RESERVED_POUNDS
    | RESERVED_RAW_IDENTIFIER
    | RESERVED_RAW_LIFETIME
    | RESERVED_TOKEN_DOUBLE_QUOTE
    | RESERVED_TOKEN_LIFETIME
    | RESERVED_TOKEN_POUND
    | RESERVED_TOKEN_SINGLE_QUOTE

│ │ │

RESERVED_TOKEN_DOUBLE_QUOTE
    IDENTIFIER_OR_KEYWORDexcept b or c or r or br or cr "

│ │ │

RESERVED_TOKEN_SINGLE_QUOTE
    IDENTIFIER_OR_KEYWORDexcept b '

│ │ │

RESERVED_TOKEN_POUND
    IDENTIFIER_OR_KEYWORDexcept r or br or cr #

│ │ │

RESERVED_TOKEN_LIFETIME
    ' IDENTIFIER_OR_KEYWORDexcept r #

│ │ │

RESERVED_GUARDED_STRING_LITERAL#+ STRING_LITERAL

│ │ │

RESERVED_POUNDS#2..

│ │ │ +

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 ) !XID_Continue

│ │ │

WHITESPACE
      U+0009 // Horizontal tab, '\t'
    | U+000A // Line feed, '\n'
    | U+000B // Vertical tab
    | U+000C // Form feed
    | U+000D // Carriage return, '\r'
    | U+0020 // Space, ' '
    | U+0085 // Next line
    | U+200E // Left-to-right mark
    | U+200F // Right-to-left mark
    | U+2028 // Line separator
    | U+2029 // Paragraph separator

│ │ │

TAB → U+0009 // Horizontal tab, '\t'

│ │ │

LF → U+000A // Line feed, '\n'

│ │ │

CR → U+000D // Carriage return, '\r'

│ │ │

│ │ │
│ │ │ │ │ │ @@ -8028,282 +5230,14 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER_OR_KEYWORD │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -XID_Start │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -_ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -XID_Continue │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -XID_Start │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -`XID_Start` defined by Unicode │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -XID_Continue │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -`XID_Continue` defined by Unicode │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RAW_IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -r# │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER_OR_KEYWORD │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -NON_KEYWORD_IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -except a strict or reserved keyword │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER_OR_KEYWORD │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -NON_KEYWORD_IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RAW_IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RESERVED_RAW_IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -r# │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -_ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -crate │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -self │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Self │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -super │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -not followed by │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -XID_Continue │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Token │ │ │ │ │ │ @@ -12533,14 +9467,282 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER_OR_KEYWORD │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +XID_Start │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +_ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +XID_Continue │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +XID_Start │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +`XID_Start` defined by Unicode │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +XID_Continue │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +`XID_Continue` defined by Unicode │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RAW_IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +r# │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER_OR_KEYWORD │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +NON_KEYWORD_IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +except a strict or reserved keyword │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER_OR_KEYWORD │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +NON_KEYWORD_IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RAW_IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RESERVED_RAW_IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +r# │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +_ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +crate │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +self │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Self │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +super │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +not followed by │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +XID_Continue │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ WHITESPACE │ │ │ │ │ │ @@ -12724,681 +9926,3787 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │ -

Statements summary

│ │ │ +

Types summary

│ │ │
│ │ │

Syntax │ │ │
│ │ │ -Statement
      ;
    | Item
    | LetStatement
    | ExpressionStatement
    | OuterAttribute* MacroInvocationSemi

│ │ │ -

LetStatement
    OuterAttribute* let PatternNoTopAlt ( : Type )?
    (
          = Expression
        | = Expressionexcept LazyBooleanExpression or end with a } else BlockExpression
    )? ;

│ │ │ -

ExpressionStatement
      ExpressionWithoutBlock ;
    | ExpressionWithBlock ;?

│ │ │ +ArrayType[ Type ; Expression ]

│ │ │ +

TraitObjectTypedyn? TypeParamBounds

│ │ │ +

TraitObjectTypeOneBounddyn? TraitBound

│ │ │ +

InferredType_

│ │ │ +

BareFunctionType
    ForLifetimes? FunctionTypeQualifiers fn
       ( FunctionParametersMaybeNamedVariadic? ) BareFunctionReturnType?

│ │ │ +

FunctionTypeQualifiersunsafe? ( extern Abi? )?

│ │ │ +

BareFunctionReturnType-> TypeNoBounds

│ │ │ +

FunctionParametersMaybeNamedVariadic
    MaybeNamedFunctionParameters | MaybeNamedFunctionParametersVariadic

│ │ │ +

MaybeNamedFunctionParameters
    MaybeNamedParam ( , MaybeNamedParam )* ,?

│ │ │ +

MaybeNamedParam
    OuterAttribute* ( ( IDENTIFIER | _ ) : )? Type

│ │ │ +

MaybeNamedFunctionParametersVariadic
    ( MaybeNamedParam , )* MaybeNamedParam , OuterAttribute* ...

│ │ │ +

NeverType!

│ │ │ +

SliceType[ Type ]

│ │ │ +

ReferenceType& Lifetime? mut? TypeNoBounds

│ │ │ +

RawPointerType* ( mut | const ) TypeNoBounds

│ │ │ +

TupleType
      ( )
    | ( ( Type , )+ Type? )

│ │ │ +

ImplTraitTypeimpl TypeParamBounds

│ │ │ +

ImplTraitTypeOneBoundimpl TraitBound

│ │ │ +

Type
      TypeNoBounds
    | ImplTraitType
    | TraitObjectType

│ │ │ +

TypeNoBounds
      ParenthesizedType
    | ImplTraitTypeOneBound
    | TraitObjectTypeOneBound
    | TypePath
    | TupleType
    | NeverType
    | RawPointerType
    | ReferenceType
    | ArrayType
    | SliceType
    | InferredType
    | QualifiedPathInType
    | BareFunctionType
    | MacroInvocation

│ │ │ +

ParenthesizedType( Type )

│ │ │

│ │ │
│ │ │ │ │ │
│ │ │ -
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BareFunctionType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -ExpressionStatement │ │ │ + │ │ │ + │ │ │ +ForLifetimes │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +FunctionTypeQualifiers │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +fn │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +FunctionParametersMaybeNamedVariadic │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BareFunctionReturnType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +FunctionTypeQualifiers │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +unsafe │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +extern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Abi │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BareFunctionReturnType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +-> │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypeNoBounds │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +FunctionParametersMaybeNamedVariadic │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MaybeNamedFunctionParameters │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MaybeNamedFunctionParametersVariadic │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MaybeNamedFunctionParameters │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MaybeNamedParam │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MaybeNamedParam │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +NeverType │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -: │ │ │ + │ │ │ + │ │ │ +! │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SliceType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +[ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ Type │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +] │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ReferenceType │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +& │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Lifetime │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +mut │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypeNoBounds │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TupleType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -= │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -except LazyBooleanExpression or end with a `}` │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +Type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Type │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -else │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ImplTraitType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +impl │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -BlockExpression │ │ │ + │ │ │ + │ │ │ +TypeParamBounds │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ImplTraitTypeOneBound │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -; │ │ │ + │ │ │ + │ │ │ +impl │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TraitBound │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypeNoBounds │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -ExpressionWithBlock │ │ │ + │ │ │ + │ │ │ +ParenthesizedType │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ImplTraitTypeOneBound │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TraitObjectTypeOneBound │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypePath │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TupleType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +NeverType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RawPointerType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ReferenceType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ArrayType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SliceType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +InferredType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +QualifiedPathInType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BareFunctionType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MacroInvocation │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ParenthesizedType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -; │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Type │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │ -

Macros summary

│ │ │ +

Patterns summary

│ │ │
│ │ │

Syntax │ │ │
│ │ │ -MacroInvocation
    SimplePath ! DelimTokenTree

│ │ │ -

DelimTokenTree
      ( TokenTree* )
    | [ TokenTree* ]
    | { TokenTree* }

│ │ │ -

TokenTree
    Tokenexcept delimiters | DelimTokenTree

│ │ │ -

MacroInvocationSemi
      SimplePath ! ( TokenTree* ) ;
    | SimplePath ! [ TokenTree* ] ;
    | SimplePath ! { TokenTree* }

│ │ │ -

MacroRulesDefinition
    macro_rules ! IDENTIFIER MacroRulesDef

│ │ │ -

MacroRulesDef
      ( MacroRules ) ;
    | [ MacroRules ] ;
    | { MacroRules }

│ │ │ -

MacroRules
    MacroRule ( ; MacroRule )* ;?

│ │ │ -

MacroRule
    MacroMatcher => MacroTranscriber

│ │ │ -

MacroMatcher
      ( MacroMatch* )
    | [ MacroMatch* ]
    | { MacroMatch* }

│ │ │ -

MacroMatch
      Tokenexcept $ and delimiters
    | MacroMatcher
    | $ ( IDENTIFIER_OR_KEYWORDexcept crate | RAW_IDENTIFIER ) : MacroFragSpec
    | $ ( MacroMatch+ ) MacroRepSep? MacroRepOp

│ │ │ -

MacroFragSpec
      block | expr | expr_2021 | ident | item | lifetime | literal
    | meta | pat | pat_param | path | stmt | tt | ty | vis

│ │ │ -

MacroRepSepTokenexcept delimiters and MacroRepOp

│ │ │ -

MacroRepOp* | + | ?

│ │ │ -

MacroTranscriberDelimTokenTree

│ │ │ +Pattern|? PatternNoTopAlt ( | PatternNoTopAlt )*

│ │ │ +

PatternNoTopAlt
      PatternWithoutRange
    | RangePattern

│ │ │ +

PatternWithoutRange
      LiteralPattern
    | IdentifierPattern
    | WildcardPattern
    | RestPattern
    | ReferencePattern
    | StructPattern
    | TupleStructPattern
    | TuplePattern
    | GroupedPattern
    | SlicePattern
    | PathPattern
    | MacroInvocation

│ │ │ +

LiteralPattern-? LiteralExpression

│ │ │ +

IdentifierPatternref? mut? IDENTIFIER ( @ PatternNoTopAlt )?

│ │ │ +

WildcardPattern_

│ │ │ +

RestPattern..

│ │ │ +

RangePattern
      RangeExclusivePattern
    | RangeInclusivePattern
    | RangeFromPattern
    | RangeToExclusivePattern
    | RangeToInclusivePattern
    | ObsoleteRangePattern

│ │ │ +

RangeExclusivePattern
      RangePatternBound .. RangePatternBound

│ │ │ +

RangeInclusivePattern
      RangePatternBound ..= RangePatternBound

│ │ │ +

RangeFromPattern
      RangePatternBound ..

│ │ │ +

RangeToExclusivePattern
      .. RangePatternBound

│ │ │ +

RangeToInclusivePattern
      ..= RangePatternBound

│ │ │ +

ObsoleteRangePattern
    RangePatternBound ... RangePatternBound

│ │ │ +

RangePatternBound
      LiteralPattern
    | PathExpression

│ │ │ +

ReferencePattern → ( & | && ) mut? PatternWithoutRange

│ │ │ +

StructPattern
    PathInExpression {
        StructPatternElements?
    }

│ │ │ +

StructPatternElements
      StructPatternFields ( , | , StructPatternEtCetera )?
    | StructPatternEtCetera

│ │ │ +

StructPatternFields
    StructPatternField ( , StructPatternField )*

│ │ │ +

StructPatternField
    OuterAttribute*
    (
        TUPLE_INDEX : Pattern
      | IDENTIFIER : Pattern
      | ref? mut? IDENTIFIER
    )

│ │ │ +

StructPatternEtCetera..

│ │ │ +

TupleStructPatternPathInExpression ( TupleStructItems? )

│ │ │ +

TupleStructItemsPattern ( , Pattern )* ,?

│ │ │ +

TuplePattern( TuplePatternItems? )

│ │ │ +

TuplePatternItems
      Pattern ,
    | RestPattern
    | Pattern ( , Pattern )+ ,?

│ │ │ +

GroupedPattern( Pattern )

│ │ │ +

SlicePattern[ SlicePatternItems? ]

│ │ │ +

SlicePatternItemsPattern ( , Pattern )* ,?

│ │ │ +

PathPatternPathExpression

│ │ │

│ │ │
│ │ │ │ │ │
│ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ +PatternNoTopAlt │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PatternWithoutRange │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PatternWithoutRange │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +LiteralPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IdentifierPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +WildcardPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RestPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ReferencePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +StructPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TupleStructPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TuplePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GroupedPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SlicePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PathPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ MacroInvocation │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +LiteralPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +- │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +LiteralExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IdentifierPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ref │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +mut │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +@ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PatternNoTopAlt │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +WildcardPattern │ │ │ │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +_ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ + │ │ │ + │ │ │ +RangeExclusivePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeInclusivePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeFromPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeToExclusivePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeToInclusivePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ObsoleteRangePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeExclusivePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangePatternBound │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ +.. │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangePatternBound │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeInclusivePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangePatternBound │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +..= │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangePatternBound │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeFromPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangePatternBound │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +.. │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeToExclusivePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +.. │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ -! │ │ │ +RangePatternBound │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeToInclusivePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +..= │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -DelimTokenTree │ │ │ + │ │ │ + │ │ │ +RangePatternBound │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangePatternBound │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +LiteralPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PathExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ReferencePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ -( │ │ │ +& │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +&& │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +mut │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PatternWithoutRange │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +StructPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PathInExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +{ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +StructPatternElements │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +} │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +StructPatternElements │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +StructPatternFields │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +StructPatternEtCetera │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +StructPatternEtCetera │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +StructPatternField │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +OuterAttribute │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TUPLE_INDEX │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ +: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Pattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Pattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ref │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +mut │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +StructPatternEtCetera │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +.. │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TupleStructPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PathInExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TupleStructItems │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ ) │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TupleStructItems │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Pattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -[ │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Pattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TuplePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TuplePatternItems │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TuplePatternItems │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Pattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RestPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Pattern │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TokenTree │ │ │ + │ │ │ + │ │ │ +Pattern │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -] │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GroupedPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -{ │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Pattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SlicePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +[ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SlicePatternItems │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +] │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SlicePatternItems │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Pattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TokenTree │ │ │ + │ │ │ + │ │ │ +Pattern │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -} │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ - │ │ │ + │ │ │ +

Attributes summary

│ │ │ +
│ │ │ +

Syntax │ │ │ +
│ │ │ +InnerAttribute# ! [ Attr ]

│ │ │ +

OuterAttribute# [ Attr ]

│ │ │ +

Attr
      SimplePath AttrInput?
    | unsafe ( SimplePath AttrInput? )

│ │ │ +

AttrInput
      DelimTokenTree
    | = Expression

│ │ │ +

MetaItem
      SimplePath
    | SimplePath = Expression
    | SimplePath ( MetaSeq? )

│ │ │ +

MetaSeq
    MetaItemInner ( , MetaItemInner )* ,?

│ │ │ +

MetaItemInner
      MetaItem
    | Expression

│ │ │ +

MetaWord
    IDENTIFIER

│ │ │ +

MetaNameValueStr
    IDENTIFIER = ( STRING_LITERAL | RAW_STRING_LITERAL )

│ │ │ +

MetaListPaths
    IDENTIFIER ( ( SimplePath ( , SimplePath )* ,? )? )

│ │ │ +

MetaListIdents
    IDENTIFIER ( ( IDENTIFIER ( , IDENTIFIER )* ,? )? )

│ │ │ +

MetaListNameValueStr
    IDENTIFIER ( ( MetaNameValueStr ( , MetaNameValueStr )* ,? )? )

│ │ │ +

InlineAttribute
      inline ( always )
    | inline ( never )
    | inline

│ │ │ +

CollapseDebuginfoAttributecollapse_debuginfo ( CollapseDebuginfoOption )

│ │ │ +

CollapseDebuginfoOption
      yes
    | no
    | external

│ │ │ +

ProcMacroDeriveAttribute
    proc_macro_derive ( DeriveMacroName ( , DeriveMacroAttributes )? ,? )

│ │ │ +

DeriveMacroNameIDENTIFIER

│ │ │ +

DeriveMacroAttributes
    attributes ( ( IDENTIFIER ( , IDENTIFIER )* ,? )? )

│ │ │ +

│ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +OuterAttribute │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +# │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +[ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -DelimTokenTree │ │ │ + │ │ │ + │ │ │ +Attr │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +] │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +AttrInput │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +DelimTokenTree │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -; │ │ │ + │ │ │ + │ │ │ += │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MetaItem │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ SimplePath │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -! │ │ │ + │ │ │ + │ │ │ += │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -[ │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MetaSeq │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MetaItemInner │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MetaItem │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MetaWord │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MetaNameValueStr │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -; │ │ │ + │ │ │ + │ │ │ += │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +STRING_LITERAL │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RAW_STRING_LITERAL │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MetaListPaths │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ SimplePath │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -! │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -{ │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MetaListIdents │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TokenTree │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MetaListNameValueStr │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MetaNameValueStr │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -} │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MetaNameValueStr │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +InlineAttribute │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +inline │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +always │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +inline │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +never │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +inline │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +CollapseDebuginfoAttribute │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +collapse_debuginfo │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +CollapseDebuginfoOption │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +CollapseDebuginfoOption │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +yes │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +no │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +external │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ProcMacroDeriveAttribute │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +proc_macro_derive │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +DeriveMacroName │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +DeriveMacroAttributes │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +DeriveMacroName │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +DeriveMacroAttributes │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +attributes │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ +
│ │ │ + │ │ │ +

Macros summary

│ │ │ +
│ │ │ +

Syntax │ │ │ +
│ │ │ +MacroRulesDefinition
    macro_rules ! IDENTIFIER MacroRulesDef

│ │ │ +

MacroRulesDef
      ( MacroRules ) ;
    | [ MacroRules ] ;
    | { MacroRules }

│ │ │ +

MacroRules
    MacroRule ( ; MacroRule )* ;?

│ │ │ +

MacroRule
    MacroMatcher => MacroTranscriber

│ │ │ +

MacroMatcher
      ( MacroMatch* )
    | [ MacroMatch* ]
    | { MacroMatch* }

│ │ │ +

MacroMatch
      Tokenexcept $ and delimiters
    | MacroMatcher
    | $ ( IDENTIFIER_OR_KEYWORDexcept crate | RAW_IDENTIFIER ) : MacroFragSpec
    | $ ( MacroMatch+ ) MacroRepSep? MacroRepOp

│ │ │ +

MacroFragSpec
      block | expr | expr_2021 | ident | item | lifetime | literal
    | meta | pat | pat_param | path | stmt | tt | ty | vis

│ │ │ +

MacroRepSepTokenexcept delimiters and MacroRepOp

│ │ │ +

MacroRepOp* | + | ?

│ │ │ +

MacroTranscriberDelimTokenTree

│ │ │ +

MacroInvocation
    SimplePath ! DelimTokenTree

│ │ │ +

DelimTokenTree
      ( TokenTree* )
    | [ TokenTree* ]
    | { TokenTree* }

│ │ │ +

TokenTree
    Tokenexcept delimiters | DelimTokenTree

│ │ │ +

MacroInvocationSemi
      SimplePath ! ( TokenTree* ) ;
    | SimplePath ! [ TokenTree* ] ;
    | SimplePath ! { TokenTree* }

│ │ │ +

│ │ │ +
│ │ │ + │ │ │ +
│ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ MacroRulesDefinition │ │ │ │ │ │ @@ -14109,832 +14417,1682 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MacroInvocation │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +! │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +DelimTokenTree │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │
│ │ │ │ │ │ -

Patterns summary

│ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +DelimTokenTree │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TokenTree │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +[ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TokenTree │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +] │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +{ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TokenTree │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +} │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TokenTree │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +except delimiters │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Token │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +DelimTokenTree │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MacroInvocationSemi │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +! │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TokenTree │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +; │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +! │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +[ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TokenTree │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +] │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +; │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +! │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +{ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TokenTree │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +} │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ +

Expressions summary

│ │ │
│ │ │

Syntax │ │ │
│ │ │ -Pattern|? PatternNoTopAlt ( | PatternNoTopAlt )*

│ │ │ -

PatternNoTopAlt
      PatternWithoutRange
    | RangePattern

│ │ │ -

PatternWithoutRange
      LiteralPattern
    | IdentifierPattern
    | WildcardPattern
    | RestPattern
    | ReferencePattern
    | StructPattern
    | TupleStructPattern
    | TuplePattern
    | GroupedPattern
    | SlicePattern
    | PathPattern
    | MacroInvocation

│ │ │ -

LiteralPattern-? LiteralExpression

│ │ │ -

IdentifierPatternref? mut? IDENTIFIER ( @ PatternNoTopAlt )?

│ │ │ -

WildcardPattern_

│ │ │ -

RestPattern..

│ │ │ -

RangePattern
      RangeExclusivePattern
    | RangeInclusivePattern
    | RangeFromPattern
    | RangeToExclusivePattern
    | RangeToInclusivePattern
    | ObsoleteRangePattern

│ │ │ -

RangeExclusivePattern
      RangePatternBound .. RangePatternBound

│ │ │ -

RangeInclusivePattern
      RangePatternBound ..= RangePatternBound

│ │ │ -

RangeFromPattern
      RangePatternBound ..

│ │ │ -

RangeToExclusivePattern
      .. RangePatternBound

│ │ │ -

RangeToInclusivePattern
      ..= RangePatternBound

│ │ │ -

ObsoleteRangePattern
    RangePatternBound ... RangePatternBound

│ │ │ -

RangePatternBound
      LiteralPattern
    | PathExpression

│ │ │ -

ReferencePattern → ( & | && ) mut? PatternWithoutRange

│ │ │ -

StructPattern
    PathInExpression {
        StructPatternElements?
    }

│ │ │ -

StructPatternElements
      StructPatternFields ( , | , StructPatternEtCetera )?
    | StructPatternEtCetera

│ │ │ -

StructPatternFields
    StructPatternField ( , StructPatternField )*

│ │ │ -

StructPatternField
    OuterAttribute*
    (
        TUPLE_INDEX : Pattern
      | IDENTIFIER : Pattern
      | ref? mut? IDENTIFIER
    )

│ │ │ -

StructPatternEtCetera..

│ │ │ -

TupleStructPatternPathInExpression ( TupleStructItems? )

│ │ │ -

TupleStructItemsPattern ( , Pattern )* ,?

│ │ │ -

TuplePattern( TuplePatternItems? )

│ │ │ -

TuplePatternItems
      Pattern ,
    | RestPattern
    | Pattern ( , Pattern )+ ,?

│ │ │ -

GroupedPattern( Pattern )

│ │ │ -

SlicePattern[ SlicePatternItems? ]

│ │ │ -

SlicePatternItemsPattern ( , Pattern )* ,?

│ │ │ -

PathPatternPathExpression

│ │ │ +LiteralExpression
      CHAR_LITERAL
    | STRING_LITERAL
    | RAW_STRING_LITERAL
    | BYTE_LITERAL
    | BYTE_STRING_LITERAL
    | RAW_BYTE_STRING_LITERAL
    | C_STRING_LITERAL
    | RAW_C_STRING_LITERAL
    | INTEGER_LITERAL
    | FLOAT_LITERAL
    | true
    | false

│ │ │ +

AwaitExpressionExpression . await

│ │ │ +

MethodCallExpressionExpression . PathExprSegment ( CallParams? )

│ │ │ +

ReturnExpressionreturn Expression?

│ │ │ +

ClosureExpression
    async?
    move?
    ( || | | ClosureParameters? | )
    ( Expression | -> TypeNoBounds BlockExpression )

│ │ │ +

ClosureParametersClosureParam ( , ClosureParam )* ,?

│ │ │ +

ClosureParamOuterAttribute* PatternNoTopAlt ( : Type )?

│ │ │ +

FieldExpressionExpression . IDENTIFIER

│ │ │ +

IfExpression
    if Conditions BlockExpression
    ( else ( BlockExpression | IfExpression ) )?

│ │ │ +

Conditions
      Expressionexcept StructExpression
    | LetChain

│ │ │ +

LetChainLetChainCondition ( && LetChainCondition )*

│ │ │ +

LetChainCondition
      Expressionexcept ExcludedConditions
    | OuterAttribute* let Pattern = Scrutineeexcept ExcludedConditions

│ │ │ +

ExcludedConditions
      StructExpression
    | LazyBooleanExpression
    | RangeExpr
    | RangeFromExpr
    | RangeInclusiveExpr
    | AssignmentExpression
    | CompoundAssignmentExpression

│ │ │ +

UnderscoreExpression_

│ │ │ +

TupleExpression( TupleElements? )

│ │ │ +

TupleElements → ( Expression , )+ Expression?

│ │ │ +

TupleIndexingExpressionExpression . TUPLE_INDEX

│ │ │ +

ArrayExpression[ ArrayElements? ]

│ │ │ +

ArrayElements
      Expression ( , Expression )* ,?
    | Expression ; Expression

│ │ │ +

IndexExpressionExpression [ Expression ]

│ │ │ +

StructExpression
    PathInExpression { ( StructExprFields | StructBase )? }

│ │ │ +

StructExprFields
    StructExprField ( , StructExprField )* ( , StructBase | ,? )

│ │ │ +

StructExprField
    OuterAttribute*
    (
        IDENTIFIER
      | ( IDENTIFIER | TUPLE_INDEX ) : Expression
    )

│ │ │ +

StructBase.. Expression

│ │ │ +

PathExpression
      PathInExpression
    | QualifiedPathInExpression

│ │ │ +

RangeExpression
      RangeExpr
    | RangeFromExpr
    | RangeToExpr
    | RangeFullExpr
    | RangeInclusiveExpr
    | RangeToInclusiveExpr

│ │ │ +

RangeExprExpression .. Expression

│ │ │ +

RangeFromExprExpression ..

│ │ │ +

RangeToExpr.. Expression

│ │ │ +

RangeFullExpr..

│ │ │ +

RangeInclusiveExprExpression ..= Expression

│ │ │ +

RangeToInclusiveExpr..= Expression

│ │ │ +

MatchExpression
    match Scrutinee {
        InnerAttribute*
        MatchArms?
    }

│ │ │ +

ScrutineeExpressionexcept StructExpression

│ │ │ +

MatchArms
    ( MatchArm => ( ExpressionWithoutBlock , | ExpressionWithBlock ,? ) )*
    MatchArm => Expression ,?

│ │ │ +

MatchArmOuterAttribute* Pattern MatchArmGuard?

│ │ │ +

MatchArmGuardif MatchConditions

│ │ │ +

MatchConditions
     MatchGuardChain
   | Expression

│ │ │ +

MatchGuardChainMatchGuardCondition ( && MatchGuardCondition )*

│ │ │ +

MatchGuardCondition
     Expressionexcept ExcludedMatchConditions
   | OuterAttribute* let Pattern = MatchGuardScrutinee

│ │ │ +

MatchGuardScrutineeExpressionexcept ExcludedMatchConditions

│ │ │ +

ExcludedMatchConditions
      LazyBooleanExpression
    | RangeExpr
    | RangeFromExpr
    | RangeInclusiveExpr
    | AssignmentExpression
    | CompoundAssignmentExpression

│ │ │ +

LoopExpression
    LoopLabel? (
        InfiniteLoopExpression
      | PredicateLoopExpression
      | IteratorLoopExpression
      | LabelBlockExpression
    )

│ │ │ +

InfiniteLoopExpressionloop BlockExpression

│ │ │ +

PredicateLoopExpressionwhile Conditions BlockExpression

│ │ │ +

IteratorLoopExpression
    for Pattern in Expressionexcept StructExpression BlockExpression

│ │ │ +

LoopLabelLIFETIME_OR_LABEL :

│ │ │ +

BreakExpressionbreak LIFETIME_OR_LABEL? Expression?

│ │ │ +

LabelBlockExpressionBlockExpression

│ │ │ +

ContinueExpressioncontinue LIFETIME_OR_LABEL?

│ │ │ +

CallExpressionExpression ( CallParams? )

│ │ │ +

CallParamsExpression ( , Expression )* ,?

│ │ │ +

OperatorExpression
      BorrowExpression
    | DereferenceExpression
    | TryPropagationExpression
    | NegationExpression
    | ArithmeticOrLogicalExpression
    | ComparisonExpression
    | LazyBooleanExpression
    | TypeCastExpression
    | AssignmentExpression
    | CompoundAssignmentExpression

│ │ │ +

BorrowExpression
      ( & | && ) Expression
    | ( & | && ) mut Expression
    | ( & | && ) raw const Expression
    | ( & | && ) raw mut Expression

│ │ │ +

DereferenceExpression* Expression

│ │ │ +

TryPropagationExpressionExpression ?

│ │ │ +

NegationExpression
      - Expression
    | ! Expression

│ │ │ +

ArithmeticOrLogicalExpression
      Expression + Expression
    | Expression - Expression
    | Expression * Expression
    | Expression / Expression
    | Expression % Expression
    | Expression & Expression
    | Expression | Expression
    | Expression ^ Expression
    | Expression << Expression
    | Expression >> Expression

│ │ │ +

ComparisonExpression
      Expression == Expression
    | Expression != Expression
    | Expression > Expression
    | Expression < Expression
    | Expression >= Expression
    | Expression <= Expression

│ │ │ +

LazyBooleanExpression
      Expression || Expression
    | Expression && Expression

│ │ │ +

TypeCastExpressionExpression as TypeNoBounds

│ │ │ +

AssignmentExpressionExpression = Expression

│ │ │ +

CompoundAssignmentExpression
      Expression += Expression
    | Expression -= Expression
    | Expression *= Expression
    | Expression /= Expression
    | Expression %= Expression
    | Expression &= Expression
    | Expression |= Expression
    | Expression ^= Expression
    | Expression <<= Expression
    | Expression >>= Expression

│ │ │ +

GroupedExpression( Expression )

│ │ │ +

BlockExpression
    {
        InnerAttribute*
        Statements?
    }

│ │ │ +

Statements
      Statement+
    | Statement+ ExpressionWithoutBlock
    | ExpressionWithoutBlock

│ │ │ +

AsyncBlockExpressionasync move? BlockExpression

│ │ │ +

ConstBlockExpressionconst BlockExpression

│ │ │ +

UnsafeBlockExpressionunsafe BlockExpression

│ │ │ +

Expression
      ExpressionWithoutBlock
    | ExpressionWithBlock

│ │ │ +

ExpressionWithoutBlock
    OuterAttribute* ExpressionWithoutBlockNoAttrs

│ │ │ +

ExpressionWithoutBlockNoAttrs
      LiteralExpression
    | PathExpression
    | OperatorExpression
    | GroupedExpression
    | ArrayExpression
    | AwaitExpression
    | IndexExpression
    | TupleExpression
    | TupleIndexingExpression
    | StructExpression
    | CallExpression
    | MethodCallExpression
    | FieldExpression
    | ClosureExpression
    | AsyncBlockExpression
    | ContinueExpression
    | BreakExpression
    | RangeExpression
    | ReturnExpression
    | UnderscoreExpression
    | MacroInvocation

│ │ │ +

ExpressionWithBlock
    OuterAttribute* ExpressionWithBlockNoAttrs

│ │ │ +

ExpressionWithBlockNoAttrs
      BlockExpression
    | ConstBlockExpression
    | UnsafeBlockExpression
    | LoopExpression
    | IfExpression
    | MatchExpression

│ │ │

│ │ │
│ │ │ │ │ │
│ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -Pattern │ │ │ + │ │ │ + │ │ │ +LiteralExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +CHAR_LITERAL │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +STRING_LITERAL │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RAW_STRING_LITERAL │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BYTE_LITERAL │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BYTE_STRING_LITERAL │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RAW_BYTE_STRING_LITERAL │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +C_STRING_LITERAL │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RAW_C_STRING_LITERAL │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +INTEGER_LITERAL │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +FLOAT_LITERAL │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +true │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +false │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +AwaitExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +. │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +await │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MethodCallExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +. │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PathExprSegment │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +CallParams │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ReturnExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +return │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ClosureExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +async │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +move │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +|| │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +| │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ClosureParameters │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +| │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +-> │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypeNoBounds │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BlockExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ClosureParameters │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ClosureParam │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ClosureParam │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ClosureParam │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -| │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +OuterAttribute │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ PatternNoTopAlt │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -| │ │ │ + │ │ │ + │ │ │ +: │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -PatternNoTopAlt │ │ │ + │ │ │ + │ │ │ +Type │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -PatternWithoutRange │ │ │ + │ │ │ + │ │ │ +IfExpression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -LiteralPattern │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +if │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -IdentifierPattern │ │ │ + │ │ │ + │ │ │ +Conditions │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -WildcardPattern │ │ │ + │ │ │ + │ │ │ +BlockExpression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RestPattern │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +else │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -ReferencePattern │ │ │ + │ │ │ + │ │ │ +BlockExpression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -StructPattern │ │ │ + │ │ │ + │ │ │ +IfExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TupleStructPattern │ │ │ + │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TuplePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -GroupedPattern │ │ │ │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -WildcardPattern │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -_ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ += │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +except ExcludedConditions │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Scrutinee │ │ │ │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RestPattern │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -.. │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -RangePattern │ │ │ + │ │ │ + │ │ │ +ExcludedConditions │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RangeExclusivePattern │ │ │ + │ │ │ + │ │ │ +StructExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ -RangeInclusivePattern │ │ │ +LazyBooleanExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RangeFromPattern │ │ │ + │ │ │ + │ │ │ +RangeExpr │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RangeToExclusivePattern │ │ │ + │ │ │ + │ │ │ +RangeFromExpr │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RangeToInclusivePattern │ │ │ + │ │ │ + │ │ │ +RangeInclusiveExpr │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ -ObsoleteRangePattern │ │ │ +AssignmentExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +CompoundAssignmentExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ - │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -StructPatternFields │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -StructPatternField │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ , │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -StructPatternField │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -StructPatternField │ │ │ + │ │ │ + │ │ │ +StructExprField │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -15111,648 +16243,645 @@ │ │ │ │ │ │ OuterAttribute │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TUPLE_INDEX │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -: │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Pattern │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ IDENTIFIER │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -: │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Pattern │ │ │ + │ │ │ + │ │ │ +TUPLE_INDEX │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ref │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -mut │ │ │ - │ │ │ + │ │ │ + │ │ │ +: │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -TupleStructItems │ │ │ + │ │ │ + │ │ │ +RangeExpression │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Pattern │ │ │ + │ │ │ + │ │ │ +RangeExpr │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeFromExpr │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Pattern │ │ │ + │ │ │ + │ │ │ +RangeToExpr │ │ │ │ │ │ │ │ │ - │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeFullExpr │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeInclusiveExpr │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeToInclusiveExpr │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeToExpr │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -, │ │ │ + │ │ │ + │ │ │ +.. │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Pattern │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeFullExpr │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +.. │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -

Expressions summary

│ │ │ -
│ │ │ -

Syntax │ │ │ -
│ │ │ -Expression
      ExpressionWithoutBlock
    | ExpressionWithBlock

│ │ │ -

ExpressionWithoutBlock
    OuterAttribute* ExpressionWithoutBlockNoAttrs

│ │ │ -

ExpressionWithoutBlockNoAttrs
      LiteralExpression
    | PathExpression
    | OperatorExpression
    | GroupedExpression
    | ArrayExpression
    | AwaitExpression
    | IndexExpression
    | TupleExpression
    | TupleIndexingExpression
    | StructExpression
    | CallExpression
    | MethodCallExpression
    | FieldExpression
    | ClosureExpression
    | AsyncBlockExpression
    | ContinueExpression
    | BreakExpression
    | RangeExpression
    | ReturnExpression
    | UnderscoreExpression
    | MacroInvocation

│ │ │ -

ExpressionWithBlock
    OuterAttribute* ExpressionWithBlockNoAttrs

│ │ │ -

ExpressionWithBlockNoAttrs
      BlockExpression
    | ConstBlockExpression
    | UnsafeBlockExpression
    | LoopExpression
    | IfExpression
    | MatchExpression

│ │ │ -

ArrayExpression[ ArrayElements? ]

│ │ │ -

ArrayElements
      Expression ( , Expression )* ,?
    | Expression ; Expression

│ │ │ -

IndexExpressionExpression [ Expression ]

│ │ │ -

AwaitExpressionExpression . await

│ │ │ -

StructExpression
    PathInExpression { ( StructExprFields | StructBase )? }

│ │ │ -

StructExprFields
    StructExprField ( , StructExprField )* ( , StructBase | ,? )

│ │ │ -

StructExprField
    OuterAttribute*
    (
        IDENTIFIER
      | ( IDENTIFIER | TUPLE_INDEX ) : Expression
    )

│ │ │ -

StructBase.. Expression

│ │ │ -

OperatorExpression
      BorrowExpression
    | DereferenceExpression
    | TryPropagationExpression
    | NegationExpression
    | ArithmeticOrLogicalExpression
    | ComparisonExpression
    | LazyBooleanExpression
    | TypeCastExpression
    | AssignmentExpression
    | CompoundAssignmentExpression

│ │ │ -

BorrowExpression
      ( & | && ) Expression
    | ( & | && ) mut Expression
    | ( & | && ) raw const Expression
    | ( & | && ) raw mut Expression

│ │ │ -

DereferenceExpression* Expression

│ │ │ -

TryPropagationExpressionExpression ?

│ │ │ -

NegationExpression
      - Expression
    | ! Expression

│ │ │ -

ArithmeticOrLogicalExpression
      Expression + Expression
    | Expression - Expression
    | Expression * Expression
    | Expression / Expression
    | Expression % Expression
    | Expression & Expression
    | Expression | Expression
    | Expression ^ Expression
    | Expression << Expression
    | Expression >> Expression

│ │ │ -

ComparisonExpression
      Expression == Expression
    | Expression != Expression
    | Expression > Expression
    | Expression < Expression
    | Expression >= Expression
    | Expression <= Expression

│ │ │ -

LazyBooleanExpression
      Expression || Expression
    | Expression && Expression

│ │ │ -

TypeCastExpressionExpression as TypeNoBounds

│ │ │ -

AssignmentExpressionExpression = Expression

│ │ │ -

CompoundAssignmentExpression
      Expression += Expression
    | Expression -= Expression
    | Expression *= Expression
    | Expression /= Expression
    | Expression %= Expression
    | Expression &= Expression
    | Expression |= Expression
    | Expression ^= Expression
    | Expression <<= Expression
    | Expression >>= Expression

│ │ │ -

LoopExpression
    LoopLabel? (
        InfiniteLoopExpression
      | PredicateLoopExpression
      | IteratorLoopExpression
      | LabelBlockExpression
    )

│ │ │ -

InfiniteLoopExpressionloop BlockExpression

│ │ │ -

PredicateLoopExpressionwhile Conditions BlockExpression

│ │ │ -

IteratorLoopExpression
    for Pattern in Expressionexcept StructExpression BlockExpression

│ │ │ -

LoopLabelLIFETIME_OR_LABEL :

│ │ │ -

BreakExpressionbreak LIFETIME_OR_LABEL? Expression?

│ │ │ -

LabelBlockExpressionBlockExpression

│ │ │ -

ContinueExpressioncontinue LIFETIME_OR_LABEL?

│ │ │ -

ReturnExpressionreturn Expression?

│ │ │ -

CallExpressionExpression ( CallParams? )

│ │ │ -

CallParamsExpression ( , Expression )* ,?

│ │ │ -

MethodCallExpressionExpression . PathExprSegment ( CallParams? )

│ │ │ -

LiteralExpression
      CHAR_LITERAL
    | STRING_LITERAL
    | RAW_STRING_LITERAL
    | BYTE_LITERAL
    | BYTE_STRING_LITERAL
    | RAW_BYTE_STRING_LITERAL
    | C_STRING_LITERAL
    | RAW_C_STRING_LITERAL
    | INTEGER_LITERAL
    | FLOAT_LITERAL
    | true
    | false

│ │ │ -

BlockExpression
    {
        InnerAttribute*
        Statements?
    }

│ │ │ -

Statements
      Statement+
    | Statement+ ExpressionWithoutBlock
    | ExpressionWithoutBlock

│ │ │ -

AsyncBlockExpressionasync move? BlockExpression

│ │ │ -

ConstBlockExpressionconst BlockExpression

│ │ │ -

UnsafeBlockExpressionunsafe BlockExpression

│ │ │ -

PathExpression
      PathInExpression
    | QualifiedPathInExpression

│ │ │ -

MatchExpression
    match Scrutinee {
        InnerAttribute*
        MatchArms?
    }

│ │ │ -

ScrutineeExpressionexcept StructExpression

│ │ │ -

MatchArms
    ( MatchArm => ( ExpressionWithoutBlock , | ExpressionWithBlock ,? ) )*
    MatchArm => Expression ,?

│ │ │ -

MatchArmOuterAttribute* Pattern MatchArmGuard?

│ │ │ -

MatchArmGuardif MatchConditions

│ │ │ -

MatchConditions
     MatchGuardChain
   | Expression

│ │ │ -

MatchGuardChainMatchGuardCondition ( && MatchGuardCondition )*

│ │ │ -

MatchGuardCondition
     Expressionexcept ExcludedMatchConditions
   | OuterAttribute* let Pattern = MatchGuardScrutinee

│ │ │ -

MatchGuardScrutineeExpressionexcept ExcludedMatchConditions

│ │ │ -

ExcludedMatchConditions
      LazyBooleanExpression
    | RangeExpr
    | RangeFromExpr
    | RangeInclusiveExpr
    | AssignmentExpression
    | CompoundAssignmentExpression

│ │ │ -

IfExpression
    if Conditions BlockExpression
    ( else ( BlockExpression | IfExpression ) )?

│ │ │ -

Conditions
      Expressionexcept StructExpression
    | LetChain

│ │ │ -

LetChainLetChainCondition ( && LetChainCondition )*

│ │ │ -

LetChainCondition
      Expressionexcept ExcludedConditions
    | OuterAttribute* let Pattern = Scrutineeexcept ExcludedConditions

│ │ │ -

ExcludedConditions
      StructExpression
    | LazyBooleanExpression
    | RangeExpr
    | RangeFromExpr
    | RangeInclusiveExpr
    | AssignmentExpression
    | CompoundAssignmentExpression

│ │ │ -

ClosureExpression
    async?
    move?
    ( || | | ClosureParameters? | )
    ( Expression | -> TypeNoBounds BlockExpression )

│ │ │ -

ClosureParametersClosureParam ( , ClosureParam )* ,?

│ │ │ -

ClosureParamOuterAttribute* PatternNoTopAlt ( : Type )?

│ │ │ -

UnderscoreExpression_

│ │ │ -

TupleExpression( TupleElements? )

│ │ │ -

TupleElements → ( Expression , )+ Expression?

│ │ │ -

TupleIndexingExpressionExpression . TUPLE_INDEX

│ │ │ -

RangeExpression
      RangeExpr
    | RangeFromExpr
    | RangeToExpr
    | RangeFullExpr
    | RangeInclusiveExpr
    | RangeToInclusiveExpr

│ │ │ -

RangeExprExpression .. Expression

│ │ │ -

RangeFromExprExpression ..

│ │ │ -

RangeToExpr.. Expression

│ │ │ -

RangeFullExpr..

│ │ │ -

RangeInclusiveExprExpression ..= Expression

│ │ │ -

RangeToInclusiveExpr..= Expression

│ │ │ -

FieldExpressionExpression . IDENTIFIER

│ │ │ -

GroupedExpression( Expression )

│ │ │ -

│ │ │ -
│ │ │ - │ │ │ -
│ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +MatchArms │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MatchArm │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +=> │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ ExpressionWithoutBlock │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ ExpressionWithBlock │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MatchArm │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +=> │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MatchGuardChain │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -StructExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -CallExpression │ │ │ + │ │ │ + │ │ │ +MatchGuardCondition │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MethodCallExpression │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +&& │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -FieldExpression │ │ │ + │ │ │ + │ │ │ +MatchGuardCondition │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ClosureExpression │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AsyncBlockExpression │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ContinueExpression │ │ │ │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MatchGuardCondition │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +except ExcludedMatchConditions │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -BreakExpression │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RangeExpression │ │ │ + │ │ │ + │ │ │ +OuterAttribute │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ReturnExpression │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +let │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -UnderscoreExpression │ │ │ + │ │ │ + │ │ │ +Pattern │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ += │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MacroInvocation │ │ │ + │ │ │ + │ │ │ +MatchGuardScrutinee │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -ExpressionWithBlockNoAttrs │ │ │ + │ │ │ + │ │ │ +ExcludedMatchConditions │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -BlockExpression │ │ │ + │ │ │ + │ │ │ +LazyBooleanExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -ConstBlockExpression │ │ │ + │ │ │ + │ │ │ +RangeExpr │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -UnsafeBlockExpression │ │ │ + │ │ │ + │ │ │ +RangeFromExpr │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -LoopExpression │ │ │ + │ │ │ + │ │ │ +RangeInclusiveExpr │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -IfExpression │ │ │ + │ │ │ + │ │ │ +AssignmentExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MatchExpression │ │ │ + │ │ │ + │ │ │ +CompoundAssignmentExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ArrayElements │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +InfiniteLoopExpression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +PredicateLoopExpression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +IteratorLoopExpression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -; │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +LabelBlockExpression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │
│ │ │ │ │ │ @@ -17865,2636 +18933,3221 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +OperatorExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GroupedExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ArrayExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +AwaitExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IndexExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TupleExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TupleIndexingExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +StructExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +CallExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MethodCallExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +FieldExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ClosureExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +AsyncBlockExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ ContinueExpression │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BreakExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -continue │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeExpression │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -LIFETIME_OR_LABEL │ │ │ + │ │ │ + │ │ │ +ReturnExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +UnderscoreExpression │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MacroInvocation │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -CallExpression │ │ │ + │ │ │ + │ │ │ +ExpressionWithBlockNoAttrs │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +BlockExpression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -CallParams │ │ │ + │ │ │ + │ │ │ +ConstBlockExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +UnsafeBlockExpression │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +LoopExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IfExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MatchExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ + │ │ │ +

Statements summary

│ │ │ +
│ │ │ +

Syntax │ │ │ +
│ │ │ +Statement
      ;
    | Item
    | LetStatement
    | ExpressionStatement
    | OuterAttribute* MacroInvocationSemi

│ │ │ +

LetStatement
    OuterAttribute* let PatternNoTopAlt ( : Type )?
    (
          = Expression
        | = Expressionexcept LazyBooleanExpression or end with a } else BlockExpression
    )? ;

│ │ │ +

ExpressionStatement
      ExpressionWithoutBlock ;
    | ExpressionWithBlock ;?

│ │ │ +

│ │ │ +
│ │ │ + │ │ │ +
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -CallParams │ │ │ + │ │ │ + │ │ │ +Statement │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +; │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +Item │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +LetStatement │ │ │ │ │ │ │ │ │ - │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ExpressionStatement │ │ │ │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +OuterAttribute │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MacroInvocationSemi │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -MethodCallExpression │ │ │ + │ │ │ + │ │ │ +LetStatement │ │ │ │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +OuterAttribute │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +let │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PatternNoTopAlt │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ += │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ Expression │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -. │ │ │ + │ │ │ + │ │ │ += │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +except LazyBooleanExpression or end with a `}` │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -PathExprSegment │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -( │ │ │ + │ │ │ + │ │ │ +else │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -CallParams │ │ │ + │ │ │ + │ │ │ +BlockExpression │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -) │ │ │ + │ │ │ + │ │ │ +; │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ - │ │ │ + │ │ │ +

Configuration summary

│ │ │ +
│ │ │ +

Syntax │ │ │ +
│ │ │ +ConfigurationPredicate
      ConfigurationOption
    | ConfigurationAll
    | ConfigurationAny
    | ConfigurationNot
    | true
    | false

│ │ │ +

ConfigurationOption
    IDENTIFIER ( = ( STRING_LITERAL | RAW_STRING_LITERAL ) )?

│ │ │ +

ConfigurationAll
    all ( ConfigurationPredicateList? )

│ │ │ +

ConfigurationAny
    any ( ConfigurationPredicateList? )

│ │ │ +

ConfigurationNot
    not ( ConfigurationPredicate )

│ │ │ +

ConfigurationPredicateList
    ConfigurationPredicate ( , ConfigurationPredicate )* ,?

│ │ │ +

CfgAttributecfg ( ConfigurationPredicate )

│ │ │ +

CfgAttrAttributecfg_attr ( ConfigurationPredicate , CfgAttrs? )

│ │ │ +

CfgAttrsAttr ( , Attr )* ,?

│ │ │ +

CfgSelectCfgSelectArms?

│ │ │ +

CfgSelectArms
    CfgSelectConfigurationPredicate =>
    (
        { ^ TokenTree } ,? CfgSelectArms?
      | ExpressionWithBlockNoAttrs ,? CfgSelectArms?
      | ExpressionWithoutBlockNoAttrs ( , CfgSelectArms? )?
    )

│ │ │ +

CfgSelectConfigurationPredicate
    ConfigurationPredicate | _

│ │ │ +

│ │ │ +
│ │ │ + │ │ │ +
│ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ConfigurationPredicate │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -BYTE_STRING_LITERAL │ │ │ + │ │ │ + │ │ │ +ConfigurationOption │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RAW_BYTE_STRING_LITERAL │ │ │ + │ │ │ + │ │ │ +ConfigurationAll │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -C_STRING_LITERAL │ │ │ + │ │ │ + │ │ │ +ConfigurationAny │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RAW_C_STRING_LITERAL │ │ │ + │ │ │ + │ │ │ +ConfigurationNot │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -INTEGER_LITERAL │ │ │ + │ │ │ + │ │ │ + │ │ │ +true │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +false │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -MatchArms │ │ │ + │ │ │ + │ │ │ +CfgSelectArms │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MatchArm │ │ │ + │ │ │ + │ │ │ +CfgSelectConfigurationPredicate │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ => │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ExpressionWithoutBlock │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ +{ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +no backtracking │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -ExpressionWithBlock │ │ │ + │ │ │ + │ │ │ +TokenTree │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +} │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ , │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +CfgSelectArms │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MatchArm │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -=> │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +ExpressionWithBlockNoAttrs │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ , │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MatchArmGuard │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -if │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MatchConditions │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ + │ │ │ +

Assembly summary

│ │ │ +
│ │ │ +

Syntax │ │ │ +
│ │ │ +AsmArgsAsmAttrFormatString ( , AsmAttrFormatString )* ( , AsmAttrOperand )* ,?

│ │ │ +

FormatStringSTRING_LITERAL | RAW_STRING_LITERAL | MacroInvocation

│ │ │ +

AsmAttrFormatString → ( OuterAttribute )* FormatString

│ │ │ +

AsmOperand
      ClobberAbi
    | AsmOptions
    | RegOperand

│ │ │ +

AsmAttrOperand → ( OuterAttribute )* AsmOperand

│ │ │ +

ClobberAbiclobber_abi ( Abi ( , Abi )* ,? )

│ │ │ +

AsmOptions
    options ( ( AsmOption ( , AsmOption )* ,? )? )

│ │ │ +

AsmOption
      pure
    | nomem
    | readonly
    | preserves_flags
    | noreturn
    | nostack
    | att_syntax
    | raw

│ │ │ +

RegOperand → ( ParamName = )?
    (
          DirSpec ( RegSpec ) Expression
        | DualDirSpec ( RegSpec ) DualDirSpecExpression
        | sym PathExpression
        | const Expression
        | label { Statements? }
    )

│ │ │ +

ParamNameIDENTIFIER_OR_KEYWORD | RAW_IDENTIFIER

│ │ │ +

DualDirSpecExpression
      Expression
    | Expression => Expression

│ │ │ +

RegSpecRegisterClass | ExplicitRegister

│ │ │ +

RegisterClassIDENTIFIER_OR_KEYWORD

│ │ │ +

ExplicitRegisterSTRING_LITERAL

│ │ │ +

DirSpec
      in
    | out
    | lateout

│ │ │ +

DualDirSpec
      inout
    | inlateout

│ │ │ +

│ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -MatchGuardCondition │ │ │ + │ │ │ + │ │ │ +FormatString │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -except ExcludedMatchConditions │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -OuterAttribute │ │ │ + │ │ │ + │ │ │ +STRING_LITERAL │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -let │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Pattern │ │ │ + │ │ │ + │ │ │ +RAW_STRING_LITERAL │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -= │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MatchGuardScrutinee │ │ │ + │ │ │ + │ │ │ +MacroInvocation │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -IfExpression │ │ │ + │ │ │ + │ │ │ +ClobberAbi │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -if │ │ │ + │ │ │ + │ │ │ +clobber_abi │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Conditions │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -BlockExpression │ │ │ + │ │ │ + │ │ │ +Abi │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -else │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -BlockExpression │ │ │ + │ │ │ + │ │ │ +Abi │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IfExpression │ │ │ + │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ - │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -LetChainCondition │ │ │ + │ │ │ + │ │ │ +AsmOption │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -except ExcludedConditions │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ +pure │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +nomem │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -OuterAttribute │ │ │ + │ │ │ + │ │ │ + │ │ │ +readonly │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +preserves_flags │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -let │ │ │ + │ │ │ + │ │ │ +noreturn │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Pattern │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -= │ │ │ + │ │ │ + │ │ │ +nostack │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -except ExcludedConditions │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Scrutinee │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +att_syntax │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +raw │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -ExcludedConditions │ │ │ + │ │ │ + │ │ │ +RegOperand │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -StructExpression │ │ │ + │ │ │ + │ │ │ +ParamName │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ += │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -LazyBooleanExpression │ │ │ + │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RangeExpr │ │ │ + │ │ │ + │ │ │ +DirSpec │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RangeFromExpr │ │ │ + │ │ │ + │ │ │ +RegSpec │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RangeInclusiveExpr │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -AssignmentExpression │ │ │ + │ │ │ + │ │ │ +DualDirSpec │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -CompoundAssignmentExpression │ │ │ + │ │ │ + │ │ │ +RegSpec │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +DualDirSpecExpression │ │ │ │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ClosureExpression │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -async │ │ │ + │ │ │ + │ │ │ +sym │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PathExpression │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -move │ │ │ + │ │ │ + │ │ │ +const │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -|| │ │ │ + │ │ │ + │ │ │ +label │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -| │ │ │ + │ │ │ + │ │ │ +{ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -ClosureParameters │ │ │ + │ │ │ + │ │ │ +Statements │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -| │ │ │ + │ │ │ + │ │ │ +} │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ExplicitRegister │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +STRING_LITERAL │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ + │ │ │ +

Miscellaneous summary

│ │ │ +
│ │ │ +

Syntax │ │ │ +
│ │ │ +TypeParamBoundsTypeParamBound ( + TypeParamBound )* +?

│ │ │ +

TypeParamBoundLifetime | TraitBound | UseBound

│ │ │ +

TraitBound
      ( ? | ForLifetimes )? TypePath
    | ( ( ? | ForLifetimes )? TypePath )

│ │ │ +

LifetimeBounds → ( Lifetime + )* Lifetime?

│ │ │ +

Lifetime
      LIFETIME_OR_LABEL
    | 'static
    | '_

│ │ │ +

UseBounduse UseBoundGenericArgs

│ │ │ +

UseBoundGenericArgs
      < >
    | < ( UseBoundGenericArg , )* UseBoundGenericArg ,? >

│ │ │ +

UseBoundGenericArg
      Lifetime
    | IDENTIFIER
    | Self

│ │ │ +

ForLifetimesfor GenericParams

│ │ │ +

│ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -RangeExpression │ │ │ + │ │ │ + │ │ │ +TraitBound │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +? │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RangeExpr │ │ │ + │ │ │ + │ │ │ +ForLifetimes │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RangeFromExpr │ │ │ + │ │ │ + │ │ │ +TypePath │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RangeToExpr │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +? │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RangeFullExpr │ │ │ + │ │ │ + │ │ │ +ForLifetimes │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RangeInclusiveExpr │ │ │ + │ │ │ + │ │ │ +TypePath │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RangeToInclusiveExpr │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RangeToInclusiveExpr │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -..= │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +> │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ - │ │ │ │ │ │ @@ -21509,1667 +23162,14 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │ -

Types summary

│ │ │ -
│ │ │ -

Syntax │ │ │ -
│ │ │ -Type
      TypeNoBounds
    | ImplTraitType
    | TraitObjectType

│ │ │ -

TypeNoBounds
      ParenthesizedType
    | ImplTraitTypeOneBound
    | TraitObjectTypeOneBound
    | TypePath
    | TupleType
    | NeverType
    | RawPointerType
    | ReferenceType
    | ArrayType
    | SliceType
    | InferredType
    | QualifiedPathInType
    | BareFunctionType
    | MacroInvocation

│ │ │ -

ParenthesizedType( Type )

│ │ │ -

ArrayType[ Type ; Expression ]

│ │ │ -

ImplTraitTypeimpl TypeParamBounds

│ │ │ -

ImplTraitTypeOneBoundimpl TraitBound

│ │ │ -

TraitObjectTypedyn? TypeParamBounds

│ │ │ -

TraitObjectTypeOneBounddyn? TraitBound

│ │ │ -

NeverType!

│ │ │ -

ReferenceType& Lifetime? mut? TypeNoBounds

│ │ │ -

RawPointerType* ( mut | const ) TypeNoBounds

│ │ │ -

BareFunctionType
    ForLifetimes? FunctionTypeQualifiers fn
       ( FunctionParametersMaybeNamedVariadic? ) BareFunctionReturnType?

│ │ │ -

FunctionTypeQualifiersunsafe? ( extern Abi? )?

│ │ │ -

BareFunctionReturnType-> TypeNoBounds

│ │ │ -

FunctionParametersMaybeNamedVariadic
    MaybeNamedFunctionParameters | MaybeNamedFunctionParametersVariadic

│ │ │ -

MaybeNamedFunctionParameters
    MaybeNamedParam ( , MaybeNamedParam )* ,?

│ │ │ -

MaybeNamedParam
    OuterAttribute* ( ( IDENTIFIER | _ ) : )? Type

│ │ │ -

MaybeNamedFunctionParametersVariadic
    ( MaybeNamedParam , )* MaybeNamedParam , OuterAttribute* ...

│ │ │ -

TupleType
      ( )
    | ( ( Type , )+ Type? )

│ │ │ -

SliceType[ Type ]

│ │ │ -

InferredType_

│ │ │ -

│ │ │ -
│ │ │ - │ │ │ -
│ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeNoBounds │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ImplTraitType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TraitObjectType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeNoBounds │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ParenthesizedType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ImplTraitTypeOneBound │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TraitObjectTypeOneBound │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypePath │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TupleType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -NeverType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RawPointerType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ReferenceType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ArrayType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -SliceType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -InferredType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -QualifiedPathInType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -BareFunctionType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MacroInvocation │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ParenthesizedType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ArrayType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -[ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -; │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -] │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ImplTraitType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -impl │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeParamBounds │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ImplTraitTypeOneBound │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -impl │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TraitBound │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TraitObjectType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -dyn │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeParamBounds │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TraitObjectTypeOneBound │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -dyn │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TraitBound │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -NeverType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -! │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ReferenceType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -& │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Lifetime │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -mut │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeNoBounds │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RawPointerType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -* │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -mut │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -const │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeNoBounds │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -BareFunctionType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ForLifetimes │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -FunctionTypeQualifiers │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -fn │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -FunctionParametersMaybeNamedVariadic │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -BareFunctionReturnType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -FunctionTypeQualifiers │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -unsafe │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -extern │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Abi │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -BareFunctionReturnType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ --> │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeNoBounds │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -FunctionParametersMaybeNamedVariadic │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MaybeNamedFunctionParameters │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MaybeNamedFunctionParametersVariadic │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MaybeNamedFunctionParameters │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MaybeNamedParam │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MaybeNamedParam │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MaybeNamedParam │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -OuterAttribute │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -_ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -: │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MaybeNamedFunctionParametersVariadic │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MaybeNamedParam │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MaybeNamedParam │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -OuterAttribute │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -... │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TupleType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -SliceType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -[ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -] │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -InferredType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -_ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ -

Miscellaneous summary

│ │ │ -
│ │ │ -

Syntax │ │ │ -
│ │ │ -TypeParamBoundsTypeParamBound ( + TypeParamBound )* +?

│ │ │ -

TypeParamBoundLifetime | TraitBound | UseBound

│ │ │ -

TraitBound
      ( ? | ForLifetimes )? TypePath
    | ( ( ? | ForLifetimes )? TypePath )

│ │ │ -

LifetimeBounds → ( Lifetime + )* Lifetime?

│ │ │ -

Lifetime
      LIFETIME_OR_LABEL
    | 'static
    | '_

│ │ │ -

UseBounduse UseBoundGenericArgs

│ │ │ -

UseBoundGenericArgs
      < >
    | < ( UseBoundGenericArg , )* UseBoundGenericArg ,? >

│ │ │ -

UseBoundGenericArg
      Lifetime
    | IDENTIFIER
    | Self

│ │ │ -

ForLifetimesfor GenericParams

│ │ │ -

│ │ │ -
│ │ │ - │ │ │ -
│ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeParamBounds │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeParamBound │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -+ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeParamBound │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -+ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeParamBound │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Lifetime │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TraitBound │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -UseBound │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TraitBound │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -? │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ForLifetimes │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypePath │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -? │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ForLifetimes │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypePath │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -LifetimeBounds │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Lifetime │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -+ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Lifetime │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Lifetime │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -LIFETIME_OR_LABEL │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -'static │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -'_ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -UseBound │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -use │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -UseBoundGenericArgs │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -UseBoundGenericArgs │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -< │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -> │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -< │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -UseBoundGenericArg │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -UseBoundGenericArg │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -> │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -UseBoundGenericArg │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Lifetime │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Self │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ForLifetimes │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -for │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -GenericParams │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ │ │ │
│ │ │ │ │ │

Appendices

│ │ │
│ │ │

Grammar summary

│ │ │

The following is a summary of the grammar production rules. For details on the syntax of this grammar, see notation.grammar.syntax.

│ │ │ -

Attributes summary

│ │ │ -
│ │ │ -

Syntax │ │ │ -
│ │ │ -ProcMacroDeriveAttribute
    proc_macro_derive ( DeriveMacroName ( , DeriveMacroAttributes )? ,? )

│ │ │ -

DeriveMacroNameIDENTIFIER

│ │ │ -

DeriveMacroAttributes
    attributes ( ( IDENTIFIER ( , IDENTIFIER )* ,? )? )

│ │ │ -

InnerAttribute# ! [ Attr ]

│ │ │ -

OuterAttribute# [ Attr ]

│ │ │ -

Attr
      SimplePath AttrInput?
    | unsafe ( SimplePath AttrInput? )

│ │ │ -

AttrInput
      DelimTokenTree
    | = Expression

│ │ │ -

MetaItem
      SimplePath
    | SimplePath = Expression
    | SimplePath ( MetaSeq? )

│ │ │ -

MetaSeq
    MetaItemInner ( , MetaItemInner )* ,?

│ │ │ -

MetaItemInner
      MetaItem
    | Expression

│ │ │ -

MetaWord
    IDENTIFIER

│ │ │ -

MetaNameValueStr
    IDENTIFIER = ( STRING_LITERAL | RAW_STRING_LITERAL )

│ │ │ -

MetaListPaths
    IDENTIFIER ( ( SimplePath ( , SimplePath )* ,? )? )

│ │ │ -

MetaListIdents
    IDENTIFIER ( ( IDENTIFIER ( , IDENTIFIER )* ,? )? )

│ │ │ -

MetaListNameValueStr
    IDENTIFIER ( ( MetaNameValueStr ( , MetaNameValueStr )* ,? )? )

│ │ │ -

CollapseDebuginfoAttributecollapse_debuginfo ( CollapseDebuginfoOption )

│ │ │ -

CollapseDebuginfoOption
      yes
    | no
    | external

│ │ │ -

InlineAttribute
      inline ( always )
    | inline ( never )
    | inline

│ │ │ -

│ │ │ -
│ │ │ - │ │ │ -
│ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ProcMacroDeriveAttribute │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -proc_macro_derive │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -DeriveMacroName │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -DeriveMacroAttributes │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -DeriveMacroName │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -DeriveMacroAttributes │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -attributes │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -InnerAttribute │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -# │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -! │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -[ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Attr │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -] │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -OuterAttribute │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -# │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -[ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Attr │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -] │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Attr │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AttrInput │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -unsafe │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AttrInput │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AttrInput │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -DelimTokenTree │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -= │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MetaItem │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -= │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MetaSeq │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MetaSeq │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MetaItemInner │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MetaItemInner │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MetaItemInner │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MetaItem │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MetaWord │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MetaNameValueStr │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -= │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -STRING_LITERAL │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RAW_STRING_LITERAL │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MetaListPaths │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MetaListIdents │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MetaListNameValueStr │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MetaNameValueStr │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MetaNameValueStr │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CollapseDebuginfoAttribute │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -collapse_debuginfo │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CollapseDebuginfoOption │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CollapseDebuginfoOption │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -yes │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -no │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -external │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -InlineAttribute │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -inline │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -always │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -inline │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -never │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -inline │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ -

Configuration summary

│ │ │ -
│ │ │ -

Syntax │ │ │ -
│ │ │ -ConfigurationPredicate
      ConfigurationOption
    | ConfigurationAll
    | ConfigurationAny
    | ConfigurationNot
    | true
    | false

│ │ │ -

ConfigurationOption
    IDENTIFIER ( = ( STRING_LITERAL | RAW_STRING_LITERAL ) )?

│ │ │ -

ConfigurationAll
    all ( ConfigurationPredicateList? )

│ │ │ -

ConfigurationAny
    any ( ConfigurationPredicateList? )

│ │ │ -

ConfigurationNot
    not ( ConfigurationPredicate )

│ │ │ -

ConfigurationPredicateList
    ConfigurationPredicate ( , ConfigurationPredicate )* ,?

│ │ │ -

CfgAttributecfg ( ConfigurationPredicate )

│ │ │ -

CfgAttrAttributecfg_attr ( ConfigurationPredicate , CfgAttrs? )

│ │ │ -

CfgAttrsAttr ( , Attr )* ,?

│ │ │ -

CfgSelectCfgSelectArms?

│ │ │ -

CfgSelectArms
    CfgSelectConfigurationPredicate =>
    (
        { ^ TokenTree } ,? CfgSelectArms?
      | ExpressionWithBlockNoAttrs ,? CfgSelectArms?
      | ExpressionWithoutBlockNoAttrs ( , CfgSelectArms? )?
    )

│ │ │ -

CfgSelectConfigurationPredicate
    ConfigurationPredicate | _

│ │ │ -

│ │ │ -
│ │ │ - │ │ │ -
│ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationPredicate │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationOption │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationAll │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationAny │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationNot │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -true │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -false │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationOption │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -= │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -STRING_LITERAL │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RAW_STRING_LITERAL │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationAll │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -all │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationPredicateList │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationAny │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -any │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationPredicateList │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationNot │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -not │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationPredicate │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationPredicateList │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationPredicate │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationPredicate │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CfgAttribute │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -cfg │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationPredicate │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CfgAttrAttribute │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -cfg_attr │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationPredicate │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CfgAttrs │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CfgAttrs │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Attr │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Attr │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CfgSelect │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CfgSelectArms │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CfgSelectArms │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CfgSelectConfigurationPredicate │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -=> │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -{ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -no backtracking │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TokenTree │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -} │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CfgSelectArms │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ExpressionWithBlockNoAttrs │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CfgSelectArms │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ExpressionWithoutBlockNoAttrs │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CfgSelectArms │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CfgSelectConfigurationPredicate │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConfigurationPredicate │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -_ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ -

Assembly summary

│ │ │ -
│ │ │ -

Syntax │ │ │ -
│ │ │ -AsmArgsAsmAttrFormatString ( , AsmAttrFormatString )* ( , AsmAttrOperand )* ,?

│ │ │ -

FormatStringSTRING_LITERAL | RAW_STRING_LITERAL | MacroInvocation

│ │ │ -

AsmAttrFormatString → ( OuterAttribute )* FormatString

│ │ │ -

AsmOperand
      ClobberAbi
    | AsmOptions
    | RegOperand

│ │ │ -

AsmAttrOperand → ( OuterAttribute )* AsmOperand

│ │ │ -

ClobberAbiclobber_abi ( Abi ( , Abi )* ,? )

│ │ │ -

AsmOptions
    options ( ( AsmOption ( , AsmOption )* ,? )? )

│ │ │ -

AsmOption
      pure
    | nomem
    | readonly
    | preserves_flags
    | noreturn
    | nostack
    | att_syntax
    | raw

│ │ │ -

RegOperand → ( ParamName = )?
    (
          DirSpec ( RegSpec ) Expression
        | DualDirSpec ( RegSpec ) DualDirSpecExpression
        | sym PathExpression
        | const Expression
        | label { Statements? }
    )

│ │ │ -

ParamNameIDENTIFIER_OR_KEYWORD | RAW_IDENTIFIER

│ │ │ -

DualDirSpecExpression
      Expression
    | Expression => Expression

│ │ │ -

RegSpecRegisterClass | ExplicitRegister

│ │ │ -

RegisterClassIDENTIFIER_OR_KEYWORD

│ │ │ -

ExplicitRegisterSTRING_LITERAL

│ │ │ -

DirSpec
      in
    | out
    | lateout

│ │ │ -

DualDirSpec
      inout
    | inlateout

│ │ │ -

│ │ │ -
│ │ │ - │ │ │ -
│ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AsmArgs │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AsmAttrFormatString │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AsmAttrFormatString │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AsmAttrOperand │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -FormatString │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -STRING_LITERAL │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RAW_STRING_LITERAL │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MacroInvocation │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AsmAttrFormatString │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -OuterAttribute │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -FormatString │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AsmOperand │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ClobberAbi │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AsmOptions │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RegOperand │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AsmAttrOperand │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -OuterAttribute │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AsmOperand │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ClobberAbi │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -clobber_abi │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Abi │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Abi │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AsmOptions │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -options │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AsmOption │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AsmOption │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AsmOption │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -pure │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -nomem │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -readonly │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -preserves_flags │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -noreturn │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -nostack │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -att_syntax │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -raw │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RegOperand │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ParamName │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -= │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -DirSpec │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RegSpec │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -DualDirSpec │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RegSpec │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -DualDirSpecExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -sym │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -PathExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -const │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -label │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -{ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Statements │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -} │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ParamName │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER_OR_KEYWORD │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RAW_IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -DualDirSpecExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -=> │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RegSpec │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RegisterClass │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ExplicitRegister │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RegisterClass │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER_OR_KEYWORD │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ExplicitRegister │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -STRING_LITERAL │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -DirSpec │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -in │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -out │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -lateout │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -DualDirSpec │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -inout │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -inlateout │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │

Items summary

│ │ │
│ │ │

Syntax │ │ │
│ │ │ -Visibility
      pub
    | pub ( crate )
    | pub ( self )
    | pub ( super )
    | pub ( in SimplePath )

│ │ │ -

Item
    OuterAttribute* ( VisItem | MacroItem )

│ │ │ +Item
    OuterAttribute* ( VisItem | MacroItem )

│ │ │

VisItem
    Visibility?
    (
        Module
      | ExternCrate
      | UseDeclaration
      | Function
      | TypeAlias
      | Struct
      | Enumeration
      | Union
      | ConstantItem
      | StaticItem
      | Trait
      | Implementation
      | ExternBlock
    )

│ │ │

MacroItem
      MacroInvocationSemi
    | MacroRulesDefinition

│ │ │

Crate
    InnerAttribute*
    Item*

│ │ │ +

Visibility
      pub
    | pub ( crate )
    | pub ( self )
    | pub ( super )
    | pub ( in SimplePath )

│ │ │

Trait
    unsafe? trait IDENTIFIER GenericParams? ( : TypeParamBounds? )? WhereClause?
    {
        InnerAttribute*
        AssociatedItem*
    }

│ │ │ +

TypeAlias
    type IDENTIFIER GenericParams? ( : TypeParamBounds )?
        WhereClause?
        ( = Type WhereClause? )? ;

│ │ │ +

ConstantItem
    const ( IDENTIFIER | _ ) : Type ( = Expression )? ;

│ │ │

Struct
      StructStruct
    | TupleStruct

│ │ │

StructStruct
    struct IDENTIFIER GenericParams? WhereClause? ( { StructFields? } | ; )

│ │ │

TupleStruct
    struct IDENTIFIER GenericParams? ( TupleFields? ) WhereClause? ;

│ │ │

StructFieldsStructField ( , StructField )* ,?

│ │ │

StructFieldOuterAttribute* Visibility? IDENTIFIER : Type

│ │ │

TupleFieldsTupleField ( , TupleField )* ,?

│ │ │

TupleFieldOuterAttribute* Visibility? Type

│ │ │ +

ImplementationInherentImpl | TraitImpl

│ │ │ +

InherentImpl
    impl GenericParams? Type WhereClause? {
        InnerAttribute*
        AssociatedItem*
    }

│ │ │ +

TraitImpl
    unsafe? impl GenericParams? !? TypePath for Type
    WhereClause?
    {
        InnerAttribute*
        AssociatedItem*
    }

│ │ │

Function
    FunctionQualifiers fn IDENTIFIER GenericParams?
        ( FunctionParameters? )
        FunctionReturnType? WhereClause?
        ( BlockExpression | ; )

│ │ │

FunctionQualifiersconst? async? ItemSafety? ( extern Abi? )?

│ │ │

ItemSafetysafe | unsafe

│ │ │

AbiSTRING_LITERAL | RAW_STRING_LITERAL

│ │ │

FunctionParameters
      SelfParam ,?
    | ( SelfParam , )? FunctionParam ( , FunctionParam )* ,?

│ │ │

SelfParamOuterAttribute* ( ShorthandSelf | TypedSelf )

│ │ │

ShorthandSelf → ( & | & Lifetime )? mut? self

│ │ │

TypedSelfmut? self : Type

│ │ │

FunctionParamOuterAttribute* ( FunctionParamPattern | ... | Type )

│ │ │

FunctionParamPatternPatternNoTopAlt : ( Type | ... )

│ │ │

FunctionReturnType-> Type

│ │ │ -

ImplementationInherentImpl | TraitImpl

│ │ │ -

InherentImpl
    impl GenericParams? Type WhereClause? {
        InnerAttribute*
        AssociatedItem*
    }

│ │ │ -

TraitImpl
    unsafe? impl GenericParams? !? TypePath for Type
    WhereClause?
    {
        InnerAttribute*
        AssociatedItem*
    }

│ │ │ -

Enumeration
    enum IDENTIFIER GenericParams? WhereClause? { EnumVariants? }

│ │ │ -

EnumVariantsEnumVariant ( , EnumVariant )* ,?

│ │ │ -

EnumVariant
    OuterAttribute* Visibility?
    IDENTIFIER ( EnumVariantTuple | EnumVariantStruct )? EnumVariantDiscriminant?

│ │ │ -

EnumVariantTuple( TupleFields? )

│ │ │ -

EnumVariantStruct{ StructFields? }

│ │ │ -

EnumVariantDiscriminant= Expression

│ │ │ -

UseDeclarationuse UseTree ;

│ │ │ -

UseTree
      ( SimplePath? :: )? *
    | ( SimplePath? :: )? { ( UseTree ( , UseTree )* ,? )? }
    | SimplePath ( as ( IDENTIFIER | _ ) )?

│ │ │ -

Union
    union IDENTIFIER GenericParams? WhereClause? { StructFields? }

│ │ │ -

ConstantItem
    const ( IDENTIFIER | _ ) : Type ( = Expression )? ;

│ │ │ -

AssociatedItem
    OuterAttribute* (
        MacroInvocationSemi
      | ( Visibility? ( TypeAlias | ConstantItem | Function ) )
    )

│ │ │ -

StaticItem
    ItemSafety? static mut? IDENTIFIER : Type ( = Expression )? ;

│ │ │ -

ExternBlock
    unsafe? extern Abi? {
        InnerAttribute*
        ExternalItem*
    }

│ │ │ -

ExternalItem
    OuterAttribute* (
        MacroInvocationSemi
      | Visibility? StaticItem
      | Visibility? Function
    )

│ │ │ -

ExternCrateextern crate CrateRef AsClause? ;

│ │ │ -

CrateRefIDENTIFIER | self

│ │ │ -

AsClauseas ( IDENTIFIER | _ )

│ │ │ -

TypeAlias
    type IDENTIFIER GenericParams? ( : TypeParamBounds )?
        WhereClause?
        ( = Type WhereClause? )? ;

│ │ │ -

Module
      unsafe? mod IDENTIFIER ;
    | unsafe? mod IDENTIFIER {
        InnerAttribute*
        Item*
      }

│ │ │

GenericParams< ( GenericParam ( , GenericParam )* ,? )? >

│ │ │

GenericParamOuterAttribute* ( LifetimeParam | TypeParam | ConstParam )

│ │ │

LifetimeParamLifetime ( : LifetimeBounds )?

│ │ │

TypeParamIDENTIFIER ( : TypeParamBounds? )? ( = Type )?

│ │ │

ConstParam
    const IDENTIFIER : Type
    ( = ( BlockExpression | IDENTIFIER | -? LiteralExpression ) )?

│ │ │

WhereClausewhere ( WhereClauseItem , )* WhereClauseItem?

│ │ │

WhereClauseItem
      LifetimeWhereClauseItem
    | TypeBoundWhereClauseItem

│ │ │

LifetimeWhereClauseItemLifetime : LifetimeBounds

│ │ │

TypeBoundWhereClauseItemForLifetimes? Type : TypeParamBounds?

│ │ │ +

StaticItem
    ItemSafety? static mut? IDENTIFIER : Type ( = Expression )? ;

│ │ │ +

ExternCrateextern crate CrateRef AsClause? ;

│ │ │ +

CrateRefIDENTIFIER | self

│ │ │ +

AsClauseas ( IDENTIFIER | _ )

│ │ │ +

AssociatedItem
    OuterAttribute* (
        MacroInvocationSemi
      | ( Visibility? ( TypeAlias | ConstantItem | Function ) )
    )

│ │ │ +

ExternBlock
    unsafe? extern Abi? {
        InnerAttribute*
        ExternalItem*
    }

│ │ │ +

ExternalItem
    OuterAttribute* (
        MacroInvocationSemi
      | Visibility? StaticItem
      | Visibility? Function
    )

│ │ │ +

Union
    union IDENTIFIER GenericParams? WhereClause? { StructFields? }

│ │ │ +

UseDeclarationuse UseTree ;

│ │ │ +

UseTree
      ( SimplePath? :: )? *
    | ( SimplePath? :: )? { ( UseTree ( , UseTree )* ,? )? }
    | SimplePath ( as ( IDENTIFIER | _ ) )?

│ │ │ +

Module
      unsafe? mod IDENTIFIER ;
    | unsafe? mod IDENTIFIER {
        InnerAttribute*
        Item*
      }

│ │ │ +

Enumeration
    enum IDENTIFIER GenericParams? WhereClause? { EnumVariants? }

│ │ │ +

EnumVariantsEnumVariant ( , EnumVariant )* ,?

│ │ │ +

EnumVariant
    OuterAttribute* Visibility?
    IDENTIFIER ( EnumVariantTuple | EnumVariantStruct )? EnumVariantDiscriminant?

│ │ │ +

EnumVariantTuple( TupleFields? )

│ │ │ +

EnumVariantStruct{ StructFields? }

│ │ │ +

EnumVariantDiscriminant= Expression

│ │ │

│ │ │
│ │ │ │ │ │
│ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Visibility │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -pub │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -pub │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -crate │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -pub │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -self │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -pub │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -super │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -pub │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -in │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Item │ │ │ │ │ │ @@ -56710,14 +53769,157 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Visibility │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +pub │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +pub │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +crate │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +pub │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +self │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +pub │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +super │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +pub │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +in │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Trait │ │ │ │ │ │ @@ -56849,14 +54051,212 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypeAlias │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericParams │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypeParamBounds │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +WhereClause │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ += │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +WhereClause │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +; │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ConstantItem │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +const │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +_ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ += │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +; │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Struct │ │ │ │ │ │ @@ -57293,14 +54693,298 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Implementation │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +InherentImpl │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TraitImpl │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +InherentImpl │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +impl │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericParams │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +WhereClause │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +{ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +InnerAttribute │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +AssociatedItem │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +} │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TraitImpl │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +unsafe │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +impl │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericParams │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +! │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypePath │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +for │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +WhereClause │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +{ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +InnerAttribute │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +AssociatedItem │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +} │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Function │ │ │ │ │ │ @@ -57958,1001 +55642,767 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ -InherentImpl │ │ │ +GenericParam │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -impl │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -GenericParams │ │ │ + │ │ │ + │ │ │ +OuterAttribute │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -WhereClause │ │ │ + │ │ │ + │ │ │ +LifetimeParam │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -{ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -InnerAttribute │ │ │ + │ │ │ + │ │ │ +TypeParam │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -AssociatedItem │ │ │ + │ │ │ + │ │ │ +ConstParam │ │ │ │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -} │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypeParam │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -WhereClause │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -{ │ │ │ - │ │ │ + │ │ │ + │ │ │ +: │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -InnerAttribute │ │ │ + │ │ │ + │ │ │ +TypeParamBounds │ │ │ │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ += │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -AssociatedItem │ │ │ + │ │ │ + │ │ │ +Type │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -} │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -Enumeration │ │ │ + │ │ │ + │ │ │ +ConstParam │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -enum │ │ │ + │ │ │ + │ │ │ +const │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ IDENTIFIER │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +: │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -GenericParams │ │ │ + │ │ │ + │ │ │ +Type │ │ │ │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ += │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -WhereClause │ │ │ + │ │ │ + │ │ │ +BlockExpression │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -{ │ │ │ + │ │ │ + │ │ │ +- │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -EnumVariants │ │ │ + │ │ │ + │ │ │ +LiteralExpression │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -} │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ - │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ - │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -UseTree │ │ │ + │ │ │ + │ │ │ +StaticItem │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ + │ │ │ + │ │ │ +ItemSafety │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -:: │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -* │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ +static │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -:: │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -{ │ │ │ + │ │ │ + │ │ │ +mut │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -UseTree │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -UseTree │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -} │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ +: │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ + │ │ │ + │ │ │ +Type │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -as │ │ │ + │ │ │ + │ │ │ += │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -_ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +; │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +AsClause │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -= │ │ │ + │ │ │ + │ │ │ +as │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -; │ │ │ + │ │ │ + │ │ │ +_ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │ @@ -59041,105 +56491,14 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -StaticItem │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ItemSafety │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -static │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -mut │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -: │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -= │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -; │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ExternBlock │ │ │ │ │ │ @@ -59308,257 +56667,295 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeAlias │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -type │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +:: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +{ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -GenericParams │ │ │ + │ │ │ + │ │ │ +UseTree │ │ │ │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -: │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TypeParamBounds │ │ │ + │ │ │ + │ │ │ +UseTree │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -WhereClause │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -= │ │ │ + │ │ │ + │ │ │ +} │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Type │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +as │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -WhereClause │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +_ │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -; │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │ @@ -59674,545 +57071,350 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ - │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConstParam │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -const │ │ │ - │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ IDENTIFIER │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -: │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -= │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -BlockExpression │ │ │ + │ │ │ + │ │ │ +EnumVariantTuple │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ + │ │ │ + │ │ │ +EnumVariantStruct │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -- │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -LiteralExpression │ │ │ + │ │ │ + │ │ │ +EnumVariantDiscriminant │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeBoundWhereClauseItem │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ForLifetimes │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -: │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeParamBounds │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │ @@ -60230,21 +57432,14 @@ │ │ │

INNER_LINE_DOC
    //! ^ LINE_DOC_COMMENT_CONTENT ( LF | EOF )

│ │ │

LINE_DOC_COMMENT_CONTENT → ( !CR ~LF )*

│ │ │

INNER_BLOCK_DOC
    /*! ^ ( BLOCK_COMMENT_OR_DOC | BLOCK_CHAR )* */

│ │ │

OUTER_LINE_DOC
    /// ^ LINE_DOC_COMMENT_CONTENT ( LF | EOF )

│ │ │

OUTER_BLOCK_DOC
    /** ![* /]
      ^
      ( ~* | BLOCK_COMMENT_OR_DOC )
      ( BLOCK_COMMENT_OR_DOC | BLOCK_CHAR )*
    */

│ │ │

BLOCK_CHAR → ( !( */ | CR ) CHAR )

│ │ │

BLOCK_COMMENT_OR_DOC
      BLOCK_COMMENT
    | OUTER_BLOCK_DOC
    | INNER_BLOCK_DOC

│ │ │ -

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 ) !XID_Continue

│ │ │

Token
      RESERVED_TOKEN
    | RAW_IDENTIFIER
    | CHAR_LITERAL
    | STRING_LITERAL
    | RAW_STRING_LITERAL
    | BYTE_LITERAL
    | BYTE_STRING_LITERAL
    | RAW_BYTE_STRING_LITERAL
    | C_STRING_LITERAL
    | RAW_C_STRING_LITERAL
    | FLOAT_LITERAL
    | INTEGER_LITERAL
    | LIFETIME_TOKEN
    | PUNCTUATION
    | IDENTIFIER_OR_KEYWORD

│ │ │

SUFFIXIDENTIFIER_OR_KEYWORDexcept _

│ │ │

SUFFIX_NO_E → ![e E] SUFFIX

│ │ │

CHAR_LITERAL
    '
        ( ~[' \ LF CR TAB] | QUOTE_ESCAPE | ASCII_ESCAPE | UNICODE_ESCAPE )
    ' SUFFIX?

│ │ │

QUOTE_ESCAPE\' | \"

│ │ │

ASCII_ESCAPE
      \x OCT_DIGIT HEX_DIGIT
    | \n | \r | \t | \\ | \0

│ │ │

UNICODE_ESCAPE
    \u{ ( HEX_DIGIT _* )1..=6valid hex char value }

│ │ │ @@ -60287,14 +57482,21 @@ │ │ │

RESERVED_TOKEN
      RESERVED_GUARDED_STRING_LITERAL
    | RESERVED_NUMBER
    | RESERVED_POUNDS
    | RESERVED_RAW_IDENTIFIER
    | RESERVED_RAW_LIFETIME
    | RESERVED_TOKEN_DOUBLE_QUOTE
    | RESERVED_TOKEN_LIFETIME
    | RESERVED_TOKEN_POUND
    | RESERVED_TOKEN_SINGLE_QUOTE

│ │ │

RESERVED_TOKEN_DOUBLE_QUOTE
    IDENTIFIER_OR_KEYWORDexcept b or c or r or br or cr "

│ │ │

RESERVED_TOKEN_SINGLE_QUOTE
    IDENTIFIER_OR_KEYWORDexcept b '

│ │ │

RESERVED_TOKEN_POUND
    IDENTIFIER_OR_KEYWORDexcept r or br or cr #

│ │ │

RESERVED_TOKEN_LIFETIME
    ' IDENTIFIER_OR_KEYWORDexcept r #

│ │ │

RESERVED_GUARDED_STRING_LITERAL#+ STRING_LITERAL

│ │ │

RESERVED_POUNDS#2..

│ │ │ +

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 ) !XID_Continue

│ │ │

WHITESPACE
      U+0009 // Horizontal tab, '\t'
    | U+000A // Line feed, '\n'
    | U+000B // Vertical tab
    | U+000C // Form feed
    | U+000D // Carriage return, '\r'
    | U+0020 // Space, ' '
    | U+0085 // Next line
    | U+200E // Left-to-right mark
    | U+200F // Right-to-left mark
    | U+2028 // Line separator
    | U+2029 // Paragraph separator

│ │ │

TAB → U+0009 // Horizontal tab, '\t'

│ │ │

LF → U+000A // Line feed, '\n'

│ │ │

CR → U+000D // Carriage return, '\r'

│ │ │

│ │ │
│ │ │ │ │ │ @@ -61242,282 +58444,14 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER_OR_KEYWORD │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -XID_Start │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -_ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -XID_Continue │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -XID_Start │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -`XID_Start` defined by Unicode │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -XID_Continue │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -`XID_Continue` defined by Unicode │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RAW_IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -r# │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER_OR_KEYWORD │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -NON_KEYWORD_IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -except a strict or reserved keyword │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER_OR_KEYWORD │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -NON_KEYWORD_IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RAW_IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RESERVED_RAW_IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -r# │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -_ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -crate │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -self │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Self │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -super │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -not followed by │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -XID_Continue │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Token │ │ │ │ │ │ @@ -65747,14 +62681,282 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER_OR_KEYWORD │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +XID_Start │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +_ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +XID_Continue │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +XID_Start │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +`XID_Start` defined by Unicode │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +XID_Continue │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +`XID_Continue` defined by Unicode │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RAW_IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +r# │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER_OR_KEYWORD │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +NON_KEYWORD_IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +except a strict or reserved keyword │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER_OR_KEYWORD │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +NON_KEYWORD_IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RAW_IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RESERVED_RAW_IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +r# │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +_ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +crate │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +self │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Self │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +super │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +not followed by │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +XID_Continue │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ WHITESPACE │ │ │ │ │ │ @@ -65938,681 +63140,3787 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │ -

Statements summary

│ │ │ +

Types summary

│ │ │
│ │ │

Syntax │ │ │
│ │ │ -Statement
      ;
    | Item
    | LetStatement
    | ExpressionStatement
    | OuterAttribute* MacroInvocationSemi

│ │ │ -

LetStatement
    OuterAttribute* let PatternNoTopAlt ( : Type )?
    (
          = Expression
        | = Expressionexcept LazyBooleanExpression or end with a } else BlockExpression
    )? ;

│ │ │ -

ExpressionStatement
      ExpressionWithoutBlock ;
    | ExpressionWithBlock ;?

│ │ │ +ArrayType[ Type ; Expression ]

│ │ │ +

TraitObjectTypedyn? TypeParamBounds

│ │ │ +

TraitObjectTypeOneBounddyn? TraitBound

│ │ │ +

InferredType_

│ │ │ +

BareFunctionType
    ForLifetimes? FunctionTypeQualifiers fn
       ( FunctionParametersMaybeNamedVariadic? ) BareFunctionReturnType?

│ │ │ +

FunctionTypeQualifiersunsafe? ( extern Abi? )?

│ │ │ +

BareFunctionReturnType-> TypeNoBounds

│ │ │ +

FunctionParametersMaybeNamedVariadic
    MaybeNamedFunctionParameters | MaybeNamedFunctionParametersVariadic

│ │ │ +

MaybeNamedFunctionParameters
    MaybeNamedParam ( , MaybeNamedParam )* ,?

│ │ │ +

MaybeNamedParam
    OuterAttribute* ( ( IDENTIFIER | _ ) : )? Type

│ │ │ +

MaybeNamedFunctionParametersVariadic
    ( MaybeNamedParam , )* MaybeNamedParam , OuterAttribute* ...

│ │ │ +

NeverType!

│ │ │ +

SliceType[ Type ]

│ │ │ +

ReferenceType& Lifetime? mut? TypeNoBounds

│ │ │ +

RawPointerType* ( mut | const ) TypeNoBounds

│ │ │ +

TupleType
      ( )
    | ( ( Type , )+ Type? )

│ │ │ +

ImplTraitTypeimpl TypeParamBounds

│ │ │ +

ImplTraitTypeOneBoundimpl TraitBound

│ │ │ +

Type
      TypeNoBounds
    | ImplTraitType
    | TraitObjectType

│ │ │ +

TypeNoBounds
      ParenthesizedType
    | ImplTraitTypeOneBound
    | TraitObjectTypeOneBound
    | TypePath
    | TupleType
    | NeverType
    | RawPointerType
    | ReferenceType
    | ArrayType
    | SliceType
    | InferredType
    | QualifiedPathInType
    | BareFunctionType
    | MacroInvocation

│ │ │ +

ParenthesizedType( Type )

│ │ │

│ │ │
│ │ │ │ │ │
│ │ │ -
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BareFunctionType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -ExpressionStatement │ │ │ + │ │ │ + │ │ │ +ForLifetimes │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +FunctionTypeQualifiers │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +fn │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +FunctionParametersMaybeNamedVariadic │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BareFunctionReturnType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +FunctionTypeQualifiers │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +unsafe │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +extern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Abi │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BareFunctionReturnType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +-> │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypeNoBounds │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +FunctionParametersMaybeNamedVariadic │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MaybeNamedFunctionParameters │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MaybeNamedFunctionParametersVariadic │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MaybeNamedFunctionParameters │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MaybeNamedParam │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MaybeNamedParam │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +NeverType │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -: │ │ │ + │ │ │ + │ │ │ +! │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SliceType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +[ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ Type │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +] │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ReferenceType │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +& │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Lifetime │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +mut │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypeNoBounds │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TupleType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -= │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -except LazyBooleanExpression or end with a `}` │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +Type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Type │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -else │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ImplTraitType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +impl │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -BlockExpression │ │ │ + │ │ │ + │ │ │ +TypeParamBounds │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ImplTraitTypeOneBound │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -; │ │ │ + │ │ │ + │ │ │ +impl │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TraitBound │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypeNoBounds │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -ExpressionWithBlock │ │ │ + │ │ │ + │ │ │ +ParenthesizedType │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ImplTraitTypeOneBound │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TraitObjectTypeOneBound │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypePath │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TupleType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +NeverType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RawPointerType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ReferenceType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ArrayType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SliceType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +InferredType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +QualifiedPathInType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BareFunctionType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MacroInvocation │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ParenthesizedType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -; │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Type │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │ -

Macros summary

│ │ │ +

Patterns summary

│ │ │
│ │ │

Syntax │ │ │
│ │ │ -MacroInvocation
    SimplePath ! DelimTokenTree

│ │ │ -

DelimTokenTree
      ( TokenTree* )
    | [ TokenTree* ]
    | { TokenTree* }

│ │ │ -

TokenTree
    Tokenexcept delimiters | DelimTokenTree

│ │ │ -

MacroInvocationSemi
      SimplePath ! ( TokenTree* ) ;
    | SimplePath ! [ TokenTree* ] ;
    | SimplePath ! { TokenTree* }

│ │ │ -

MacroRulesDefinition
    macro_rules ! IDENTIFIER MacroRulesDef

│ │ │ -

MacroRulesDef
      ( MacroRules ) ;
    | [ MacroRules ] ;
    | { MacroRules }

│ │ │ -

MacroRules
    MacroRule ( ; MacroRule )* ;?

│ │ │ -

MacroRule
    MacroMatcher => MacroTranscriber

│ │ │ -

MacroMatcher
      ( MacroMatch* )
    | [ MacroMatch* ]
    | { MacroMatch* }

│ │ │ -

MacroMatch
      Tokenexcept $ and delimiters
    | MacroMatcher
    | $ ( IDENTIFIER_OR_KEYWORDexcept crate | RAW_IDENTIFIER ) : MacroFragSpec
    | $ ( MacroMatch+ ) MacroRepSep? MacroRepOp

│ │ │ -

MacroFragSpec
      block | expr | expr_2021 | ident | item | lifetime | literal
    | meta | pat | pat_param | path | stmt | tt | ty | vis

│ │ │ -

MacroRepSepTokenexcept delimiters and MacroRepOp

│ │ │ -

MacroRepOp* | + | ?

│ │ │ -

MacroTranscriberDelimTokenTree

│ │ │ +Pattern|? PatternNoTopAlt ( | PatternNoTopAlt )*

│ │ │ +

PatternNoTopAlt
      PatternWithoutRange
    | RangePattern

│ │ │ +

PatternWithoutRange
      LiteralPattern
    | IdentifierPattern
    | WildcardPattern
    | RestPattern
    | ReferencePattern
    | StructPattern
    | TupleStructPattern
    | TuplePattern
    | GroupedPattern
    | SlicePattern
    | PathPattern
    | MacroInvocation

│ │ │ +

LiteralPattern-? LiteralExpression

│ │ │ +

IdentifierPatternref? mut? IDENTIFIER ( @ PatternNoTopAlt )?

│ │ │ +

WildcardPattern_

│ │ │ +

RestPattern..

│ │ │ +

RangePattern
      RangeExclusivePattern
    | RangeInclusivePattern
    | RangeFromPattern
    | RangeToExclusivePattern
    | RangeToInclusivePattern
    | ObsoleteRangePattern

│ │ │ +

RangeExclusivePattern
      RangePatternBound .. RangePatternBound

│ │ │ +

RangeInclusivePattern
      RangePatternBound ..= RangePatternBound

│ │ │ +

RangeFromPattern
      RangePatternBound ..

│ │ │ +

RangeToExclusivePattern
      .. RangePatternBound

│ │ │ +

RangeToInclusivePattern
      ..= RangePatternBound

│ │ │ +

ObsoleteRangePattern
    RangePatternBound ... RangePatternBound

│ │ │ +

RangePatternBound
      LiteralPattern
    | PathExpression

│ │ │ +

ReferencePattern → ( & | && ) mut? PatternWithoutRange

│ │ │ +

StructPattern
    PathInExpression {
        StructPatternElements?
    }

│ │ │ +

StructPatternElements
      StructPatternFields ( , | , StructPatternEtCetera )?
    | StructPatternEtCetera

│ │ │ +

StructPatternFields
    StructPatternField ( , StructPatternField )*

│ │ │ +

StructPatternField
    OuterAttribute*
    (
        TUPLE_INDEX : Pattern
      | IDENTIFIER : Pattern
      | ref? mut? IDENTIFIER
    )

│ │ │ +

StructPatternEtCetera..

│ │ │ +

TupleStructPatternPathInExpression ( TupleStructItems? )

│ │ │ +

TupleStructItemsPattern ( , Pattern )* ,?

│ │ │ +

TuplePattern( TuplePatternItems? )

│ │ │ +

TuplePatternItems
      Pattern ,
    | RestPattern
    | Pattern ( , Pattern )+ ,?

│ │ │ +

GroupedPattern( Pattern )

│ │ │ +

SlicePattern[ SlicePatternItems? ]

│ │ │ +

SlicePatternItemsPattern ( , Pattern )* ,?

│ │ │ +

PathPatternPathExpression

│ │ │

│ │ │
│ │ │ │ │ │
│ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ +PatternNoTopAlt │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PatternWithoutRange │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PatternWithoutRange │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +LiteralPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IdentifierPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +WildcardPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RestPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ReferencePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +StructPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TupleStructPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TuplePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GroupedPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SlicePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PathPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ MacroInvocation │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +LiteralPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +- │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +LiteralExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IdentifierPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ref │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +mut │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +@ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PatternNoTopAlt │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +WildcardPattern │ │ │ │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +_ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ + │ │ │ + │ │ │ +RangeExclusivePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeInclusivePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeFromPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeToExclusivePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeToInclusivePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ObsoleteRangePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeExclusivePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangePatternBound │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ +.. │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangePatternBound │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeInclusivePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangePatternBound │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +..= │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangePatternBound │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeFromPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangePatternBound │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +.. │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeToExclusivePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +.. │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ -! │ │ │ +RangePatternBound │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeToInclusivePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +..= │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -DelimTokenTree │ │ │ + │ │ │ + │ │ │ +RangePatternBound │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangePatternBound │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +LiteralPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PathExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ReferencePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ -( │ │ │ +& │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +&& │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +mut │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PatternWithoutRange │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +StructPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PathInExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +{ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +StructPatternElements │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +} │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +StructPatternElements │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +StructPatternFields │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +StructPatternEtCetera │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +StructPatternEtCetera │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +StructPatternField │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +OuterAttribute │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TUPLE_INDEX │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ +: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Pattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Pattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ref │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +mut │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +StructPatternEtCetera │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +.. │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TupleStructPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PathInExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TupleStructItems │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ ) │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TupleStructItems │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Pattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -[ │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Pattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TuplePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TuplePatternItems │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TuplePatternItems │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Pattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RestPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Pattern │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TokenTree │ │ │ + │ │ │ + │ │ │ +Pattern │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -] │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GroupedPattern │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -{ │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Pattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SlicePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +[ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SlicePatternItems │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +] │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SlicePatternItems │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Pattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TokenTree │ │ │ + │ │ │ + │ │ │ +Pattern │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -} │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ - │ │ │ + │ │ │ +

Attributes summary

│ │ │ +
│ │ │ +

Syntax │ │ │ +
│ │ │ +InnerAttribute# ! [ Attr ]

│ │ │ +

OuterAttribute# [ Attr ]

│ │ │ +

Attr
      SimplePath AttrInput?
    | unsafe ( SimplePath AttrInput? )

│ │ │ +

AttrInput
      DelimTokenTree
    | = Expression

│ │ │ +

MetaItem
      SimplePath
    | SimplePath = Expression
    | SimplePath ( MetaSeq? )

│ │ │ +

MetaSeq
    MetaItemInner ( , MetaItemInner )* ,?

│ │ │ +

MetaItemInner
      MetaItem
    | Expression

│ │ │ +

MetaWord
    IDENTIFIER

│ │ │ +

MetaNameValueStr
    IDENTIFIER = ( STRING_LITERAL | RAW_STRING_LITERAL )

│ │ │ +

MetaListPaths
    IDENTIFIER ( ( SimplePath ( , SimplePath )* ,? )? )

│ │ │ +

MetaListIdents
    IDENTIFIER ( ( IDENTIFIER ( , IDENTIFIER )* ,? )? )

│ │ │ +

MetaListNameValueStr
    IDENTIFIER ( ( MetaNameValueStr ( , MetaNameValueStr )* ,? )? )

│ │ │ +

InlineAttribute
      inline ( always )
    | inline ( never )
    | inline

│ │ │ +

CollapseDebuginfoAttributecollapse_debuginfo ( CollapseDebuginfoOption )

│ │ │ +

CollapseDebuginfoOption
      yes
    | no
    | external

│ │ │ +

ProcMacroDeriveAttribute
    proc_macro_derive ( DeriveMacroName ( , DeriveMacroAttributes )? ,? )

│ │ │ +

DeriveMacroNameIDENTIFIER

│ │ │ +

DeriveMacroAttributes
    attributes ( ( IDENTIFIER ( , IDENTIFIER )* ,? )? )

│ │ │ +

│ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +OuterAttribute │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +# │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +[ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -DelimTokenTree │ │ │ + │ │ │ + │ │ │ +Attr │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +] │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +AttrInput │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +DelimTokenTree │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -; │ │ │ + │ │ │ + │ │ │ += │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MetaItem │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ SimplePath │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -! │ │ │ + │ │ │ + │ │ │ += │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -[ │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MetaSeq │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MetaItemInner │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MetaItem │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MetaWord │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MetaNameValueStr │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -; │ │ │ + │ │ │ + │ │ │ += │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +STRING_LITERAL │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RAW_STRING_LITERAL │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MetaListPaths │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ SimplePath │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -! │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -{ │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MetaListIdents │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TokenTree │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MetaListNameValueStr │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MetaNameValueStr │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -} │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MetaNameValueStr │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +InlineAttribute │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +inline │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +always │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +inline │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +never │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +inline │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +CollapseDebuginfoAttribute │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +collapse_debuginfo │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +CollapseDebuginfoOption │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +CollapseDebuginfoOption │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +yes │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +no │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +external │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ProcMacroDeriveAttribute │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +proc_macro_derive │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +DeriveMacroName │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +DeriveMacroAttributes │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +DeriveMacroName │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +DeriveMacroAttributes │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +attributes │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ +
│ │ │ + │ │ │ +

Macros summary

│ │ │ +
│ │ │ +

Syntax │ │ │ +
│ │ │ +MacroRulesDefinition
    macro_rules ! IDENTIFIER MacroRulesDef

│ │ │ +

MacroRulesDef
      ( MacroRules ) ;
    | [ MacroRules ] ;
    | { MacroRules }

│ │ │ +

MacroRules
    MacroRule ( ; MacroRule )* ;?

│ │ │ +

MacroRule
    MacroMatcher => MacroTranscriber

│ │ │ +

MacroMatcher
      ( MacroMatch* )
    | [ MacroMatch* ]
    | { MacroMatch* }

│ │ │ +

MacroMatch
      Tokenexcept $ and delimiters
    | MacroMatcher
    | $ ( IDENTIFIER_OR_KEYWORDexcept crate | RAW_IDENTIFIER ) : MacroFragSpec
    | $ ( MacroMatch+ ) MacroRepSep? MacroRepOp

│ │ │ +

MacroFragSpec
      block | expr | expr_2021 | ident | item | lifetime | literal
    | meta | pat | pat_param | path | stmt | tt | ty | vis

│ │ │ +

MacroRepSepTokenexcept delimiters and MacroRepOp

│ │ │ +

MacroRepOp* | + | ?

│ │ │ +

MacroTranscriberDelimTokenTree

│ │ │ +

MacroInvocation
    SimplePath ! DelimTokenTree

│ │ │ +

DelimTokenTree
      ( TokenTree* )
    | [ TokenTree* ]
    | { TokenTree* }

│ │ │ +

TokenTree
    Tokenexcept delimiters | DelimTokenTree

│ │ │ +

MacroInvocationSemi
      SimplePath ! ( TokenTree* ) ;
    | SimplePath ! [ TokenTree* ] ;
    | SimplePath ! { TokenTree* }

│ │ │ +

│ │ │ +
│ │ │ + │ │ │ +
│ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ MacroRulesDefinition │ │ │ │ │ │ @@ -67323,832 +67631,1682 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MacroInvocation │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +! │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +DelimTokenTree │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │
│ │ │ │ │ │ -

Patterns summary

│ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +DelimTokenTree │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TokenTree │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +[ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TokenTree │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +] │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +{ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TokenTree │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +} │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TokenTree │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +except delimiters │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Token │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +DelimTokenTree │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MacroInvocationSemi │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +! │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TokenTree │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +; │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +! │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +[ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TokenTree │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +] │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +; │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +! │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +{ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TokenTree │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +} │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ +

Expressions summary

│ │ │
│ │ │

Syntax │ │ │
│ │ │ -Pattern|? PatternNoTopAlt ( | PatternNoTopAlt )*

│ │ │ -

PatternNoTopAlt
      PatternWithoutRange
    | RangePattern

│ │ │ -

PatternWithoutRange
      LiteralPattern
    | IdentifierPattern
    | WildcardPattern
    | RestPattern
    | ReferencePattern
    | StructPattern
    | TupleStructPattern
    | TuplePattern
    | GroupedPattern
    | SlicePattern
    | PathPattern
    | MacroInvocation

│ │ │ -

LiteralPattern-? LiteralExpression

│ │ │ -

IdentifierPatternref? mut? IDENTIFIER ( @ PatternNoTopAlt )?

│ │ │ -

WildcardPattern_

│ │ │ -

RestPattern..

│ │ │ -

RangePattern
      RangeExclusivePattern
    | RangeInclusivePattern
    | RangeFromPattern
    | RangeToExclusivePattern
    | RangeToInclusivePattern
    | ObsoleteRangePattern

│ │ │ -

RangeExclusivePattern
      RangePatternBound .. RangePatternBound

│ │ │ -

RangeInclusivePattern
      RangePatternBound ..= RangePatternBound

│ │ │ -

RangeFromPattern
      RangePatternBound ..

│ │ │ -

RangeToExclusivePattern
      .. RangePatternBound

│ │ │ -

RangeToInclusivePattern
      ..= RangePatternBound

│ │ │ -

ObsoleteRangePattern
    RangePatternBound ... RangePatternBound

│ │ │ -

RangePatternBound
      LiteralPattern
    | PathExpression

│ │ │ -

ReferencePattern → ( & | && ) mut? PatternWithoutRange

│ │ │ -

StructPattern
    PathInExpression {
        StructPatternElements?
    }

│ │ │ -

StructPatternElements
      StructPatternFields ( , | , StructPatternEtCetera )?
    | StructPatternEtCetera

│ │ │ -

StructPatternFields
    StructPatternField ( , StructPatternField )*

│ │ │ -

StructPatternField
    OuterAttribute*
    (
        TUPLE_INDEX : Pattern
      | IDENTIFIER : Pattern
      | ref? mut? IDENTIFIER
    )

│ │ │ -

StructPatternEtCetera..

│ │ │ -

TupleStructPatternPathInExpression ( TupleStructItems? )

│ │ │ -

TupleStructItemsPattern ( , Pattern )* ,?

│ │ │ -

TuplePattern( TuplePatternItems? )

│ │ │ -

TuplePatternItems
      Pattern ,
    | RestPattern
    | Pattern ( , Pattern )+ ,?

│ │ │ -

GroupedPattern( Pattern )

│ │ │ -

SlicePattern[ SlicePatternItems? ]

│ │ │ -

SlicePatternItemsPattern ( , Pattern )* ,?

│ │ │ -

PathPatternPathExpression

│ │ │ +LiteralExpression
      CHAR_LITERAL
    | STRING_LITERAL
    | RAW_STRING_LITERAL
    | BYTE_LITERAL
    | BYTE_STRING_LITERAL
    | RAW_BYTE_STRING_LITERAL
    | C_STRING_LITERAL
    | RAW_C_STRING_LITERAL
    | INTEGER_LITERAL
    | FLOAT_LITERAL
    | true
    | false

│ │ │ +

AwaitExpressionExpression . await

│ │ │ +

MethodCallExpressionExpression . PathExprSegment ( CallParams? )

│ │ │ +

ReturnExpressionreturn Expression?

│ │ │ +

ClosureExpression
    async?
    move?
    ( || | | ClosureParameters? | )
    ( Expression | -> TypeNoBounds BlockExpression )

│ │ │ +

ClosureParametersClosureParam ( , ClosureParam )* ,?

│ │ │ +

ClosureParamOuterAttribute* PatternNoTopAlt ( : Type )?

│ │ │ +

FieldExpressionExpression . IDENTIFIER

│ │ │ +

IfExpression
    if Conditions BlockExpression
    ( else ( BlockExpression | IfExpression ) )?

│ │ │ +

Conditions
      Expressionexcept StructExpression
    | LetChain

│ │ │ +

LetChainLetChainCondition ( && LetChainCondition )*

│ │ │ +

LetChainCondition
      Expressionexcept ExcludedConditions
    | OuterAttribute* let Pattern = Scrutineeexcept ExcludedConditions

│ │ │ +

ExcludedConditions
      StructExpression
    | LazyBooleanExpression
    | RangeExpr
    | RangeFromExpr
    | RangeInclusiveExpr
    | AssignmentExpression
    | CompoundAssignmentExpression

│ │ │ +

UnderscoreExpression_

│ │ │ +

TupleExpression( TupleElements? )

│ │ │ +

TupleElements → ( Expression , )+ Expression?

│ │ │ +

TupleIndexingExpressionExpression . TUPLE_INDEX

│ │ │ +

ArrayExpression[ ArrayElements? ]

│ │ │ +

ArrayElements
      Expression ( , Expression )* ,?
    | Expression ; Expression

│ │ │ +

IndexExpressionExpression [ Expression ]

│ │ │ +

StructExpression
    PathInExpression { ( StructExprFields | StructBase )? }

│ │ │ +

StructExprFields
    StructExprField ( , StructExprField )* ( , StructBase | ,? )

│ │ │ +

StructExprField
    OuterAttribute*
    (
        IDENTIFIER
      | ( IDENTIFIER | TUPLE_INDEX ) : Expression
    )

│ │ │ +

StructBase.. Expression

│ │ │ +

PathExpression
      PathInExpression
    | QualifiedPathInExpression

│ │ │ +

RangeExpression
      RangeExpr
    | RangeFromExpr
    | RangeToExpr
    | RangeFullExpr
    | RangeInclusiveExpr
    | RangeToInclusiveExpr

│ │ │ +

RangeExprExpression .. Expression

│ │ │ +

RangeFromExprExpression ..

│ │ │ +

RangeToExpr.. Expression

│ │ │ +

RangeFullExpr..

│ │ │ +

RangeInclusiveExprExpression ..= Expression

│ │ │ +

RangeToInclusiveExpr..= Expression

│ │ │ +

MatchExpression
    match Scrutinee {
        InnerAttribute*
        MatchArms?
    }

│ │ │ +

ScrutineeExpressionexcept StructExpression

│ │ │ +

MatchArms
    ( MatchArm => ( ExpressionWithoutBlock , | ExpressionWithBlock ,? ) )*
    MatchArm => Expression ,?

│ │ │ +

MatchArmOuterAttribute* Pattern MatchArmGuard?

│ │ │ +

MatchArmGuardif MatchConditions

│ │ │ +

MatchConditions
     MatchGuardChain
   | Expression

│ │ │ +

MatchGuardChainMatchGuardCondition ( && MatchGuardCondition )*

│ │ │ +

MatchGuardCondition
     Expressionexcept ExcludedMatchConditions
   | OuterAttribute* let Pattern = MatchGuardScrutinee

│ │ │ +

MatchGuardScrutineeExpressionexcept ExcludedMatchConditions

│ │ │ +

ExcludedMatchConditions
      LazyBooleanExpression
    | RangeExpr
    | RangeFromExpr
    | RangeInclusiveExpr
    | AssignmentExpression
    | CompoundAssignmentExpression

│ │ │ +

LoopExpression
    LoopLabel? (
        InfiniteLoopExpression
      | PredicateLoopExpression
      | IteratorLoopExpression
      | LabelBlockExpression
    )

│ │ │ +

InfiniteLoopExpressionloop BlockExpression

│ │ │ +

PredicateLoopExpressionwhile Conditions BlockExpression

│ │ │ +

IteratorLoopExpression
    for Pattern in Expressionexcept StructExpression BlockExpression

│ │ │ +

LoopLabelLIFETIME_OR_LABEL :

│ │ │ +

BreakExpressionbreak LIFETIME_OR_LABEL? Expression?

│ │ │ +

LabelBlockExpressionBlockExpression

│ │ │ +

ContinueExpressioncontinue LIFETIME_OR_LABEL?

│ │ │ +

CallExpressionExpression ( CallParams? )

│ │ │ +

CallParamsExpression ( , Expression )* ,?

│ │ │ +

OperatorExpression
      BorrowExpression
    | DereferenceExpression
    | TryPropagationExpression
    | NegationExpression
    | ArithmeticOrLogicalExpression
    | ComparisonExpression
    | LazyBooleanExpression
    | TypeCastExpression
    | AssignmentExpression
    | CompoundAssignmentExpression

│ │ │ +

BorrowExpression
      ( & | && ) Expression
    | ( & | && ) mut Expression
    | ( & | && ) raw const Expression
    | ( & | && ) raw mut Expression

│ │ │ +

DereferenceExpression* Expression

│ │ │ +

TryPropagationExpressionExpression ?

│ │ │ +

NegationExpression
      - Expression
    | ! Expression

│ │ │ +

ArithmeticOrLogicalExpression
      Expression + Expression
    | Expression - Expression
    | Expression * Expression
    | Expression / Expression
    | Expression % Expression
    | Expression & Expression
    | Expression | Expression
    | Expression ^ Expression
    | Expression << Expression
    | Expression >> Expression

│ │ │ +

ComparisonExpression
      Expression == Expression
    | Expression != Expression
    | Expression > Expression
    | Expression < Expression
    | Expression >= Expression
    | Expression <= Expression

│ │ │ +

LazyBooleanExpression
      Expression || Expression
    | Expression && Expression

│ │ │ +

TypeCastExpressionExpression as TypeNoBounds

│ │ │ +

AssignmentExpressionExpression = Expression

│ │ │ +

CompoundAssignmentExpression
      Expression += Expression
    | Expression -= Expression
    | Expression *= Expression
    | Expression /= Expression
    | Expression %= Expression
    | Expression &= Expression
    | Expression |= Expression
    | Expression ^= Expression
    | Expression <<= Expression
    | Expression >>= Expression

│ │ │ +

GroupedExpression( Expression )

│ │ │ +

BlockExpression
    {
        InnerAttribute*
        Statements?
    }

│ │ │ +

Statements
      Statement+
    | Statement+ ExpressionWithoutBlock
    | ExpressionWithoutBlock

│ │ │ +

AsyncBlockExpressionasync move? BlockExpression

│ │ │ +

ConstBlockExpressionconst BlockExpression

│ │ │ +

UnsafeBlockExpressionunsafe BlockExpression

│ │ │ +

Expression
      ExpressionWithoutBlock
    | ExpressionWithBlock

│ │ │ +

ExpressionWithoutBlock
    OuterAttribute* ExpressionWithoutBlockNoAttrs

│ │ │ +

ExpressionWithoutBlockNoAttrs
      LiteralExpression
    | PathExpression
    | OperatorExpression
    | GroupedExpression
    | ArrayExpression
    | AwaitExpression
    | IndexExpression
    | TupleExpression
    | TupleIndexingExpression
    | StructExpression
    | CallExpression
    | MethodCallExpression
    | FieldExpression
    | ClosureExpression
    | AsyncBlockExpression
    | ContinueExpression
    | BreakExpression
    | RangeExpression
    | ReturnExpression
    | UnderscoreExpression
    | MacroInvocation

│ │ │ +

ExpressionWithBlock
    OuterAttribute* ExpressionWithBlockNoAttrs

│ │ │ +

ExpressionWithBlockNoAttrs
      BlockExpression
    | ConstBlockExpression
    | UnsafeBlockExpression
    | LoopExpression
    | IfExpression
    | MatchExpression

│ │ │

│ │ │
│ │ │ │ │ │
│ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -Pattern │ │ │ + │ │ │ + │ │ │ +LiteralExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +CHAR_LITERAL │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +STRING_LITERAL │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RAW_STRING_LITERAL │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BYTE_LITERAL │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BYTE_STRING_LITERAL │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RAW_BYTE_STRING_LITERAL │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +C_STRING_LITERAL │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RAW_C_STRING_LITERAL │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +INTEGER_LITERAL │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +FLOAT_LITERAL │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +true │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +false │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +AwaitExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +. │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +await │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MethodCallExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +. │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PathExprSegment │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +CallParams │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ReturnExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +return │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ClosureExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +async │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +move │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +|| │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +| │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ClosureParameters │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +| │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +-> │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypeNoBounds │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BlockExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ClosureParameters │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ClosureParam │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ClosureParam │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ClosureParam │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -| │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +OuterAttribute │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ PatternNoTopAlt │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -| │ │ │ + │ │ │ + │ │ │ +: │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -PatternNoTopAlt │ │ │ + │ │ │ + │ │ │ +Type │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -PatternWithoutRange │ │ │ + │ │ │ + │ │ │ +IfExpression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -LiteralPattern │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +if │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -IdentifierPattern │ │ │ + │ │ │ + │ │ │ +Conditions │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -WildcardPattern │ │ │ + │ │ │ + │ │ │ +BlockExpression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RestPattern │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +else │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -ReferencePattern │ │ │ + │ │ │ + │ │ │ +BlockExpression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -StructPattern │ │ │ + │ │ │ + │ │ │ +IfExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TupleStructPattern │ │ │ + │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TuplePattern │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -GroupedPattern │ │ │ │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -WildcardPattern │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -_ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ += │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +except ExcludedConditions │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Scrutinee │ │ │ │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RestPattern │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -.. │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -RangePattern │ │ │ + │ │ │ + │ │ │ +ExcludedConditions │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RangeExclusivePattern │ │ │ + │ │ │ + │ │ │ +StructExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ -RangeInclusivePattern │ │ │ +LazyBooleanExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RangeFromPattern │ │ │ + │ │ │ + │ │ │ +RangeExpr │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RangeToExclusivePattern │ │ │ + │ │ │ + │ │ │ +RangeFromExpr │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RangeToInclusivePattern │ │ │ + │ │ │ + │ │ │ +RangeInclusiveExpr │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ -ObsoleteRangePattern │ │ │ +AssignmentExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +CompoundAssignmentExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ - │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -StructPatternFields │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -StructPatternField │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ , │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -StructPatternField │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -StructPatternField │ │ │ + │ │ │ + │ │ │ +StructExprField │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -68325,648 +69457,645 @@ │ │ │ │ │ │ OuterAttribute │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TUPLE_INDEX │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -: │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Pattern │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ IDENTIFIER │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -: │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Pattern │ │ │ + │ │ │ + │ │ │ +TUPLE_INDEX │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ref │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -mut │ │ │ - │ │ │ + │ │ │ + │ │ │ +: │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -TupleStructItems │ │ │ + │ │ │ + │ │ │ +RangeExpression │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Pattern │ │ │ + │ │ │ + │ │ │ +RangeExpr │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeFromExpr │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Pattern │ │ │ + │ │ │ + │ │ │ +RangeToExpr │ │ │ │ │ │ │ │ │ - │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeFullExpr │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeInclusiveExpr │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeToInclusiveExpr │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeToExpr │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -, │ │ │ + │ │ │ + │ │ │ +.. │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Pattern │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeFullExpr │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +.. │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -

Expressions summary

│ │ │ -
│ │ │ -

Syntax │ │ │ -
│ │ │ -Expression
      ExpressionWithoutBlock
    | ExpressionWithBlock

│ │ │ -

ExpressionWithoutBlock
    OuterAttribute* ExpressionWithoutBlockNoAttrs

│ │ │ -

ExpressionWithoutBlockNoAttrs
      LiteralExpression
    | PathExpression
    | OperatorExpression
    | GroupedExpression
    | ArrayExpression
    | AwaitExpression
    | IndexExpression
    | TupleExpression
    | TupleIndexingExpression
    | StructExpression
    | CallExpression
    | MethodCallExpression
    | FieldExpression
    | ClosureExpression
    | AsyncBlockExpression
    | ContinueExpression
    | BreakExpression
    | RangeExpression
    | ReturnExpression
    | UnderscoreExpression
    | MacroInvocation

│ │ │ -

ExpressionWithBlock
    OuterAttribute* ExpressionWithBlockNoAttrs

│ │ │ -

ExpressionWithBlockNoAttrs
      BlockExpression
    | ConstBlockExpression
    | UnsafeBlockExpression
    | LoopExpression
    | IfExpression
    | MatchExpression

│ │ │ -

ArrayExpression[ ArrayElements? ]

│ │ │ -

ArrayElements
      Expression ( , Expression )* ,?
    | Expression ; Expression

│ │ │ -

IndexExpressionExpression [ Expression ]

│ │ │ -

AwaitExpressionExpression . await

│ │ │ -

StructExpression
    PathInExpression { ( StructExprFields | StructBase )? }

│ │ │ -

StructExprFields
    StructExprField ( , StructExprField )* ( , StructBase | ,? )

│ │ │ -

StructExprField
    OuterAttribute*
    (
        IDENTIFIER
      | ( IDENTIFIER | TUPLE_INDEX ) : Expression
    )

│ │ │ -

StructBase.. Expression

│ │ │ -

OperatorExpression
      BorrowExpression
    | DereferenceExpression
    | TryPropagationExpression
    | NegationExpression
    | ArithmeticOrLogicalExpression
    | ComparisonExpression
    | LazyBooleanExpression
    | TypeCastExpression
    | AssignmentExpression
    | CompoundAssignmentExpression

│ │ │ -

BorrowExpression
      ( & | && ) Expression
    | ( & | && ) mut Expression
    | ( & | && ) raw const Expression
    | ( & | && ) raw mut Expression

│ │ │ -

DereferenceExpression* Expression

│ │ │ -

TryPropagationExpressionExpression ?

│ │ │ -

NegationExpression
      - Expression
    | ! Expression

│ │ │ -

ArithmeticOrLogicalExpression
      Expression + Expression
    | Expression - Expression
    | Expression * Expression
    | Expression / Expression
    | Expression % Expression
    | Expression & Expression
    | Expression | Expression
    | Expression ^ Expression
    | Expression << Expression
    | Expression >> Expression

│ │ │ -

ComparisonExpression
      Expression == Expression
    | Expression != Expression
    | Expression > Expression
    | Expression < Expression
    | Expression >= Expression
    | Expression <= Expression

│ │ │ -

LazyBooleanExpression
      Expression || Expression
    | Expression && Expression

│ │ │ -

TypeCastExpressionExpression as TypeNoBounds

│ │ │ -

AssignmentExpressionExpression = Expression

│ │ │ -

CompoundAssignmentExpression
      Expression += Expression
    | Expression -= Expression
    | Expression *= Expression
    | Expression /= Expression
    | Expression %= Expression
    | Expression &= Expression
    | Expression |= Expression
    | Expression ^= Expression
    | Expression <<= Expression
    | Expression >>= Expression

│ │ │ -

LoopExpression
    LoopLabel? (
        InfiniteLoopExpression
      | PredicateLoopExpression
      | IteratorLoopExpression
      | LabelBlockExpression
    )

│ │ │ -

InfiniteLoopExpressionloop BlockExpression

│ │ │ -

PredicateLoopExpressionwhile Conditions BlockExpression

│ │ │ -

IteratorLoopExpression
    for Pattern in Expressionexcept StructExpression BlockExpression

│ │ │ -

LoopLabelLIFETIME_OR_LABEL :

│ │ │ -

BreakExpressionbreak LIFETIME_OR_LABEL? Expression?

│ │ │ -

LabelBlockExpressionBlockExpression

│ │ │ -

ContinueExpressioncontinue LIFETIME_OR_LABEL?

│ │ │ -

ReturnExpressionreturn Expression?

│ │ │ -

CallExpressionExpression ( CallParams? )

│ │ │ -

CallParamsExpression ( , Expression )* ,?

│ │ │ -

MethodCallExpressionExpression . PathExprSegment ( CallParams? )

│ │ │ -

LiteralExpression
      CHAR_LITERAL
    | STRING_LITERAL
    | RAW_STRING_LITERAL
    | BYTE_LITERAL
    | BYTE_STRING_LITERAL
    | RAW_BYTE_STRING_LITERAL
    | C_STRING_LITERAL
    | RAW_C_STRING_LITERAL
    | INTEGER_LITERAL
    | FLOAT_LITERAL
    | true
    | false

│ │ │ -

BlockExpression
    {
        InnerAttribute*
        Statements?
    }

│ │ │ -

Statements
      Statement+
    | Statement+ ExpressionWithoutBlock
    | ExpressionWithoutBlock

│ │ │ -

AsyncBlockExpressionasync move? BlockExpression

│ │ │ -

ConstBlockExpressionconst BlockExpression

│ │ │ -

UnsafeBlockExpressionunsafe BlockExpression

│ │ │ -

PathExpression
      PathInExpression
    | QualifiedPathInExpression

│ │ │ -

MatchExpression
    match Scrutinee {
        InnerAttribute*
        MatchArms?
    }

│ │ │ -

ScrutineeExpressionexcept StructExpression

│ │ │ -

MatchArms
    ( MatchArm => ( ExpressionWithoutBlock , | ExpressionWithBlock ,? ) )*
    MatchArm => Expression ,?

│ │ │ -

MatchArmOuterAttribute* Pattern MatchArmGuard?

│ │ │ -

MatchArmGuardif MatchConditions

│ │ │ -

MatchConditions
     MatchGuardChain
   | Expression

│ │ │ -

MatchGuardChainMatchGuardCondition ( && MatchGuardCondition )*

│ │ │ -

MatchGuardCondition
     Expressionexcept ExcludedMatchConditions
   | OuterAttribute* let Pattern = MatchGuardScrutinee

│ │ │ -

MatchGuardScrutineeExpressionexcept ExcludedMatchConditions

│ │ │ -

ExcludedMatchConditions
      LazyBooleanExpression
    | RangeExpr
    | RangeFromExpr
    | RangeInclusiveExpr
    | AssignmentExpression
    | CompoundAssignmentExpression

│ │ │ -

IfExpression
    if Conditions BlockExpression
    ( else ( BlockExpression | IfExpression ) )?

│ │ │ -

Conditions
      Expressionexcept StructExpression
    | LetChain

│ │ │ -

LetChainLetChainCondition ( && LetChainCondition )*

│ │ │ -

LetChainCondition
      Expressionexcept ExcludedConditions
    | OuterAttribute* let Pattern = Scrutineeexcept ExcludedConditions

│ │ │ -

ExcludedConditions
      StructExpression
    | LazyBooleanExpression
    | RangeExpr
    | RangeFromExpr
    | RangeInclusiveExpr
    | AssignmentExpression
    | CompoundAssignmentExpression

│ │ │ -

ClosureExpression
    async?
    move?
    ( || | | ClosureParameters? | )
    ( Expression | -> TypeNoBounds BlockExpression )

│ │ │ -

ClosureParametersClosureParam ( , ClosureParam )* ,?

│ │ │ -

ClosureParamOuterAttribute* PatternNoTopAlt ( : Type )?

│ │ │ -

UnderscoreExpression_

│ │ │ -

TupleExpression( TupleElements? )

│ │ │ -

TupleElements → ( Expression , )+ Expression?

│ │ │ -

TupleIndexingExpressionExpression . TUPLE_INDEX

│ │ │ -

RangeExpression
      RangeExpr
    | RangeFromExpr
    | RangeToExpr
    | RangeFullExpr
    | RangeInclusiveExpr
    | RangeToInclusiveExpr

│ │ │ -

RangeExprExpression .. Expression

│ │ │ -

RangeFromExprExpression ..

│ │ │ -

RangeToExpr.. Expression

│ │ │ -

RangeFullExpr..

│ │ │ -

RangeInclusiveExprExpression ..= Expression

│ │ │ -

RangeToInclusiveExpr..= Expression

│ │ │ -

FieldExpressionExpression . IDENTIFIER

│ │ │ -

GroupedExpression( Expression )

│ │ │ -

│ │ │ -
│ │ │ - │ │ │ -
│ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +MatchArms │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MatchArm │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +=> │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ ExpressionWithoutBlock │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ ExpressionWithBlock │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MatchArm │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +=> │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MatchGuardChain │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -StructExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -CallExpression │ │ │ + │ │ │ + │ │ │ +MatchGuardCondition │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MethodCallExpression │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +&& │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -FieldExpression │ │ │ + │ │ │ + │ │ │ +MatchGuardCondition │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ClosureExpression │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AsyncBlockExpression │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ContinueExpression │ │ │ │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MatchGuardCondition │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +except ExcludedMatchConditions │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -BreakExpression │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RangeExpression │ │ │ + │ │ │ + │ │ │ +OuterAttribute │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ReturnExpression │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +let │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -UnderscoreExpression │ │ │ + │ │ │ + │ │ │ +Pattern │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ += │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MacroInvocation │ │ │ + │ │ │ + │ │ │ +MatchGuardScrutinee │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -ExpressionWithBlockNoAttrs │ │ │ + │ │ │ + │ │ │ +ExcludedMatchConditions │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -BlockExpression │ │ │ + │ │ │ + │ │ │ +LazyBooleanExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -ConstBlockExpression │ │ │ + │ │ │ + │ │ │ +RangeExpr │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -UnsafeBlockExpression │ │ │ + │ │ │ + │ │ │ +RangeFromExpr │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -LoopExpression │ │ │ + │ │ │ + │ │ │ +RangeInclusiveExpr │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -IfExpression │ │ │ + │ │ │ + │ │ │ +AssignmentExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MatchExpression │ │ │ + │ │ │ + │ │ │ +CompoundAssignmentExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ArrayElements │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +InfiniteLoopExpression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +PredicateLoopExpression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +IteratorLoopExpression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -; │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +LabelBlockExpression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │
│ │ │ │ │ │ @@ -71079,2636 +72147,3221 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +OperatorExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GroupedExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ArrayExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +AwaitExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IndexExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TupleExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TupleIndexingExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +StructExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +CallExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MethodCallExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +FieldExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ClosureExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +AsyncBlockExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ ContinueExpression │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BreakExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -continue │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeExpression │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -LIFETIME_OR_LABEL │ │ │ + │ │ │ + │ │ │ +ReturnExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +UnderscoreExpression │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MacroInvocation │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -CallExpression │ │ │ + │ │ │ + │ │ │ +ExpressionWithBlockNoAttrs │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +BlockExpression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -CallParams │ │ │ + │ │ │ + │ │ │ +ConstBlockExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +UnsafeBlockExpression │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +LoopExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IfExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MatchExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ + │ │ │ +

Statements summary

│ │ │ +
│ │ │ +

Syntax │ │ │ +
│ │ │ +Statement
      ;
    | Item
    | LetStatement
    | ExpressionStatement
    | OuterAttribute* MacroInvocationSemi

│ │ │ +

LetStatement
    OuterAttribute* let PatternNoTopAlt ( : Type )?
    (
          = Expression
        | = Expressionexcept LazyBooleanExpression or end with a } else BlockExpression
    )? ;

│ │ │ +

ExpressionStatement
      ExpressionWithoutBlock ;
    | ExpressionWithBlock ;?

│ │ │ +

│ │ │ +
│ │ │ + │ │ │ +
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -CallParams │ │ │ + │ │ │ + │ │ │ +Statement │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +; │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +Item │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +LetStatement │ │ │ │ │ │ │ │ │ - │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ExpressionStatement │ │ │ │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +OuterAttribute │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MacroInvocationSemi │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -MethodCallExpression │ │ │ + │ │ │ + │ │ │ +LetStatement │ │ │ │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +OuterAttribute │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +let │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PatternNoTopAlt │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ += │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ Expression │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -. │ │ │ + │ │ │ + │ │ │ += │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +except LazyBooleanExpression or end with a `}` │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -PathExprSegment │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -( │ │ │ + │ │ │ + │ │ │ +else │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -CallParams │ │ │ + │ │ │ + │ │ │ +BlockExpression │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -) │ │ │ + │ │ │ + │ │ │ +; │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ - │ │ │ + │ │ │ +

Configuration summary

│ │ │ +
│ │ │ +

Syntax │ │ │ +
│ │ │ +ConfigurationPredicate
      ConfigurationOption
    | ConfigurationAll
    | ConfigurationAny
    | ConfigurationNot
    | true
    | false

│ │ │ +

ConfigurationOption
    IDENTIFIER ( = ( STRING_LITERAL | RAW_STRING_LITERAL ) )?

│ │ │ +

ConfigurationAll
    all ( ConfigurationPredicateList? )

│ │ │ +

ConfigurationAny
    any ( ConfigurationPredicateList? )

│ │ │ +

ConfigurationNot
    not ( ConfigurationPredicate )

│ │ │ +

ConfigurationPredicateList
    ConfigurationPredicate ( , ConfigurationPredicate )* ,?

│ │ │ +

CfgAttributecfg ( ConfigurationPredicate )

│ │ │ +

CfgAttrAttributecfg_attr ( ConfigurationPredicate , CfgAttrs? )

│ │ │ +

CfgAttrsAttr ( , Attr )* ,?

│ │ │ +

CfgSelectCfgSelectArms?

│ │ │ +

CfgSelectArms
    CfgSelectConfigurationPredicate =>
    (
        { ^ TokenTree } ,? CfgSelectArms?
      | ExpressionWithBlockNoAttrs ,? CfgSelectArms?
      | ExpressionWithoutBlockNoAttrs ( , CfgSelectArms? )?
    )

│ │ │ +

CfgSelectConfigurationPredicate
    ConfigurationPredicate | _

│ │ │ +

│ │ │ +
│ │ │ + │ │ │ +
│ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ConfigurationPredicate │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -BYTE_STRING_LITERAL │ │ │ + │ │ │ + │ │ │ +ConfigurationOption │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RAW_BYTE_STRING_LITERAL │ │ │ + │ │ │ + │ │ │ +ConfigurationAll │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -C_STRING_LITERAL │ │ │ + │ │ │ + │ │ │ +ConfigurationAny │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RAW_C_STRING_LITERAL │ │ │ + │ │ │ + │ │ │ +ConfigurationNot │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -INTEGER_LITERAL │ │ │ + │ │ │ + │ │ │ + │ │ │ +true │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +false │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -MatchArms │ │ │ + │ │ │ + │ │ │ +CfgSelectArms │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MatchArm │ │ │ + │ │ │ + │ │ │ +CfgSelectConfigurationPredicate │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ => │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ExpressionWithoutBlock │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ +{ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +no backtracking │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -ExpressionWithBlock │ │ │ + │ │ │ + │ │ │ +TokenTree │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +} │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ , │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +CfgSelectArms │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MatchArm │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -=> │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +ExpressionWithBlockNoAttrs │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ , │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MatchArmGuard │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -if │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MatchConditions │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ + │ │ │ +

Assembly summary

│ │ │ +
│ │ │ +

Syntax │ │ │ +
│ │ │ +AsmArgsAsmAttrFormatString ( , AsmAttrFormatString )* ( , AsmAttrOperand )* ,?

│ │ │ +

FormatStringSTRING_LITERAL | RAW_STRING_LITERAL | MacroInvocation

│ │ │ +

AsmAttrFormatString → ( OuterAttribute )* FormatString

│ │ │ +

AsmOperand
      ClobberAbi
    | AsmOptions
    | RegOperand

│ │ │ +

AsmAttrOperand → ( OuterAttribute )* AsmOperand

│ │ │ +

ClobberAbiclobber_abi ( Abi ( , Abi )* ,? )

│ │ │ +

AsmOptions
    options ( ( AsmOption ( , AsmOption )* ,? )? )

│ │ │ +

AsmOption
      pure
    | nomem
    | readonly
    | preserves_flags
    | noreturn
    | nostack
    | att_syntax
    | raw

│ │ │ +

RegOperand → ( ParamName = )?
    (
          DirSpec ( RegSpec ) Expression
        | DualDirSpec ( RegSpec ) DualDirSpecExpression
        | sym PathExpression
        | const Expression
        | label { Statements? }
    )

│ │ │ +

ParamNameIDENTIFIER_OR_KEYWORD | RAW_IDENTIFIER

│ │ │ +

DualDirSpecExpression
      Expression
    | Expression => Expression

│ │ │ +

RegSpecRegisterClass | ExplicitRegister

│ │ │ +

RegisterClassIDENTIFIER_OR_KEYWORD

│ │ │ +

ExplicitRegisterSTRING_LITERAL

│ │ │ +

DirSpec
      in
    | out
    | lateout

│ │ │ +

DualDirSpec
      inout
    | inlateout

│ │ │ +

│ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -MatchGuardCondition │ │ │ + │ │ │ + │ │ │ +FormatString │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -except ExcludedMatchConditions │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -OuterAttribute │ │ │ + │ │ │ + │ │ │ +STRING_LITERAL │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -let │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Pattern │ │ │ + │ │ │ + │ │ │ +RAW_STRING_LITERAL │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -= │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MatchGuardScrutinee │ │ │ + │ │ │ + │ │ │ +MacroInvocation │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -IfExpression │ │ │ + │ │ │ + │ │ │ +ClobberAbi │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -if │ │ │ + │ │ │ + │ │ │ +clobber_abi │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Conditions │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -BlockExpression │ │ │ + │ │ │ + │ │ │ +Abi │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -else │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -BlockExpression │ │ │ + │ │ │ + │ │ │ +Abi │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IfExpression │ │ │ + │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ - │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -LetChainCondition │ │ │ + │ │ │ + │ │ │ +AsmOption │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -except ExcludedConditions │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ +pure │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +nomem │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -OuterAttribute │ │ │ + │ │ │ + │ │ │ + │ │ │ +readonly │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +preserves_flags │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -let │ │ │ + │ │ │ + │ │ │ +noreturn │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Pattern │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -= │ │ │ + │ │ │ + │ │ │ +nostack │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -except ExcludedConditions │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Scrutinee │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +att_syntax │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +raw │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -ExcludedConditions │ │ │ + │ │ │ + │ │ │ +RegOperand │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -StructExpression │ │ │ + │ │ │ + │ │ │ +ParamName │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ += │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -LazyBooleanExpression │ │ │ + │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RangeExpr │ │ │ + │ │ │ + │ │ │ +DirSpec │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RangeFromExpr │ │ │ + │ │ │ + │ │ │ +RegSpec │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RangeInclusiveExpr │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -AssignmentExpression │ │ │ + │ │ │ + │ │ │ +DualDirSpec │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -CompoundAssignmentExpression │ │ │ + │ │ │ + │ │ │ +RegSpec │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +DualDirSpecExpression │ │ │ │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ClosureExpression │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -async │ │ │ + │ │ │ + │ │ │ +sym │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PathExpression │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -move │ │ │ + │ │ │ + │ │ │ +const │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -|| │ │ │ + │ │ │ + │ │ │ +label │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -| │ │ │ + │ │ │ + │ │ │ +{ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -ClosureParameters │ │ │ + │ │ │ + │ │ │ +Statements │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -| │ │ │ + │ │ │ + │ │ │ +} │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ExplicitRegister │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +STRING_LITERAL │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ + │ │ │ +

Miscellaneous summary

│ │ │ +
│ │ │ +

Syntax │ │ │ +
│ │ │ +TypeParamBoundsTypeParamBound ( + TypeParamBound )* +?

│ │ │ +

TypeParamBoundLifetime | TraitBound | UseBound

│ │ │ +

TraitBound
      ( ? | ForLifetimes )? TypePath
    | ( ( ? | ForLifetimes )? TypePath )

│ │ │ +

LifetimeBounds → ( Lifetime + )* Lifetime?

│ │ │ +

Lifetime
      LIFETIME_OR_LABEL
    | 'static
    | '_

│ │ │ +

UseBounduse UseBoundGenericArgs

│ │ │ +

UseBoundGenericArgs
      < >
    | < ( UseBoundGenericArg , )* UseBoundGenericArg ,? >

│ │ │ +

UseBoundGenericArg
      Lifetime
    | IDENTIFIER
    | Self

│ │ │ +

ForLifetimesfor GenericParams

│ │ │ +

│ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -RangeExpression │ │ │ + │ │ │ + │ │ │ +TraitBound │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +? │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RangeExpr │ │ │ + │ │ │ + │ │ │ +ForLifetimes │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RangeFromExpr │ │ │ + │ │ │ + │ │ │ +TypePath │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RangeToExpr │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +? │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RangeFullExpr │ │ │ + │ │ │ + │ │ │ +ForLifetimes │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RangeInclusiveExpr │ │ │ + │ │ │ + │ │ │ +TypePath │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RangeToInclusiveExpr │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RangeToInclusiveExpr │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -..= │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +> │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ - │ │ │ │ │ │ @@ -74723,1667 +76376,14 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │ -

Types summary

│ │ │ -
│ │ │ -

Syntax │ │ │ -
│ │ │ -Type
      TypeNoBounds
    | ImplTraitType
    | TraitObjectType

│ │ │ -

TypeNoBounds
      ParenthesizedType
    | ImplTraitTypeOneBound
    | TraitObjectTypeOneBound
    | TypePath
    | TupleType
    | NeverType
    | RawPointerType
    | ReferenceType
    | ArrayType
    | SliceType
    | InferredType
    | QualifiedPathInType
    | BareFunctionType
    | MacroInvocation

│ │ │ -

ParenthesizedType( Type )

│ │ │ -

ArrayType[ Type ; Expression ]

│ │ │ -

ImplTraitTypeimpl TypeParamBounds

│ │ │ -

ImplTraitTypeOneBoundimpl TraitBound

│ │ │ -

TraitObjectTypedyn? TypeParamBounds

│ │ │ -

TraitObjectTypeOneBounddyn? TraitBound

│ │ │ -

NeverType!

│ │ │ -

ReferenceType& Lifetime? mut? TypeNoBounds

│ │ │ -

RawPointerType* ( mut | const ) TypeNoBounds

│ │ │ -

BareFunctionType
    ForLifetimes? FunctionTypeQualifiers fn
       ( FunctionParametersMaybeNamedVariadic? ) BareFunctionReturnType?

│ │ │ -

FunctionTypeQualifiersunsafe? ( extern Abi? )?

│ │ │ -

BareFunctionReturnType-> TypeNoBounds

│ │ │ -

FunctionParametersMaybeNamedVariadic
    MaybeNamedFunctionParameters | MaybeNamedFunctionParametersVariadic

│ │ │ -

MaybeNamedFunctionParameters
    MaybeNamedParam ( , MaybeNamedParam )* ,?

│ │ │ -

MaybeNamedParam
    OuterAttribute* ( ( IDENTIFIER | _ ) : )? Type

│ │ │ -

MaybeNamedFunctionParametersVariadic
    ( MaybeNamedParam , )* MaybeNamedParam , OuterAttribute* ...

│ │ │ -

TupleType
      ( )
    | ( ( Type , )+ Type? )

│ │ │ -

SliceType[ Type ]

│ │ │ -

InferredType_

│ │ │ -

│ │ │ -
│ │ │ - │ │ │ -
│ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeNoBounds │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ImplTraitType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TraitObjectType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeNoBounds │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ParenthesizedType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ImplTraitTypeOneBound │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TraitObjectTypeOneBound │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypePath │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TupleType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -NeverType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RawPointerType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ReferenceType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ArrayType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -SliceType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -InferredType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -QualifiedPathInType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -BareFunctionType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MacroInvocation │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ParenthesizedType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ArrayType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -[ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -; │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -] │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ImplTraitType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -impl │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeParamBounds │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ImplTraitTypeOneBound │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -impl │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TraitBound │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TraitObjectType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -dyn │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeParamBounds │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TraitObjectTypeOneBound │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -dyn │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TraitBound │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -NeverType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -! │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ReferenceType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -& │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Lifetime │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -mut │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeNoBounds │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -RawPointerType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -* │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -mut │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -const │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeNoBounds │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -BareFunctionType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ForLifetimes │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -FunctionTypeQualifiers │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -fn │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -FunctionParametersMaybeNamedVariadic │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -BareFunctionReturnType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -FunctionTypeQualifiers │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -unsafe │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -extern │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Abi │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -BareFunctionReturnType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ --> │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeNoBounds │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -FunctionParametersMaybeNamedVariadic │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MaybeNamedFunctionParameters │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MaybeNamedFunctionParametersVariadic │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MaybeNamedFunctionParameters │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MaybeNamedParam │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MaybeNamedParam │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MaybeNamedParam │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -OuterAttribute │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -_ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -: │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MaybeNamedFunctionParametersVariadic │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MaybeNamedParam │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MaybeNamedParam │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -OuterAttribute │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -... │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TupleType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -SliceType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -[ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -] │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -InferredType │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -_ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ -

Miscellaneous summary

│ │ │ -
│ │ │ -

Syntax │ │ │ -
│ │ │ -TypeParamBoundsTypeParamBound ( + TypeParamBound )* +?

│ │ │ -

TypeParamBoundLifetime | TraitBound | UseBound

│ │ │ -

TraitBound
      ( ? | ForLifetimes )? TypePath
    | ( ( ? | ForLifetimes )? TypePath )

│ │ │ -

LifetimeBounds → ( Lifetime + )* Lifetime?

│ │ │ -

Lifetime
      LIFETIME_OR_LABEL
    | 'static
    | '_

│ │ │ -

UseBounduse UseBoundGenericArgs

│ │ │ -

UseBoundGenericArgs
      < >
    | < ( UseBoundGenericArg , )* UseBoundGenericArg ,? >

│ │ │ -

UseBoundGenericArg
      Lifetime
    | IDENTIFIER
    | Self

│ │ │ -

ForLifetimesfor GenericParams

│ │ │ -

│ │ │ -
│ │ │ - │ │ │ -
│ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeParamBounds │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeParamBound │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -+ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeParamBound │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -+ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeParamBound │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Lifetime │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TraitBound │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -UseBound │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TraitBound │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -? │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ForLifetimes │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypePath │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -? │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ForLifetimes │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypePath │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -LifetimeBounds │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Lifetime │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -+ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Lifetime │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Lifetime │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -LIFETIME_OR_LABEL │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -'static │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -'_ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -UseBound │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -use │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -UseBoundGenericArgs │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -UseBoundGenericArgs │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -< │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -> │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -< │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -UseBoundGenericArg │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -UseBoundGenericArg │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -> │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -UseBoundGenericArg │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Lifetime │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Self │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ForLifetimes │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -for │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -GenericParams │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │
│ │ │

Syntax index

│ │ │

This appendix provides an index of tokens and common forms with links to where those elements are defined.

│ │ │

Keywords

│ │ │
│ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ @@ -24805,196 +24805,16 @@ │ │ │ │ Note │ │ │ │ The "windows" subsystem is commonly used by GUI applications that do │ │ │ │ not want to display a console window on startup. │ │ │ │ ************ _AA_pp_pp_ee_nn_dd_ii_cc_ee_ss ************ │ │ │ │ ************ _GG_rr_aa_mm_mm_aa_rr_ _ss_uu_mm_mm_aa_rr_yy ************ │ │ │ │ The following is a summary of the grammar production rules. For details on the │ │ │ │ syntax of this grammar, see _nn_oo_tt_aa_tt_ii_oo_nn_.._gg_rr_aa_mm_mm_aa_rr_.._ss_yy_nn_tt_aa_xx. │ │ │ │ -********** _AA_tt_tt_rr_ii_bb_uu_tt_ee_ss_ _ss_uu_mm_mm_aa_rr_yy ********** │ │ │ │ -SSyynnttaaxx │ │ │ │ -_P_r_o_c_M_a_c_r_o_D_e_r_i_v_e_A_t_t_r_i_b_u_t_e → │ │ │ │ -    proc_macro_derive ( _D_e_r_i_v_e_M_a_c_r_o_N_a_m_e ( , _D_e_r_i_v_e_M_a_c_r_o_A_t_t_r_i_b_u_t_e_s )? ,? ) │ │ │ │ -_D_e_r_i_v_e_M_a_c_r_o_N_a_m_e → _I_D_E_N_T_I_F_I_E_R │ │ │ │ -_D_e_r_i_v_e_M_a_c_r_o_A_t_t_r_i_b_u_t_e_s → │ │ │ │ -    attributes ( ( _I_D_E_N_T_I_F_I_E_R ( , _I_D_E_N_T_I_F_I_E_R )* ,? )? ) │ │ │ │ -_I_n_n_e_r_A_t_t_r_i_b_u_t_e → # ! [ _A_t_t_r ] │ │ │ │ -_O_u_t_e_r_A_t_t_r_i_b_u_t_e → # [ _A_t_t_r ] │ │ │ │ -_A_t_t_r → │ │ │ │ -      _S_i_m_p_l_e_P_a_t_h _A_t_t_r_I_n_p_u_t? │ │ │ │ -    | unsafe ( _S_i_m_p_l_e_P_a_t_h _A_t_t_r_I_n_p_u_t? ) │ │ │ │ -_A_t_t_r_I_n_p_u_t → │ │ │ │ -      _D_e_l_i_m_T_o_k_e_n_T_r_e_e │ │ │ │ -    | = _E_x_p_r_e_s_s_i_o_n │ │ │ │ -_M_e_t_a_I_t_e_m → │ │ │ │ -      _S_i_m_p_l_e_P_a_t_h │ │ │ │ -    | _S_i_m_p_l_e_P_a_t_h = _E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _S_i_m_p_l_e_P_a_t_h ( _M_e_t_a_S_e_q? ) │ │ │ │ -_M_e_t_a_S_e_q → │ │ │ │ -    _M_e_t_a_I_t_e_m_I_n_n_e_r ( , _M_e_t_a_I_t_e_m_I_n_n_e_r )* ,? │ │ │ │ -_M_e_t_a_I_t_e_m_I_n_n_e_r → │ │ │ │ -      _M_e_t_a_I_t_e_m │ │ │ │ -    | _E_x_p_r_e_s_s_i_o_n │ │ │ │ -_M_e_t_a_W_o_r_d → │ │ │ │ -    _I_D_E_N_T_I_F_I_E_R │ │ │ │ -_M_e_t_a_N_a_m_e_V_a_l_u_e_S_t_r → │ │ │ │ -    _I_D_E_N_T_I_F_I_E_R = ( _S_T_R_I_N_G___L_I_T_E_R_A_L | _R_A_W___S_T_R_I_N_G___L_I_T_E_R_A_L ) │ │ │ │ -_M_e_t_a_L_i_s_t_P_a_t_h_s → │ │ │ │ -    _I_D_E_N_T_I_F_I_E_R ( ( _S_i_m_p_l_e_P_a_t_h ( , _S_i_m_p_l_e_P_a_t_h )* ,? )? ) │ │ │ │ -_M_e_t_a_L_i_s_t_I_d_e_n_t_s → │ │ │ │ -    _I_D_E_N_T_I_F_I_E_R ( ( _I_D_E_N_T_I_F_I_E_R ( , _I_D_E_N_T_I_F_I_E_R )* ,? )? ) │ │ │ │ -_M_e_t_a_L_i_s_t_N_a_m_e_V_a_l_u_e_S_t_r → │ │ │ │ -    _I_D_E_N_T_I_F_I_E_R ( ( _M_e_t_a_N_a_m_e_V_a_l_u_e_S_t_r ( , _M_e_t_a_N_a_m_e_V_a_l_u_e_S_t_r )* ,? )? ) │ │ │ │ -_C_o_l_l_a_p_s_e_D_e_b_u_g_i_n_f_o_A_t_t_r_i_b_u_t_e → collapse_debuginfo ( _C_o_l_l_a_p_s_e_D_e_b_u_g_i_n_f_o_O_p_t_i_o_n ) │ │ │ │ -_C_o_l_l_a_p_s_e_D_e_b_u_g_i_n_f_o_O_p_t_i_o_n → │ │ │ │ -      yes │ │ │ │ -    | no │ │ │ │ -    | external │ │ │ │ -_I_n_l_i_n_e_A_t_t_r_i_b_u_t_e → │ │ │ │ -      inline ( always ) │ │ │ │ -    | inline ( never ) │ │ │ │ -    | inline │ │ │ │ -Show Railroad │ │ │ │ -ProcMacroDeriveAttribute proc_macro_derive ( DeriveMacroName , │ │ │ │ -DeriveMacroAttributes , ) │ │ │ │ -DeriveMacroName IDENTIFIER │ │ │ │ -DeriveMacroAttributes attributes ( IDENTIFIER , IDENTIFIER , ) │ │ │ │ -InnerAttribute # ! [ Attr ] │ │ │ │ -OuterAttribute # [ Attr ] │ │ │ │ -Attr SimplePath AttrInput unsafe ( SimplePath AttrInput ) │ │ │ │ -AttrInput DelimTokenTree = Expression │ │ │ │ -MetaItem SimplePath SimplePath = Expression SimplePath ( MetaSeq ) │ │ │ │ -MetaSeq MetaItemInner , MetaItemInner , │ │ │ │ -MetaItemInner MetaItem Expression │ │ │ │ -MetaWord IDENTIFIER │ │ │ │ -MetaNameValueStr IDENTIFIER = STRING_LITERAL RAW_STRING_LITERAL │ │ │ │ -MetaListPaths IDENTIFIER ( SimplePath , SimplePath , ) │ │ │ │ -MetaListIdents IDENTIFIER ( IDENTIFIER , IDENTIFIER , ) │ │ │ │ -MetaListNameValueStr IDENTIFIER ( MetaNameValueStr , MetaNameValueStr , ) │ │ │ │ -CollapseDebuginfoAttribute collapse_debuginfo ( CollapseDebuginfoOption ) │ │ │ │ -CollapseDebuginfoOption yes no external │ │ │ │ -InlineAttribute inline ( always ) inline ( never ) inline │ │ │ │ -********** _CC_oo_nn_ff_ii_gg_uu_rr_aa_tt_ii_oo_nn_ _ss_uu_mm_mm_aa_rr_yy ********** │ │ │ │ -SSyynnttaaxx │ │ │ │ -_C_o_n_f_i_g_u_r_a_t_i_o_n_P_r_e_d_i_c_a_t_e → │ │ │ │ -      _C_o_n_f_i_g_u_r_a_t_i_o_n_O_p_t_i_o_n │ │ │ │ -    | _C_o_n_f_i_g_u_r_a_t_i_o_n_A_l_l │ │ │ │ -    | _C_o_n_f_i_g_u_r_a_t_i_o_n_A_n_y │ │ │ │ -    | _C_o_n_f_i_g_u_r_a_t_i_o_n_N_o_t │ │ │ │ -    | true │ │ │ │ -    | false │ │ │ │ -_C_o_n_f_i_g_u_r_a_t_i_o_n_O_p_t_i_o_n → │ │ │ │ -    _I_D_E_N_T_I_F_I_E_R ( = ( _S_T_R_I_N_G___L_I_T_E_R_A_L | _R_A_W___S_T_R_I_N_G___L_I_T_E_R_A_L ) )? │ │ │ │ -_C_o_n_f_i_g_u_r_a_t_i_o_n_A_l_l → │ │ │ │ -    all ( _C_o_n_f_i_g_u_r_a_t_i_o_n_P_r_e_d_i_c_a_t_e_L_i_s_t? ) │ │ │ │ -_C_o_n_f_i_g_u_r_a_t_i_o_n_A_n_y → │ │ │ │ -    any ( _C_o_n_f_i_g_u_r_a_t_i_o_n_P_r_e_d_i_c_a_t_e_L_i_s_t? ) │ │ │ │ -_C_o_n_f_i_g_u_r_a_t_i_o_n_N_o_t → │ │ │ │ -    not ( _C_o_n_f_i_g_u_r_a_t_i_o_n_P_r_e_d_i_c_a_t_e ) │ │ │ │ -_C_o_n_f_i_g_u_r_a_t_i_o_n_P_r_e_d_i_c_a_t_e_L_i_s_t → │ │ │ │ -    _C_o_n_f_i_g_u_r_a_t_i_o_n_P_r_e_d_i_c_a_t_e ( , _C_o_n_f_i_g_u_r_a_t_i_o_n_P_r_e_d_i_c_a_t_e )* ,? │ │ │ │ -_C_f_g_A_t_t_r_i_b_u_t_e → cfg ( _C_o_n_f_i_g_u_r_a_t_i_o_n_P_r_e_d_i_c_a_t_e ) │ │ │ │ -_C_f_g_A_t_t_r_A_t_t_r_i_b_u_t_e → cfg_attr ( _C_o_n_f_i_g_u_r_a_t_i_o_n_P_r_e_d_i_c_a_t_e , _C_f_g_A_t_t_r_s? ) │ │ │ │ -_C_f_g_A_t_t_r_s → _A_t_t_r ( , _A_t_t_r )* ,? │ │ │ │ -_C_f_g_S_e_l_e_c_t → _C_f_g_S_e_l_e_c_t_A_r_m_s? │ │ │ │ -_C_f_g_S_e_l_e_c_t_A_r_m_s → │ │ │ │ -    _C_f_g_S_e_l_e_c_t_C_o_n_f_i_g_u_r_a_t_i_o_n_P_r_e_d_i_c_a_t_e => │ │ │ │ -    ( │ │ │ │ -        { ^ _T_o_k_e_n_T_r_e_e } ,? _C_f_g_S_e_l_e_c_t_A_r_m_s? │ │ │ │ -      | _E_x_p_r_e_s_s_i_o_n_W_i_t_h_B_l_o_c_k_N_o_A_t_t_r_s ,? _C_f_g_S_e_l_e_c_t_A_r_m_s? │ │ │ │ -      | _E_x_p_r_e_s_s_i_o_n_W_i_t_h_o_u_t_B_l_o_c_k_N_o_A_t_t_r_s ( , _C_f_g_S_e_l_e_c_t_A_r_m_s? )? │ │ │ │ -    ) │ │ │ │ -_C_f_g_S_e_l_e_c_t_C_o_n_f_i_g_u_r_a_t_i_o_n_P_r_e_d_i_c_a_t_e → │ │ │ │ -    _C_o_n_f_i_g_u_r_a_t_i_o_n_P_r_e_d_i_c_a_t_e | _ │ │ │ │ -Show Railroad │ │ │ │ -ConfigurationPredicate ConfigurationOption ConfigurationAll ConfigurationAny │ │ │ │ -ConfigurationNot true false │ │ │ │ -ConfigurationOption IDENTIFIER = STRING_LITERAL RAW_STRING_LITERAL │ │ │ │ -ConfigurationAll all ( ConfigurationPredicateList ) │ │ │ │ -ConfigurationAny any ( ConfigurationPredicateList ) │ │ │ │ -ConfigurationNot not ( ConfigurationPredicate ) │ │ │ │ -ConfigurationPredicateList ConfigurationPredicate , ConfigurationPredicate , │ │ │ │ -CfgAttribute cfg ( ConfigurationPredicate ) │ │ │ │ -CfgAttrAttribute cfg_attr ( ConfigurationPredicate , CfgAttrs ) │ │ │ │ -CfgAttrs Attr , Attr , │ │ │ │ -CfgSelect CfgSelectArms │ │ │ │ -CfgSelectArms CfgSelectConfigurationPredicate => { no backtracking TokenTree } │ │ │ │ -, CfgSelectArms ExpressionWithBlockNoAttrs , CfgSelectArms │ │ │ │ -ExpressionWithoutBlockNoAttrs , CfgSelectArms │ │ │ │ -CfgSelectConfigurationPredicate ConfigurationPredicate _ │ │ │ │ -********** _AA_ss_ss_ee_mm_bb_ll_yy_ _ss_uu_mm_mm_aa_rr_yy ********** │ │ │ │ -SSyynnttaaxx │ │ │ │ -_A_s_m_A_r_g_s → _A_s_m_A_t_t_r_F_o_r_m_a_t_S_t_r_i_n_g ( , _A_s_m_A_t_t_r_F_o_r_m_a_t_S_t_r_i_n_g )* ( , _A_s_m_A_t_t_r_O_p_e_r_a_n_d )* │ │ │ │ -,? │ │ │ │ -_F_o_r_m_a_t_S_t_r_i_n_g → _S_T_R_I_N_G___L_I_T_E_R_A_L | _R_A_W___S_T_R_I_N_G___L_I_T_E_R_A_L | _M_a_c_r_o_I_n_v_o_c_a_t_i_o_n │ │ │ │ -_A_s_m_A_t_t_r_F_o_r_m_a_t_S_t_r_i_n_g → ( _O_u_t_e_r_A_t_t_r_i_b_u_t_e )* _F_o_r_m_a_t_S_t_r_i_n_g │ │ │ │ -_A_s_m_O_p_e_r_a_n_d → │ │ │ │ -      _C_l_o_b_b_e_r_A_b_i │ │ │ │ -    | _A_s_m_O_p_t_i_o_n_s │ │ │ │ -    | _R_e_g_O_p_e_r_a_n_d │ │ │ │ -_A_s_m_A_t_t_r_O_p_e_r_a_n_d → ( _O_u_t_e_r_A_t_t_r_i_b_u_t_e )* _A_s_m_O_p_e_r_a_n_d │ │ │ │ -_C_l_o_b_b_e_r_A_b_i → clobber_abi ( _A_b_i ( , _A_b_i )* ,? ) │ │ │ │ -_A_s_m_O_p_t_i_o_n_s → │ │ │ │ -    options ( ( _A_s_m_O_p_t_i_o_n ( , _A_s_m_O_p_t_i_o_n )* ,? )? ) │ │ │ │ -_A_s_m_O_p_t_i_o_n → │ │ │ │ -      pure │ │ │ │ -    | nomem │ │ │ │ -    | readonly │ │ │ │ -    | preserves_flags │ │ │ │ -    | noreturn │ │ │ │ -    | nostack │ │ │ │ -    | att_syntax │ │ │ │ -    | raw │ │ │ │ -_R_e_g_O_p_e_r_a_n_d → ( _P_a_r_a_m_N_a_m_e = )? │ │ │ │ -    ( │ │ │ │ -          _D_i_r_S_p_e_c ( _R_e_g_S_p_e_c ) _E_x_p_r_e_s_s_i_o_n │ │ │ │ -        | _D_u_a_l_D_i_r_S_p_e_c ( _R_e_g_S_p_e_c ) _D_u_a_l_D_i_r_S_p_e_c_E_x_p_r_e_s_s_i_o_n │ │ │ │ -        | sym _P_a_t_h_E_x_p_r_e_s_s_i_o_n │ │ │ │ -        | const _E_x_p_r_e_s_s_i_o_n │ │ │ │ -        | label { _S_t_a_t_e_m_e_n_t_s? } │ │ │ │ -    ) │ │ │ │ -_P_a_r_a_m_N_a_m_e → _I_D_E_N_T_I_F_I_E_R___O_R___K_E_Y_W_O_R_D | _R_A_W___I_D_E_N_T_I_F_I_E_R │ │ │ │ -_D_u_a_l_D_i_r_S_p_e_c_E_x_p_r_e_s_s_i_o_n → │ │ │ │ -      _E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _E_x_p_r_e_s_s_i_o_n => _E_x_p_r_e_s_s_i_o_n │ │ │ │ -_R_e_g_S_p_e_c → _R_e_g_i_s_t_e_r_C_l_a_s_s | _E_x_p_l_i_c_i_t_R_e_g_i_s_t_e_r │ │ │ │ -_R_e_g_i_s_t_e_r_C_l_a_s_s → _I_D_E_N_T_I_F_I_E_R___O_R___K_E_Y_W_O_R_D │ │ │ │ -_E_x_p_l_i_c_i_t_R_e_g_i_s_t_e_r → _S_T_R_I_N_G___L_I_T_E_R_A_L │ │ │ │ -_D_i_r_S_p_e_c → │ │ │ │ -      in │ │ │ │ -    | out │ │ │ │ -    | lateout │ │ │ │ -_D_u_a_l_D_i_r_S_p_e_c → │ │ │ │ -      inout │ │ │ │ -    | inlateout │ │ │ │ -Show Railroad │ │ │ │ -AsmArgs AsmAttrFormatString , AsmAttrFormatString , AsmAttrOperand , │ │ │ │ -FormatString STRING_LITERAL RAW_STRING_LITERAL MacroInvocation │ │ │ │ -AsmAttrFormatString OuterAttribute FormatString │ │ │ │ -AsmOperand ClobberAbi AsmOptions RegOperand │ │ │ │ -AsmAttrOperand OuterAttribute AsmOperand │ │ │ │ -ClobberAbi clobber_abi ( Abi , Abi , ) │ │ │ │ -AsmOptions options ( AsmOption , AsmOption , ) │ │ │ │ -AsmOption pure nomem readonly preserves_flags noreturn nostack att_syntax raw │ │ │ │ -RegOperand ParamName = DirSpec ( RegSpec ) Expression DualDirSpec ( RegSpec ) │ │ │ │ -DualDirSpecExpression sym PathExpression const Expression label { Statements } │ │ │ │ -ParamName IDENTIFIER_OR_KEYWORD RAW_IDENTIFIER │ │ │ │ -DualDirSpecExpression Expression Expression => Expression │ │ │ │ -RegSpec RegisterClass ExplicitRegister │ │ │ │ -RegisterClass IDENTIFIER_OR_KEYWORD │ │ │ │ -ExplicitRegister STRING_LITERAL │ │ │ │ -DirSpec in out lateout │ │ │ │ -DualDirSpec inout inlateout │ │ │ │ ********** _II_tt_ee_mm_ss_ _ss_uu_mm_mm_aa_rr_yy ********** │ │ │ │ SSyynnttaaxx │ │ │ │ -_V_i_s_i_b_i_l_i_t_y → │ │ │ │ -      pub │ │ │ │ -    | pub ( crate ) │ │ │ │ -    | pub ( self ) │ │ │ │ -    | pub ( super ) │ │ │ │ -    | pub ( in _S_i_m_p_l_e_P_a_t_h ) │ │ │ │ _I_t_e_m → │ │ │ │     _O_u_t_e_r_A_t_t_r_i_b_u_t_e* ( _V_i_s_I_t_e_m | _M_a_c_r_o_I_t_e_m ) │ │ │ │ _V_i_s_I_t_e_m → │ │ │ │     _V_i_s_i_b_i_l_i_t_y? │ │ │ │     ( │ │ │ │         _M_o_d_u_l_e │ │ │ │       | _E_x_t_e_r_n_C_r_a_t_e │ │ │ │ @@ -25012,32 +24832,57 @@ │ │ │ │     ) │ │ │ │ _M_a_c_r_o_I_t_e_m → │ │ │ │       _M_a_c_r_o_I_n_v_o_c_a_t_i_o_n_S_e_m_i │ │ │ │     | _M_a_c_r_o_R_u_l_e_s_D_e_f_i_n_i_t_i_o_n │ │ │ │ _C_r_a_t_e → │ │ │ │     _I_n_n_e_r_A_t_t_r_i_b_u_t_e* │ │ │ │     _I_t_e_m* │ │ │ │ +_V_i_s_i_b_i_l_i_t_y → │ │ │ │ +      pub │ │ │ │ +    | pub ( crate ) │ │ │ │ +    | pub ( self ) │ │ │ │ +    | pub ( super ) │ │ │ │ +    | pub ( in _S_i_m_p_l_e_P_a_t_h ) │ │ │ │ _T_r_a_i_t → │ │ │ │     unsafe? trait _I_D_E_N_T_I_F_I_E_R _G_e_n_e_r_i_c_P_a_r_a_m_s? ( : _T_y_p_e_P_a_r_a_m_B_o_u_n_d_s? )? │ │ │ │ _W_h_e_r_e_C_l_a_u_s_e? │ │ │ │     { │ │ │ │         _I_n_n_e_r_A_t_t_r_i_b_u_t_e* │ │ │ │         _A_s_s_o_c_i_a_t_e_d_I_t_e_m* │ │ │ │     } │ │ │ │ +_T_y_p_e_A_l_i_a_s → │ │ │ │ +    type _I_D_E_N_T_I_F_I_E_R _G_e_n_e_r_i_c_P_a_r_a_m_s? ( : _T_y_p_e_P_a_r_a_m_B_o_u_n_d_s )? │ │ │ │ +        _W_h_e_r_e_C_l_a_u_s_e? │ │ │ │ +        ( = _T_y_p_e _W_h_e_r_e_C_l_a_u_s_e? )? ; │ │ │ │ +_C_o_n_s_t_a_n_t_I_t_e_m → │ │ │ │ +    const ( _I_D_E_N_T_I_F_I_E_R | _ ) : _T_y_p_e ( = _E_x_p_r_e_s_s_i_o_n )? ; │ │ │ │ _S_t_r_u_c_t → │ │ │ │       _S_t_r_u_c_t_S_t_r_u_c_t │ │ │ │     | _T_u_p_l_e_S_t_r_u_c_t │ │ │ │ _S_t_r_u_c_t_S_t_r_u_c_t → │ │ │ │     struct _I_D_E_N_T_I_F_I_E_R _G_e_n_e_r_i_c_P_a_r_a_m_s? _W_h_e_r_e_C_l_a_u_s_e? ( { _S_t_r_u_c_t_F_i_e_l_d_s? } | ; ) │ │ │ │ _T_u_p_l_e_S_t_r_u_c_t → │ │ │ │     struct _I_D_E_N_T_I_F_I_E_R _G_e_n_e_r_i_c_P_a_r_a_m_s? ( _T_u_p_l_e_F_i_e_l_d_s? ) _W_h_e_r_e_C_l_a_u_s_e? ; │ │ │ │ _S_t_r_u_c_t_F_i_e_l_d_s → _S_t_r_u_c_t_F_i_e_l_d ( , _S_t_r_u_c_t_F_i_e_l_d )* ,? │ │ │ │ _S_t_r_u_c_t_F_i_e_l_d → _O_u_t_e_r_A_t_t_r_i_b_u_t_e* _V_i_s_i_b_i_l_i_t_y? _I_D_E_N_T_I_F_I_E_R : _T_y_p_e │ │ │ │ _T_u_p_l_e_F_i_e_l_d_s → _T_u_p_l_e_F_i_e_l_d ( , _T_u_p_l_e_F_i_e_l_d )* ,? │ │ │ │ _T_u_p_l_e_F_i_e_l_d → _O_u_t_e_r_A_t_t_r_i_b_u_t_e* _V_i_s_i_b_i_l_i_t_y? _T_y_p_e │ │ │ │ +_I_m_p_l_e_m_e_n_t_a_t_i_o_n → _I_n_h_e_r_e_n_t_I_m_p_l | _T_r_a_i_t_I_m_p_l │ │ │ │ +_I_n_h_e_r_e_n_t_I_m_p_l → │ │ │ │ +    impl _G_e_n_e_r_i_c_P_a_r_a_m_s? _T_y_p_e _W_h_e_r_e_C_l_a_u_s_e? { │ │ │ │ +        _I_n_n_e_r_A_t_t_r_i_b_u_t_e* │ │ │ │ +        _A_s_s_o_c_i_a_t_e_d_I_t_e_m* │ │ │ │ +    } │ │ │ │ +_T_r_a_i_t_I_m_p_l → │ │ │ │ +    unsafe? impl _G_e_n_e_r_i_c_P_a_r_a_m_s? !? _T_y_p_e_P_a_t_h for _T_y_p_e │ │ │ │ +    _W_h_e_r_e_C_l_a_u_s_e? │ │ │ │ +    { │ │ │ │ +        _I_n_n_e_r_A_t_t_r_i_b_u_t_e* │ │ │ │ +        _A_s_s_o_c_i_a_t_e_d_I_t_e_m* │ │ │ │ +    } │ │ │ │ _F_u_n_c_t_i_o_n → │ │ │ │     _F_u_n_c_t_i_o_n_Q_u_a_l_i_f_i_e_r_s fn _I_D_E_N_T_I_F_I_E_R _G_e_n_e_r_i_c_P_a_r_a_m_s? │ │ │ │         ( _F_u_n_c_t_i_o_n_P_a_r_a_m_e_t_e_r_s? ) │ │ │ │         _F_u_n_c_t_i_o_n_R_e_t_u_r_n_T_y_p_e? _W_h_e_r_e_C_l_a_u_s_e? │ │ │ │         ( _B_l_o_c_k_E_x_p_r_e_s_s_i_o_n | ; ) │ │ │ │ _F_u_n_c_t_i_o_n_Q_u_a_l_i_f_i_e_r_s → const? async? _I_t_e_m_S_a_f_e_t_y? ( extern _A_b_i? )? │ │ │ │ _I_t_e_m_S_a_f_e_t_y → safe | unsafe │ │ │ │ @@ -25047,157 +24892,138 @@ │ │ │ │     | ( _S_e_l_f_P_a_r_a_m , )? _F_u_n_c_t_i_o_n_P_a_r_a_m ( , _F_u_n_c_t_i_o_n_P_a_r_a_m )* ,? │ │ │ │ _S_e_l_f_P_a_r_a_m → _O_u_t_e_r_A_t_t_r_i_b_u_t_e* ( _S_h_o_r_t_h_a_n_d_S_e_l_f | _T_y_p_e_d_S_e_l_f ) │ │ │ │ _S_h_o_r_t_h_a_n_d_S_e_l_f → ( & | & _L_i_f_e_t_i_m_e )? mut? self │ │ │ │ _T_y_p_e_d_S_e_l_f → mut? self : _T_y_p_e │ │ │ │ _F_u_n_c_t_i_o_n_P_a_r_a_m → _O_u_t_e_r_A_t_t_r_i_b_u_t_e* ( _F_u_n_c_t_i_o_n_P_a_r_a_m_P_a_t_t_e_r_n | ... | _T_y_p_e ) │ │ │ │ _F_u_n_c_t_i_o_n_P_a_r_a_m_P_a_t_t_e_r_n → _P_a_t_t_e_r_n_N_o_T_o_p_A_l_t : ( _T_y_p_e | ... ) │ │ │ │ _F_u_n_c_t_i_o_n_R_e_t_u_r_n_T_y_p_e → -> _T_y_p_e │ │ │ │ -_I_m_p_l_e_m_e_n_t_a_t_i_o_n → _I_n_h_e_r_e_n_t_I_m_p_l | _T_r_a_i_t_I_m_p_l │ │ │ │ -_I_n_h_e_r_e_n_t_I_m_p_l → │ │ │ │ -    impl _G_e_n_e_r_i_c_P_a_r_a_m_s? _T_y_p_e _W_h_e_r_e_C_l_a_u_s_e? { │ │ │ │ -        _I_n_n_e_r_A_t_t_r_i_b_u_t_e* │ │ │ │ -        _A_s_s_o_c_i_a_t_e_d_I_t_e_m* │ │ │ │ -    } │ │ │ │ -_T_r_a_i_t_I_m_p_l → │ │ │ │ -    unsafe? impl _G_e_n_e_r_i_c_P_a_r_a_m_s? !? _T_y_p_e_P_a_t_h for _T_y_p_e │ │ │ │ -    _W_h_e_r_e_C_l_a_u_s_e? │ │ │ │ -    { │ │ │ │ -        _I_n_n_e_r_A_t_t_r_i_b_u_t_e* │ │ │ │ -        _A_s_s_o_c_i_a_t_e_d_I_t_e_m* │ │ │ │ -    } │ │ │ │ -_E_n_u_m_e_r_a_t_i_o_n → │ │ │ │ -    enum _I_D_E_N_T_I_F_I_E_R _G_e_n_e_r_i_c_P_a_r_a_m_s? _W_h_e_r_e_C_l_a_u_s_e? { _E_n_u_m_V_a_r_i_a_n_t_s? } │ │ │ │ -_E_n_u_m_V_a_r_i_a_n_t_s → _E_n_u_m_V_a_r_i_a_n_t ( , _E_n_u_m_V_a_r_i_a_n_t )* ,? │ │ │ │ -_E_n_u_m_V_a_r_i_a_n_t → │ │ │ │ -    _O_u_t_e_r_A_t_t_r_i_b_u_t_e* _V_i_s_i_b_i_l_i_t_y? │ │ │ │ -    _I_D_E_N_T_I_F_I_E_R ( _E_n_u_m_V_a_r_i_a_n_t_T_u_p_l_e | _E_n_u_m_V_a_r_i_a_n_t_S_t_r_u_c_t )? │ │ │ │ -_E_n_u_m_V_a_r_i_a_n_t_D_i_s_c_r_i_m_i_n_a_n_t? │ │ │ │ -_E_n_u_m_V_a_r_i_a_n_t_T_u_p_l_e → ( _T_u_p_l_e_F_i_e_l_d_s? ) │ │ │ │ -_E_n_u_m_V_a_r_i_a_n_t_S_t_r_u_c_t → { _S_t_r_u_c_t_F_i_e_l_d_s? } │ │ │ │ -_E_n_u_m_V_a_r_i_a_n_t_D_i_s_c_r_i_m_i_n_a_n_t → = _E_x_p_r_e_s_s_i_o_n │ │ │ │ -_U_s_e_D_e_c_l_a_r_a_t_i_o_n → use _U_s_e_T_r_e_e ; │ │ │ │ -_U_s_e_T_r_e_e → │ │ │ │ -      ( _S_i_m_p_l_e_P_a_t_h? :: )? * │ │ │ │ -    | ( _S_i_m_p_l_e_P_a_t_h? :: )? { ( _U_s_e_T_r_e_e ( , _U_s_e_T_r_e_e )* ,? )? } │ │ │ │ -    | _S_i_m_p_l_e_P_a_t_h ( as ( _I_D_E_N_T_I_F_I_E_R | _ ) )? │ │ │ │ -_U_n_i_o_n → │ │ │ │ -    union _I_D_E_N_T_I_F_I_E_R _G_e_n_e_r_i_c_P_a_r_a_m_s? _W_h_e_r_e_C_l_a_u_s_e? { _S_t_r_u_c_t_F_i_e_l_d_s? } │ │ │ │ -_C_o_n_s_t_a_n_t_I_t_e_m → │ │ │ │ -    const ( _I_D_E_N_T_I_F_I_E_R | _ ) : _T_y_p_e ( = _E_x_p_r_e_s_s_i_o_n )? ; │ │ │ │ +_G_e_n_e_r_i_c_P_a_r_a_m_s → < ( _G_e_n_e_r_i_c_P_a_r_a_m ( , _G_e_n_e_r_i_c_P_a_r_a_m )* ,? )? > │ │ │ │ +_G_e_n_e_r_i_c_P_a_r_a_m → _O_u_t_e_r_A_t_t_r_i_b_u_t_e* ( _L_i_f_e_t_i_m_e_P_a_r_a_m | _T_y_p_e_P_a_r_a_m | _C_o_n_s_t_P_a_r_a_m ) │ │ │ │ +_L_i_f_e_t_i_m_e_P_a_r_a_m → _L_i_f_e_t_i_m_e ( : _L_i_f_e_t_i_m_e_B_o_u_n_d_s )? │ │ │ │ +_T_y_p_e_P_a_r_a_m → _I_D_E_N_T_I_F_I_E_R ( : _T_y_p_e_P_a_r_a_m_B_o_u_n_d_s? )? ( = _T_y_p_e )? │ │ │ │ +_C_o_n_s_t_P_a_r_a_m → │ │ │ │ +    const _I_D_E_N_T_I_F_I_E_R : _T_y_p_e │ │ │ │ +    ( = ( _B_l_o_c_k_E_x_p_r_e_s_s_i_o_n | _I_D_E_N_T_I_F_I_E_R | -? _L_i_t_e_r_a_l_E_x_p_r_e_s_s_i_o_n ) )? │ │ │ │ +_W_h_e_r_e_C_l_a_u_s_e → where ( _W_h_e_r_e_C_l_a_u_s_e_I_t_e_m , )* _W_h_e_r_e_C_l_a_u_s_e_I_t_e_m? │ │ │ │ +_W_h_e_r_e_C_l_a_u_s_e_I_t_e_m → │ │ │ │ +      _L_i_f_e_t_i_m_e_W_h_e_r_e_C_l_a_u_s_e_I_t_e_m │ │ │ │ +    | _T_y_p_e_B_o_u_n_d_W_h_e_r_e_C_l_a_u_s_e_I_t_e_m │ │ │ │ +_L_i_f_e_t_i_m_e_W_h_e_r_e_C_l_a_u_s_e_I_t_e_m → _L_i_f_e_t_i_m_e : _L_i_f_e_t_i_m_e_B_o_u_n_d_s │ │ │ │ +_T_y_p_e_B_o_u_n_d_W_h_e_r_e_C_l_a_u_s_e_I_t_e_m → _F_o_r_L_i_f_e_t_i_m_e_s? _T_y_p_e : _T_y_p_e_P_a_r_a_m_B_o_u_n_d_s? │ │ │ │ +_S_t_a_t_i_c_I_t_e_m → │ │ │ │ +    _I_t_e_m_S_a_f_e_t_y? static mut? _I_D_E_N_T_I_F_I_E_R : _T_y_p_e ( = _E_x_p_r_e_s_s_i_o_n )? ; │ │ │ │ +_E_x_t_e_r_n_C_r_a_t_e → extern crate _C_r_a_t_e_R_e_f _A_s_C_l_a_u_s_e? ; │ │ │ │ +_C_r_a_t_e_R_e_f → _I_D_E_N_T_I_F_I_E_R | self │ │ │ │ +_A_s_C_l_a_u_s_e → as ( _I_D_E_N_T_I_F_I_E_R | _ ) │ │ │ │ _A_s_s_o_c_i_a_t_e_d_I_t_e_m → │ │ │ │     _O_u_t_e_r_A_t_t_r_i_b_u_t_e* ( │ │ │ │         _M_a_c_r_o_I_n_v_o_c_a_t_i_o_n_S_e_m_i │ │ │ │       | ( _V_i_s_i_b_i_l_i_t_y? ( _T_y_p_e_A_l_i_a_s | _C_o_n_s_t_a_n_t_I_t_e_m | _F_u_n_c_t_i_o_n ) ) │ │ │ │     ) │ │ │ │ -_S_t_a_t_i_c_I_t_e_m → │ │ │ │ -    _I_t_e_m_S_a_f_e_t_y? static mut? _I_D_E_N_T_I_F_I_E_R : _T_y_p_e ( = _E_x_p_r_e_s_s_i_o_n )? ; │ │ │ │ _E_x_t_e_r_n_B_l_o_c_k → │ │ │ │     unsafe? extern _A_b_i? { │ │ │ │         _I_n_n_e_r_A_t_t_r_i_b_u_t_e* │ │ │ │         _E_x_t_e_r_n_a_l_I_t_e_m* │ │ │ │     } │ │ │ │ _E_x_t_e_r_n_a_l_I_t_e_m → │ │ │ │     _O_u_t_e_r_A_t_t_r_i_b_u_t_e* ( │ │ │ │         _M_a_c_r_o_I_n_v_o_c_a_t_i_o_n_S_e_m_i │ │ │ │       | _V_i_s_i_b_i_l_i_t_y? _S_t_a_t_i_c_I_t_e_m │ │ │ │       | _V_i_s_i_b_i_l_i_t_y? _F_u_n_c_t_i_o_n │ │ │ │     ) │ │ │ │ -_E_x_t_e_r_n_C_r_a_t_e → extern crate _C_r_a_t_e_R_e_f _A_s_C_l_a_u_s_e? ; │ │ │ │ -_C_r_a_t_e_R_e_f → _I_D_E_N_T_I_F_I_E_R | self │ │ │ │ -_A_s_C_l_a_u_s_e → as ( _I_D_E_N_T_I_F_I_E_R | _ ) │ │ │ │ -_T_y_p_e_A_l_i_a_s → │ │ │ │ -    type _I_D_E_N_T_I_F_I_E_R _G_e_n_e_r_i_c_P_a_r_a_m_s? ( : _T_y_p_e_P_a_r_a_m_B_o_u_n_d_s )? │ │ │ │ -        _W_h_e_r_e_C_l_a_u_s_e? │ │ │ │ -        ( = _T_y_p_e _W_h_e_r_e_C_l_a_u_s_e? )? ; │ │ │ │ +_U_n_i_o_n → │ │ │ │ +    union _I_D_E_N_T_I_F_I_E_R _G_e_n_e_r_i_c_P_a_r_a_m_s? _W_h_e_r_e_C_l_a_u_s_e? { _S_t_r_u_c_t_F_i_e_l_d_s? } │ │ │ │ +_U_s_e_D_e_c_l_a_r_a_t_i_o_n → use _U_s_e_T_r_e_e ; │ │ │ │ +_U_s_e_T_r_e_e → │ │ │ │ +      ( _S_i_m_p_l_e_P_a_t_h? :: )? * │ │ │ │ +    | ( _S_i_m_p_l_e_P_a_t_h? :: )? { ( _U_s_e_T_r_e_e ( , _U_s_e_T_r_e_e )* ,? )? } │ │ │ │ +    | _S_i_m_p_l_e_P_a_t_h ( as ( _I_D_E_N_T_I_F_I_E_R | _ ) )? │ │ │ │ _M_o_d_u_l_e → │ │ │ │       unsafe? mod _I_D_E_N_T_I_F_I_E_R ; │ │ │ │     | unsafe? mod _I_D_E_N_T_I_F_I_E_R { │ │ │ │         _I_n_n_e_r_A_t_t_r_i_b_u_t_e* │ │ │ │         _I_t_e_m* │ │ │ │       } │ │ │ │ -_G_e_n_e_r_i_c_P_a_r_a_m_s → < ( _G_e_n_e_r_i_c_P_a_r_a_m ( , _G_e_n_e_r_i_c_P_a_r_a_m )* ,? )? > │ │ │ │ -_G_e_n_e_r_i_c_P_a_r_a_m → _O_u_t_e_r_A_t_t_r_i_b_u_t_e* ( _L_i_f_e_t_i_m_e_P_a_r_a_m | _T_y_p_e_P_a_r_a_m | _C_o_n_s_t_P_a_r_a_m ) │ │ │ │ -_L_i_f_e_t_i_m_e_P_a_r_a_m → _L_i_f_e_t_i_m_e ( : _L_i_f_e_t_i_m_e_B_o_u_n_d_s )? │ │ │ │ -_T_y_p_e_P_a_r_a_m → _I_D_E_N_T_I_F_I_E_R ( : _T_y_p_e_P_a_r_a_m_B_o_u_n_d_s? )? ( = _T_y_p_e )? │ │ │ │ -_C_o_n_s_t_P_a_r_a_m → │ │ │ │ -    const _I_D_E_N_T_I_F_I_E_R : _T_y_p_e │ │ │ │ -    ( = ( _B_l_o_c_k_E_x_p_r_e_s_s_i_o_n | _I_D_E_N_T_I_F_I_E_R | -? _L_i_t_e_r_a_l_E_x_p_r_e_s_s_i_o_n ) )? │ │ │ │ -_W_h_e_r_e_C_l_a_u_s_e → where ( _W_h_e_r_e_C_l_a_u_s_e_I_t_e_m , )* _W_h_e_r_e_C_l_a_u_s_e_I_t_e_m? │ │ │ │ -_W_h_e_r_e_C_l_a_u_s_e_I_t_e_m → │ │ │ │ -      _L_i_f_e_t_i_m_e_W_h_e_r_e_C_l_a_u_s_e_I_t_e_m │ │ │ │ -    | _T_y_p_e_B_o_u_n_d_W_h_e_r_e_C_l_a_u_s_e_I_t_e_m │ │ │ │ -_L_i_f_e_t_i_m_e_W_h_e_r_e_C_l_a_u_s_e_I_t_e_m → _L_i_f_e_t_i_m_e : _L_i_f_e_t_i_m_e_B_o_u_n_d_s │ │ │ │ -_T_y_p_e_B_o_u_n_d_W_h_e_r_e_C_l_a_u_s_e_I_t_e_m → _F_o_r_L_i_f_e_t_i_m_e_s? _T_y_p_e : _T_y_p_e_P_a_r_a_m_B_o_u_n_d_s? │ │ │ │ +_E_n_u_m_e_r_a_t_i_o_n → │ │ │ │ +    enum _I_D_E_N_T_I_F_I_E_R _G_e_n_e_r_i_c_P_a_r_a_m_s? _W_h_e_r_e_C_l_a_u_s_e? { _E_n_u_m_V_a_r_i_a_n_t_s? } │ │ │ │ +_E_n_u_m_V_a_r_i_a_n_t_s → _E_n_u_m_V_a_r_i_a_n_t ( , _E_n_u_m_V_a_r_i_a_n_t )* ,? │ │ │ │ +_E_n_u_m_V_a_r_i_a_n_t → │ │ │ │ +    _O_u_t_e_r_A_t_t_r_i_b_u_t_e* _V_i_s_i_b_i_l_i_t_y? │ │ │ │ +    _I_D_E_N_T_I_F_I_E_R ( _E_n_u_m_V_a_r_i_a_n_t_T_u_p_l_e | _E_n_u_m_V_a_r_i_a_n_t_S_t_r_u_c_t )? │ │ │ │ +_E_n_u_m_V_a_r_i_a_n_t_D_i_s_c_r_i_m_i_n_a_n_t? │ │ │ │ +_E_n_u_m_V_a_r_i_a_n_t_T_u_p_l_e → ( _T_u_p_l_e_F_i_e_l_d_s? ) │ │ │ │ +_E_n_u_m_V_a_r_i_a_n_t_S_t_r_u_c_t → { _S_t_r_u_c_t_F_i_e_l_d_s? } │ │ │ │ +_E_n_u_m_V_a_r_i_a_n_t_D_i_s_c_r_i_m_i_n_a_n_t → = _E_x_p_r_e_s_s_i_o_n │ │ │ │ Show Railroad │ │ │ │ -Visibility pub pub ( crate ) pub ( self ) pub ( super ) pub ( in SimplePath ) │ │ │ │ Item OuterAttribute VisItem MacroItem │ │ │ │ VisItem Visibility Module ExternCrate UseDeclaration Function TypeAlias Struct │ │ │ │ Enumeration Union ConstantItem StaticItem Trait Implementation ExternBlock │ │ │ │ MacroItem MacroInvocationSemi MacroRulesDefinition │ │ │ │ Crate InnerAttribute Item │ │ │ │ +Visibility pub pub ( crate ) pub ( self ) pub ( super ) pub ( in SimplePath ) │ │ │ │ Trait unsafe trait IDENTIFIER GenericParams : TypeParamBounds WhereClause │ │ │ │ { InnerAttribute AssociatedItem } │ │ │ │ +TypeAlias type IDENTIFIER GenericParams : TypeParamBounds WhereClause = Type │ │ │ │ +WhereClause ; │ │ │ │ +ConstantItem const IDENTIFIER _ : Type = Expression ; │ │ │ │ Struct StructStruct TupleStruct │ │ │ │ StructStruct struct IDENTIFIER GenericParams WhereClause { StructFields } ; │ │ │ │ TupleStruct struct IDENTIFIER GenericParams ( TupleFields ) WhereClause ; │ │ │ │ StructFields StructField , StructField , │ │ │ │ StructField OuterAttribute Visibility IDENTIFIER : Type │ │ │ │ TupleFields TupleField , TupleField , │ │ │ │ TupleField OuterAttribute Visibility Type │ │ │ │ +Implementation InherentImpl TraitImpl │ │ │ │ +InherentImpl impl GenericParams Type WhereClause { InnerAttribute │ │ │ │ +AssociatedItem } │ │ │ │ +TraitImpl unsafe impl GenericParams ! TypePath for Type WhereClause │ │ │ │ +{ InnerAttribute AssociatedItem } │ │ │ │ Function FunctionQualifiers fn IDENTIFIER GenericParams ( FunctionParameters ) │ │ │ │ FunctionReturnType WhereClause BlockExpression ; │ │ │ │ FunctionQualifiers const async ItemSafety extern Abi │ │ │ │ ItemSafety safe unsafe │ │ │ │ Abi STRING_LITERAL RAW_STRING_LITERAL │ │ │ │ FunctionParameters SelfParam , SelfParam , FunctionParam , FunctionParam , │ │ │ │ SelfParam OuterAttribute ShorthandSelf TypedSelf │ │ │ │ ShorthandSelf & & Lifetime mut self │ │ │ │ TypedSelf mut self : Type │ │ │ │ FunctionParam OuterAttribute FunctionParamPattern ... Type │ │ │ │ FunctionParamPattern PatternNoTopAlt : Type ... │ │ │ │ FunctionReturnType -> Type │ │ │ │ -Implementation InherentImpl TraitImpl │ │ │ │ -InherentImpl impl GenericParams Type WhereClause { InnerAttribute │ │ │ │ -AssociatedItem } │ │ │ │ -TraitImpl unsafe impl GenericParams ! TypePath for Type WhereClause │ │ │ │ -{ InnerAttribute AssociatedItem } │ │ │ │ -Enumeration enum IDENTIFIER GenericParams WhereClause { EnumVariants } │ │ │ │ -EnumVariants EnumVariant , EnumVariant , │ │ │ │ -EnumVariant OuterAttribute Visibility IDENTIFIER EnumVariantTuple │ │ │ │ -EnumVariantStruct EnumVariantDiscriminant │ │ │ │ -EnumVariantTuple ( TupleFields ) │ │ │ │ -EnumVariantStruct { StructFields } │ │ │ │ -EnumVariantDiscriminant = Expression │ │ │ │ -UseDeclaration use UseTree ; │ │ │ │ -UseTree SimplePath :: * SimplePath :: { UseTree , UseTree , } SimplePath as │ │ │ │ -IDENTIFIER _ │ │ │ │ -Union union IDENTIFIER GenericParams WhereClause { StructFields } │ │ │ │ -ConstantItem const IDENTIFIER _ : Type = Expression ; │ │ │ │ -AssociatedItem OuterAttribute MacroInvocationSemi Visibility TypeAlias │ │ │ │ -ConstantItem Function │ │ │ │ -StaticItem ItemSafety static mut IDENTIFIER : Type = Expression ; │ │ │ │ -ExternBlock unsafe extern Abi { InnerAttribute ExternalItem } │ │ │ │ -ExternalItem OuterAttribute MacroInvocationSemi Visibility StaticItem │ │ │ │ -Visibility Function │ │ │ │ -ExternCrate extern crate CrateRef AsClause ; │ │ │ │ -CrateRef IDENTIFIER self │ │ │ │ -AsClause as IDENTIFIER _ │ │ │ │ -TypeAlias type IDENTIFIER GenericParams : TypeParamBounds WhereClause = Type │ │ │ │ -WhereClause ; │ │ │ │ -Module unsafe mod IDENTIFIER ; unsafe mod IDENTIFIER { InnerAttribute Item } │ │ │ │ GenericParams < GenericParam , GenericParam , > │ │ │ │ GenericParam OuterAttribute LifetimeParam TypeParam ConstParam │ │ │ │ LifetimeParam Lifetime : LifetimeBounds │ │ │ │ TypeParam IDENTIFIER : TypeParamBounds = Type │ │ │ │ ConstParam const IDENTIFIER : Type = BlockExpression IDENTIFIER - │ │ │ │ LiteralExpression │ │ │ │ WhereClause where WhereClauseItem , WhereClauseItem │ │ │ │ WhereClauseItem LifetimeWhereClauseItem TypeBoundWhereClauseItem │ │ │ │ LifetimeWhereClauseItem Lifetime : LifetimeBounds │ │ │ │ TypeBoundWhereClauseItem ForLifetimes Type : TypeParamBounds │ │ │ │ +StaticItem ItemSafety static mut IDENTIFIER : Type = Expression ; │ │ │ │ +ExternCrate extern crate CrateRef AsClause ; │ │ │ │ +CrateRef IDENTIFIER self │ │ │ │ +AsClause as IDENTIFIER _ │ │ │ │ +AssociatedItem OuterAttribute MacroInvocationSemi Visibility TypeAlias │ │ │ │ +ConstantItem Function │ │ │ │ +ExternBlock unsafe extern Abi { InnerAttribute ExternalItem } │ │ │ │ +ExternalItem OuterAttribute MacroInvocationSemi Visibility StaticItem │ │ │ │ +Visibility Function │ │ │ │ +Union union IDENTIFIER GenericParams WhereClause { StructFields } │ │ │ │ +UseDeclaration use UseTree ; │ │ │ │ +UseTree SimplePath :: * SimplePath :: { UseTree , UseTree , } SimplePath as │ │ │ │ +IDENTIFIER _ │ │ │ │ +Module unsafe mod IDENTIFIER ; unsafe mod IDENTIFIER { InnerAttribute Item } │ │ │ │ +Enumeration enum IDENTIFIER GenericParams WhereClause { EnumVariants } │ │ │ │ +EnumVariants EnumVariant , EnumVariant , │ │ │ │ +EnumVariant OuterAttribute Visibility IDENTIFIER EnumVariantTuple │ │ │ │ +EnumVariantStruct EnumVariantDiscriminant │ │ │ │ +EnumVariantTuple ( TupleFields ) │ │ │ │ +EnumVariantStruct { StructFields } │ │ │ │ +EnumVariantDiscriminant = Expression │ │ │ │ ********** _LL_ee_xx_ee_rr_ _ss_uu_mm_mm_aa_rr_yy ********** │ │ │ │ LLeexxeerr │ │ │ │ _C_H_A_R → [U+0000-U+D7FF U+E000-U+10FFFF] // a Unicode scalar value │ │ │ │ _A_S_C_I_I → [U+0000-U+007F] │ │ │ │ _N_U_L → U+0000 │ │ │ │ _E_O_F → !_C_H_A_R // End of file or input │ │ │ │ _C_O_M_M_E_N_T → │ │ │ │ @@ -25233,23 +25059,14 @@ │ │ │ │       ( _B_L_O_C_K___C_O_M_M_E_N_T___O_R___D_O_C | _B_L_O_C_K___C_H_A_R )* │ │ │ │     */ │ │ │ │ _B_L_O_C_K___C_H_A_R → ( !( */ | _C_R ) _C_H_A_R ) │ │ │ │ _B_L_O_C_K___C_O_M_M_E_N_T___O_R___D_O_C → │ │ │ │       _B_L_O_C_K___C_O_M_M_E_N_T │ │ │ │     | _O_U_T_E_R___B_L_O_C_K___D_O_C │ │ │ │     | _I_N_N_E_R___B_L_O_C_K___D_O_C │ │ │ │ -_I_D_E_N_T_I_F_I_E_R___O_R___K_E_Y_W_O_R_D → ( _X_I_D___S_t_a_r_t | _ ) _X_I_D___C_o_n_t_i_n_u_e* │ │ │ │ -_X_I_D___S_t_a_r_t → │ │ │ │ -_X_I_D___C_o_n_t_i_n_u_e → │ │ │ │ -_R_A_W___I_D_E_N_T_I_F_I_E_R → r# _I_D_E_N_T_I_F_I_E_R___O_R___K_E_Y_W_O_R_D │ │ │ │ -_N_O_N___K_E_Y_W_O_R_D___I_D_E_N_T_I_F_I_E_R → _I_D_E_N_T_I_F_I_E_R___O_R___K_E_Y_W_O_R_Dexcept a _s_t_r_i_c_t or _r_e_s_e_r_v_e_d │ │ │ │ -keyword │ │ │ │ -_I_D_E_N_T_I_F_I_E_R → _N_O_N___K_E_Y_W_O_R_D___I_D_E_N_T_I_F_I_E_R | _R_A_W___I_D_E_N_T_I_F_I_E_R │ │ │ │ -_R_E_S_E_R_V_E_D___R_A_W___I_D_E_N_T_I_F_I_E_R → │ │ │ │ -    r# ( _ | crate | self | Self | super ) !_X_I_D___C_o_n_t_i_n_u_e │ │ │ │ _T_o_k_e_n → │ │ │ │       _R_E_S_E_R_V_E_D___T_O_K_E_N │ │ │ │     | _R_A_W___I_D_E_N_T_I_F_I_E_R │ │ │ │     | _C_H_A_R___L_I_T_E_R_A_L │ │ │ │     | _S_T_R_I_N_G___L_I_T_E_R_A_L │ │ │ │     | _R_A_W___S_T_R_I_N_G___L_I_T_E_R_A_L │ │ │ │     | _B_Y_T_E___L_I_T_E_R_A_L │ │ │ │ @@ -25419,14 +25236,23 @@ │ │ │ │     _I_D_E_N_T_I_F_I_E_R___O_R___K_E_Y_W_O_R_Dexcept b ' │ │ │ │ _R_E_S_E_R_V_E_D___T_O_K_E_N___P_O_U_N_D → │ │ │ │     _I_D_E_N_T_I_F_I_E_R___O_R___K_E_Y_W_O_R_Dexcept r or br or cr # │ │ │ │ _R_E_S_E_R_V_E_D___T_O_K_E_N___L_I_F_E_T_I_M_E → │ │ │ │     ' _I_D_E_N_T_I_F_I_E_R___O_R___K_E_Y_W_O_R_Dexcept r # │ │ │ │ _R_E_S_E_R_V_E_D___G_U_A_R_D_E_D___S_T_R_I_N_G___L_I_T_E_R_A_L → #+ _S_T_R_I_N_G___L_I_T_E_R_A_L │ │ │ │ _R_E_S_E_R_V_E_D___P_O_U_N_D_S → #2.. │ │ │ │ +_I_D_E_N_T_I_F_I_E_R___O_R___K_E_Y_W_O_R_D → ( _X_I_D___S_t_a_r_t | _ ) _X_I_D___C_o_n_t_i_n_u_e* │ │ │ │ +_X_I_D___S_t_a_r_t → │ │ │ │ +_X_I_D___C_o_n_t_i_n_u_e → │ │ │ │ +_R_A_W___I_D_E_N_T_I_F_I_E_R → r# _I_D_E_N_T_I_F_I_E_R___O_R___K_E_Y_W_O_R_D │ │ │ │ +_N_O_N___K_E_Y_W_O_R_D___I_D_E_N_T_I_F_I_E_R → _I_D_E_N_T_I_F_I_E_R___O_R___K_E_Y_W_O_R_Dexcept a _s_t_r_i_c_t or _r_e_s_e_r_v_e_d │ │ │ │ +keyword │ │ │ │ +_I_D_E_N_T_I_F_I_E_R → _N_O_N___K_E_Y_W_O_R_D___I_D_E_N_T_I_F_I_E_R | _R_A_W___I_D_E_N_T_I_F_I_E_R │ │ │ │ +_R_E_S_E_R_V_E_D___R_A_W___I_D_E_N_T_I_F_I_E_R → │ │ │ │ +    r# ( _ | crate | self | Self | super ) !_X_I_D___C_o_n_t_i_n_u_e │ │ │ │ _W_H_I_T_E_S_P_A_C_E → │ │ │ │       U+0009 // Horizontal tab, '\t' │ │ │ │     | U+000A // Line feed, '\n' │ │ │ │     | U+000B // Vertical tab │ │ │ │     | U+000C // Form feed │ │ │ │     | U+000D // Carriage return, '\r' │ │ │ │     | U+0020 // Space, ' ' │ │ │ │ @@ -25454,22 +25280,14 @@ │ │ │ │ LINE_DOC_COMMENT_CONTENT not followed by CR ⚠️ with the exception of LF CHAR │ │ │ │ INNER_BLOCK_DOC /*! no backtracking BLOCK_COMMENT_OR_DOC BLOCK_CHAR */ │ │ │ │ OUTER_LINE_DOC /// no backtracking LINE_DOC_COMMENT_CONTENT LF EOF │ │ │ │ OUTER_BLOCK_DOC /** not followed by * / no backtracking ⚠️ with the exception │ │ │ │ of * CHAR BLOCK_COMMENT_OR_DOC BLOCK_COMMENT_OR_DOC BLOCK_CHAR */ │ │ │ │ BLOCK_CHAR not followed by */ CR CHAR │ │ │ │ BLOCK_COMMENT_OR_DOC BLOCK_COMMENT OUTER_BLOCK_DOC INNER_BLOCK_DOC │ │ │ │ -IDENTIFIER_OR_KEYWORD XID_Start _ XID_Continue │ │ │ │ -XID_Start `XID_Start` defined by Unicode │ │ │ │ -XID_Continue `XID_Continue` defined by Unicode │ │ │ │ -RAW_IDENTIFIER r# IDENTIFIER_OR_KEYWORD │ │ │ │ -NON_KEYWORD_IDENTIFIER except a strict or reserved keyword │ │ │ │ -IDENTIFIER_OR_KEYWORD │ │ │ │ -IDENTIFIER NON_KEYWORD_IDENTIFIER RAW_IDENTIFIER │ │ │ │ -RESERVED_RAW_IDENTIFIER r# _ crate self Self super not followed by XID_Continue │ │ │ │ Token RESERVED_TOKEN RAW_IDENTIFIER CHAR_LITERAL STRING_LITERAL │ │ │ │ RAW_STRING_LITERAL BYTE_LITERAL BYTE_STRING_LITERAL RAW_BYTE_STRING_LITERAL │ │ │ │ C_STRING_LITERAL RAW_C_STRING_LITERAL FLOAT_LITERAL INTEGER_LITERAL │ │ │ │ LIFETIME_TOKEN PUNCTUATION IDENTIFIER_OR_KEYWORD │ │ │ │ SUFFIX except `_` IDENTIFIER_OR_KEYWORD │ │ │ │ SUFFIX_NO_E not followed by e E SUFFIX │ │ │ │ CHAR_LITERAL ' ⚠️ with the exception of ' \ LF CR TAB CHAR QUOTE_ESCAPE │ │ │ │ @@ -25538,101 +25356,102 @@ │ │ │ │ RESERVED_TOKEN_DOUBLE_QUOTE except `b` or `c` or `r` or `br` or `cr` │ │ │ │ IDENTIFIER_OR_KEYWORD " │ │ │ │ RESERVED_TOKEN_SINGLE_QUOTE except `b` IDENTIFIER_OR_KEYWORD ' │ │ │ │ RESERVED_TOKEN_POUND except `r` or `br` or `cr` IDENTIFIER_OR_KEYWORD # │ │ │ │ RESERVED_TOKEN_LIFETIME ' except `r` IDENTIFIER_OR_KEYWORD # │ │ │ │ RESERVED_GUARDED_STRING_LITERAL # STRING_LITERAL │ │ │ │ RESERVED_POUNDS # # │ │ │ │ +IDENTIFIER_OR_KEYWORD XID_Start _ XID_Continue │ │ │ │ +XID_Start `XID_Start` defined by Unicode │ │ │ │ +XID_Continue `XID_Continue` defined by Unicode │ │ │ │ +RAW_IDENTIFIER r# IDENTIFIER_OR_KEYWORD │ │ │ │ +NON_KEYWORD_IDENTIFIER except a strict or reserved keyword │ │ │ │ +IDENTIFIER_OR_KEYWORD │ │ │ │ +IDENTIFIER NON_KEYWORD_IDENTIFIER RAW_IDENTIFIER │ │ │ │ +RESERVED_RAW_IDENTIFIER r# _ crate self Self super not followed by XID_Continue │ │ │ │ WHITESPACE U+0009 U+000A U+000B U+000C U+000D U+0020 U+0085 U+200E U+200F │ │ │ │ U+2028 U+2029 │ │ │ │ TAB U+0009 │ │ │ │ LF U+000A │ │ │ │ CR U+000D │ │ │ │ -********** _SS_tt_aa_tt_ee_mm_ee_nn_tt_ss_ _ss_uu_mm_mm_aa_rr_yy ********** │ │ │ │ -SSyynnttaaxx │ │ │ │ -_S_t_a_t_e_m_e_n_t → │ │ │ │ -      ; │ │ │ │ -    | _I_t_e_m │ │ │ │ -    | _L_e_t_S_t_a_t_e_m_e_n_t │ │ │ │ -    | _E_x_p_r_e_s_s_i_o_n_S_t_a_t_e_m_e_n_t │ │ │ │ -    | _O_u_t_e_r_A_t_t_r_i_b_u_t_e* _M_a_c_r_o_I_n_v_o_c_a_t_i_o_n_S_e_m_i │ │ │ │ -_L_e_t_S_t_a_t_e_m_e_n_t → │ │ │ │ -    _O_u_t_e_r_A_t_t_r_i_b_u_t_e* let _P_a_t_t_e_r_n_N_o_T_o_p_A_l_t ( : _T_y_p_e )? │ │ │ │ -    ( │ │ │ │ -          = _E_x_p_r_e_s_s_i_o_n │ │ │ │ -        | = _E_x_p_r_e_s_s_i_o_nexcept _L_a_z_y_B_o_o_l_e_a_n_E_x_p_r_e_s_s_i_o_n or end with a } else │ │ │ │ -_B_l_o_c_k_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    )? ; │ │ │ │ -_E_x_p_r_e_s_s_i_o_n_S_t_a_t_e_m_e_n_t → │ │ │ │ -      _E_x_p_r_e_s_s_i_o_n_W_i_t_h_o_u_t_B_l_o_c_k ; │ │ │ │ -    | _E_x_p_r_e_s_s_i_o_n_W_i_t_h_B_l_o_c_k ;? │ │ │ │ -Show Railroad │ │ │ │ -Statement ; Item LetStatement ExpressionStatement OuterAttribute │ │ │ │ -MacroInvocationSemi │ │ │ │ -LetStatement OuterAttribute let PatternNoTopAlt : Type = Expression = except │ │ │ │ -LazyBooleanExpression or end with a `}` Expression else BlockExpression ; │ │ │ │ -ExpressionStatement ExpressionWithoutBlock ; ExpressionWithBlock ; │ │ │ │ -********** _MM_aa_cc_rr_oo_ss_ _ss_uu_mm_mm_aa_rr_yy ********** │ │ │ │ +********** _TT_yy_pp_ee_ss_ _ss_uu_mm_mm_aa_rr_yy ********** │ │ │ │ SSyynnttaaxx │ │ │ │ -_M_a_c_r_o_I_n_v_o_c_a_t_i_o_n → │ │ │ │ -    _S_i_m_p_l_e_P_a_t_h ! _D_e_l_i_m_T_o_k_e_n_T_r_e_e │ │ │ │ -_D_e_l_i_m_T_o_k_e_n_T_r_e_e → │ │ │ │ -      ( _T_o_k_e_n_T_r_e_e* ) │ │ │ │ -    | [ _T_o_k_e_n_T_r_e_e* ] │ │ │ │ -    | { _T_o_k_e_n_T_r_e_e* } │ │ │ │ -_T_o_k_e_n_T_r_e_e → │ │ │ │ -    _T_o_k_e_nexcept _d_e_l_i_m_i_t_e_r_s | _D_e_l_i_m_T_o_k_e_n_T_r_e_e │ │ │ │ -_M_a_c_r_o_I_n_v_o_c_a_t_i_o_n_S_e_m_i → │ │ │ │ -      _S_i_m_p_l_e_P_a_t_h ! ( _T_o_k_e_n_T_r_e_e* ) ; │ │ │ │ -    | _S_i_m_p_l_e_P_a_t_h ! [ _T_o_k_e_n_T_r_e_e* ] ; │ │ │ │ -    | _S_i_m_p_l_e_P_a_t_h ! { _T_o_k_e_n_T_r_e_e* } │ │ │ │ -_M_a_c_r_o_R_u_l_e_s_D_e_f_i_n_i_t_i_o_n → │ │ │ │ -    macro_rules ! _I_D_E_N_T_I_F_I_E_R _M_a_c_r_o_R_u_l_e_s_D_e_f │ │ │ │ -_M_a_c_r_o_R_u_l_e_s_D_e_f → │ │ │ │ -      ( _M_a_c_r_o_R_u_l_e_s ) ; │ │ │ │ -    | [ _M_a_c_r_o_R_u_l_e_s ] ; │ │ │ │ -    | { _M_a_c_r_o_R_u_l_e_s } │ │ │ │ -_M_a_c_r_o_R_u_l_e_s → │ │ │ │ -    _M_a_c_r_o_R_u_l_e ( ; _M_a_c_r_o_R_u_l_e )* ;? │ │ │ │ -_M_a_c_r_o_R_u_l_e → │ │ │ │ -    _M_a_c_r_o_M_a_t_c_h_e_r => _M_a_c_r_o_T_r_a_n_s_c_r_i_b_e_r │ │ │ │ -_M_a_c_r_o_M_a_t_c_h_e_r → │ │ │ │ -      ( _M_a_c_r_o_M_a_t_c_h* ) │ │ │ │ -    | [ _M_a_c_r_o_M_a_t_c_h* ] │ │ │ │ -    | { _M_a_c_r_o_M_a_t_c_h* } │ │ │ │ -_M_a_c_r_o_M_a_t_c_h → │ │ │ │ -      _T_o_k_e_nexcept $ and _d_e_l_i_m_i_t_e_r_s │ │ │ │ -    | _M_a_c_r_o_M_a_t_c_h_e_r │ │ │ │ -    | $ ( _I_D_E_N_T_I_F_I_E_R___O_R___K_E_Y_W_O_R_Dexcept crate | _R_A_W___I_D_E_N_T_I_F_I_E_R ) : _M_a_c_r_o_F_r_a_g_S_p_e_c │ │ │ │ -    | $ ( _M_a_c_r_o_M_a_t_c_h+ ) _M_a_c_r_o_R_e_p_S_e_p? _M_a_c_r_o_R_e_p_O_p │ │ │ │ -_M_a_c_r_o_F_r_a_g_S_p_e_c → │ │ │ │ -      block | expr | expr_2021 | ident | item | lifetime | literal │ │ │ │ -    | meta | pat | pat_param | path | stmt | tt | ty | vis │ │ │ │ -_M_a_c_r_o_R_e_p_S_e_p → _T_o_k_e_nexcept _d_e_l_i_m_i_t_e_r_s and _M_a_c_r_o_R_e_p_O_p │ │ │ │ -_M_a_c_r_o_R_e_p_O_p → * | + | ? │ │ │ │ -_M_a_c_r_o_T_r_a_n_s_c_r_i_b_e_r → _D_e_l_i_m_T_o_k_e_n_T_r_e_e │ │ │ │ +_A_r_r_a_y_T_y_p_e → [ _T_y_p_e ; _E_x_p_r_e_s_s_i_o_n ] │ │ │ │ +_T_r_a_i_t_O_b_j_e_c_t_T_y_p_e → dyn? _T_y_p_e_P_a_r_a_m_B_o_u_n_d_s │ │ │ │ +_T_r_a_i_t_O_b_j_e_c_t_T_y_p_e_O_n_e_B_o_u_n_d → dyn? _T_r_a_i_t_B_o_u_n_d │ │ │ │ +_I_n_f_e_r_r_e_d_T_y_p_e → _ │ │ │ │ +_B_a_r_e_F_u_n_c_t_i_o_n_T_y_p_e → │ │ │ │ +    _F_o_r_L_i_f_e_t_i_m_e_s? _F_u_n_c_t_i_o_n_T_y_p_e_Q_u_a_l_i_f_i_e_r_s fn │ │ │ │ +       ( _F_u_n_c_t_i_o_n_P_a_r_a_m_e_t_e_r_s_M_a_y_b_e_N_a_m_e_d_V_a_r_i_a_d_i_c? ) _B_a_r_e_F_u_n_c_t_i_o_n_R_e_t_u_r_n_T_y_p_e? │ │ │ │ +_F_u_n_c_t_i_o_n_T_y_p_e_Q_u_a_l_i_f_i_e_r_s → unsafe? ( extern _A_b_i? )? │ │ │ │ +_B_a_r_e_F_u_n_c_t_i_o_n_R_e_t_u_r_n_T_y_p_e → -> _T_y_p_e_N_o_B_o_u_n_d_s │ │ │ │ +_F_u_n_c_t_i_o_n_P_a_r_a_m_e_t_e_r_s_M_a_y_b_e_N_a_m_e_d_V_a_r_i_a_d_i_c → │ │ │ │ +    _M_a_y_b_e_N_a_m_e_d_F_u_n_c_t_i_o_n_P_a_r_a_m_e_t_e_r_s | _M_a_y_b_e_N_a_m_e_d_F_u_n_c_t_i_o_n_P_a_r_a_m_e_t_e_r_s_V_a_r_i_a_d_i_c │ │ │ │ +_M_a_y_b_e_N_a_m_e_d_F_u_n_c_t_i_o_n_P_a_r_a_m_e_t_e_r_s → │ │ │ │ +    _M_a_y_b_e_N_a_m_e_d_P_a_r_a_m ( , _M_a_y_b_e_N_a_m_e_d_P_a_r_a_m )* ,? │ │ │ │ +_M_a_y_b_e_N_a_m_e_d_P_a_r_a_m → │ │ │ │ +    _O_u_t_e_r_A_t_t_r_i_b_u_t_e* ( ( _I_D_E_N_T_I_F_I_E_R | _ ) : )? _T_y_p_e │ │ │ │ +_M_a_y_b_e_N_a_m_e_d_F_u_n_c_t_i_o_n_P_a_r_a_m_e_t_e_r_s_V_a_r_i_a_d_i_c → │ │ │ │ +    ( _M_a_y_b_e_N_a_m_e_d_P_a_r_a_m , )* _M_a_y_b_e_N_a_m_e_d_P_a_r_a_m , _O_u_t_e_r_A_t_t_r_i_b_u_t_e* ... │ │ │ │ +_N_e_v_e_r_T_y_p_e → ! │ │ │ │ +_S_l_i_c_e_T_y_p_e → [ _T_y_p_e ] │ │ │ │ +_R_e_f_e_r_e_n_c_e_T_y_p_e → & _L_i_f_e_t_i_m_e? mut? _T_y_p_e_N_o_B_o_u_n_d_s │ │ │ │ +_R_a_w_P_o_i_n_t_e_r_T_y_p_e → * ( mut | const ) _T_y_p_e_N_o_B_o_u_n_d_s │ │ │ │ +_T_u_p_l_e_T_y_p_e → │ │ │ │ +      ( ) │ │ │ │ +    | ( ( _T_y_p_e , )+ _T_y_p_e? ) │ │ │ │ +_I_m_p_l_T_r_a_i_t_T_y_p_e → impl _T_y_p_e_P_a_r_a_m_B_o_u_n_d_s │ │ │ │ +_I_m_p_l_T_r_a_i_t_T_y_p_e_O_n_e_B_o_u_n_d → impl _T_r_a_i_t_B_o_u_n_d │ │ │ │ +_T_y_p_e → │ │ │ │ +      _T_y_p_e_N_o_B_o_u_n_d_s │ │ │ │ +    | _I_m_p_l_T_r_a_i_t_T_y_p_e │ │ │ │ +    | _T_r_a_i_t_O_b_j_e_c_t_T_y_p_e │ │ │ │ +_T_y_p_e_N_o_B_o_u_n_d_s → │ │ │ │ +      _P_a_r_e_n_t_h_e_s_i_z_e_d_T_y_p_e │ │ │ │ +    | _I_m_p_l_T_r_a_i_t_T_y_p_e_O_n_e_B_o_u_n_d │ │ │ │ +    | _T_r_a_i_t_O_b_j_e_c_t_T_y_p_e_O_n_e_B_o_u_n_d │ │ │ │ +    | _T_y_p_e_P_a_t_h │ │ │ │ +    | _T_u_p_l_e_T_y_p_e │ │ │ │ +    | _N_e_v_e_r_T_y_p_e │ │ │ │ +    | _R_a_w_P_o_i_n_t_e_r_T_y_p_e │ │ │ │ +    | _R_e_f_e_r_e_n_c_e_T_y_p_e │ │ │ │ +    | _A_r_r_a_y_T_y_p_e │ │ │ │ +    | _S_l_i_c_e_T_y_p_e │ │ │ │ +    | _I_n_f_e_r_r_e_d_T_y_p_e │ │ │ │ +    | _Q_u_a_l_i_f_i_e_d_P_a_t_h_I_n_T_y_p_e │ │ │ │ +    | _B_a_r_e_F_u_n_c_t_i_o_n_T_y_p_e │ │ │ │ +    | _M_a_c_r_o_I_n_v_o_c_a_t_i_o_n │ │ │ │ +_P_a_r_e_n_t_h_e_s_i_z_e_d_T_y_p_e → ( _T_y_p_e ) │ │ │ │ Show Railroad │ │ │ │ -MacroInvocation SimplePath ! DelimTokenTree │ │ │ │ -DelimTokenTree ( TokenTree ) [ TokenTree ] { TokenTree } │ │ │ │ -TokenTree except delimiters Token DelimTokenTree │ │ │ │ -MacroInvocationSemi SimplePath ! ( TokenTree ) ; SimplePath ! [ TokenTree ] ; │ │ │ │ -SimplePath ! { TokenTree } │ │ │ │ -MacroRulesDefinition macro_rules ! IDENTIFIER MacroRulesDef │ │ │ │ -MacroRulesDef ( MacroRules ) ; [ MacroRules ] ; { MacroRules } │ │ │ │ -MacroRules MacroRule ; MacroRule ; │ │ │ │ -MacroRule MacroMatcher => MacroTranscriber │ │ │ │ -MacroMatcher ( MacroMatch ) [ MacroMatch ] { MacroMatch } │ │ │ │ -MacroMatch except `$` and delimiters Token MacroMatcher $ except `crate` │ │ │ │ -IDENTIFIER_OR_KEYWORD RAW_IDENTIFIER : MacroFragSpec $ ( MacroMatch ) │ │ │ │ -MacroRepSep MacroRepOp │ │ │ │ -MacroFragSpec block expr expr_2021 ident item lifetime literal meta pat │ │ │ │ -pat_param path stmt tt ty vis │ │ │ │ -MacroRepSep except delimiters and MacroRepOp Token │ │ │ │ -MacroRepOp * + ? │ │ │ │ -MacroTranscriber DelimTokenTree │ │ │ │ +ArrayType [ Type ; Expression ] │ │ │ │ +TraitObjectType dyn TypeParamBounds │ │ │ │ +TraitObjectTypeOneBound dyn TraitBound │ │ │ │ +InferredType _ │ │ │ │ +BareFunctionType ForLifetimes FunctionTypeQualifiers fn │ │ │ │ +( FunctionParametersMaybeNamedVariadic ) BareFunctionReturnType │ │ │ │ +FunctionTypeQualifiers unsafe extern Abi │ │ │ │ +BareFunctionReturnType -> TypeNoBounds │ │ │ │ +FunctionParametersMaybeNamedVariadic MaybeNamedFunctionParameters │ │ │ │ +MaybeNamedFunctionParametersVariadic │ │ │ │ +MaybeNamedFunctionParameters MaybeNamedParam , MaybeNamedParam , │ │ │ │ +MaybeNamedParam OuterAttribute IDENTIFIER _ : Type │ │ │ │ +MaybeNamedFunctionParametersVariadic MaybeNamedParam , MaybeNamedParam , │ │ │ │ +OuterAttribute ... │ │ │ │ +NeverType ! │ │ │ │ +SliceType [ Type ] │ │ │ │ +ReferenceType & Lifetime mut TypeNoBounds │ │ │ │ +RawPointerType * mut const TypeNoBounds │ │ │ │ +TupleType ( ) ( Type , Type ) │ │ │ │ +ImplTraitType impl TypeParamBounds │ │ │ │ +ImplTraitTypeOneBound impl TraitBound │ │ │ │ +Type TypeNoBounds ImplTraitType TraitObjectType │ │ │ │ +TypeNoBounds ParenthesizedType ImplTraitTypeOneBound TraitObjectTypeOneBound │ │ │ │ +TypePath TupleType NeverType RawPointerType ReferenceType ArrayType SliceType │ │ │ │ +InferredType QualifiedPathInType BareFunctionType MacroInvocation │ │ │ │ +ParenthesizedType ( Type ) │ │ │ │ ********** _PP_aa_tt_tt_ee_rr_nn_ss_ _ss_uu_mm_mm_aa_rr_yy ********** │ │ │ │ SSyynnttaaxx │ │ │ │ _P_a_t_t_e_r_n → |? _P_a_t_t_e_r_n_N_o_T_o_p_A_l_t ( | _P_a_t_t_e_r_n_N_o_T_o_p_A_l_t )* │ │ │ │ _P_a_t_t_e_r_n_N_o_T_o_p_A_l_t → │ │ │ │       _P_a_t_t_e_r_n_W_i_t_h_o_u_t_R_a_n_g_e │ │ │ │     | _R_a_n_g_e_P_a_t_t_e_r_n │ │ │ │ _P_a_t_t_e_r_n_W_i_t_h_o_u_t_R_a_n_g_e → │ │ │ │ @@ -25734,69 +25553,258 @@ │ │ │ │ TupleStructItems Pattern , Pattern , │ │ │ │ TuplePattern ( TuplePatternItems ) │ │ │ │ TuplePatternItems Pattern , RestPattern Pattern , Pattern , │ │ │ │ GroupedPattern ( Pattern ) │ │ │ │ SlicePattern [ SlicePatternItems ] │ │ │ │ SlicePatternItems Pattern , Pattern , │ │ │ │ PathPattern PathExpression │ │ │ │ +********** _AA_tt_tt_rr_ii_bb_uu_tt_ee_ss_ _ss_uu_mm_mm_aa_rr_yy ********** │ │ │ │ +SSyynnttaaxx │ │ │ │ +_I_n_n_e_r_A_t_t_r_i_b_u_t_e → # ! [ _A_t_t_r ] │ │ │ │ +_O_u_t_e_r_A_t_t_r_i_b_u_t_e → # [ _A_t_t_r ] │ │ │ │ +_A_t_t_r → │ │ │ │ +      _S_i_m_p_l_e_P_a_t_h _A_t_t_r_I_n_p_u_t? │ │ │ │ +    | unsafe ( _S_i_m_p_l_e_P_a_t_h _A_t_t_r_I_n_p_u_t? ) │ │ │ │ +_A_t_t_r_I_n_p_u_t → │ │ │ │ +      _D_e_l_i_m_T_o_k_e_n_T_r_e_e │ │ │ │ +    | = _E_x_p_r_e_s_s_i_o_n │ │ │ │ +_M_e_t_a_I_t_e_m → │ │ │ │ +      _S_i_m_p_l_e_P_a_t_h │ │ │ │ +    | _S_i_m_p_l_e_P_a_t_h = _E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _S_i_m_p_l_e_P_a_t_h ( _M_e_t_a_S_e_q? ) │ │ │ │ +_M_e_t_a_S_e_q → │ │ │ │ +    _M_e_t_a_I_t_e_m_I_n_n_e_r ( , _M_e_t_a_I_t_e_m_I_n_n_e_r )* ,? │ │ │ │ +_M_e_t_a_I_t_e_m_I_n_n_e_r → │ │ │ │ +      _M_e_t_a_I_t_e_m │ │ │ │ +    | _E_x_p_r_e_s_s_i_o_n │ │ │ │ +_M_e_t_a_W_o_r_d → │ │ │ │ +    _I_D_E_N_T_I_F_I_E_R │ │ │ │ +_M_e_t_a_N_a_m_e_V_a_l_u_e_S_t_r → │ │ │ │ +    _I_D_E_N_T_I_F_I_E_R = ( _S_T_R_I_N_G___L_I_T_E_R_A_L | _R_A_W___S_T_R_I_N_G___L_I_T_E_R_A_L ) │ │ │ │ +_M_e_t_a_L_i_s_t_P_a_t_h_s → │ │ │ │ +    _I_D_E_N_T_I_F_I_E_R ( ( _S_i_m_p_l_e_P_a_t_h ( , _S_i_m_p_l_e_P_a_t_h )* ,? )? ) │ │ │ │ +_M_e_t_a_L_i_s_t_I_d_e_n_t_s → │ │ │ │ +    _I_D_E_N_T_I_F_I_E_R ( ( _I_D_E_N_T_I_F_I_E_R ( , _I_D_E_N_T_I_F_I_E_R )* ,? )? ) │ │ │ │ +_M_e_t_a_L_i_s_t_N_a_m_e_V_a_l_u_e_S_t_r → │ │ │ │ +    _I_D_E_N_T_I_F_I_E_R ( ( _M_e_t_a_N_a_m_e_V_a_l_u_e_S_t_r ( , _M_e_t_a_N_a_m_e_V_a_l_u_e_S_t_r )* ,? )? ) │ │ │ │ +_I_n_l_i_n_e_A_t_t_r_i_b_u_t_e → │ │ │ │ +      inline ( always ) │ │ │ │ +    | inline ( never ) │ │ │ │ +    | inline │ │ │ │ +_C_o_l_l_a_p_s_e_D_e_b_u_g_i_n_f_o_A_t_t_r_i_b_u_t_e → collapse_debuginfo ( _C_o_l_l_a_p_s_e_D_e_b_u_g_i_n_f_o_O_p_t_i_o_n ) │ │ │ │ +_C_o_l_l_a_p_s_e_D_e_b_u_g_i_n_f_o_O_p_t_i_o_n → │ │ │ │ +      yes │ │ │ │ +    | no │ │ │ │ +    | external │ │ │ │ +_P_r_o_c_M_a_c_r_o_D_e_r_i_v_e_A_t_t_r_i_b_u_t_e → │ │ │ │ +    proc_macro_derive ( _D_e_r_i_v_e_M_a_c_r_o_N_a_m_e ( , _D_e_r_i_v_e_M_a_c_r_o_A_t_t_r_i_b_u_t_e_s )? ,? ) │ │ │ │ +_D_e_r_i_v_e_M_a_c_r_o_N_a_m_e → _I_D_E_N_T_I_F_I_E_R │ │ │ │ +_D_e_r_i_v_e_M_a_c_r_o_A_t_t_r_i_b_u_t_e_s → │ │ │ │ +    attributes ( ( _I_D_E_N_T_I_F_I_E_R ( , _I_D_E_N_T_I_F_I_E_R )* ,? )? ) │ │ │ │ +Show Railroad │ │ │ │ +InnerAttribute # ! [ Attr ] │ │ │ │ +OuterAttribute # [ Attr ] │ │ │ │ +Attr SimplePath AttrInput unsafe ( SimplePath AttrInput ) │ │ │ │ +AttrInput DelimTokenTree = Expression │ │ │ │ +MetaItem SimplePath SimplePath = Expression SimplePath ( MetaSeq ) │ │ │ │ +MetaSeq MetaItemInner , MetaItemInner , │ │ │ │ +MetaItemInner MetaItem Expression │ │ │ │ +MetaWord IDENTIFIER │ │ │ │ +MetaNameValueStr IDENTIFIER = STRING_LITERAL RAW_STRING_LITERAL │ │ │ │ +MetaListPaths IDENTIFIER ( SimplePath , SimplePath , ) │ │ │ │ +MetaListIdents IDENTIFIER ( IDENTIFIER , IDENTIFIER , ) │ │ │ │ +MetaListNameValueStr IDENTIFIER ( MetaNameValueStr , MetaNameValueStr , ) │ │ │ │ +InlineAttribute inline ( always ) inline ( never ) inline │ │ │ │ +CollapseDebuginfoAttribute collapse_debuginfo ( CollapseDebuginfoOption ) │ │ │ │ +CollapseDebuginfoOption yes no external │ │ │ │ +ProcMacroDeriveAttribute proc_macro_derive ( DeriveMacroName , │ │ │ │ +DeriveMacroAttributes , ) │ │ │ │ +DeriveMacroName IDENTIFIER │ │ │ │ +DeriveMacroAttributes attributes ( IDENTIFIER , IDENTIFIER , ) │ │ │ │ +********** _MM_aa_cc_rr_oo_ss_ _ss_uu_mm_mm_aa_rr_yy ********** │ │ │ │ +SSyynnttaaxx │ │ │ │ +_M_a_c_r_o_R_u_l_e_s_D_e_f_i_n_i_t_i_o_n → │ │ │ │ +    macro_rules ! _I_D_E_N_T_I_F_I_E_R _M_a_c_r_o_R_u_l_e_s_D_e_f │ │ │ │ +_M_a_c_r_o_R_u_l_e_s_D_e_f → │ │ │ │ +      ( _M_a_c_r_o_R_u_l_e_s ) ; │ │ │ │ +    | [ _M_a_c_r_o_R_u_l_e_s ] ; │ │ │ │ +    | { _M_a_c_r_o_R_u_l_e_s } │ │ │ │ +_M_a_c_r_o_R_u_l_e_s → │ │ │ │ +    _M_a_c_r_o_R_u_l_e ( ; _M_a_c_r_o_R_u_l_e )* ;? │ │ │ │ +_M_a_c_r_o_R_u_l_e → │ │ │ │ +    _M_a_c_r_o_M_a_t_c_h_e_r => _M_a_c_r_o_T_r_a_n_s_c_r_i_b_e_r │ │ │ │ +_M_a_c_r_o_M_a_t_c_h_e_r → │ │ │ │ +      ( _M_a_c_r_o_M_a_t_c_h* ) │ │ │ │ +    | [ _M_a_c_r_o_M_a_t_c_h* ] │ │ │ │ +    | { _M_a_c_r_o_M_a_t_c_h* } │ │ │ │ +_M_a_c_r_o_M_a_t_c_h → │ │ │ │ +      _T_o_k_e_nexcept $ and _d_e_l_i_m_i_t_e_r_s │ │ │ │ +    | _M_a_c_r_o_M_a_t_c_h_e_r │ │ │ │ +    | $ ( _I_D_E_N_T_I_F_I_E_R___O_R___K_E_Y_W_O_R_Dexcept crate | _R_A_W___I_D_E_N_T_I_F_I_E_R ) : _M_a_c_r_o_F_r_a_g_S_p_e_c │ │ │ │ +    | $ ( _M_a_c_r_o_M_a_t_c_h+ ) _M_a_c_r_o_R_e_p_S_e_p? _M_a_c_r_o_R_e_p_O_p │ │ │ │ +_M_a_c_r_o_F_r_a_g_S_p_e_c → │ │ │ │ +      block | expr | expr_2021 | ident | item | lifetime | literal │ │ │ │ +    | meta | pat | pat_param | path | stmt | tt | ty | vis │ │ │ │ +_M_a_c_r_o_R_e_p_S_e_p → _T_o_k_e_nexcept _d_e_l_i_m_i_t_e_r_s and _M_a_c_r_o_R_e_p_O_p │ │ │ │ +_M_a_c_r_o_R_e_p_O_p → * | + | ? │ │ │ │ +_M_a_c_r_o_T_r_a_n_s_c_r_i_b_e_r → _D_e_l_i_m_T_o_k_e_n_T_r_e_e │ │ │ │ +_M_a_c_r_o_I_n_v_o_c_a_t_i_o_n → │ │ │ │ +    _S_i_m_p_l_e_P_a_t_h ! _D_e_l_i_m_T_o_k_e_n_T_r_e_e │ │ │ │ +_D_e_l_i_m_T_o_k_e_n_T_r_e_e → │ │ │ │ +      ( _T_o_k_e_n_T_r_e_e* ) │ │ │ │ +    | [ _T_o_k_e_n_T_r_e_e* ] │ │ │ │ +    | { _T_o_k_e_n_T_r_e_e* } │ │ │ │ +_T_o_k_e_n_T_r_e_e → │ │ │ │ +    _T_o_k_e_nexcept _d_e_l_i_m_i_t_e_r_s | _D_e_l_i_m_T_o_k_e_n_T_r_e_e │ │ │ │ +_M_a_c_r_o_I_n_v_o_c_a_t_i_o_n_S_e_m_i → │ │ │ │ +      _S_i_m_p_l_e_P_a_t_h ! ( _T_o_k_e_n_T_r_e_e* ) ; │ │ │ │ +    | _S_i_m_p_l_e_P_a_t_h ! [ _T_o_k_e_n_T_r_e_e* ] ; │ │ │ │ +    | _S_i_m_p_l_e_P_a_t_h ! { _T_o_k_e_n_T_r_e_e* } │ │ │ │ +Show Railroad │ │ │ │ +MacroRulesDefinition macro_rules ! IDENTIFIER MacroRulesDef │ │ │ │ +MacroRulesDef ( MacroRules ) ; [ MacroRules ] ; { MacroRules } │ │ │ │ +MacroRules MacroRule ; MacroRule ; │ │ │ │ +MacroRule MacroMatcher => MacroTranscriber │ │ │ │ +MacroMatcher ( MacroMatch ) [ MacroMatch ] { MacroMatch } │ │ │ │ +MacroMatch except `$` and delimiters Token MacroMatcher $ except `crate` │ │ │ │ +IDENTIFIER_OR_KEYWORD RAW_IDENTIFIER : MacroFragSpec $ ( MacroMatch ) │ │ │ │ +MacroRepSep MacroRepOp │ │ │ │ +MacroFragSpec block expr expr_2021 ident item lifetime literal meta pat │ │ │ │ +pat_param path stmt tt ty vis │ │ │ │ +MacroRepSep except delimiters and MacroRepOp Token │ │ │ │ +MacroRepOp * + ? │ │ │ │ +MacroTranscriber DelimTokenTree │ │ │ │ +MacroInvocation SimplePath ! DelimTokenTree │ │ │ │ +DelimTokenTree ( TokenTree ) [ TokenTree ] { TokenTree } │ │ │ │ +TokenTree except delimiters Token DelimTokenTree │ │ │ │ +MacroInvocationSemi SimplePath ! ( TokenTree ) ; SimplePath ! [ TokenTree ] ; │ │ │ │ +SimplePath ! { TokenTree } │ │ │ │ ********** _EE_xx_pp_rr_ee_ss_ss_ii_oo_nn_ss_ _ss_uu_mm_mm_aa_rr_yy ********** │ │ │ │ SSyynnttaaxx │ │ │ │ -_E_x_p_r_e_s_s_i_o_n → │ │ │ │ -      _E_x_p_r_e_s_s_i_o_n_W_i_t_h_o_u_t_B_l_o_c_k │ │ │ │ -    | _E_x_p_r_e_s_s_i_o_n_W_i_t_h_B_l_o_c_k │ │ │ │ -_E_x_p_r_e_s_s_i_o_n_W_i_t_h_o_u_t_B_l_o_c_k → │ │ │ │ -    _O_u_t_e_r_A_t_t_r_i_b_u_t_e* _E_x_p_r_e_s_s_i_o_n_W_i_t_h_o_u_t_B_l_o_c_k_N_o_A_t_t_r_s │ │ │ │ -_E_x_p_r_e_s_s_i_o_n_W_i_t_h_o_u_t_B_l_o_c_k_N_o_A_t_t_r_s → │ │ │ │ -      _L_i_t_e_r_a_l_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _P_a_t_h_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _O_p_e_r_a_t_o_r_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _G_r_o_u_p_e_d_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _A_r_r_a_y_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _A_w_a_i_t_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _I_n_d_e_x_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _T_u_p_l_e_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _T_u_p_l_e_I_n_d_e_x_i_n_g_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _S_t_r_u_c_t_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _C_a_l_l_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _M_e_t_h_o_d_C_a_l_l_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _F_i_e_l_d_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _C_l_o_s_u_r_e_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _A_s_y_n_c_B_l_o_c_k_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _C_o_n_t_i_n_u_e_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _B_r_e_a_k_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _R_a_n_g_e_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _R_e_t_u_r_n_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _U_n_d_e_r_s_c_o_r_e_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _M_a_c_r_o_I_n_v_o_c_a_t_i_o_n │ │ │ │ -_E_x_p_r_e_s_s_i_o_n_W_i_t_h_B_l_o_c_k → │ │ │ │ -    _O_u_t_e_r_A_t_t_r_i_b_u_t_e* _E_x_p_r_e_s_s_i_o_n_W_i_t_h_B_l_o_c_k_N_o_A_t_t_r_s │ │ │ │ -_E_x_p_r_e_s_s_i_o_n_W_i_t_h_B_l_o_c_k_N_o_A_t_t_r_s → │ │ │ │ -      _B_l_o_c_k_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _C_o_n_s_t_B_l_o_c_k_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _U_n_s_a_f_e_B_l_o_c_k_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _L_o_o_p_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _I_f_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _M_a_t_c_h_E_x_p_r_e_s_s_i_o_n │ │ │ │ +_L_i_t_e_r_a_l_E_x_p_r_e_s_s_i_o_n → │ │ │ │ +      _C_H_A_R___L_I_T_E_R_A_L │ │ │ │ +    | _S_T_R_I_N_G___L_I_T_E_R_A_L │ │ │ │ +    | _R_A_W___S_T_R_I_N_G___L_I_T_E_R_A_L │ │ │ │ +    | _B_Y_T_E___L_I_T_E_R_A_L │ │ │ │ +    | _B_Y_T_E___S_T_R_I_N_G___L_I_T_E_R_A_L │ │ │ │ +    | _R_A_W___B_Y_T_E___S_T_R_I_N_G___L_I_T_E_R_A_L │ │ │ │ +    | _C___S_T_R_I_N_G___L_I_T_E_R_A_L │ │ │ │ +    | _R_A_W___C___S_T_R_I_N_G___L_I_T_E_R_A_L │ │ │ │ +    | _I_N_T_E_G_E_R___L_I_T_E_R_A_L │ │ │ │ +    | _F_L_O_A_T___L_I_T_E_R_A_L │ │ │ │ +    | true │ │ │ │ +    | false │ │ │ │ +_A_w_a_i_t_E_x_p_r_e_s_s_i_o_n → _E_x_p_r_e_s_s_i_o_n . await │ │ │ │ +_M_e_t_h_o_d_C_a_l_l_E_x_p_r_e_s_s_i_o_n → _E_x_p_r_e_s_s_i_o_n . _P_a_t_h_E_x_p_r_S_e_g_m_e_n_t ( _C_a_l_l_P_a_r_a_m_s? ) │ │ │ │ +_R_e_t_u_r_n_E_x_p_r_e_s_s_i_o_n → return _E_x_p_r_e_s_s_i_o_n? │ │ │ │ +_C_l_o_s_u_r_e_E_x_p_r_e_s_s_i_o_n → │ │ │ │ +    async? │ │ │ │ +    move? │ │ │ │ +    ( || | | _C_l_o_s_u_r_e_P_a_r_a_m_e_t_e_r_s? | ) │ │ │ │ +    ( _E_x_p_r_e_s_s_i_o_n | -> _T_y_p_e_N_o_B_o_u_n_d_s _B_l_o_c_k_E_x_p_r_e_s_s_i_o_n ) │ │ │ │ +_C_l_o_s_u_r_e_P_a_r_a_m_e_t_e_r_s → _C_l_o_s_u_r_e_P_a_r_a_m ( , _C_l_o_s_u_r_e_P_a_r_a_m )* ,? │ │ │ │ +_C_l_o_s_u_r_e_P_a_r_a_m → _O_u_t_e_r_A_t_t_r_i_b_u_t_e* _P_a_t_t_e_r_n_N_o_T_o_p_A_l_t ( : _T_y_p_e )? │ │ │ │ +_F_i_e_l_d_E_x_p_r_e_s_s_i_o_n → _E_x_p_r_e_s_s_i_o_n . _I_D_E_N_T_I_F_I_E_R │ │ │ │ +_I_f_E_x_p_r_e_s_s_i_o_n → │ │ │ │ +    if _C_o_n_d_i_t_i_o_n_s _B_l_o_c_k_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    ( else ( _B_l_o_c_k_E_x_p_r_e_s_s_i_o_n | _I_f_E_x_p_r_e_s_s_i_o_n ) )? │ │ │ │ +_C_o_n_d_i_t_i_o_n_s → │ │ │ │ +      _E_x_p_r_e_s_s_i_o_nexcept _S_t_r_u_c_t_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _L_e_t_C_h_a_i_n │ │ │ │ +_L_e_t_C_h_a_i_n → _L_e_t_C_h_a_i_n_C_o_n_d_i_t_i_o_n ( && _L_e_t_C_h_a_i_n_C_o_n_d_i_t_i_o_n )* │ │ │ │ +_L_e_t_C_h_a_i_n_C_o_n_d_i_t_i_o_n → │ │ │ │ +      _E_x_p_r_e_s_s_i_o_nexcept _E_x_c_l_u_d_e_d_C_o_n_d_i_t_i_o_n_s │ │ │ │ +    | _O_u_t_e_r_A_t_t_r_i_b_u_t_e* let _P_a_t_t_e_r_n = _S_c_r_u_t_i_n_e_eexcept _E_x_c_l_u_d_e_d_C_o_n_d_i_t_i_o_n_s │ │ │ │ +_E_x_c_l_u_d_e_d_C_o_n_d_i_t_i_o_n_s → │ │ │ │ +      _S_t_r_u_c_t_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _L_a_z_y_B_o_o_l_e_a_n_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _R_a_n_g_e_E_x_p_r │ │ │ │ +    | _R_a_n_g_e_F_r_o_m_E_x_p_r │ │ │ │ +    | _R_a_n_g_e_I_n_c_l_u_s_i_v_e_E_x_p_r │ │ │ │ +    | _A_s_s_i_g_n_m_e_n_t_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _C_o_m_p_o_u_n_d_A_s_s_i_g_n_m_e_n_t_E_x_p_r_e_s_s_i_o_n │ │ │ │ +_U_n_d_e_r_s_c_o_r_e_E_x_p_r_e_s_s_i_o_n → _ │ │ │ │ +_T_u_p_l_e_E_x_p_r_e_s_s_i_o_n → ( _T_u_p_l_e_E_l_e_m_e_n_t_s? ) │ │ │ │ +_T_u_p_l_e_E_l_e_m_e_n_t_s → ( _E_x_p_r_e_s_s_i_o_n , )+ _E_x_p_r_e_s_s_i_o_n? │ │ │ │ +_T_u_p_l_e_I_n_d_e_x_i_n_g_E_x_p_r_e_s_s_i_o_n → _E_x_p_r_e_s_s_i_o_n . _T_U_P_L_E___I_N_D_E_X │ │ │ │ _A_r_r_a_y_E_x_p_r_e_s_s_i_o_n → [ _A_r_r_a_y_E_l_e_m_e_n_t_s? ] │ │ │ │ _A_r_r_a_y_E_l_e_m_e_n_t_s → │ │ │ │       _E_x_p_r_e_s_s_i_o_n ( , _E_x_p_r_e_s_s_i_o_n )* ,? │ │ │ │     | _E_x_p_r_e_s_s_i_o_n ; _E_x_p_r_e_s_s_i_o_n │ │ │ │ _I_n_d_e_x_E_x_p_r_e_s_s_i_o_n → _E_x_p_r_e_s_s_i_o_n [ _E_x_p_r_e_s_s_i_o_n ] │ │ │ │ -_A_w_a_i_t_E_x_p_r_e_s_s_i_o_n → _E_x_p_r_e_s_s_i_o_n . await │ │ │ │ _S_t_r_u_c_t_E_x_p_r_e_s_s_i_o_n → │ │ │ │     _P_a_t_h_I_n_E_x_p_r_e_s_s_i_o_n { ( _S_t_r_u_c_t_E_x_p_r_F_i_e_l_d_s | _S_t_r_u_c_t_B_a_s_e )? } │ │ │ │ _S_t_r_u_c_t_E_x_p_r_F_i_e_l_d_s → │ │ │ │     _S_t_r_u_c_t_E_x_p_r_F_i_e_l_d ( , _S_t_r_u_c_t_E_x_p_r_F_i_e_l_d )* ( , _S_t_r_u_c_t_B_a_s_e | ,? ) │ │ │ │ _S_t_r_u_c_t_E_x_p_r_F_i_e_l_d → │ │ │ │     _O_u_t_e_r_A_t_t_r_i_b_u_t_e* │ │ │ │     ( │ │ │ │         _I_D_E_N_T_I_F_I_E_R │ │ │ │       | ( _I_D_E_N_T_I_F_I_E_R | _T_U_P_L_E___I_N_D_E_X ) : _E_x_p_r_e_s_s_i_o_n │ │ │ │     ) │ │ │ │ _S_t_r_u_c_t_B_a_s_e → .. _E_x_p_r_e_s_s_i_o_n │ │ │ │ +_P_a_t_h_E_x_p_r_e_s_s_i_o_n → │ │ │ │ +      _P_a_t_h_I_n_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _Q_u_a_l_i_f_i_e_d_P_a_t_h_I_n_E_x_p_r_e_s_s_i_o_n │ │ │ │ +_R_a_n_g_e_E_x_p_r_e_s_s_i_o_n → │ │ │ │ +      _R_a_n_g_e_E_x_p_r │ │ │ │ +    | _R_a_n_g_e_F_r_o_m_E_x_p_r │ │ │ │ +    | _R_a_n_g_e_T_o_E_x_p_r │ │ │ │ +    | _R_a_n_g_e_F_u_l_l_E_x_p_r │ │ │ │ +    | _R_a_n_g_e_I_n_c_l_u_s_i_v_e_E_x_p_r │ │ │ │ +    | _R_a_n_g_e_T_o_I_n_c_l_u_s_i_v_e_E_x_p_r │ │ │ │ +_R_a_n_g_e_E_x_p_r → _E_x_p_r_e_s_s_i_o_n .. _E_x_p_r_e_s_s_i_o_n │ │ │ │ +_R_a_n_g_e_F_r_o_m_E_x_p_r → _E_x_p_r_e_s_s_i_o_n .. │ │ │ │ +_R_a_n_g_e_T_o_E_x_p_r → .. _E_x_p_r_e_s_s_i_o_n │ │ │ │ +_R_a_n_g_e_F_u_l_l_E_x_p_r → .. │ │ │ │ +_R_a_n_g_e_I_n_c_l_u_s_i_v_e_E_x_p_r → _E_x_p_r_e_s_s_i_o_n ..= _E_x_p_r_e_s_s_i_o_n │ │ │ │ +_R_a_n_g_e_T_o_I_n_c_l_u_s_i_v_e_E_x_p_r → ..= _E_x_p_r_e_s_s_i_o_n │ │ │ │ +_M_a_t_c_h_E_x_p_r_e_s_s_i_o_n → │ │ │ │ +    match _S_c_r_u_t_i_n_e_e { │ │ │ │ +        _I_n_n_e_r_A_t_t_r_i_b_u_t_e* │ │ │ │ +        _M_a_t_c_h_A_r_m_s? │ │ │ │ +    } │ │ │ │ +_S_c_r_u_t_i_n_e_e → _E_x_p_r_e_s_s_i_o_nexcept _S_t_r_u_c_t_E_x_p_r_e_s_s_i_o_n │ │ │ │ +_M_a_t_c_h_A_r_m_s → │ │ │ │ +    ( _M_a_t_c_h_A_r_m => ( _E_x_p_r_e_s_s_i_o_n_W_i_t_h_o_u_t_B_l_o_c_k , | _E_x_p_r_e_s_s_i_o_n_W_i_t_h_B_l_o_c_k ,? ) )* │ │ │ │ +    _M_a_t_c_h_A_r_m => _E_x_p_r_e_s_s_i_o_n ,? │ │ │ │ +_M_a_t_c_h_A_r_m → _O_u_t_e_r_A_t_t_r_i_b_u_t_e* _P_a_t_t_e_r_n _M_a_t_c_h_A_r_m_G_u_a_r_d? │ │ │ │ +_M_a_t_c_h_A_r_m_G_u_a_r_d → if _M_a_t_c_h_C_o_n_d_i_t_i_o_n_s │ │ │ │ +_M_a_t_c_h_C_o_n_d_i_t_i_o_n_s → │ │ │ │ +     _M_a_t_c_h_G_u_a_r_d_C_h_a_i_n │ │ │ │ +   | _E_x_p_r_e_s_s_i_o_n │ │ │ │ +_M_a_t_c_h_G_u_a_r_d_C_h_a_i_n → _M_a_t_c_h_G_u_a_r_d_C_o_n_d_i_t_i_o_n ( && _M_a_t_c_h_G_u_a_r_d_C_o_n_d_i_t_i_o_n )* │ │ │ │ +_M_a_t_c_h_G_u_a_r_d_C_o_n_d_i_t_i_o_n → │ │ │ │ +     _E_x_p_r_e_s_s_i_o_nexcept _E_x_c_l_u_d_e_d_M_a_t_c_h_C_o_n_d_i_t_i_o_n_s │ │ │ │ +   | _O_u_t_e_r_A_t_t_r_i_b_u_t_e* let _P_a_t_t_e_r_n = _M_a_t_c_h_G_u_a_r_d_S_c_r_u_t_i_n_e_e │ │ │ │ +_M_a_t_c_h_G_u_a_r_d_S_c_r_u_t_i_n_e_e → _E_x_p_r_e_s_s_i_o_nexcept _E_x_c_l_u_d_e_d_M_a_t_c_h_C_o_n_d_i_t_i_o_n_s │ │ │ │ +_E_x_c_l_u_d_e_d_M_a_t_c_h_C_o_n_d_i_t_i_o_n_s → │ │ │ │ +      _L_a_z_y_B_o_o_l_e_a_n_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _R_a_n_g_e_E_x_p_r │ │ │ │ +    | _R_a_n_g_e_F_r_o_m_E_x_p_r │ │ │ │ +    | _R_a_n_g_e_I_n_c_l_u_s_i_v_e_E_x_p_r │ │ │ │ +    | _A_s_s_i_g_n_m_e_n_t_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _C_o_m_p_o_u_n_d_A_s_s_i_g_n_m_e_n_t_E_x_p_r_e_s_s_i_o_n │ │ │ │ +_L_o_o_p_E_x_p_r_e_s_s_i_o_n → │ │ │ │ +    _L_o_o_p_L_a_b_e_l? ( │ │ │ │ +        _I_n_f_i_n_i_t_e_L_o_o_p_E_x_p_r_e_s_s_i_o_n │ │ │ │ +      | _P_r_e_d_i_c_a_t_e_L_o_o_p_E_x_p_r_e_s_s_i_o_n │ │ │ │ +      | _I_t_e_r_a_t_o_r_L_o_o_p_E_x_p_r_e_s_s_i_o_n │ │ │ │ +      | _L_a_b_e_l_B_l_o_c_k_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    ) │ │ │ │ +_I_n_f_i_n_i_t_e_L_o_o_p_E_x_p_r_e_s_s_i_o_n → loop _B_l_o_c_k_E_x_p_r_e_s_s_i_o_n │ │ │ │ +_P_r_e_d_i_c_a_t_e_L_o_o_p_E_x_p_r_e_s_s_i_o_n → while _C_o_n_d_i_t_i_o_n_s _B_l_o_c_k_E_x_p_r_e_s_s_i_o_n │ │ │ │ +_I_t_e_r_a_t_o_r_L_o_o_p_E_x_p_r_e_s_s_i_o_n → │ │ │ │ +    for _P_a_t_t_e_r_n in _E_x_p_r_e_s_s_i_o_nexcept _S_t_r_u_c_t_E_x_p_r_e_s_s_i_o_n _B_l_o_c_k_E_x_p_r_e_s_s_i_o_n │ │ │ │ +_L_o_o_p_L_a_b_e_l → _L_I_F_E_T_I_M_E___O_R___L_A_B_E_L : │ │ │ │ +_B_r_e_a_k_E_x_p_r_e_s_s_i_o_n → break _L_I_F_E_T_I_M_E___O_R___L_A_B_E_L? _E_x_p_r_e_s_s_i_o_n? │ │ │ │ +_L_a_b_e_l_B_l_o_c_k_E_x_p_r_e_s_s_i_o_n → _B_l_o_c_k_E_x_p_r_e_s_s_i_o_n │ │ │ │ +_C_o_n_t_i_n_u_e_E_x_p_r_e_s_s_i_o_n → continue _L_I_F_E_T_I_M_E___O_R___L_A_B_E_L? │ │ │ │ +_C_a_l_l_E_x_p_r_e_s_s_i_o_n → _E_x_p_r_e_s_s_i_o_n ( _C_a_l_l_P_a_r_a_m_s? ) │ │ │ │ +_C_a_l_l_P_a_r_a_m_s → _E_x_p_r_e_s_s_i_o_n ( , _E_x_p_r_e_s_s_i_o_n )* ,? │ │ │ │ _O_p_e_r_a_t_o_r_E_x_p_r_e_s_s_i_o_n → │ │ │ │       _B_o_r_r_o_w_E_x_p_r_e_s_s_i_o_n │ │ │ │     | _D_e_r_e_f_e_r_e_n_c_e_E_x_p_r_e_s_s_i_o_n │ │ │ │     | _T_r_y_P_r_o_p_a_g_a_t_i_o_n_E_x_p_r_e_s_s_i_o_n │ │ │ │     | _N_e_g_a_t_i_o_n_E_x_p_r_e_s_s_i_o_n │ │ │ │     | _A_r_i_t_h_m_e_t_i_c_O_r_L_o_g_i_c_a_l_E_x_p_r_e_s_s_i_o_n │ │ │ │     | _C_o_m_p_a_r_i_s_o_n_E_x_p_r_e_s_s_i_o_n │ │ │ │ @@ -25844,151 +25852,128 @@ │ │ │ │     | _E_x_p_r_e_s_s_i_o_n /= _E_x_p_r_e_s_s_i_o_n │ │ │ │     | _E_x_p_r_e_s_s_i_o_n %= _E_x_p_r_e_s_s_i_o_n │ │ │ │     | _E_x_p_r_e_s_s_i_o_n &= _E_x_p_r_e_s_s_i_o_n │ │ │ │     | _E_x_p_r_e_s_s_i_o_n |= _E_x_p_r_e_s_s_i_o_n │ │ │ │     | _E_x_p_r_e_s_s_i_o_n ^= _E_x_p_r_e_s_s_i_o_n │ │ │ │     | _E_x_p_r_e_s_s_i_o_n <<= _E_x_p_r_e_s_s_i_o_n │ │ │ │     | _E_x_p_r_e_s_s_i_o_n >>= _E_x_p_r_e_s_s_i_o_n │ │ │ │ -_L_o_o_p_E_x_p_r_e_s_s_i_o_n → │ │ │ │ -    _L_o_o_p_L_a_b_e_l? ( │ │ │ │ -        _I_n_f_i_n_i_t_e_L_o_o_p_E_x_p_r_e_s_s_i_o_n │ │ │ │ -      | _P_r_e_d_i_c_a_t_e_L_o_o_p_E_x_p_r_e_s_s_i_o_n │ │ │ │ -      | _I_t_e_r_a_t_o_r_L_o_o_p_E_x_p_r_e_s_s_i_o_n │ │ │ │ -      | _L_a_b_e_l_B_l_o_c_k_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    ) │ │ │ │ -_I_n_f_i_n_i_t_e_L_o_o_p_E_x_p_r_e_s_s_i_o_n → loop _B_l_o_c_k_E_x_p_r_e_s_s_i_o_n │ │ │ │ -_P_r_e_d_i_c_a_t_e_L_o_o_p_E_x_p_r_e_s_s_i_o_n → while _C_o_n_d_i_t_i_o_n_s _B_l_o_c_k_E_x_p_r_e_s_s_i_o_n │ │ │ │ -_I_t_e_r_a_t_o_r_L_o_o_p_E_x_p_r_e_s_s_i_o_n → │ │ │ │ -    for _P_a_t_t_e_r_n in _E_x_p_r_e_s_s_i_o_nexcept _S_t_r_u_c_t_E_x_p_r_e_s_s_i_o_n _B_l_o_c_k_E_x_p_r_e_s_s_i_o_n │ │ │ │ -_L_o_o_p_L_a_b_e_l → _L_I_F_E_T_I_M_E___O_R___L_A_B_E_L : │ │ │ │ -_B_r_e_a_k_E_x_p_r_e_s_s_i_o_n → break _L_I_F_E_T_I_M_E___O_R___L_A_B_E_L? _E_x_p_r_e_s_s_i_o_n? │ │ │ │ -_L_a_b_e_l_B_l_o_c_k_E_x_p_r_e_s_s_i_o_n → _B_l_o_c_k_E_x_p_r_e_s_s_i_o_n │ │ │ │ -_C_o_n_t_i_n_u_e_E_x_p_r_e_s_s_i_o_n → continue _L_I_F_E_T_I_M_E___O_R___L_A_B_E_L? │ │ │ │ -_R_e_t_u_r_n_E_x_p_r_e_s_s_i_o_n → return _E_x_p_r_e_s_s_i_o_n? │ │ │ │ -_C_a_l_l_E_x_p_r_e_s_s_i_o_n → _E_x_p_r_e_s_s_i_o_n ( _C_a_l_l_P_a_r_a_m_s? ) │ │ │ │ -_C_a_l_l_P_a_r_a_m_s → _E_x_p_r_e_s_s_i_o_n ( , _E_x_p_r_e_s_s_i_o_n )* ,? │ │ │ │ -_M_e_t_h_o_d_C_a_l_l_E_x_p_r_e_s_s_i_o_n → _E_x_p_r_e_s_s_i_o_n . _P_a_t_h_E_x_p_r_S_e_g_m_e_n_t ( _C_a_l_l_P_a_r_a_m_s? ) │ │ │ │ -_L_i_t_e_r_a_l_E_x_p_r_e_s_s_i_o_n → │ │ │ │ -      _C_H_A_R___L_I_T_E_R_A_L │ │ │ │ -    | _S_T_R_I_N_G___L_I_T_E_R_A_L │ │ │ │ -    | _R_A_W___S_T_R_I_N_G___L_I_T_E_R_A_L │ │ │ │ -    | _B_Y_T_E___L_I_T_E_R_A_L │ │ │ │ -    | _B_Y_T_E___S_T_R_I_N_G___L_I_T_E_R_A_L │ │ │ │ -    | _R_A_W___B_Y_T_E___S_T_R_I_N_G___L_I_T_E_R_A_L │ │ │ │ -    | _C___S_T_R_I_N_G___L_I_T_E_R_A_L │ │ │ │ -    | _R_A_W___C___S_T_R_I_N_G___L_I_T_E_R_A_L │ │ │ │ -    | _I_N_T_E_G_E_R___L_I_T_E_R_A_L │ │ │ │ -    | _F_L_O_A_T___L_I_T_E_R_A_L │ │ │ │ -    | true │ │ │ │ -    | false │ │ │ │ +_G_r_o_u_p_e_d_E_x_p_r_e_s_s_i_o_n → ( _E_x_p_r_e_s_s_i_o_n ) │ │ │ │ _B_l_o_c_k_E_x_p_r_e_s_s_i_o_n → │ │ │ │     { │ │ │ │         _I_n_n_e_r_A_t_t_r_i_b_u_t_e* │ │ │ │         _S_t_a_t_e_m_e_n_t_s? │ │ │ │     } │ │ │ │ _S_t_a_t_e_m_e_n_t_s → │ │ │ │       _S_t_a_t_e_m_e_n_t+ │ │ │ │     | _S_t_a_t_e_m_e_n_t+ _E_x_p_r_e_s_s_i_o_n_W_i_t_h_o_u_t_B_l_o_c_k │ │ │ │     | _E_x_p_r_e_s_s_i_o_n_W_i_t_h_o_u_t_B_l_o_c_k │ │ │ │ _A_s_y_n_c_B_l_o_c_k_E_x_p_r_e_s_s_i_o_n → async move? _B_l_o_c_k_E_x_p_r_e_s_s_i_o_n │ │ │ │ _C_o_n_s_t_B_l_o_c_k_E_x_p_r_e_s_s_i_o_n → const _B_l_o_c_k_E_x_p_r_e_s_s_i_o_n │ │ │ │ _U_n_s_a_f_e_B_l_o_c_k_E_x_p_r_e_s_s_i_o_n → unsafe _B_l_o_c_k_E_x_p_r_e_s_s_i_o_n │ │ │ │ -_P_a_t_h_E_x_p_r_e_s_s_i_o_n → │ │ │ │ -      _P_a_t_h_I_n_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _Q_u_a_l_i_f_i_e_d_P_a_t_h_I_n_E_x_p_r_e_s_s_i_o_n │ │ │ │ -_M_a_t_c_h_E_x_p_r_e_s_s_i_o_n → │ │ │ │ -    match _S_c_r_u_t_i_n_e_e { │ │ │ │ -        _I_n_n_e_r_A_t_t_r_i_b_u_t_e* │ │ │ │ -        _M_a_t_c_h_A_r_m_s? │ │ │ │ -    } │ │ │ │ -_S_c_r_u_t_i_n_e_e → _E_x_p_r_e_s_s_i_o_nexcept _S_t_r_u_c_t_E_x_p_r_e_s_s_i_o_n │ │ │ │ -_M_a_t_c_h_A_r_m_s → │ │ │ │ -    ( _M_a_t_c_h_A_r_m => ( _E_x_p_r_e_s_s_i_o_n_W_i_t_h_o_u_t_B_l_o_c_k , | _E_x_p_r_e_s_s_i_o_n_W_i_t_h_B_l_o_c_k ,? ) )* │ │ │ │ -    _M_a_t_c_h_A_r_m => _E_x_p_r_e_s_s_i_o_n ,? │ │ │ │ -_M_a_t_c_h_A_r_m → _O_u_t_e_r_A_t_t_r_i_b_u_t_e* _P_a_t_t_e_r_n _M_a_t_c_h_A_r_m_G_u_a_r_d? │ │ │ │ -_M_a_t_c_h_A_r_m_G_u_a_r_d → if _M_a_t_c_h_C_o_n_d_i_t_i_o_n_s │ │ │ │ -_M_a_t_c_h_C_o_n_d_i_t_i_o_n_s → │ │ │ │ -     _M_a_t_c_h_G_u_a_r_d_C_h_a_i_n │ │ │ │ -   | _E_x_p_r_e_s_s_i_o_n │ │ │ │ -_M_a_t_c_h_G_u_a_r_d_C_h_a_i_n → _M_a_t_c_h_G_u_a_r_d_C_o_n_d_i_t_i_o_n ( && _M_a_t_c_h_G_u_a_r_d_C_o_n_d_i_t_i_o_n )* │ │ │ │ -_M_a_t_c_h_G_u_a_r_d_C_o_n_d_i_t_i_o_n → │ │ │ │ -     _E_x_p_r_e_s_s_i_o_nexcept _E_x_c_l_u_d_e_d_M_a_t_c_h_C_o_n_d_i_t_i_o_n_s │ │ │ │ -   | _O_u_t_e_r_A_t_t_r_i_b_u_t_e* let _P_a_t_t_e_r_n = _M_a_t_c_h_G_u_a_r_d_S_c_r_u_t_i_n_e_e │ │ │ │ -_M_a_t_c_h_G_u_a_r_d_S_c_r_u_t_i_n_e_e → _E_x_p_r_e_s_s_i_o_nexcept _E_x_c_l_u_d_e_d_M_a_t_c_h_C_o_n_d_i_t_i_o_n_s │ │ │ │ -_E_x_c_l_u_d_e_d_M_a_t_c_h_C_o_n_d_i_t_i_o_n_s → │ │ │ │ -      _L_a_z_y_B_o_o_l_e_a_n_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _R_a_n_g_e_E_x_p_r │ │ │ │ -    | _R_a_n_g_e_F_r_o_m_E_x_p_r │ │ │ │ -    | _R_a_n_g_e_I_n_c_l_u_s_i_v_e_E_x_p_r │ │ │ │ -    | _A_s_s_i_g_n_m_e_n_t_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _C_o_m_p_o_u_n_d_A_s_s_i_g_n_m_e_n_t_E_x_p_r_e_s_s_i_o_n │ │ │ │ -_I_f_E_x_p_r_e_s_s_i_o_n → │ │ │ │ -    if _C_o_n_d_i_t_i_o_n_s _B_l_o_c_k_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    ( else ( _B_l_o_c_k_E_x_p_r_e_s_s_i_o_n | _I_f_E_x_p_r_e_s_s_i_o_n ) )? │ │ │ │ -_C_o_n_d_i_t_i_o_n_s → │ │ │ │ -      _E_x_p_r_e_s_s_i_o_nexcept _S_t_r_u_c_t_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _L_e_t_C_h_a_i_n │ │ │ │ -_L_e_t_C_h_a_i_n → _L_e_t_C_h_a_i_n_C_o_n_d_i_t_i_o_n ( && _L_e_t_C_h_a_i_n_C_o_n_d_i_t_i_o_n )* │ │ │ │ -_L_e_t_C_h_a_i_n_C_o_n_d_i_t_i_o_n → │ │ │ │ -      _E_x_p_r_e_s_s_i_o_nexcept _E_x_c_l_u_d_e_d_C_o_n_d_i_t_i_o_n_s │ │ │ │ -    | _O_u_t_e_r_A_t_t_r_i_b_u_t_e* let _P_a_t_t_e_r_n = _S_c_r_u_t_i_n_e_eexcept _E_x_c_l_u_d_e_d_C_o_n_d_i_t_i_o_n_s │ │ │ │ -_E_x_c_l_u_d_e_d_C_o_n_d_i_t_i_o_n_s → │ │ │ │ -      _S_t_r_u_c_t_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _L_a_z_y_B_o_o_l_e_a_n_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _R_a_n_g_e_E_x_p_r │ │ │ │ -    | _R_a_n_g_e_F_r_o_m_E_x_p_r │ │ │ │ -    | _R_a_n_g_e_I_n_c_l_u_s_i_v_e_E_x_p_r │ │ │ │ -    | _A_s_s_i_g_n_m_e_n_t_E_x_p_r_e_s_s_i_o_n │ │ │ │ -    | _C_o_m_p_o_u_n_d_A_s_s_i_g_n_m_e_n_t_E_x_p_r_e_s_s_i_o_n │ │ │ │ -_C_l_o_s_u_r_e_E_x_p_r_e_s_s_i_o_n → │ │ │ │ -    async? │ │ │ │ -    move? │ │ │ │ -    ( || | | _C_l_o_s_u_r_e_P_a_r_a_m_e_t_e_r_s? | ) │ │ │ │ -    ( _E_x_p_r_e_s_s_i_o_n | -> _T_y_p_e_N_o_B_o_u_n_d_s _B_l_o_c_k_E_x_p_r_e_s_s_i_o_n ) │ │ │ │ -_C_l_o_s_u_r_e_P_a_r_a_m_e_t_e_r_s → _C_l_o_s_u_r_e_P_a_r_a_m ( , _C_l_o_s_u_r_e_P_a_r_a_m )* ,? │ │ │ │ -_C_l_o_s_u_r_e_P_a_r_a_m → _O_u_t_e_r_A_t_t_r_i_b_u_t_e* _P_a_t_t_e_r_n_N_o_T_o_p_A_l_t ( : _T_y_p_e )? │ │ │ │ -_U_n_d_e_r_s_c_o_r_e_E_x_p_r_e_s_s_i_o_n → _ │ │ │ │ -_T_u_p_l_e_E_x_p_r_e_s_s_i_o_n → ( _T_u_p_l_e_E_l_e_m_e_n_t_s? ) │ │ │ │ -_T_u_p_l_e_E_l_e_m_e_n_t_s → ( _E_x_p_r_e_s_s_i_o_n , )+ _E_x_p_r_e_s_s_i_o_n? │ │ │ │ -_T_u_p_l_e_I_n_d_e_x_i_n_g_E_x_p_r_e_s_s_i_o_n → _E_x_p_r_e_s_s_i_o_n . _T_U_P_L_E___I_N_D_E_X │ │ │ │ -_R_a_n_g_e_E_x_p_r_e_s_s_i_o_n → │ │ │ │ -      _R_a_n_g_e_E_x_p_r │ │ │ │ -    | _R_a_n_g_e_F_r_o_m_E_x_p_r │ │ │ │ -    | _R_a_n_g_e_T_o_E_x_p_r │ │ │ │ -    | _R_a_n_g_e_F_u_l_l_E_x_p_r │ │ │ │ -    | _R_a_n_g_e_I_n_c_l_u_s_i_v_e_E_x_p_r │ │ │ │ -    | _R_a_n_g_e_T_o_I_n_c_l_u_s_i_v_e_E_x_p_r │ │ │ │ -_R_a_n_g_e_E_x_p_r → _E_x_p_r_e_s_s_i_o_n .. _E_x_p_r_e_s_s_i_o_n │ │ │ │ -_R_a_n_g_e_F_r_o_m_E_x_p_r → _E_x_p_r_e_s_s_i_o_n .. │ │ │ │ -_R_a_n_g_e_T_o_E_x_p_r → .. _E_x_p_r_e_s_s_i_o_n │ │ │ │ -_R_a_n_g_e_F_u_l_l_E_x_p_r → .. │ │ │ │ -_R_a_n_g_e_I_n_c_l_u_s_i_v_e_E_x_p_r → _E_x_p_r_e_s_s_i_o_n ..= _E_x_p_r_e_s_s_i_o_n │ │ │ │ -_R_a_n_g_e_T_o_I_n_c_l_u_s_i_v_e_E_x_p_r → ..= _E_x_p_r_e_s_s_i_o_n │ │ │ │ -_F_i_e_l_d_E_x_p_r_e_s_s_i_o_n → _E_x_p_r_e_s_s_i_o_n . _I_D_E_N_T_I_F_I_E_R │ │ │ │ -_G_r_o_u_p_e_d_E_x_p_r_e_s_s_i_o_n → ( _E_x_p_r_e_s_s_i_o_n ) │ │ │ │ +_E_x_p_r_e_s_s_i_o_n → │ │ │ │ +      _E_x_p_r_e_s_s_i_o_n_W_i_t_h_o_u_t_B_l_o_c_k │ │ │ │ +    | _E_x_p_r_e_s_s_i_o_n_W_i_t_h_B_l_o_c_k │ │ │ │ +_E_x_p_r_e_s_s_i_o_n_W_i_t_h_o_u_t_B_l_o_c_k → │ │ │ │ +    _O_u_t_e_r_A_t_t_r_i_b_u_t_e* _E_x_p_r_e_s_s_i_o_n_W_i_t_h_o_u_t_B_l_o_c_k_N_o_A_t_t_r_s │ │ │ │ +_E_x_p_r_e_s_s_i_o_n_W_i_t_h_o_u_t_B_l_o_c_k_N_o_A_t_t_r_s → │ │ │ │ +      _L_i_t_e_r_a_l_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _P_a_t_h_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _O_p_e_r_a_t_o_r_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _G_r_o_u_p_e_d_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _A_r_r_a_y_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _A_w_a_i_t_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _I_n_d_e_x_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _T_u_p_l_e_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _T_u_p_l_e_I_n_d_e_x_i_n_g_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _S_t_r_u_c_t_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _C_a_l_l_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _M_e_t_h_o_d_C_a_l_l_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _F_i_e_l_d_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _C_l_o_s_u_r_e_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _A_s_y_n_c_B_l_o_c_k_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _C_o_n_t_i_n_u_e_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _B_r_e_a_k_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _R_a_n_g_e_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _R_e_t_u_r_n_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _U_n_d_e_r_s_c_o_r_e_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _M_a_c_r_o_I_n_v_o_c_a_t_i_o_n │ │ │ │ +_E_x_p_r_e_s_s_i_o_n_W_i_t_h_B_l_o_c_k → │ │ │ │ +    _O_u_t_e_r_A_t_t_r_i_b_u_t_e* _E_x_p_r_e_s_s_i_o_n_W_i_t_h_B_l_o_c_k_N_o_A_t_t_r_s │ │ │ │ +_E_x_p_r_e_s_s_i_o_n_W_i_t_h_B_l_o_c_k_N_o_A_t_t_r_s → │ │ │ │ +      _B_l_o_c_k_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _C_o_n_s_t_B_l_o_c_k_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _U_n_s_a_f_e_B_l_o_c_k_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _L_o_o_p_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _I_f_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _M_a_t_c_h_E_x_p_r_e_s_s_i_o_n │ │ │ │ Show Railroad │ │ │ │ -Expression ExpressionWithoutBlock ExpressionWithBlock │ │ │ │ -ExpressionWithoutBlock OuterAttribute ExpressionWithoutBlockNoAttrs │ │ │ │ -ExpressionWithoutBlockNoAttrs LiteralExpression PathExpression │ │ │ │ -OperatorExpression GroupedExpression ArrayExpression AwaitExpression │ │ │ │ -IndexExpression TupleExpression TupleIndexingExpression StructExpression │ │ │ │ -CallExpression MethodCallExpression FieldExpression ClosureExpression │ │ │ │ -AsyncBlockExpression ContinueExpression BreakExpression RangeExpression │ │ │ │ -ReturnExpression UnderscoreExpression MacroInvocation │ │ │ │ -ExpressionWithBlock OuterAttribute ExpressionWithBlockNoAttrs │ │ │ │ -ExpressionWithBlockNoAttrs BlockExpression ConstBlockExpression │ │ │ │ -UnsafeBlockExpression LoopExpression IfExpression MatchExpression │ │ │ │ +LiteralExpression CHAR_LITERAL STRING_LITERAL RAW_STRING_LITERAL BYTE_LITERAL │ │ │ │ +BYTE_STRING_LITERAL RAW_BYTE_STRING_LITERAL C_STRING_LITERAL │ │ │ │ +RAW_C_STRING_LITERAL INTEGER_LITERAL FLOAT_LITERAL true false │ │ │ │ +AwaitExpression Expression . await │ │ │ │ +MethodCallExpression Expression . PathExprSegment ( CallParams ) │ │ │ │ +ReturnExpression return Expression │ │ │ │ +ClosureExpression async move || | ClosureParameters | Expression - │ │ │ │ +> TypeNoBounds BlockExpression │ │ │ │ +ClosureParameters ClosureParam , ClosureParam , │ │ │ │ +ClosureParam OuterAttribute PatternNoTopAlt : Type │ │ │ │ +FieldExpression Expression . IDENTIFIER │ │ │ │ +IfExpression if Conditions BlockExpression else BlockExpression IfExpression │ │ │ │ +Conditions except StructExpression Expression LetChain │ │ │ │ +LetChain LetChainCondition && LetChainCondition │ │ │ │ +LetChainCondition except ExcludedConditions Expression OuterAttribute let │ │ │ │ +Pattern = except ExcludedConditions Scrutinee │ │ │ │ +ExcludedConditions StructExpression LazyBooleanExpression RangeExpr │ │ │ │ +RangeFromExpr RangeInclusiveExpr AssignmentExpression │ │ │ │ +CompoundAssignmentExpression │ │ │ │ +UnderscoreExpression _ │ │ │ │ +TupleExpression ( TupleElements ) │ │ │ │ +TupleElements Expression , Expression │ │ │ │ +TupleIndexingExpression Expression . TUPLE_INDEX │ │ │ │ ArrayExpression [ ArrayElements ] │ │ │ │ ArrayElements Expression , Expression , Expression ; Expression │ │ │ │ IndexExpression Expression [ Expression ] │ │ │ │ -AwaitExpression Expression . await │ │ │ │ StructExpression PathInExpression { StructExprFields StructBase } │ │ │ │ StructExprFields StructExprField , StructExprField , StructBase , │ │ │ │ StructExprField OuterAttribute IDENTIFIER IDENTIFIER TUPLE_INDEX : Expression │ │ │ │ StructBase .. Expression │ │ │ │ +PathExpression PathInExpression QualifiedPathInExpression │ │ │ │ +RangeExpression RangeExpr RangeFromExpr RangeToExpr RangeFullExpr │ │ │ │ +RangeInclusiveExpr RangeToInclusiveExpr │ │ │ │ +RangeExpr Expression .. Expression │ │ │ │ +RangeFromExpr Expression .. │ │ │ │ +RangeToExpr .. Expression │ │ │ │ +RangeFullExpr .. │ │ │ │ +RangeInclusiveExpr Expression ..= Expression │ │ │ │ +RangeToInclusiveExpr ..= Expression │ │ │ │ +MatchExpression match Scrutinee { InnerAttribute MatchArms } │ │ │ │ +Scrutinee except StructExpression Expression │ │ │ │ +MatchArms MatchArm => ExpressionWithoutBlock , ExpressionWithBlock , MatchArm │ │ │ │ +=> Expression , │ │ │ │ +MatchArm OuterAttribute Pattern MatchArmGuard │ │ │ │ +MatchArmGuard if MatchConditions │ │ │ │ +MatchConditions MatchGuardChain Expression │ │ │ │ +MatchGuardChain MatchGuardCondition && MatchGuardCondition │ │ │ │ +MatchGuardCondition except ExcludedMatchConditions Expression OuterAttribute │ │ │ │ +let Pattern = MatchGuardScrutinee │ │ │ │ +MatchGuardScrutinee except ExcludedMatchConditions Expression │ │ │ │ +ExcludedMatchConditions LazyBooleanExpression RangeExpr RangeFromExpr │ │ │ │ +RangeInclusiveExpr AssignmentExpression CompoundAssignmentExpression │ │ │ │ +LoopExpression LoopLabel InfiniteLoopExpression PredicateLoopExpression │ │ │ │ +IteratorLoopExpression LabelBlockExpression │ │ │ │ +InfiniteLoopExpression loop BlockExpression │ │ │ │ +PredicateLoopExpression while Conditions BlockExpression │ │ │ │ +IteratorLoopExpression for Pattern in except StructExpression Expression │ │ │ │ +BlockExpression │ │ │ │ +LoopLabel LIFETIME_OR_LABEL : │ │ │ │ +BreakExpression break LIFETIME_OR_LABEL Expression │ │ │ │ +LabelBlockExpression BlockExpression │ │ │ │ +ContinueExpression continue LIFETIME_OR_LABEL │ │ │ │ +CallExpression Expression ( CallParams ) │ │ │ │ +CallParams Expression , Expression , │ │ │ │ OperatorExpression BorrowExpression DereferenceExpression │ │ │ │ TryPropagationExpression NegationExpression ArithmeticOrLogicalExpression │ │ │ │ ComparisonExpression LazyBooleanExpression TypeCastExpression │ │ │ │ AssignmentExpression CompoundAssignmentExpression │ │ │ │ BorrowExpression & && Expression & && mut Expression & && raw const Expression │ │ │ │ & && raw mut Expression │ │ │ │ DereferenceExpression * Expression │ │ │ │ @@ -26004,76 +25989,197 @@ │ │ │ │ LazyBooleanExpression Expression || Expression Expression && Expression │ │ │ │ TypeCastExpression Expression as TypeNoBounds │ │ │ │ AssignmentExpression Expression = Expression │ │ │ │ CompoundAssignmentExpression Expression += Expression Expression -= Expression │ │ │ │ Expression *= Expression Expression /= Expression Expression %= Expression │ │ │ │ Expression &= Expression Expression |= Expression Expression ^= Expression │ │ │ │ Expression <<= Expression Expression >>= Expression │ │ │ │ -LoopExpression LoopLabel InfiniteLoopExpression PredicateLoopExpression │ │ │ │ -IteratorLoopExpression LabelBlockExpression │ │ │ │ -InfiniteLoopExpression loop BlockExpression │ │ │ │ -PredicateLoopExpression while Conditions BlockExpression │ │ │ │ -IteratorLoopExpression for Pattern in except StructExpression Expression │ │ │ │ -BlockExpression │ │ │ │ -LoopLabel LIFETIME_OR_LABEL : │ │ │ │ -BreakExpression break LIFETIME_OR_LABEL Expression │ │ │ │ -LabelBlockExpression BlockExpression │ │ │ │ -ContinueExpression continue LIFETIME_OR_LABEL │ │ │ │ -ReturnExpression return Expression │ │ │ │ -CallExpression Expression ( CallParams ) │ │ │ │ -CallParams Expression , Expression , │ │ │ │ -MethodCallExpression Expression . PathExprSegment ( CallParams ) │ │ │ │ -LiteralExpression CHAR_LITERAL STRING_LITERAL RAW_STRING_LITERAL BYTE_LITERAL │ │ │ │ -BYTE_STRING_LITERAL RAW_BYTE_STRING_LITERAL C_STRING_LITERAL │ │ │ │ -RAW_C_STRING_LITERAL INTEGER_LITERAL FLOAT_LITERAL true false │ │ │ │ +GroupedExpression ( Expression ) │ │ │ │ BlockExpression { InnerAttribute Statements } │ │ │ │ Statements Statement Statement ExpressionWithoutBlock ExpressionWithoutBlock │ │ │ │ AsyncBlockExpression async move BlockExpression │ │ │ │ ConstBlockExpression const BlockExpression │ │ │ │ UnsafeBlockExpression unsafe BlockExpression │ │ │ │ -PathExpression PathInExpression QualifiedPathInExpression │ │ │ │ -MatchExpression match Scrutinee { InnerAttribute MatchArms } │ │ │ │ -Scrutinee except StructExpression Expression │ │ │ │ -MatchArms MatchArm => ExpressionWithoutBlock , ExpressionWithBlock , MatchArm │ │ │ │ -=> Expression , │ │ │ │ -MatchArm OuterAttribute Pattern MatchArmGuard │ │ │ │ -MatchArmGuard if MatchConditions │ │ │ │ -MatchConditions MatchGuardChain Expression │ │ │ │ -MatchGuardChain MatchGuardCondition && MatchGuardCondition │ │ │ │ -MatchGuardCondition except ExcludedMatchConditions Expression OuterAttribute │ │ │ │ -let Pattern = MatchGuardScrutinee │ │ │ │ -MatchGuardScrutinee except ExcludedMatchConditions Expression │ │ │ │ -ExcludedMatchConditions LazyBooleanExpression RangeExpr RangeFromExpr │ │ │ │ -RangeInclusiveExpr AssignmentExpression CompoundAssignmentExpression │ │ │ │ -IfExpression if Conditions BlockExpression else BlockExpression IfExpression │ │ │ │ -Conditions except StructExpression Expression LetChain │ │ │ │ -LetChain LetChainCondition && LetChainCondition │ │ │ │ -LetChainCondition except ExcludedConditions Expression OuterAttribute let │ │ │ │ -Pattern = except ExcludedConditions Scrutinee │ │ │ │ -ExcludedConditions StructExpression LazyBooleanExpression RangeExpr │ │ │ │ -RangeFromExpr RangeInclusiveExpr AssignmentExpression │ │ │ │ -CompoundAssignmentExpression │ │ │ │ -ClosureExpression async move || | ClosureParameters | Expression - │ │ │ │ -> TypeNoBounds BlockExpression │ │ │ │ -ClosureParameters ClosureParam , ClosureParam , │ │ │ │ -ClosureParam OuterAttribute PatternNoTopAlt : Type │ │ │ │ -UnderscoreExpression _ │ │ │ │ -TupleExpression ( TupleElements ) │ │ │ │ -TupleElements Expression , Expression │ │ │ │ -TupleIndexingExpression Expression . TUPLE_INDEX │ │ │ │ -RangeExpression RangeExpr RangeFromExpr RangeToExpr RangeFullExpr │ │ │ │ -RangeInclusiveExpr RangeToInclusiveExpr │ │ │ │ -RangeExpr Expression .. Expression │ │ │ │ -RangeFromExpr Expression .. │ │ │ │ -RangeToExpr .. Expression │ │ │ │ -RangeFullExpr .. │ │ │ │ -RangeInclusiveExpr Expression ..= Expression │ │ │ │ -RangeToInclusiveExpr ..= Expression │ │ │ │ -FieldExpression Expression . IDENTIFIER │ │ │ │ -GroupedExpression ( Expression ) │ │ │ │ +Expression ExpressionWithoutBlock ExpressionWithBlock │ │ │ │ +ExpressionWithoutBlock OuterAttribute ExpressionWithoutBlockNoAttrs │ │ │ │ +ExpressionWithoutBlockNoAttrs LiteralExpression PathExpression │ │ │ │ +OperatorExpression GroupedExpression ArrayExpression AwaitExpression │ │ │ │ +IndexExpression TupleExpression TupleIndexingExpression StructExpression │ │ │ │ +CallExpression MethodCallExpression FieldExpression ClosureExpression │ │ │ │ +AsyncBlockExpression ContinueExpression BreakExpression RangeExpression │ │ │ │ +ReturnExpression UnderscoreExpression MacroInvocation │ │ │ │ +ExpressionWithBlock OuterAttribute ExpressionWithBlockNoAttrs │ │ │ │ +ExpressionWithBlockNoAttrs BlockExpression ConstBlockExpression │ │ │ │ +UnsafeBlockExpression LoopExpression IfExpression MatchExpression │ │ │ │ +********** _SS_tt_aa_tt_ee_mm_ee_nn_tt_ss_ _ss_uu_mm_mm_aa_rr_yy ********** │ │ │ │ +SSyynnttaaxx │ │ │ │ +_S_t_a_t_e_m_e_n_t → │ │ │ │ +      ; │ │ │ │ +    | _I_t_e_m │ │ │ │ +    | _L_e_t_S_t_a_t_e_m_e_n_t │ │ │ │ +    | _E_x_p_r_e_s_s_i_o_n_S_t_a_t_e_m_e_n_t │ │ │ │ +    | _O_u_t_e_r_A_t_t_r_i_b_u_t_e* _M_a_c_r_o_I_n_v_o_c_a_t_i_o_n_S_e_m_i │ │ │ │ +_L_e_t_S_t_a_t_e_m_e_n_t → │ │ │ │ +    _O_u_t_e_r_A_t_t_r_i_b_u_t_e* let _P_a_t_t_e_r_n_N_o_T_o_p_A_l_t ( : _T_y_p_e )? │ │ │ │ +    ( │ │ │ │ +          = _E_x_p_r_e_s_s_i_o_n │ │ │ │ +        | = _E_x_p_r_e_s_s_i_o_nexcept _L_a_z_y_B_o_o_l_e_a_n_E_x_p_r_e_s_s_i_o_n or end with a } else │ │ │ │ +_B_l_o_c_k_E_x_p_r_e_s_s_i_o_n │ │ │ │ +    )? ; │ │ │ │ +_E_x_p_r_e_s_s_i_o_n_S_t_a_t_e_m_e_n_t → │ │ │ │ +      _E_x_p_r_e_s_s_i_o_n_W_i_t_h_o_u_t_B_l_o_c_k ; │ │ │ │ +    | _E_x_p_r_e_s_s_i_o_n_W_i_t_h_B_l_o_c_k ;? │ │ │ │ +Show Railroad │ │ │ │ +Statement ; Item LetStatement ExpressionStatement OuterAttribute │ │ │ │ +MacroInvocationSemi │ │ │ │ +LetStatement OuterAttribute let PatternNoTopAlt : Type = Expression = except │ │ │ │ +LazyBooleanExpression or end with a `}` Expression else BlockExpression ; │ │ │ │ +ExpressionStatement ExpressionWithoutBlock ; ExpressionWithBlock ; │ │ │ │ +********** _CC_oo_nn_ff_ii_gg_uu_rr_aa_tt_ii_oo_nn_ _ss_uu_mm_mm_aa_rr_yy ********** │ │ │ │ +SSyynnttaaxx │ │ │ │ +_C_o_n_f_i_g_u_r_a_t_i_o_n_P_r_e_d_i_c_a_t_e → │ │ │ │ +      _C_o_n_f_i_g_u_r_a_t_i_o_n_O_p_t_i_o_n │ │ │ │ +    | _C_o_n_f_i_g_u_r_a_t_i_o_n_A_l_l │ │ │ │ +    | _C_o_n_f_i_g_u_r_a_t_i_o_n_A_n_y │ │ │ │ +    | _C_o_n_f_i_g_u_r_a_t_i_o_n_N_o_t │ │ │ │ +    | true │ │ │ │ +    | false │ │ │ │ +_C_o_n_f_i_g_u_r_a_t_i_o_n_O_p_t_i_o_n → │ │ │ │ +    _I_D_E_N_T_I_F_I_E_R ( = ( _S_T_R_I_N_G___L_I_T_E_R_A_L | _R_A_W___S_T_R_I_N_G___L_I_T_E_R_A_L ) )? │ │ │ │ +_C_o_n_f_i_g_u_r_a_t_i_o_n_A_l_l → │ │ │ │ +    all ( _C_o_n_f_i_g_u_r_a_t_i_o_n_P_r_e_d_i_c_a_t_e_L_i_s_t? ) │ │ │ │ +_C_o_n_f_i_g_u_r_a_t_i_o_n_A_n_y → │ │ │ │ +    any ( _C_o_n_f_i_g_u_r_a_t_i_o_n_P_r_e_d_i_c_a_t_e_L_i_s_t? ) │ │ │ │ +_C_o_n_f_i_g_u_r_a_t_i_o_n_N_o_t → │ │ │ │ +    not ( _C_o_n_f_i_g_u_r_a_t_i_o_n_P_r_e_d_i_c_a_t_e ) │ │ │ │ +_C_o_n_f_i_g_u_r_a_t_i_o_n_P_r_e_d_i_c_a_t_e_L_i_s_t → │ │ │ │ +    _C_o_n_f_i_g_u_r_a_t_i_o_n_P_r_e_d_i_c_a_t_e ( , _C_o_n_f_i_g_u_r_a_t_i_o_n_P_r_e_d_i_c_a_t_e )* ,? │ │ │ │ +_C_f_g_A_t_t_r_i_b_u_t_e → cfg ( _C_o_n_f_i_g_u_r_a_t_i_o_n_P_r_e_d_i_c_a_t_e ) │ │ │ │ +_C_f_g_A_t_t_r_A_t_t_r_i_b_u_t_e → cfg_attr ( _C_o_n_f_i_g_u_r_a_t_i_o_n_P_r_e_d_i_c_a_t_e , _C_f_g_A_t_t_r_s? ) │ │ │ │ +_C_f_g_A_t_t_r_s → _A_t_t_r ( , _A_t_t_r )* ,? │ │ │ │ +_C_f_g_S_e_l_e_c_t → _C_f_g_S_e_l_e_c_t_A_r_m_s? │ │ │ │ +_C_f_g_S_e_l_e_c_t_A_r_m_s → │ │ │ │ +    _C_f_g_S_e_l_e_c_t_C_o_n_f_i_g_u_r_a_t_i_o_n_P_r_e_d_i_c_a_t_e => │ │ │ │ +    ( │ │ │ │ +        { ^ _T_o_k_e_n_T_r_e_e } ,? _C_f_g_S_e_l_e_c_t_A_r_m_s? │ │ │ │ +      | _E_x_p_r_e_s_s_i_o_n_W_i_t_h_B_l_o_c_k_N_o_A_t_t_r_s ,? _C_f_g_S_e_l_e_c_t_A_r_m_s? │ │ │ │ +      | _E_x_p_r_e_s_s_i_o_n_W_i_t_h_o_u_t_B_l_o_c_k_N_o_A_t_t_r_s ( , _C_f_g_S_e_l_e_c_t_A_r_m_s? )? │ │ │ │ +    ) │ │ │ │ +_C_f_g_S_e_l_e_c_t_C_o_n_f_i_g_u_r_a_t_i_o_n_P_r_e_d_i_c_a_t_e → │ │ │ │ +    _C_o_n_f_i_g_u_r_a_t_i_o_n_P_r_e_d_i_c_a_t_e | _ │ │ │ │ +Show Railroad │ │ │ │ +ConfigurationPredicate ConfigurationOption ConfigurationAll ConfigurationAny │ │ │ │ +ConfigurationNot true false │ │ │ │ +ConfigurationOption IDENTIFIER = STRING_LITERAL RAW_STRING_LITERAL │ │ │ │ +ConfigurationAll all ( ConfigurationPredicateList ) │ │ │ │ +ConfigurationAny any ( ConfigurationPredicateList ) │ │ │ │ +ConfigurationNot not ( ConfigurationPredicate ) │ │ │ │ +ConfigurationPredicateList ConfigurationPredicate , ConfigurationPredicate , │ │ │ │ +CfgAttribute cfg ( ConfigurationPredicate ) │ │ │ │ +CfgAttrAttribute cfg_attr ( ConfigurationPredicate , CfgAttrs ) │ │ │ │ +CfgAttrs Attr , Attr , │ │ │ │ +CfgSelect CfgSelectArms │ │ │ │ +CfgSelectArms CfgSelectConfigurationPredicate => { no backtracking TokenTree } │ │ │ │ +, CfgSelectArms ExpressionWithBlockNoAttrs , CfgSelectArms │ │ │ │ +ExpressionWithoutBlockNoAttrs , CfgSelectArms │ │ │ │ +CfgSelectConfigurationPredicate ConfigurationPredicate _ │ │ │ │ +********** _AA_ss_ss_ee_mm_bb_ll_yy_ _ss_uu_mm_mm_aa_rr_yy ********** │ │ │ │ +SSyynnttaaxx │ │ │ │ +_A_s_m_A_r_g_s → _A_s_m_A_t_t_r_F_o_r_m_a_t_S_t_r_i_n_g ( , _A_s_m_A_t_t_r_F_o_r_m_a_t_S_t_r_i_n_g )* ( , _A_s_m_A_t_t_r_O_p_e_r_a_n_d )* │ │ │ │ +,? │ │ │ │ +_F_o_r_m_a_t_S_t_r_i_n_g → _S_T_R_I_N_G___L_I_T_E_R_A_L | _R_A_W___S_T_R_I_N_G___L_I_T_E_R_A_L | _M_a_c_r_o_I_n_v_o_c_a_t_i_o_n │ │ │ │ +_A_s_m_A_t_t_r_F_o_r_m_a_t_S_t_r_i_n_g → ( _O_u_t_e_r_A_t_t_r_i_b_u_t_e )* _F_o_r_m_a_t_S_t_r_i_n_g │ │ │ │ +_A_s_m_O_p_e_r_a_n_d → │ │ │ │ +      _C_l_o_b_b_e_r_A_b_i │ │ │ │ +    | _A_s_m_O_p_t_i_o_n_s │ │ │ │ +    | _R_e_g_O_p_e_r_a_n_d │ │ │ │ +_A_s_m_A_t_t_r_O_p_e_r_a_n_d → ( _O_u_t_e_r_A_t_t_r_i_b_u_t_e )* _A_s_m_O_p_e_r_a_n_d │ │ │ │ +_C_l_o_b_b_e_r_A_b_i → clobber_abi ( _A_b_i ( , _A_b_i )* ,? ) │ │ │ │ +_A_s_m_O_p_t_i_o_n_s → │ │ │ │ +    options ( ( _A_s_m_O_p_t_i_o_n ( , _A_s_m_O_p_t_i_o_n )* ,? )? ) │ │ │ │ +_A_s_m_O_p_t_i_o_n → │ │ │ │ +      pure │ │ │ │ +    | nomem │ │ │ │ +    | readonly │ │ │ │ +    | preserves_flags │ │ │ │ +    | noreturn │ │ │ │ +    | nostack │ │ │ │ +    | att_syntax │ │ │ │ +    | raw │ │ │ │ +_R_e_g_O_p_e_r_a_n_d → ( _P_a_r_a_m_N_a_m_e = )? │ │ │ │ +    ( │ │ │ │ +          _D_i_r_S_p_e_c ( _R_e_g_S_p_e_c ) _E_x_p_r_e_s_s_i_o_n │ │ │ │ +        | _D_u_a_l_D_i_r_S_p_e_c ( _R_e_g_S_p_e_c ) _D_u_a_l_D_i_r_S_p_e_c_E_x_p_r_e_s_s_i_o_n │ │ │ │ +        | sym _P_a_t_h_E_x_p_r_e_s_s_i_o_n │ │ │ │ +        | const _E_x_p_r_e_s_s_i_o_n │ │ │ │ +        | label { _S_t_a_t_e_m_e_n_t_s? } │ │ │ │ +    ) │ │ │ │ +_P_a_r_a_m_N_a_m_e → _I_D_E_N_T_I_F_I_E_R___O_R___K_E_Y_W_O_R_D | _R_A_W___I_D_E_N_T_I_F_I_E_R │ │ │ │ +_D_u_a_l_D_i_r_S_p_e_c_E_x_p_r_e_s_s_i_o_n → │ │ │ │ +      _E_x_p_r_e_s_s_i_o_n │ │ │ │ +    | _E_x_p_r_e_s_s_i_o_n => _E_x_p_r_e_s_s_i_o_n │ │ │ │ +_R_e_g_S_p_e_c → _R_e_g_i_s_t_e_r_C_l_a_s_s | _E_x_p_l_i_c_i_t_R_e_g_i_s_t_e_r │ │ │ │ +_R_e_g_i_s_t_e_r_C_l_a_s_s → _I_D_E_N_T_I_F_I_E_R___O_R___K_E_Y_W_O_R_D │ │ │ │ +_E_x_p_l_i_c_i_t_R_e_g_i_s_t_e_r → _S_T_R_I_N_G___L_I_T_E_R_A_L │ │ │ │ +_D_i_r_S_p_e_c → │ │ │ │ +      in │ │ │ │ +    | out │ │ │ │ +    | lateout │ │ │ │ +_D_u_a_l_D_i_r_S_p_e_c → │ │ │ │ +      inout │ │ │ │ +    | inlateout │ │ │ │ +Show Railroad │ │ │ │ +AsmArgs AsmAttrFormatString , AsmAttrFormatString , AsmAttrOperand , │ │ │ │ +FormatString STRING_LITERAL RAW_STRING_LITERAL MacroInvocation │ │ │ │ +AsmAttrFormatString OuterAttribute FormatString │ │ │ │ +AsmOperand ClobberAbi AsmOptions RegOperand │ │ │ │ +AsmAttrOperand OuterAttribute AsmOperand │ │ │ │ +ClobberAbi clobber_abi ( Abi , Abi , ) │ │ │ │ +AsmOptions options ( AsmOption , AsmOption , ) │ │ │ │ +AsmOption pure nomem readonly preserves_flags noreturn nostack att_syntax raw │ │ │ │ +RegOperand ParamName = DirSpec ( RegSpec ) Expression DualDirSpec ( RegSpec ) │ │ │ │ +DualDirSpecExpression sym PathExpression const Expression label { Statements } │ │ │ │ +ParamName IDENTIFIER_OR_KEYWORD RAW_IDENTIFIER │ │ │ │ +DualDirSpecExpression Expression Expression => Expression │ │ │ │ +RegSpec RegisterClass ExplicitRegister │ │ │ │ +RegisterClass IDENTIFIER_OR_KEYWORD │ │ │ │ +ExplicitRegister STRING_LITERAL │ │ │ │ +DirSpec in out lateout │ │ │ │ +DualDirSpec inout inlateout │ │ │ │ +********** _MM_ii_ss_cc_ee_ll_ll_aa_nn_ee_oo_uu_ss_ _ss_uu_mm_mm_aa_rr_yy ********** │ │ │ │ +SSyynnttaaxx │ │ │ │ +_T_y_p_e_P_a_r_a_m_B_o_u_n_d_s → _T_y_p_e_P_a_r_a_m_B_o_u_n_d ( + _T_y_p_e_P_a_r_a_m_B_o_u_n_d )* +? │ │ │ │ +_T_y_p_e_P_a_r_a_m_B_o_u_n_d → _L_i_f_e_t_i_m_e | _T_r_a_i_t_B_o_u_n_d | _U_s_e_B_o_u_n_d │ │ │ │ +_T_r_a_i_t_B_o_u_n_d → │ │ │ │ +      ( ? | _F_o_r_L_i_f_e_t_i_m_e_s )? _T_y_p_e_P_a_t_h │ │ │ │ +    | ( ( ? | _F_o_r_L_i_f_e_t_i_m_e_s )? _T_y_p_e_P_a_t_h ) │ │ │ │ +_L_i_f_e_t_i_m_e_B_o_u_n_d_s → ( _L_i_f_e_t_i_m_e + )* _L_i_f_e_t_i_m_e? │ │ │ │ +_L_i_f_e_t_i_m_e → │ │ │ │ +      _L_I_F_E_T_I_M_E___O_R___L_A_B_E_L │ │ │ │ +    | 'static │ │ │ │ +    | '_ │ │ │ │ +_U_s_e_B_o_u_n_d → use _U_s_e_B_o_u_n_d_G_e_n_e_r_i_c_A_r_g_s │ │ │ │ +_U_s_e_B_o_u_n_d_G_e_n_e_r_i_c_A_r_g_s → │ │ │ │ +      < > │ │ │ │ +    | < ( _U_s_e_B_o_u_n_d_G_e_n_e_r_i_c_A_r_g , )* _U_s_e_B_o_u_n_d_G_e_n_e_r_i_c_A_r_g ,? > │ │ │ │ +_U_s_e_B_o_u_n_d_G_e_n_e_r_i_c_A_r_g → │ │ │ │ +      _L_i_f_e_t_i_m_e │ │ │ │ +    | _I_D_E_N_T_I_F_I_E_R │ │ │ │ +    | Self │ │ │ │ +_F_o_r_L_i_f_e_t_i_m_e_s → for _G_e_n_e_r_i_c_P_a_r_a_m_s │ │ │ │ +Show Railroad │ │ │ │ +TypeParamBounds TypeParamBound + TypeParamBound + │ │ │ │ +TypeParamBound Lifetime TraitBound UseBound │ │ │ │ +TraitBound ? ForLifetimes TypePath ( ? ForLifetimes TypePath ) │ │ │ │ +LifetimeBounds Lifetime + Lifetime │ │ │ │ +Lifetime LIFETIME_OR_LABEL 'static '_ │ │ │ │ +UseBound use UseBoundGenericArgs │ │ │ │ +UseBoundGenericArgs < > < UseBoundGenericArg , UseBoundGenericArg , > │ │ │ │ +UseBoundGenericArg Lifetime IDENTIFIER Self │ │ │ │ +ForLifetimes for GenericParams │ │ │ │ ********** _PP_aa_tt_hh_ss_ _ss_uu_mm_mm_aa_rr_yy ********** │ │ │ │ SSyynnttaaxx │ │ │ │ _S_i_m_p_l_e_P_a_t_h → │ │ │ │     ::? _S_i_m_p_l_e_P_a_t_h_S_e_g_m_e_n_t ( :: _S_i_m_p_l_e_P_a_t_h_S_e_g_m_e_n_t )* │ │ │ │ _S_i_m_p_l_e_P_a_t_h_S_e_g_m_e_n_t → │ │ │ │     _I_D_E_N_T_I_F_I_E_R | super | self | crate | $crate │ │ │ │ _P_a_t_h_I_n_E_x_p_r_e_s_s_i_o_n → │ │ │ │ @@ -26118,120 +26224,14 @@ │ │ │ │ QualifiedPathInExpression QualifiedPathType :: PathExprSegment │ │ │ │ QualifiedPathType < Type as TypePath > │ │ │ │ QualifiedPathInType QualifiedPathType :: TypePathSegment │ │ │ │ TypePath :: TypePathSegment :: TypePathSegment │ │ │ │ TypePathSegment PathIdentSegment :: GenericArgs TypePathFn │ │ │ │ TypePathFn ( TypePathFnInputs ) -> TypeNoBounds │ │ │ │ TypePathFnInputs Type , Type , │ │ │ │ -********** _TT_yy_pp_ee_ss_ _ss_uu_mm_mm_aa_rr_yy ********** │ │ │ │ -SSyynnttaaxx │ │ │ │ -_T_y_p_e → │ │ │ │ -      _T_y_p_e_N_o_B_o_u_n_d_s │ │ │ │ -    | _I_m_p_l_T_r_a_i_t_T_y_p_e │ │ │ │ -    | _T_r_a_i_t_O_b_j_e_c_t_T_y_p_e │ │ │ │ -_T_y_p_e_N_o_B_o_u_n_d_s → │ │ │ │ -      _P_a_r_e_n_t_h_e_s_i_z_e_d_T_y_p_e │ │ │ │ -    | _I_m_p_l_T_r_a_i_t_T_y_p_e_O_n_e_B_o_u_n_d │ │ │ │ -    | _T_r_a_i_t_O_b_j_e_c_t_T_y_p_e_O_n_e_B_o_u_n_d │ │ │ │ -    | _T_y_p_e_P_a_t_h │ │ │ │ -    | _T_u_p_l_e_T_y_p_e │ │ │ │ -    | _N_e_v_e_r_T_y_p_e │ │ │ │ -    | _R_a_w_P_o_i_n_t_e_r_T_y_p_e │ │ │ │ -    | _R_e_f_e_r_e_n_c_e_T_y_p_e │ │ │ │ -    | _A_r_r_a_y_T_y_p_e │ │ │ │ -    | _S_l_i_c_e_T_y_p_e │ │ │ │ -    | _I_n_f_e_r_r_e_d_T_y_p_e │ │ │ │ -    | _Q_u_a_l_i_f_i_e_d_P_a_t_h_I_n_T_y_p_e │ │ │ │ -    | _B_a_r_e_F_u_n_c_t_i_o_n_T_y_p_e │ │ │ │ -    | _M_a_c_r_o_I_n_v_o_c_a_t_i_o_n │ │ │ │ -_P_a_r_e_n_t_h_e_s_i_z_e_d_T_y_p_e → ( _T_y_p_e ) │ │ │ │ -_A_r_r_a_y_T_y_p_e → [ _T_y_p_e ; _E_x_p_r_e_s_s_i_o_n ] │ │ │ │ -_I_m_p_l_T_r_a_i_t_T_y_p_e → impl _T_y_p_e_P_a_r_a_m_B_o_u_n_d_s │ │ │ │ -_I_m_p_l_T_r_a_i_t_T_y_p_e_O_n_e_B_o_u_n_d → impl _T_r_a_i_t_B_o_u_n_d │ │ │ │ -_T_r_a_i_t_O_b_j_e_c_t_T_y_p_e → dyn? _T_y_p_e_P_a_r_a_m_B_o_u_n_d_s │ │ │ │ -_T_r_a_i_t_O_b_j_e_c_t_T_y_p_e_O_n_e_B_o_u_n_d → dyn? _T_r_a_i_t_B_o_u_n_d │ │ │ │ -_N_e_v_e_r_T_y_p_e → ! │ │ │ │ -_R_e_f_e_r_e_n_c_e_T_y_p_e → & _L_i_f_e_t_i_m_e? mut? _T_y_p_e_N_o_B_o_u_n_d_s │ │ │ │ -_R_a_w_P_o_i_n_t_e_r_T_y_p_e → * ( mut | const ) _T_y_p_e_N_o_B_o_u_n_d_s │ │ │ │ -_B_a_r_e_F_u_n_c_t_i_o_n_T_y_p_e → │ │ │ │ -    _F_o_r_L_i_f_e_t_i_m_e_s? _F_u_n_c_t_i_o_n_T_y_p_e_Q_u_a_l_i_f_i_e_r_s fn │ │ │ │ -       ( _F_u_n_c_t_i_o_n_P_a_r_a_m_e_t_e_r_s_M_a_y_b_e_N_a_m_e_d_V_a_r_i_a_d_i_c? ) _B_a_r_e_F_u_n_c_t_i_o_n_R_e_t_u_r_n_T_y_p_e? │ │ │ │ -_F_u_n_c_t_i_o_n_T_y_p_e_Q_u_a_l_i_f_i_e_r_s → unsafe? ( extern _A_b_i? )? │ │ │ │ -_B_a_r_e_F_u_n_c_t_i_o_n_R_e_t_u_r_n_T_y_p_e → -> _T_y_p_e_N_o_B_o_u_n_d_s │ │ │ │ -_F_u_n_c_t_i_o_n_P_a_r_a_m_e_t_e_r_s_M_a_y_b_e_N_a_m_e_d_V_a_r_i_a_d_i_c → │ │ │ │ -    _M_a_y_b_e_N_a_m_e_d_F_u_n_c_t_i_o_n_P_a_r_a_m_e_t_e_r_s | _M_a_y_b_e_N_a_m_e_d_F_u_n_c_t_i_o_n_P_a_r_a_m_e_t_e_r_s_V_a_r_i_a_d_i_c │ │ │ │ -_M_a_y_b_e_N_a_m_e_d_F_u_n_c_t_i_o_n_P_a_r_a_m_e_t_e_r_s → │ │ │ │ -    _M_a_y_b_e_N_a_m_e_d_P_a_r_a_m ( , _M_a_y_b_e_N_a_m_e_d_P_a_r_a_m )* ,? │ │ │ │ -_M_a_y_b_e_N_a_m_e_d_P_a_r_a_m → │ │ │ │ -    _O_u_t_e_r_A_t_t_r_i_b_u_t_e* ( ( _I_D_E_N_T_I_F_I_E_R | _ ) : )? _T_y_p_e │ │ │ │ -_M_a_y_b_e_N_a_m_e_d_F_u_n_c_t_i_o_n_P_a_r_a_m_e_t_e_r_s_V_a_r_i_a_d_i_c → │ │ │ │ -    ( _M_a_y_b_e_N_a_m_e_d_P_a_r_a_m , )* _M_a_y_b_e_N_a_m_e_d_P_a_r_a_m , _O_u_t_e_r_A_t_t_r_i_b_u_t_e* ... │ │ │ │ -_T_u_p_l_e_T_y_p_e → │ │ │ │ -      ( ) │ │ │ │ -    | ( ( _T_y_p_e , )+ _T_y_p_e? ) │ │ │ │ -_S_l_i_c_e_T_y_p_e → [ _T_y_p_e ] │ │ │ │ -_I_n_f_e_r_r_e_d_T_y_p_e → _ │ │ │ │ -Show Railroad │ │ │ │ -Type TypeNoBounds ImplTraitType TraitObjectType │ │ │ │ -TypeNoBounds ParenthesizedType ImplTraitTypeOneBound TraitObjectTypeOneBound │ │ │ │ -TypePath TupleType NeverType RawPointerType ReferenceType ArrayType SliceType │ │ │ │ -InferredType QualifiedPathInType BareFunctionType MacroInvocation │ │ │ │ -ParenthesizedType ( Type ) │ │ │ │ -ArrayType [ Type ; Expression ] │ │ │ │ -ImplTraitType impl TypeParamBounds │ │ │ │ -ImplTraitTypeOneBound impl TraitBound │ │ │ │ -TraitObjectType dyn TypeParamBounds │ │ │ │ -TraitObjectTypeOneBound dyn TraitBound │ │ │ │ -NeverType ! │ │ │ │ -ReferenceType & Lifetime mut TypeNoBounds │ │ │ │ -RawPointerType * mut const TypeNoBounds │ │ │ │ -BareFunctionType ForLifetimes FunctionTypeQualifiers fn │ │ │ │ -( FunctionParametersMaybeNamedVariadic ) BareFunctionReturnType │ │ │ │ -FunctionTypeQualifiers unsafe extern Abi │ │ │ │ -BareFunctionReturnType -> TypeNoBounds │ │ │ │ -FunctionParametersMaybeNamedVariadic MaybeNamedFunctionParameters │ │ │ │ -MaybeNamedFunctionParametersVariadic │ │ │ │ -MaybeNamedFunctionParameters MaybeNamedParam , MaybeNamedParam , │ │ │ │ -MaybeNamedParam OuterAttribute IDENTIFIER _ : Type │ │ │ │ -MaybeNamedFunctionParametersVariadic MaybeNamedParam , MaybeNamedParam , │ │ │ │ -OuterAttribute ... │ │ │ │ -TupleType ( ) ( Type , Type ) │ │ │ │ -SliceType [ Type ] │ │ │ │ -InferredType _ │ │ │ │ -********** _MM_ii_ss_cc_ee_ll_ll_aa_nn_ee_oo_uu_ss_ _ss_uu_mm_mm_aa_rr_yy ********** │ │ │ │ -SSyynnttaaxx │ │ │ │ -_T_y_p_e_P_a_r_a_m_B_o_u_n_d_s → _T_y_p_e_P_a_r_a_m_B_o_u_n_d ( + _T_y_p_e_P_a_r_a_m_B_o_u_n_d )* +? │ │ │ │ -_T_y_p_e_P_a_r_a_m_B_o_u_n_d → _L_i_f_e_t_i_m_e | _T_r_a_i_t_B_o_u_n_d | _U_s_e_B_o_u_n_d │ │ │ │ -_T_r_a_i_t_B_o_u_n_d → │ │ │ │ -      ( ? | _F_o_r_L_i_f_e_t_i_m_e_s )? _T_y_p_e_P_a_t_h │ │ │ │ -    | ( ( ? | _F_o_r_L_i_f_e_t_i_m_e_s )? _T_y_p_e_P_a_t_h ) │ │ │ │ -_L_i_f_e_t_i_m_e_B_o_u_n_d_s → ( _L_i_f_e_t_i_m_e + )* _L_i_f_e_t_i_m_e? │ │ │ │ -_L_i_f_e_t_i_m_e → │ │ │ │ -      _L_I_F_E_T_I_M_E___O_R___L_A_B_E_L │ │ │ │ -    | 'static │ │ │ │ -    | '_ │ │ │ │ -_U_s_e_B_o_u_n_d → use _U_s_e_B_o_u_n_d_G_e_n_e_r_i_c_A_r_g_s │ │ │ │ -_U_s_e_B_o_u_n_d_G_e_n_e_r_i_c_A_r_g_s → │ │ │ │ -      < > │ │ │ │ -    | < ( _U_s_e_B_o_u_n_d_G_e_n_e_r_i_c_A_r_g , )* _U_s_e_B_o_u_n_d_G_e_n_e_r_i_c_A_r_g ,? > │ │ │ │ -_U_s_e_B_o_u_n_d_G_e_n_e_r_i_c_A_r_g → │ │ │ │ -      _L_i_f_e_t_i_m_e │ │ │ │ -    | _I_D_E_N_T_I_F_I_E_R │ │ │ │ -    | Self │ │ │ │ -_F_o_r_L_i_f_e_t_i_m_e_s → for _G_e_n_e_r_i_c_P_a_r_a_m_s │ │ │ │ -Show Railroad │ │ │ │ -TypeParamBounds TypeParamBound + TypeParamBound + │ │ │ │ -TypeParamBound Lifetime TraitBound UseBound │ │ │ │ -TraitBound ? ForLifetimes TypePath ( ? ForLifetimes TypePath ) │ │ │ │ -LifetimeBounds Lifetime + Lifetime │ │ │ │ -Lifetime LIFETIME_OR_LABEL 'static '_ │ │ │ │ -UseBound use UseBoundGenericArgs │ │ │ │ -UseBoundGenericArgs < > < UseBoundGenericArg , UseBoundGenericArg , > │ │ │ │ -UseBoundGenericArg Lifetime IDENTIFIER Self │ │ │ │ -ForLifetimes for GenericParams │ │ │ │ ************ _SS_yy_nn_tt_aa_xx_ _ii_nn_dd_ee_xx ************ │ │ │ │ This appendix provides an index of tokens and common forms with links to where │ │ │ │ those elements are defined. │ │ │ │ ********** _KK_ee_yy_ww_oo_rr_dd_ss ********** │ │ │ │ KKeeyywwoorrdd UUssee │ │ │ │ _w_i_l_d_c_a_r_d_ _p_a_t_t_e_r_n, _i_n_f_e_r_r_e_d_ _c_o_n_s_t, _i_n_f_e_r_r_e_d_ _t_y_p_e, _p_l_a_c_e_h_o_l_d_e_r │ │ │ │ _ _l_i_f_e_t_i_m_e, _c_o_n_s_t_a_n_t_ _i_t_e_m_s, _e_x_t_e_r_n_ _c_r_a_t_e, _u_s_e_ _d_e_c_l_a_r_a_t_i_o_n_s,