--- /srv/rebuilderd/tmp/rebuilderd5GyTXQ/inputs/rust-doc_1.94.1+dfsg1-1~bpo13+2_all.deb +++ /srv/rebuilderd/tmp/rebuilderd5GyTXQ/out/rust-doc_1.94.1+dfsg1-1~bpo13+2_all.deb ├── file list │ @@ -1,3 +1,3 @@ │ -rw-r--r-- 0 0 0 4 2026-05-07 08:49:05.000000 debian-binary │ --rw-r--r-- 0 0 0 1085800 2026-05-07 08:49:05.000000 control.tar.xz │ --rw-r--r-- 0 0 0 25384412 2026-05-07 08:49:05.000000 data.tar.xz │ +-rw-r--r-- 0 0 0 1085812 2026-05-07 08:49:05.000000 control.tar.xz │ +-rw-r--r-- 0 0 0 25385592 2026-05-07 08:49:05.000000 data.tar.xz ├── control.tar.xz │ ├── control.tar │ │ ├── ./control │ │ │ @@ -1,13 +1,13 @@ │ │ │ Package: rust-doc │ │ │ Source: rustc │ │ │ Version: 1.94.1+dfsg1-1~bpo13+2 │ │ │ Architecture: all │ │ │ Maintainer: Debian Rust Maintainers │ │ │ -Installed-Size: 637679 │ │ │ +Installed-Size: 637659 │ │ │ Depends: libjs-jquery, libjs-highlight.js, libjs-mathjax, fonts-open-sans, fonts-font-awesome │ │ │ Recommends: cargo-doc │ │ │ Section: doc │ │ │ Priority: optional │ │ │ Homepage: http://www.rust-lang.org/ │ │ │ Description: Rust systems programming language - Documentation │ │ │ Rust is a curly-brace, block-structured expression language. It │ │ ├── ./md5sums │ │ │ ├── ./md5sums │ │ │ │┄ Files differ ├── data.tar.xz │ ├── data.tar │ │ ├── file list │ │ │ @@ -50718,44 +50718,44 @@ │ │ │ -rw-r--r-- 0 root (0) root (0) 20751 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/style-guide/toc-86a258df.js │ │ │ -rw-r--r-- 0 root (0) root (0) 3279 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/style-guide/toc.html │ │ │ -rw-r--r-- 0 root (0) root (0) 1694 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/style-guide/tomorrow-night-4c0ae647.css │ │ │ -rw-r--r-- 0 root (0) root (0) 25399 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/style-guide/types.html │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/ │ │ │ -rw-r--r-- 0 root (0) root (0) 6408 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/all.html │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/bench/ │ │ │ --rw-r--r-- 0 root (0) root (0) 4388 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/bench/fn.benchmark.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 4307 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/bench/fn.benchmark.html │ │ │ -rw-r--r-- 0 root (0) root (0) 3810 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/bench/fn.black_box.html │ │ │ -rw-r--r-- 0 root (0) root (0) 3585 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/bench/fn.fmt_bench_samples.html │ │ │ --rw-r--r-- 0 root (0) root (0) 3674 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/bench/fn.iter.html │ │ │ --rw-r--r-- 0 root (0) root (0) 4214 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/bench/fn.run_once.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 3647 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/bench/fn.iter.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 4160 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/bench/fn.run_once.html │ │ │ -rw-r--r-- 0 root (0) root (0) 5182 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/bench/index.html │ │ │ -rw-r--r-- 0 root (0) root (0) 130 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/bench/sidebar-items1.94.1.js │ │ │ --rw-r--r-- 0 root (0) root (0) 29563 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/bench/struct.BenchSamples.html │ │ │ --rw-r--r-- 0 root (0) root (0) 27742 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/bench/struct.Bencher.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 29293 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/bench/struct.BenchSamples.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 27526 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/bench/struct.Bencher.html │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/cli/ │ │ │ -rw-r--r-- 0 root (0) root (0) 408 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/cli/fn.parse_opts.html │ │ │ -rw-r--r-- 0 root (0) root (0) 396 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/cli/struct.TestOpts.html │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/console/ │ │ │ -rw-r--r-- 0 root (0) root (0) 416 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/console/fn.run_tests_console.html │ │ │ --rw-r--r-- 0 root (0) root (0) 3498 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/constant.ERROR_EXIT_CODE.html │ │ │ --rw-r--r-- 0 root (0) root (0) 28141 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/enum.ColorConfig.html │ │ │ --rw-r--r-- 0 root (0) root (0) 32018 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/enum.NamePadding.html │ │ │ --rw-r--r-- 0 root (0) root (0) 31891 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/enum.OutputFormat.html │ │ │ --rw-r--r-- 0 root (0) root (0) 29934 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/enum.RunIgnored.html │ │ │ --rw-r--r-- 0 root (0) root (0) 32765 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/enum.ShouldPanic.html │ │ │ --rw-r--r-- 0 root (0) root (0) 29723 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/enum.TestFn.html │ │ │ --rw-r--r-- 0 root (0) root (0) 37968 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/enum.TestName.html │ │ │ --rw-r--r-- 0 root (0) root (0) 33390 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/enum.TestType.html │ │ │ --rw-r--r-- 0 root (0) root (0) 4112 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/fn.assert_test_result.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 3468 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/constant.ERROR_EXIT_CODE.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 27991 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/enum.ColorConfig.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 31718 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/enum.NamePadding.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 31651 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/enum.OutputFormat.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 29694 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/enum.RunIgnored.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 32405 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/enum.ShouldPanic.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 29123 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/enum.TestFn.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 37518 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/enum.TestName.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 33090 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/enum.TestType.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 4052 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/fn.assert_test_result.html │ │ │ -rw-r--r-- 0 root (0) root (0) 3692 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/fn.convert_benchmarks_to_tests.html │ │ │ -rw-r--r-- 0 root (0) root (0) 3712 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/fn.filter_tests.html │ │ │ --rw-r--r-- 0 root (0) root (0) 3900 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/fn.print_merged_doctests_times.html │ │ │ --rw-r--r-- 0 root (0) root (0) 4266 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/fn.run_test.html │ │ │ --rw-r--r-- 0 root (0) root (0) 4166 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/fn.run_tests.html │ │ │ --rw-r--r-- 0 root (0) root (0) 4042 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/fn.run_tests_console.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 3840 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/fn.print_merged_doctests_times.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 4146 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/fn.run_test.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 4046 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/fn.run_tests.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 3982 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/fn.run_tests_console.html │ │ │ -rw-r--r-- 0 root (0) root (0) 3715 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/fn.test_main.html │ │ │ -rw-r--r-- 0 root (0) root (0) 3759 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/fn.test_main_static.html │ │ │ -rw-r--r-- 0 root (0) root (0) 3874 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/fn.test_main_static_abort.html │ │ │ -rw-r--r-- 0 root (0) root (0) 3975 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/fn.test_main_with_exit_callback.html │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/helpers/ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/helpers/metrics/ │ │ │ -rw-r--r-- 0 root (0) root (0) 420 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/helpers/metrics/struct.Metric.html │ │ │ @@ -50766,43 +50766,43 @@ │ │ │ -rw-r--r-- 0 root (0) root (0) 404 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/options/enum.OutputFormat.html │ │ │ -rw-r--r-- 0 root (0) root (0) 396 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/options/enum.RunIgnored.html │ │ │ -rw-r--r-- 0 root (0) root (0) 420 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/options/enum.RunStrategy.html │ │ │ -rw-r--r-- 0 root (0) root (0) 400 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/options/enum.ShouldPanic.html │ │ │ -rw-r--r-- 0 root (0) root (0) 392 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/options/struct.Options.html │ │ │ -rw-r--r-- 0 root (0) root (0) 498 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/sidebar-items1.94.1.js │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/stats/ │ │ │ --rw-r--r-- 0 root (0) root (0) 4441 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/stats/fn.winsorize.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 4387 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/stats/fn.winsorize.html │ │ │ -rw-r--r-- 0 root (0) root (0) 4907 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/stats/index.html │ │ │ -rw-r--r-- 0 root (0) root (0) 83 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/stats/sidebar-items1.94.1.js │ │ │ --rw-r--r-- 0 root (0) root (0) 37543 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/stats/struct.Summary.html │ │ │ --rw-r--r-- 0 root (0) root (0) 28935 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/stats/trait.Stats.html │ │ │ --rw-r--r-- 0 root (0) root (0) 29439 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/struct.Options.html │ │ │ --rw-r--r-- 0 root (0) root (0) 34804 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/struct.TestDesc.html │ │ │ --rw-r--r-- 0 root (0) root (0) 22302 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/struct.TestDescAndFn.html │ │ │ --rw-r--r-- 0 root (0) root (0) 31399 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/struct.TestId.html │ │ │ --rw-r--r-- 0 root (0) root (0) 33524 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/struct.TestOpts.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 36544 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/stats/struct.Summary.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 27612 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/stats/trait.Stats.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 29109 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/struct.Options.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 34054 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/struct.TestDesc.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 22062 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/struct.TestDescAndFn.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 31039 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/struct.TestId.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 32714 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/struct.TestOpts.html │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/ │ │ │ --rw-r--r-- 0 root (0) root (0) 30357 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/enum.RunIgnored.html │ │ │ --rw-r--r-- 0 root (0) root (0) 25713 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/enum.RunStrategy.html │ │ │ --rw-r--r-- 0 root (0) root (0) 33230 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/enum.ShouldPanic.html │ │ │ --rw-r--r-- 0 root (0) root (0) 38514 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/enum.TestName.html │ │ │ --rw-r--r-- 0 root (0) root (0) 31006 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/enum.TestResult.html │ │ │ --rw-r--r-- 0 root (0) root (0) 33855 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/enum.TestType.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 30141 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/enum.RunIgnored.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 25578 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/enum.RunStrategy.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 32906 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/enum.ShouldPanic.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 38109 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/enum.TestName.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 30790 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/enum.TestResult.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 33585 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/enum.TestType.html │ │ │ -rw-r--r-- 0 root (0) root (0) 4494 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/fn.parse_opts.html │ │ │ -rw-r--r-- 0 root (0) root (0) 11090 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/index.html │ │ │ -rw-r--r-- 0 root (0) root (0) 252 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/sidebar-items1.94.1.js │ │ │ --rw-r--r-- 0 root (0) root (0) 29687 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/struct.Metric.html │ │ │ --rw-r--r-- 0 root (0) root (0) 30179 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/struct.MetricMap.html │ │ │ --rw-r--r-- 0 root (0) root (0) 29844 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/struct.Options.html │ │ │ --rw-r--r-- 0 root (0) root (0) 35221 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/struct.TestDesc.html │ │ │ --rw-r--r-- 0 root (0) root (0) 22617 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/struct.TestDescAndFn.html │ │ │ --rw-r--r-- 0 root (0) root (0) 31917 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/struct.TestExecTime.html │ │ │ --rw-r--r-- 0 root (0) root (0) 31864 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/struct.TestId.html │ │ │ --rw-r--r-- 0 root (0) root (0) 33886 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/struct.TestOpts.html │ │ │ --rw-r--r-- 0 root (0) root (0) 36262 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/struct.TestTimeOptions.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 29417 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/struct.Metric.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 29882 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/struct.MetricMap.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 29547 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/struct.Options.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 34546 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/struct.TestDesc.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 22401 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/struct.TestDescAndFn.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 31701 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/struct.TestExecTime.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 31540 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/struct.TestId.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 33157 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/struct.TestOpts.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 35911 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test/struct.TestTimeOptions.html │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test_result/ │ │ │ -rw-r--r-- 0 root (0) root (0) 416 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/test_result/enum.TestResult.html │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/time/ │ │ │ -rw-r--r-- 0 root (0) root (0) 432 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/time/struct.TestExecTime.html │ │ │ -rw-r--r-- 0 root (0) root (0) 444 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/time/struct.TestTimeOptions.html │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/types/ │ │ │ -rw-r--r-- 0 root (0) root (0) 400 2026-05-07 08:49:05.000000 ./usr/share/doc/rust-doc/html/test/types/enum.NamePadding.html │ │ ├── ./usr/share/doc/rust-doc/html/reference/grammar.html │ │ │ @@ -179,2797 +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 )* ,?

│ │ │ -

│ │ │ -
│ │ │ - │ │ │ -
│ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -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 │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ -

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 │ │ │ │ │ │ @@ -3275,14 +555,157 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Visibility │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +pub │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +pub │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +crate │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +pub │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +self │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +pub │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +super │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +pub │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +in │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Trait │ │ │ │ │ │ @@ -3414,14 +837,212 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypeAlias │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericParams │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypeParamBounds │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +WhereClause │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ += │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +WhereClause │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +; │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ConstantItem │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +const │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +_ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ += │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +; │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Struct │ │ │ │ │ │ @@ -3858,14 +1479,298 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Implementation │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +InherentImpl │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TraitImpl │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +InherentImpl │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +impl │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericParams │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +WhereClause │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +{ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +InnerAttribute │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +AssociatedItem │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +} │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TraitImpl │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +unsafe │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +impl │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericParams │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +! │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypePath │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +for │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +WhereClause │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +{ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +InnerAttribute │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +AssociatedItem │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +} │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Function │ │ │ │ │ │ @@ -4523,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 │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -} │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -EnumVariantDiscriminant │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -= │ │ │ + │ │ │ + │ │ │ +: │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ +Type │ │ │ │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -UseDeclaration │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -use │ │ │ + │ │ │ + │ │ │ += │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -UseTree │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ ; │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -UseTree │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ - │ │ │ + │ │ │ + │ │ │ +ExternCrate │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -:: │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -* │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -:: │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -{ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -UseTree │ │ │ + │ │ │ + │ │ │ +extern │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -, │ │ │ + │ │ │ + │ │ │ +crate │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -UseTree │ │ │ + │ │ │ + │ │ │ +CrateRef │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -} │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ + │ │ │ + │ │ │ +AsClause │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -as │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -_ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ +; │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │
│ │ │ │ │ │ @@ -5606,105 +3277,14 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -StaticItem │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ItemSafety │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -static │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -mut │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -: │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -= │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -; │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ExternBlock │ │ │ │ │ │ @@ -5873,257 +3453,295 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeAlias │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -type │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +:: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +{ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -GenericParams │ │ │ + │ │ │ + │ │ │ +UseTree │ │ │ │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -: │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TypeParamBounds │ │ │ + │ │ │ + │ │ │ +UseTree │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -WhereClause │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -= │ │ │ + │ │ │ + │ │ │ +} │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Type │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +as │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -WhereClause │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +_ │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -; │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │ @@ -6239,545 +3857,350 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ - │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConstParam │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -const │ │ │ - │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ IDENTIFIER │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -: │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -= │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -BlockExpression │ │ │ + │ │ │ + │ │ │ +EnumVariantTuple │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ + │ │ │ + │ │ │ +EnumVariantStruct │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -- │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -LiteralExpression │ │ │ + │ │ │ + │ │ │ +EnumVariantDiscriminant │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeBoundWhereClauseItem │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ForLifetimes │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -: │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeParamBounds │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │ @@ -6790,21 +4213,14 @@ │ │ │

LINE_COMMENT
      // ( ~[/ ! LF] | // ) ~LF*
    | //

│ │ │

BLOCK_COMMENT
      /*
        ( ~[* !] | ** | BLOCK_COMMENT_OR_DOC )
        ( BLOCK_COMMENT_OR_DOC | ~*/ )*
      */
    | /**/
    | /***/

│ │ │

INNER_LINE_DOC
    //! ~[LF CR]*

│ │ │

INNER_BLOCK_DOC
    /*! ( BLOCK_COMMENT_OR_DOC | ~[*/ CR] )* */

│ │ │

OUTER_LINE_DOC
    /// ( ~/ ~[LF CR]* )?

│ │ │

OUTER_BLOCK_DOC
    /**
      ( ~* | BLOCK_COMMENT_OR_DOC )
      ( BLOCK_COMMENT_OR_DOC | ~[*/ CR] )*
    */

│ │ │

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 )not immediately 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

│ │ │

SUFFIXIDENTIFIER_OR_KEYWORDexcept _

│ │ │

SUFFIX_NO_ESUFFIXnot beginning with e or E

│ │ │

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 }

│ │ │ @@ -6844,14 +4260,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 )not immediately followed by 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'

│ │ │

│ │ │
│ │ │ │ │ │ @@ -7553,274 +4976,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# │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -not immediately followed by XID_Continue │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -_ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -crate │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -self │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Self │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -super │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Token │ │ │ │ │ │ @@ -11430,14 +8593,274 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +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# │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +not immediately followed by XID_Continue │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +_ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +crate │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +self │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Self │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +super │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ WHITESPACE │ │ │ │ │ │ @@ -11621,1394 +9044,1148 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │ -

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 )

│ │ │

│ │ │
│ │ │ │ │ │
│ │ │ -
│ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +InferredType │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -: │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ +_ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BareFunctionType │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -= │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ForLifetimes │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +FunctionTypeQualifiers │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +fn │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -= │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -except LazyBooleanExpression or end with a `}` │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +FunctionParametersMaybeNamedVariadic │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -else │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -BlockExpression │ │ │ + │ │ │ + │ │ │ +BareFunctionReturnType │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -; │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ - │ │ │ - │ │ │ -

Macros 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

│ │ │ -

│ │ │ -
│ │ │ - │ │ │ -
│ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MaybeNamedFunctionParameters │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -{ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MaybeNamedParam │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TokenTree │ │ │ + │ │ │ + │ │ │ +MaybeNamedParam │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -} │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -MacroInvocationSemi │ │ │ + │ │ │ + │ │ │ +MaybeNamedFunctionParametersVariadic │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ + │ │ │ + │ │ │ +MaybeNamedParam │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -! │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MaybeNamedParam │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -( │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TokenTree │ │ │ + │ │ │ + │ │ │ +OuterAttribute │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -) │ │ │ + │ │ │ + │ │ │ +... │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -; │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +NeverType │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ ! │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SliceType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ [ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TokenTree │ │ │ + │ │ │ + │ │ │ +Type │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ ] │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -; │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ReferenceType │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -! │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -{ │ │ │ + │ │ │ + │ │ │ +& │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TokenTree │ │ │ + │ │ │ + │ │ │ +Lifetime │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -} │ │ │ + │ │ │ + │ │ │ +mut │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypeNoBounds │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -MacroRulesDef │ │ │ + │ │ │ + │ │ │ +TupleType │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ( │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MacroRules │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ ) │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -; │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -[ │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MacroRules │ │ │ + │ │ │ + │ │ │ +Type │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -] │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -; │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -{ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MacroRules │ │ │ + │ │ │ + │ │ │ +Type │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -} │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -MacroMatcher │ │ │ + │ │ │ + │ │ │ +Type │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MacroMatch │ │ │ + │ │ │ + │ │ │ +TypeNoBounds │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -[ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MacroMatch │ │ │ + │ │ │ + │ │ │ +ImplTraitType │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -] │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -{ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MacroMatch │ │ │ + │ │ │ + │ │ │ +TraitObjectType │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -} │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -MacroMatch │ │ │ + │ │ │ + │ │ │ +TypeNoBounds │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -except `$` and delimiters │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Token │ │ │ + │ │ │ + │ │ │ +ParenthesizedType │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MacroMatcher │ │ │ + │ │ │ + │ │ │ +ImplTraitTypeOneBound │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -$ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -except `crate` │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -IDENTIFIER_OR_KEYWORD │ │ │ + │ │ │ + │ │ │ +TraitObjectTypeOneBound │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RAW_IDENTIFIER │ │ │ + │ │ │ + │ │ │ +TypePath │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -: │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MacroFragSpec │ │ │ + │ │ │ + │ │ │ +TupleType │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -$ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MacroMatch │ │ │ + │ │ │ + │ │ │ +NeverType │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MacroRepSep │ │ │ + │ │ │ + │ │ │ +RawPointerType │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MacroRepOp │ │ │ + │ │ │ + │ │ │ +ReferenceType │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MacroFragSpec │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -block │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -expr │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -expr_2021 │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ident │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -item │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ArrayType │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -lifetime │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -literal │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -meta │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -pat │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ -pat_param │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -path │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -stmt │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -tt │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ty │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -vis │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ +SliceType │ │ │ │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MacroRepOp │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -* │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BareFunctionType │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -+ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -? │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MacroInvocation │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ - │ │ │ │ │ │ @@ -14516,2758 +11693,2287 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │ -

Expressions summary

│ │ │ +

Attributes summary

│ │ │
│ │ │

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

│ │ │ -

ExpressionWithoutBlock
    OuterAttribute*
    (
        LiteralExpression
      | PathExpression
      | OperatorExpression
      | GroupedExpression
      | ArrayExpression
      | AwaitExpression
      | IndexExpression
      | TupleExpression
      | TupleIndexingExpression
      | StructExpression
      | CallExpression
      | MethodCallExpression
      | FieldExpression
      | ClosureExpression
      | AsyncBlockExpression
      | ContinueExpression
      | BreakExpression
      | RangeExpression
      | ReturnExpression
      | UnderscoreExpression
      | MacroInvocation
    )

│ │ │ -

ExpressionWithBlock
    OuterAttribute*
    (
        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 Expression

│ │ │ -

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 )

│ │ │ +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 )* ,? )? )

│ │ │

│ │ │
│ │ │ │ │ │
│ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Attr │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -GroupedExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -ArrayExpression │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -AwaitExpression │ │ │ + │ │ │ + │ │ │ +AttrInput │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IndexExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ +unsafe │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TupleExpression │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TupleIndexingExpression │ │ │ + │ │ │ + │ │ │ +AttrInput │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -StructExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CallExpression │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MethodCallExpression │ │ │ │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MetaItem │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -BreakExpression │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RangeExpression │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ += │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -ReturnExpression │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -UnderscoreExpression │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MacroInvocation │ │ │ + │ │ │ + │ │ │ +MetaSeq │ │ │ │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -ExpressionWithBlock │ │ │ + │ │ │ + │ │ │ +MetaSeq │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -OuterAttribute │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -BlockExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConstBlockExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -UnsafeBlockExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -LoopExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IfExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MatchExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ArrayExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -[ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ArrayElements │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -] │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -StructExprFields │ │ │ + │ │ │ + │ │ │ +MetaListPaths │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -StructExprField │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ , │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -StructExprField │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ , │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -StructBase │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -StructExprField │ │ │ + │ │ │ + │ │ │ +MetaListIdents │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -OuterAttribute │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ IDENTIFIER │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ IDENTIFIER │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TUPLE_INDEX │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -: │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -StructBase │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -.. │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -OperatorExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -BorrowExpression │ │ │ - │ │ │ + │ │ │ + │ │ │ +MetaListNameValueStr │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -DereferenceExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TryPropagationExpression │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -NegationExpression │ │ │ + │ │ │ + │ │ │ +MetaNameValueStr │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ArithmeticOrLogicalExpression │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -ComparisonExpression │ │ │ + │ │ │ + │ │ │ +MetaNameValueStr │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -LazyBooleanExpression │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeCastExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AssignmentExpression │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CompoundAssignmentExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -BorrowExpression │ │ │ + │ │ │ + │ │ │ +InlineAttribute │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -& │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -&& │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ +inline │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -& │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -&& │ │ │ - │ │ │ + │ │ │ + │ │ │ +always │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -mut │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -& │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -&& │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -raw │ │ │ + │ │ │ + │ │ │ +inline │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -const │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -& │ │ │ + │ │ │ + │ │ │ +never │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -&& │ │ │ - │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -raw │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -mut │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ +inline │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ - │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -ArithmeticOrLogicalExpression │ │ │ + │ │ │ + │ │ │ +ProcMacroDeriveAttribute │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ +proc_macro_derive │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -+ │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +DeriveMacroName │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -- │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +DeriveMacroAttributes │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -* │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -/ │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +DeriveMacroAttributes │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -& │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +attributes │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -| │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -^ │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -<< │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ +

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* }

│ │ │ +

│ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -ComparisonExpression │ │ │ + │ │ │ + │ │ │ +MacroRulesDef │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -== │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +MacroRules │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -!= │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ +; │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -> │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ +[ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +MacroRules │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -< │ │ │ + │ │ │ + │ │ │ +] │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ +; │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ ->= │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ +{ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +MacroRules │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -<= │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +} │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CompoundAssignmentExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -+= │ │ │ + │ │ │ + │ │ │ +[ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +MacroMatch │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ --= │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +] │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -*= │ │ │ + │ │ │ + │ │ │ +{ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +MacroMatch │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -/= │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +} │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -%= │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MacroMatch │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +except `$` and delimiters │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +Token │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -&= │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +MacroMatcher │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -|= │ │ │ + │ │ │ + │ │ │ +$ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +except `crate` │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +IDENTIFIER_OR_KEYWORD │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +RAW_IDENTIFIER │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -^= │ │ │ + │ │ │ + │ │ │ +: │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +MacroFragSpec │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ +$ │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -<<= │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +MacroMatch │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +MacroRepSep │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ ->>= │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +MacroRepOp │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -LoopExpression │ │ │ + │ │ │ + │ │ │ +MacroFragSpec │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -LoopLabel │ │ │ + │ │ │ + │ │ │ + │ │ │ +block │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -InfiniteLoopExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +expr │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +expr_2021 │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -PredicateLoopExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ident │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +item │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +lifetime │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IteratorLoopExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ +literal │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -LabelBlockExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +meta │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +pat │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +pat_param │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +path │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +stmt │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +tt │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ty │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +vis │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ContinueExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +] │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -continue │ │ │ + │ │ │ + │ │ │ +{ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -LIFETIME_OR_LABEL │ │ │ + │ │ │ + │ │ │ +TokenTree │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +} │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ +
│ │ │ + │ │ │ +

Expressions summary

│ │ │ +
│ │ │ +

Syntax │ │ │ +
│ │ │ +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 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?

│ │ │ +

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*
    (
        LiteralExpression
      | PathExpression
      | OperatorExpression
      | GroupedExpression
      | ArrayExpression
      | AwaitExpression
      | IndexExpression
      | TupleExpression
      | TupleIndexingExpression
      | StructExpression
      | CallExpression
      | MethodCallExpression
      | FieldExpression
      | ClosureExpression
      | AsyncBlockExpression
      | ContinueExpression
      | BreakExpression
      | RangeExpression
      | ReturnExpression
      | UnderscoreExpression
      | MacroInvocation
    )

│ │ │ +

ExpressionWithBlock
    OuterAttribute*
    (
        BlockExpression
      | ConstBlockExpression
      | UnsafeBlockExpression
      | LoopExpression
      | IfExpression
      | MatchExpression
    )

│ │ │ +

│ │ │ +
│ │ │ + │ │ │ +
│ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ LiteralExpression │ │ │ │ │ │ @@ -17404,501 +14110,331 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -UnsafeBlockExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -unsafe │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -BlockExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ +move │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MatchArms │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MatchArm │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -=> │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ExpressionWithoutBlock │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ , │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -ExpressionWithBlock │ │ │ + │ │ │ + │ │ │ +ClosureParam │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MatchArm │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -=> │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ , │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │
│ │ │ │ │ │ @@ -18313,396 +14865,626 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TupleExpression │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -|| │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -| │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -ClosureParameters │ │ │ + │ │ │ + │ │ │ +TupleElements │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -| │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TupleElements │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ Expression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ --> │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeNoBounds │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -BlockExpression │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ArrayExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -, │ │ │ + │ │ │ + │ │ │ +[ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ArrayElements │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +] │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -ClosureParam │ │ │ + │ │ │ + │ │ │ +ArrayElements │ │ │ │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -OuterAttribute │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -PatternNoTopAlt │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -: │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Type │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +; │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +StructExprField │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +OuterAttribute │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TUPLE_INDEX │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +: │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ Expression │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PathExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TUPLE_INDEX │ │ │ + │ │ │ + │ │ │ +PathInExpression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +QualifiedPathInExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │ @@ -18980,2243 +15762,4446 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -

Paths summary

│ │ │ -
│ │ │ -

Syntax │ │ │ -
│ │ │ -SimplePath
    ::? SimplePathSegment ( :: SimplePathSegment )*

│ │ │ -

SimplePathSegment
    IDENTIFIER | super | self | crate | $crate

│ │ │ -

PathInExpression
    ::? PathExprSegment ( :: PathExprSegment )*

│ │ │ -

PathExprSegment
    PathIdentSegment ( :: GenericArgs )?

│ │ │ -

PathIdentSegment
    IDENTIFIER | super | self | Self | crate | $crate

│ │ │ -

GenericArgs
      < >
    | < ( GenericArg , )* GenericArg ,? >

│ │ │ -

GenericArg
    Lifetime | Type | GenericArgsConst | GenericArgsBinding | GenericArgsBounds

│ │ │ -

GenericArgsConst
      BlockExpression
    | LiteralExpression
    | - LiteralExpression
    | SimplePathSegment

│ │ │ -

GenericArgsBinding
    IDENTIFIER GenericArgs? = Type

│ │ │ -

GenericArgsBounds
    IDENTIFIER GenericArgs? : TypeParamBounds

│ │ │ -

QualifiedPathInExpressionQualifiedPathType ( :: PathExprSegment )+

│ │ │ -

QualifiedPathType< Type ( as TypePath )? >

│ │ │ -

QualifiedPathInTypeQualifiedPathType ( :: TypePathSegment )+

│ │ │ -

TypePath::? TypePathSegment ( :: TypePathSegment )*

│ │ │ -

TypePathSegmentPathIdentSegment ( ::? ( GenericArgs | TypePathFn ) )?

│ │ │ -

TypePathFn( TypePathFnInputs? ) ( -> TypeNoBounds )?

│ │ │ -

TypePathFnInputsType ( , Type )* ,?

│ │ │ -

│ │ │ -
│ │ │ - │ │ │ -
│ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ + │ │ │ + │ │ │ +MatchArms │ │ │ │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MatchArm │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -:: │ │ │ + │ │ │ + │ │ │ +=> │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ExpressionWithoutBlock │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -SimplePathSegment │ │ │ + │ │ │ + │ │ │ +ExpressionWithBlock │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MatchArm │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -:: │ │ │ + │ │ │ + │ │ │ +=> │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -SimplePathSegment │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MatchArmGuard │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -$crate │ │ │ + │ │ │ + │ │ │ +if │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -PathInExpression │ │ │ + │ │ │ + │ │ │ +LoopExpression │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -:: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +LoopLabel │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -PathExprSegment │ │ │ + │ │ │ + │ │ │ +InfiniteLoopExpression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -:: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PredicateLoopExpression │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -PathExprSegment │ │ │ + │ │ │ + │ │ │ +IteratorLoopExpression │ │ │ │ │ │ │ │ │ - │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +LabelBlockExpression │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IteratorLoopExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +for │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Pattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +in │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +except StructExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BlockExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BreakExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -$crate │ │ │ + │ │ │ + │ │ │ +break │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +LIFETIME_OR_LABEL │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ContinueExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -< │ │ │ + │ │ │ + │ │ │ +continue │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -> │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +LIFETIME_OR_LABEL │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +CallExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -< │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -GenericArg │ │ │ + │ │ │ + │ │ │ +CallParams │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -, │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +CallParams │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -GenericArg │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ , │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -> │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -GenericArg │ │ │ + │ │ │ + │ │ │ +OperatorExpression │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Lifetime │ │ │ + │ │ │ + │ │ │ +BorrowExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Type │ │ │ + │ │ │ + │ │ │ +DereferenceExpression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -GenericArgsConst │ │ │ + │ │ │ + │ │ │ +TryPropagationExpression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ -GenericArgsBinding │ │ │ +NegationExpression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -GenericArgsBounds │ │ │ + │ │ │ + │ │ │ +ArithmeticOrLogicalExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ComparisonExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +LazyBooleanExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypeCastExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +AssignmentExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +CompoundAssignmentExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ -GenericArgsConst │ │ │ +BorrowExpression │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +& │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +&& │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -BlockExpression │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +& │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +&& │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +mut │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -LiteralExpression │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -- │ │ │ + │ │ │ + │ │ │ +& │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +&& │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +raw │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +const │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -LiteralExpression │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +& │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +&& │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +raw │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +mut │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -SimplePathSegment │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TryPropagationExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -GenericArgs │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +? │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +NegationExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -= │ │ │ + │ │ │ + │ │ │ +- │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Type │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +! │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -GenericArgsBounds │ │ │ + │ │ │ + │ │ │ +ArithmeticOrLogicalExpression │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ ++ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -GenericArgs │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -: │ │ │ + │ │ │ + │ │ │ +- │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TypeParamBounds │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +* │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +/ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +% │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +& │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +| │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +^ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +<< │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +>> │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -QualifiedPathInExpression │ │ │ + │ │ │ + │ │ │ +ComparisonExpression │ │ │ │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -QualifiedPathType │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +== │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -:: │ │ │ + │ │ │ + │ │ │ +!= │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -PathExprSegment │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +> │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +< │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +>= │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +<= │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypeCastExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -> │ │ │ + │ │ │ + │ │ │ +as │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypeNoBounds │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -TypePath │ │ │ + │ │ │ + │ │ │ +CompoundAssignmentExpression │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -:: │ │ │ + │ │ │ + │ │ │ ++= │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TypePathSegment │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +-= │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -:: │ │ │ + │ │ │ + │ │ │ +*= │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TypePathSegment │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +/= │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +%= │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypePathSegment │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +&= │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -PathIdentSegment │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +|= │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -:: │ │ │ + │ │ │ + │ │ │ +^= │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -GenericArgs │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +<<= │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TypePathFn │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +>>= │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +AsyncBlockExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +async │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -, │ │ │ + │ │ │ + │ │ │ +move │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BlockExpression │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ConstBlockExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +const │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BlockExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │
│ │ │ │ │ │ -

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_

│ │ │ -

│ │ │ -
│ │ │ - │ │ │ -
│ │ │ -
│ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -TypeNoBounds │ │ │ + │ │ │ + │ │ │ +ExpressionWithoutBlock │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +OuterAttribute │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -ParenthesizedType │ │ │ + │ │ │ + │ │ │ +LiteralExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -ImplTraitTypeOneBound │ │ │ + │ │ │ + │ │ │ +PathExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TraitObjectTypeOneBound │ │ │ + │ │ │ + │ │ │ +OperatorExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TypePath │ │ │ + │ │ │ + │ │ │ +GroupedExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TupleType │ │ │ + │ │ │ + │ │ │ +ArrayExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -NeverType │ │ │ + │ │ │ + │ │ │ +AwaitExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RawPointerType │ │ │ + │ │ │ + │ │ │ +IndexExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -ReferenceType │ │ │ + │ │ │ + │ │ │ +TupleExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -ArrayType │ │ │ + │ │ │ + │ │ │ +TupleIndexingExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -SliceType │ │ │ + │ │ │ + │ │ │ +StructExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -InferredType │ │ │ + │ │ │ + │ │ │ +CallExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -QualifiedPathInType │ │ │ + │ │ │ + │ │ │ +MethodCallExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -BareFunctionType │ │ │ + │ │ │ + │ │ │ +FieldExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ClosureExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +AsyncBlockExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ContinueExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BreakExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ReturnExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +UnderscoreExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ MacroInvocation │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -ParenthesizedType │ │ │ + │ │ │ + │ │ │ +ExpressionWithBlock │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +OuterAttribute │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BlockExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +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 ;?

│ │ │ +

│ │ │ +
│ │ │ + │ │ │ +
│ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Statement │ │ │ │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -( │ │ │ + │ │ │ + │ │ │ +; │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Type │ │ │ + │ │ │ + │ │ │ +Item │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +LetStatement │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ExpressionStatement │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +OuterAttribute │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MacroInvocationSemi │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -ArrayType │ │ │ + │ │ │ + │ │ │ +LetStatement │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +OuterAttribute │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -[ │ │ │ + │ │ │ + │ │ │ +let │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PatternNoTopAlt │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +: │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ Type │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -; │ │ │ + │ │ │ + │ │ │ += │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ Expression │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -] │ │ │ + │ │ │ + │ │ │ += │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +except LazyBooleanExpression or end with a `}` │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +else │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +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 )* ,?

│ │ │ +

│ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ConfigurationAny │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +any │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TraitBound │ │ │ + │ │ │ + │ │ │ +ConfigurationPredicateList │ │ │ │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ + │ │ │ +

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

│ │ │ +

│ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ClobberAbi │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +clobber_abi │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Abi │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ , │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MaybeNamedParam │ │ │ + │ │ │ + │ │ │ +Abi │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ , │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +AsmOption │ │ │ + │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +pure │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -_ │ │ │ + │ │ │ + │ │ │ +nomem │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -: │ │ │ + │ │ │ + │ │ │ +readonly │ │ │ │ │ │ - │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +preserves_flags │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +noreturn │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +nostack │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +att_syntax │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +raw │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -MaybeNamedFunctionParametersVariadic │ │ │ + │ │ │ + │ │ │ +RegOperand │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MaybeNamedParam │ │ │ + │ │ │ + │ │ │ +ParamName │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -, │ │ │ + │ │ │ + │ │ │ += │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +DirSpec │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MaybeNamedParam │ │ │ + │ │ │ + │ │ │ +RegSpec │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -, │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -OuterAttribute │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +DualDirSpec │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -... │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RegSpec │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +DualDirSpecExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +sym │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PathExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +const │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +label │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +{ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Statements │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +} │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RegSpec │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Type │ │ │ + │ │ │ + │ │ │ +RegisterClass │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ExplicitRegister │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RegisterClass │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER_OR_KEYWORD │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +DirSpec │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -[ │ │ │ + │ │ │ + │ │ │ +in │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -] │ │ │ + │ │ │ + │ │ │ +out │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +lateout │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ - │ │ │ │ │ │ @@ -21728,14 +20713,1029 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │ +

Paths summary

│ │ │ +
│ │ │ +

Syntax │ │ │ +
│ │ │ +SimplePath
    ::? SimplePathSegment ( :: SimplePathSegment )*

│ │ │ +

SimplePathSegment
    IDENTIFIER | super | self | crate | $crate

│ │ │ +

PathInExpression
    ::? PathExprSegment ( :: PathExprSegment )*

│ │ │ +

PathExprSegment
    PathIdentSegment ( :: GenericArgs )?

│ │ │ +

PathIdentSegment
    IDENTIFIER | super | self | Self | crate | $crate

│ │ │ +

GenericArgs
      < >
    | < ( GenericArg , )* GenericArg ,? >

│ │ │ +

GenericArg
    Lifetime | Type | GenericArgsConst | GenericArgsBinding | GenericArgsBounds

│ │ │ +

GenericArgsConst
      BlockExpression
    | LiteralExpression
    | - LiteralExpression
    | SimplePathSegment

│ │ │ +

GenericArgsBinding
    IDENTIFIER GenericArgs? = Type

│ │ │ +

GenericArgsBounds
    IDENTIFIER GenericArgs? : TypeParamBounds

│ │ │ +

QualifiedPathInExpressionQualifiedPathType ( :: PathExprSegment )+

│ │ │ +

QualifiedPathType< Type ( as TypePath )? >

│ │ │ +

QualifiedPathInTypeQualifiedPathType ( :: TypePathSegment )+

│ │ │ +

TypePath::? TypePathSegment ( :: TypePathSegment )*

│ │ │ +

TypePathSegmentPathIdentSegment ( ::? ( GenericArgs | TypePathFn ) )?

│ │ │ +

TypePathFn( TypePathFnInputs? ) ( -> TypeNoBounds )?

│ │ │ +

TypePathFnInputsType ( , Type )* ,?

│ │ │ +

│ │ │ +
│ │ │ + │ │ │ +
│ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +:: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SimplePathSegment │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +:: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SimplePathSegment │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SimplePathSegment │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +super │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +self │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +crate │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +$crate │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PathInExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +:: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PathExprSegment │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +:: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PathExprSegment │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PathExprSegment │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PathIdentSegment │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +:: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericArgs │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PathIdentSegment │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +super │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +self │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Self │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +crate │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +$crate │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericArgs │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +< │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +> │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +< │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericArg │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericArg │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +> │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericArg │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Lifetime │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericArgsConst │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericArgsBinding │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericArgsBounds │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericArgsConst │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BlockExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +LiteralExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +- │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +LiteralExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SimplePathSegment │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericArgsBinding │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericArgs │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ += │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericArgsBounds │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericArgs │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypeParamBounds │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +QualifiedPathInExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +QualifiedPathType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +:: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PathExprSegment │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +QualifiedPathType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +< │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +as │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypePath │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +> │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +QualifiedPathInType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +QualifiedPathType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +:: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypePathSegment │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypePath │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +:: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypePathSegment │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +:: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypePathSegment │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypePathSegment │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PathIdentSegment │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +:: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericArgs │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypePathFn │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypePathFn │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypePathFnInputs │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +-> │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypeNoBounds │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypePathFnInputs │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │
│ │ │

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 )* ,?

│ │ │ -

│ │ │ -
│ │ │ - │ │ │ -
│ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -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 │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ -

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 │ │ │ │ │ │ @@ -55512,14 +52792,157 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Visibility │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +pub │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +pub │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +crate │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +pub │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +self │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +pub │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +super │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +pub │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +in │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Trait │ │ │ │ │ │ @@ -55651,14 +53074,212 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypeAlias │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericParams │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypeParamBounds │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +WhereClause │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ += │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +WhereClause │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +; │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ConstantItem │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +const │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +_ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ += │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +; │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Struct │ │ │ │ │ │ @@ -56095,14 +53716,298 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Implementation │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +InherentImpl │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TraitImpl │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +InherentImpl │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +impl │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericParams │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +WhereClause │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +{ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +InnerAttribute │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +AssociatedItem │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +} │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TraitImpl │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +unsafe │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +impl │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericParams │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +! │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypePath │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +for │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +WhereClause │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +{ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +InnerAttribute │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +AssociatedItem │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +} │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Function │ │ │ │ │ │ @@ -56760,1001 +54665,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 │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -} │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -EnumVariantDiscriminant │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -= │ │ │ + │ │ │ + │ │ │ +: │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ +Type │ │ │ │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -UseDeclaration │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -use │ │ │ + │ │ │ + │ │ │ += │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -UseTree │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ ; │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -UseTree │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ - │ │ │ + │ │ │ + │ │ │ +ExternCrate │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -:: │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -* │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -:: │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -{ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -UseTree │ │ │ + │ │ │ + │ │ │ +extern │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -, │ │ │ + │ │ │ + │ │ │ +crate │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -UseTree │ │ │ + │ │ │ + │ │ │ +CrateRef │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -} │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ + │ │ │ + │ │ │ +AsClause │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -as │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -_ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ +; │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │
│ │ │ │ │ │ @@ -57843,105 +55514,14 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -StaticItem │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ItemSafety │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -static │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -mut │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -: │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -= │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -; │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ExternBlock │ │ │ │ │ │ @@ -58110,257 +55690,295 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeAlias │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -type │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +:: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +{ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -GenericParams │ │ │ + │ │ │ + │ │ │ +UseTree │ │ │ │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -: │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TypeParamBounds │ │ │ + │ │ │ + │ │ │ +UseTree │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -WhereClause │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -= │ │ │ + │ │ │ + │ │ │ +} │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Type │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +as │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -WhereClause │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +_ │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -; │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │ @@ -58476,545 +56094,350 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ - │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConstParam │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -const │ │ │ - │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ IDENTIFIER │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -: │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -= │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -BlockExpression │ │ │ + │ │ │ + │ │ │ +EnumVariantTuple │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ + │ │ │ + │ │ │ +EnumVariantStruct │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -- │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -LiteralExpression │ │ │ + │ │ │ + │ │ │ +EnumVariantDiscriminant │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeBoundWhereClauseItem │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ForLifetimes │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -: │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeParamBounds │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │ @@ -59027,21 +56450,14 @@ │ │ │

LINE_COMMENT
      // ( ~[/ ! LF] | // ) ~LF*
    | //

│ │ │

BLOCK_COMMENT
      /*
        ( ~[* !] | ** | BLOCK_COMMENT_OR_DOC )
        ( BLOCK_COMMENT_OR_DOC | ~*/ )*
      */
    | /**/
    | /***/

│ │ │

INNER_LINE_DOC
    //! ~[LF CR]*

│ │ │

INNER_BLOCK_DOC
    /*! ( BLOCK_COMMENT_OR_DOC | ~[*/ CR] )* */

│ │ │

OUTER_LINE_DOC
    /// ( ~/ ~[LF CR]* )?

│ │ │

OUTER_BLOCK_DOC
    /**
      ( ~* | BLOCK_COMMENT_OR_DOC )
      ( BLOCK_COMMENT_OR_DOC | ~[*/ CR] )*
    */

│ │ │

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 )not immediately 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

│ │ │

SUFFIXIDENTIFIER_OR_KEYWORDexcept _

│ │ │

SUFFIX_NO_ESUFFIXnot beginning with e or E

│ │ │

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 }

│ │ │ @@ -59081,14 +56497,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 )not immediately followed by 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'

│ │ │

│ │ │
│ │ │ │ │ │ @@ -59790,274 +57213,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# │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -not immediately followed by XID_Continue │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -_ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -crate │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -self │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Self │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -super │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Token │ │ │ │ │ │ @@ -63667,14 +60830,274 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +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# │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +not immediately followed by XID_Continue │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +_ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +crate │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +self │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Self │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +super │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ WHITESPACE │ │ │ │ │ │ @@ -63858,1394 +61281,1148 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │ -

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 )

│ │ │

│ │ │
│ │ │ │ │ │
│ │ │ -
│ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +InferredType │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -: │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ +_ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BareFunctionType │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -= │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ForLifetimes │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +FunctionTypeQualifiers │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +fn │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -= │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -except LazyBooleanExpression or end with a `}` │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +FunctionParametersMaybeNamedVariadic │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -else │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -BlockExpression │ │ │ + │ │ │ + │ │ │ +BareFunctionReturnType │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -; │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ - │ │ │ - │ │ │ -

Macros 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

│ │ │ -

│ │ │ -
│ │ │ - │ │ │ -
│ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MaybeNamedFunctionParameters │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -{ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MaybeNamedParam │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TokenTree │ │ │ + │ │ │ + │ │ │ +MaybeNamedParam │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -} │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -MacroInvocationSemi │ │ │ + │ │ │ + │ │ │ +MaybeNamedFunctionParametersVariadic │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ + │ │ │ + │ │ │ +MaybeNamedParam │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -! │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MaybeNamedParam │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -( │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TokenTree │ │ │ + │ │ │ + │ │ │ +OuterAttribute │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -) │ │ │ + │ │ │ + │ │ │ +... │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -; │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +NeverType │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ ! │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SliceType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ [ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TokenTree │ │ │ + │ │ │ + │ │ │ +Type │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ ] │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -; │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ReferenceType │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -! │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -{ │ │ │ + │ │ │ + │ │ │ +& │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TokenTree │ │ │ + │ │ │ + │ │ │ +Lifetime │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -} │ │ │ + │ │ │ + │ │ │ +mut │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypeNoBounds │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -MacroRulesDef │ │ │ + │ │ │ + │ │ │ +TupleType │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ( │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MacroRules │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ ) │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -; │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -[ │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MacroRules │ │ │ + │ │ │ + │ │ │ +Type │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -] │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -; │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -{ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MacroRules │ │ │ + │ │ │ + │ │ │ +Type │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -} │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -MacroMatcher │ │ │ + │ │ │ + │ │ │ +Type │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MacroMatch │ │ │ + │ │ │ + │ │ │ +TypeNoBounds │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -[ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MacroMatch │ │ │ + │ │ │ + │ │ │ +ImplTraitType │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -] │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -{ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MacroMatch │ │ │ + │ │ │ + │ │ │ +TraitObjectType │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -} │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -MacroMatch │ │ │ + │ │ │ + │ │ │ +TypeNoBounds │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -except `$` and delimiters │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Token │ │ │ + │ │ │ + │ │ │ +ParenthesizedType │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MacroMatcher │ │ │ + │ │ │ + │ │ │ +ImplTraitTypeOneBound │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -$ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -except `crate` │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -IDENTIFIER_OR_KEYWORD │ │ │ + │ │ │ + │ │ │ +TraitObjectTypeOneBound │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RAW_IDENTIFIER │ │ │ + │ │ │ + │ │ │ +TypePath │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -: │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MacroFragSpec │ │ │ + │ │ │ + │ │ │ +TupleType │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -$ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -( │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MacroMatch │ │ │ + │ │ │ + │ │ │ +NeverType │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MacroRepSep │ │ │ + │ │ │ + │ │ │ +RawPointerType │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MacroRepOp │ │ │ + │ │ │ + │ │ │ +ReferenceType │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MacroFragSpec │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -block │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -expr │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -expr_2021 │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ident │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -item │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ArrayType │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -lifetime │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -literal │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -meta │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -pat │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ -pat_param │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -path │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -stmt │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -tt │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ty │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -vis │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ +SliceType │ │ │ │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MacroRepOp │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -* │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BareFunctionType │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -+ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -? │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MacroInvocation │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ - │ │ │ │ │ │ @@ -66753,2758 +63930,2287 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │ -

Expressions summary

│ │ │ +

Attributes summary

│ │ │
│ │ │

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

│ │ │ -

ExpressionWithoutBlock
    OuterAttribute*
    (
        LiteralExpression
      | PathExpression
      | OperatorExpression
      | GroupedExpression
      | ArrayExpression
      | AwaitExpression
      | IndexExpression
      | TupleExpression
      | TupleIndexingExpression
      | StructExpression
      | CallExpression
      | MethodCallExpression
      | FieldExpression
      | ClosureExpression
      | AsyncBlockExpression
      | ContinueExpression
      | BreakExpression
      | RangeExpression
      | ReturnExpression
      | UnderscoreExpression
      | MacroInvocation
    )

│ │ │ -

ExpressionWithBlock
    OuterAttribute*
    (
        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 Expression

│ │ │ -

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 )

│ │ │ +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 )* ,? )? )

│ │ │

│ │ │
│ │ │ │ │ │
│ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Attr │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -GroupedExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -ArrayExpression │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -AwaitExpression │ │ │ + │ │ │ + │ │ │ +AttrInput │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IndexExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ +unsafe │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TupleExpression │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TupleIndexingExpression │ │ │ + │ │ │ + │ │ │ +AttrInput │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -StructExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CallExpression │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MethodCallExpression │ │ │ │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MetaItem │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -BreakExpression │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RangeExpression │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ += │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -ReturnExpression │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -UnderscoreExpression │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MacroInvocation │ │ │ + │ │ │ + │ │ │ +MetaSeq │ │ │ │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -ExpressionWithBlock │ │ │ + │ │ │ + │ │ │ +MetaSeq │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -OuterAttribute │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -BlockExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ConstBlockExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -UnsafeBlockExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -LoopExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IfExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MatchExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ArrayExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -[ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ArrayElements │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -] │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -StructExprFields │ │ │ + │ │ │ + │ │ │ +MetaListPaths │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -StructExprField │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ , │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -StructExprField │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ , │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -StructBase │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -StructExprField │ │ │ + │ │ │ + │ │ │ +MetaListIdents │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -OuterAttribute │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ IDENTIFIER │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ IDENTIFIER │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TUPLE_INDEX │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -: │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -StructBase │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -.. │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -OperatorExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -BorrowExpression │ │ │ - │ │ │ + │ │ │ + │ │ │ +MetaListNameValueStr │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -DereferenceExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TryPropagationExpression │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -NegationExpression │ │ │ + │ │ │ + │ │ │ +MetaNameValueStr │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ArithmeticOrLogicalExpression │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -ComparisonExpression │ │ │ + │ │ │ + │ │ │ +MetaNameValueStr │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -LazyBooleanExpression │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeCastExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -AssignmentExpression │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CompoundAssignmentExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -BorrowExpression │ │ │ + │ │ │ + │ │ │ +InlineAttribute │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -& │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -&& │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ +inline │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -& │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -&& │ │ │ - │ │ │ + │ │ │ + │ │ │ +always │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -mut │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -& │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -&& │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -raw │ │ │ + │ │ │ + │ │ │ +inline │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -const │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -& │ │ │ + │ │ │ + │ │ │ +never │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -&& │ │ │ - │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -raw │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -mut │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ +inline │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ - │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -ArithmeticOrLogicalExpression │ │ │ + │ │ │ + │ │ │ +ProcMacroDeriveAttribute │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ +proc_macro_derive │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -+ │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +DeriveMacroName │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -- │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +DeriveMacroAttributes │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -* │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -/ │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +DeriveMacroAttributes │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -& │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +attributes │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -| │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -^ │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -<< │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ +

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* }

│ │ │ +

│ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -ComparisonExpression │ │ │ + │ │ │ + │ │ │ +MacroRulesDef │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -== │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +MacroRules │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -!= │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ +; │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -> │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ +[ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +MacroRules │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -< │ │ │ + │ │ │ + │ │ │ +] │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ +; │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ ->= │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ +{ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +MacroRules │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -<= │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +} │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -CompoundAssignmentExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -+= │ │ │ + │ │ │ + │ │ │ +[ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +MacroMatch │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ --= │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +] │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -*= │ │ │ + │ │ │ + │ │ │ +{ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +MacroMatch │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -/= │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +} │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -%= │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MacroMatch │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +except `$` and delimiters │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +Token │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -&= │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +MacroMatcher │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -|= │ │ │ + │ │ │ + │ │ │ +$ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +except `crate` │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +IDENTIFIER_OR_KEYWORD │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +RAW_IDENTIFIER │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -^= │ │ │ + │ │ │ + │ │ │ +: │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +MacroFragSpec │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ +$ │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ -<<= │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +MacroMatch │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +MacroRepSep │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ ->>= │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ + │ │ │ + │ │ │ +MacroRepOp │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -LoopExpression │ │ │ + │ │ │ + │ │ │ +MacroFragSpec │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -LoopLabel │ │ │ + │ │ │ + │ │ │ + │ │ │ +block │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -InfiniteLoopExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +expr │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +expr_2021 │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -PredicateLoopExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ident │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +item │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +lifetime │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IteratorLoopExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ +literal │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -LabelBlockExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +meta │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +pat │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +pat_param │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +path │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +stmt │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +tt │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ty │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +vis │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ - │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ContinueExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +] │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -continue │ │ │ + │ │ │ + │ │ │ +{ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -LIFETIME_OR_LABEL │ │ │ + │ │ │ + │ │ │ +TokenTree │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +} │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ +
│ │ │ + │ │ │ +

Expressions summary

│ │ │ +
│ │ │ +

Syntax │ │ │ +
│ │ │ +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 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?

│ │ │ +

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*
    (
        LiteralExpression
      | PathExpression
      | OperatorExpression
      | GroupedExpression
      | ArrayExpression
      | AwaitExpression
      | IndexExpression
      | TupleExpression
      | TupleIndexingExpression
      | StructExpression
      | CallExpression
      | MethodCallExpression
      | FieldExpression
      | ClosureExpression
      | AsyncBlockExpression
      | ContinueExpression
      | BreakExpression
      | RangeExpression
      | ReturnExpression
      | UnderscoreExpression
      | MacroInvocation
    )

│ │ │ +

ExpressionWithBlock
    OuterAttribute*
    (
        BlockExpression
      | ConstBlockExpression
      | UnsafeBlockExpression
      | LoopExpression
      | IfExpression
      | MatchExpression
    )

│ │ │ +

│ │ │ +
│ │ │ + │ │ │ +
│ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ LiteralExpression │ │ │ │ │ │ @@ -69641,501 +66347,331 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -UnsafeBlockExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -unsafe │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -BlockExpression │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ +move │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ -
│ │ │ + │ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MatchArms │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MatchArm │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -=> │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -ExpressionWithoutBlock │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ , │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -ExpressionWithBlock │ │ │ + │ │ │ + │ │ │ +ClosureParam │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -, │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -MatchArm │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -=> │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Expression │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ , │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │
│ │ │ │ │ │ @@ -70550,396 +67102,626 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TupleExpression │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -|| │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -| │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -ClosureParameters │ │ │ + │ │ │ + │ │ │ +TupleElements │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -| │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TupleElements │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ Expression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ --> │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypeNoBounds │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -BlockExpression │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ArrayExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -, │ │ │ + │ │ │ + │ │ │ +[ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ArrayElements │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +] │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -ClosureParam │ │ │ + │ │ │ + │ │ │ +ArrayElements │ │ │ │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -OuterAttribute │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -PatternNoTopAlt │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -: │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Type │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +; │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +StructExprField │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +OuterAttribute │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TUPLE_INDEX │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +: │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ Expression │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PathExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TUPLE_INDEX │ │ │ + │ │ │ + │ │ │ +PathInExpression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +QualifiedPathInExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │ @@ -71217,2243 +67999,4446 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -

Paths summary

│ │ │ -
│ │ │ -

Syntax │ │ │ -
│ │ │ -SimplePath
    ::? SimplePathSegment ( :: SimplePathSegment )*

│ │ │ -

SimplePathSegment
    IDENTIFIER | super | self | crate | $crate

│ │ │ -

PathInExpression
    ::? PathExprSegment ( :: PathExprSegment )*

│ │ │ -

PathExprSegment
    PathIdentSegment ( :: GenericArgs )?

│ │ │ -

PathIdentSegment
    IDENTIFIER | super | self | Self | crate | $crate

│ │ │ -

GenericArgs
      < >
    | < ( GenericArg , )* GenericArg ,? >

│ │ │ -

GenericArg
    Lifetime | Type | GenericArgsConst | GenericArgsBinding | GenericArgsBounds

│ │ │ -

GenericArgsConst
      BlockExpression
    | LiteralExpression
    | - LiteralExpression
    | SimplePathSegment

│ │ │ -

GenericArgsBinding
    IDENTIFIER GenericArgs? = Type

│ │ │ -

GenericArgsBounds
    IDENTIFIER GenericArgs? : TypeParamBounds

│ │ │ -

QualifiedPathInExpressionQualifiedPathType ( :: PathExprSegment )+

│ │ │ -

QualifiedPathType< Type ( as TypePath )? >

│ │ │ -

QualifiedPathInTypeQualifiedPathType ( :: TypePathSegment )+

│ │ │ -

TypePath::? TypePathSegment ( :: TypePathSegment )*

│ │ │ -

TypePathSegmentPathIdentSegment ( ::? ( GenericArgs | TypePathFn ) )?

│ │ │ -

TypePathFn( TypePathFnInputs? ) ( -> TypeNoBounds )?

│ │ │ -

TypePathFnInputsType ( , Type )* ,?

│ │ │ -

│ │ │ -
│ │ │ - │ │ │ -
│ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -SimplePath │ │ │ + │ │ │ + │ │ │ +MatchArms │ │ │ │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MatchArm │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -:: │ │ │ + │ │ │ + │ │ │ +=> │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ExpressionWithoutBlock │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -SimplePathSegment │ │ │ + │ │ │ + │ │ │ +ExpressionWithBlock │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MatchArm │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -:: │ │ │ + │ │ │ + │ │ │ +=> │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -SimplePathSegment │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MatchArmGuard │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -$crate │ │ │ + │ │ │ + │ │ │ +if │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -PathInExpression │ │ │ + │ │ │ + │ │ │ +LoopExpression │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -:: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +LoopLabel │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -PathExprSegment │ │ │ + │ │ │ + │ │ │ +InfiniteLoopExpression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -:: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PredicateLoopExpression │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -PathExprSegment │ │ │ + │ │ │ + │ │ │ +IteratorLoopExpression │ │ │ │ │ │ │ │ │ - │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +LabelBlockExpression │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IteratorLoopExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +for │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Pattern │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +in │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +except StructExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BlockExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BreakExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -$crate │ │ │ + │ │ │ + │ │ │ +break │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +LIFETIME_OR_LABEL │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ContinueExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -< │ │ │ + │ │ │ + │ │ │ +continue │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -> │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +LIFETIME_OR_LABEL │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +CallExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -< │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -GenericArg │ │ │ + │ │ │ + │ │ │ +CallParams │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -, │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +CallParams │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -GenericArg │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ , │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -> │ │ │ + │ │ │ + │ │ │ +, │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -GenericArg │ │ │ + │ │ │ + │ │ │ +OperatorExpression │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Lifetime │ │ │ + │ │ │ + │ │ │ +BorrowExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Type │ │ │ + │ │ │ + │ │ │ +DereferenceExpression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -GenericArgsConst │ │ │ + │ │ │ + │ │ │ +TryPropagationExpression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ -GenericArgsBinding │ │ │ +NegationExpression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -GenericArgsBounds │ │ │ + │ │ │ + │ │ │ +ArithmeticOrLogicalExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ComparisonExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +LazyBooleanExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypeCastExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +AssignmentExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +CompoundAssignmentExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ -GenericArgsConst │ │ │ +BorrowExpression │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +& │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +&& │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -BlockExpression │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +& │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +&& │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +mut │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -LiteralExpression │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -- │ │ │ + │ │ │ + │ │ │ +& │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +&& │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +raw │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +const │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -LiteralExpression │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +& │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +&& │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +raw │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +mut │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -SimplePathSegment │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TryPropagationExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -GenericArgs │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ +? │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +NegationExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -= │ │ │ + │ │ │ + │ │ │ +- │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Type │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +! │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -GenericArgsBounds │ │ │ + │ │ │ + │ │ │ +ArithmeticOrLogicalExpression │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ ++ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -GenericArgs │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -: │ │ │ + │ │ │ + │ │ │ +- │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TypeParamBounds │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +* │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +/ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +% │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +& │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +| │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +^ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +<< │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +>> │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -QualifiedPathInExpression │ │ │ + │ │ │ + │ │ │ +ComparisonExpression │ │ │ │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -QualifiedPathType │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +== │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -:: │ │ │ + │ │ │ + │ │ │ +!= │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -PathExprSegment │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +> │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +< │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +>= │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +<= │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypeCastExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -> │ │ │ + │ │ │ + │ │ │ +as │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypeNoBounds │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -TypePath │ │ │ + │ │ │ + │ │ │ +CompoundAssignmentExpression │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -:: │ │ │ + │ │ │ + │ │ │ ++= │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TypePathSegment │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +-= │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -:: │ │ │ + │ │ │ + │ │ │ +*= │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TypePathSegment │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +/= │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +%= │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ - │ │ │ -
│ │ │ - │ │ │ -
│ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -TypePathSegment │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +&= │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -PathIdentSegment │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +|= │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -:: │ │ │ + │ │ │ + │ │ │ +^= │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -GenericArgs │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +<<= │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TypePathFn │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +>>= │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +AsyncBlockExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +async │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -, │ │ │ + │ │ │ + │ │ │ +move │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BlockExpression │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ConstBlockExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +const │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BlockExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │
│ │ │ │ │ │ -

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_

│ │ │ -

│ │ │ -
│ │ │ - │ │ │ -
│ │ │ -
│ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -TypeNoBounds │ │ │ + │ │ │ + │ │ │ +ExpressionWithoutBlock │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +OuterAttribute │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -ParenthesizedType │ │ │ + │ │ │ + │ │ │ +LiteralExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -ImplTraitTypeOneBound │ │ │ + │ │ │ + │ │ │ +PathExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TraitObjectTypeOneBound │ │ │ + │ │ │ + │ │ │ +OperatorExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TypePath │ │ │ + │ │ │ + │ │ │ +GroupedExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TupleType │ │ │ + │ │ │ + │ │ │ +ArrayExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -NeverType │ │ │ + │ │ │ + │ │ │ +AwaitExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -RawPointerType │ │ │ + │ │ │ + │ │ │ +IndexExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -ReferenceType │ │ │ + │ │ │ + │ │ │ +TupleExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -ArrayType │ │ │ + │ │ │ + │ │ │ +TupleIndexingExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -SliceType │ │ │ + │ │ │ + │ │ │ +StructExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -InferredType │ │ │ + │ │ │ + │ │ │ +CallExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -QualifiedPathInType │ │ │ + │ │ │ + │ │ │ +MethodCallExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -BareFunctionType │ │ │ + │ │ │ + │ │ │ +FieldExpression │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ClosureExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +AsyncBlockExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ContinueExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BreakExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RangeExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ReturnExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +UnderscoreExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ MacroInvocation │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -ParenthesizedType │ │ │ + │ │ │ + │ │ │ +ExpressionWithBlock │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +OuterAttribute │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BlockExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +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 ;?

│ │ │ +

│ │ │ +
│ │ │ + │ │ │ +
│ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Statement │ │ │ │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -( │ │ │ + │ │ │ + │ │ │ +; │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Type │ │ │ + │ │ │ + │ │ │ +Item │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +LetStatement │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ExpressionStatement │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +OuterAttribute │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +MacroInvocationSemi │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -ArrayType │ │ │ + │ │ │ + │ │ │ +LetStatement │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +OuterAttribute │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -[ │ │ │ + │ │ │ + │ │ │ +let │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PatternNoTopAlt │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +: │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ Type │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -; │ │ │ + │ │ │ + │ │ │ += │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ Expression │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -] │ │ │ + │ │ │ + │ │ │ += │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +except LazyBooleanExpression or end with a `}` │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +else │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +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 )* ,?

│ │ │ +

│ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ConfigurationAny │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +any │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -TraitBound │ │ │ + │ │ │ + │ │ │ +ConfigurationPredicateList │ │ │ │ │ │ │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ -
│ │ │ +
│ │ │ + │ │ │ +

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

│ │ │ +

│ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ClobberAbi │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +clobber_abi │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Abi │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ , │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MaybeNamedParam │ │ │ + │ │ │ + │ │ │ +Abi │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ , │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +AsmOption │ │ │ + │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +pure │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -_ │ │ │ + │ │ │ + │ │ │ +nomem │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -: │ │ │ + │ │ │ + │ │ │ +readonly │ │ │ │ │ │ - │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +preserves_flags │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +noreturn │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +nostack │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +att_syntax │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +raw │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ +
│ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -MaybeNamedFunctionParametersVariadic │ │ │ + │ │ │ + │ │ │ +RegOperand │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MaybeNamedParam │ │ │ + │ │ │ + │ │ │ +ParamName │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -, │ │ │ + │ │ │ + │ │ │ += │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +DirSpec │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -MaybeNamedParam │ │ │ + │ │ │ + │ │ │ +RegSpec │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -, │ │ │ + │ │ │ + │ │ │ +) │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -OuterAttribute │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +DualDirSpec │ │ │ │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -... │ │ │ + │ │ │ + │ │ │ +( │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RegSpec │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +DualDirSpecExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +sym │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PathExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +const │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Expression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +label │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +{ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Statements │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +} │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RegSpec │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -Type │ │ │ + │ │ │ + │ │ │ +RegisterClass │ │ │ │ │ │ │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +ExplicitRegister │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ -) │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +RegisterClass │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER_OR_KEYWORD │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ -
│ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +DirSpec │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ │ │ │ - │ │ │ - │ │ │ -[ │ │ │ + │ │ │ + │ │ │ +in │ │ │ │ │ │ - │ │ │ - │ │ │ - │ │ │ - │ │ │ -Type │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ - │ │ │ -] │ │ │ + │ │ │ + │ │ │ +out │ │ │ │ │ │ - │ │ │ - │ │ │ │ │ │ - │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +lateout │ │ │ + │ │ │ + │ │ │ + │ │ │ │ │ │ - │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ - │ │ │ │ │ │ @@ -73965,14 +72950,1029 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │ +

Paths summary

│ │ │ +
│ │ │ +

Syntax │ │ │ +
│ │ │ +SimplePath
    ::? SimplePathSegment ( :: SimplePathSegment )*

│ │ │ +

SimplePathSegment
    IDENTIFIER | super | self | crate | $crate

│ │ │ +

PathInExpression
    ::? PathExprSegment ( :: PathExprSegment )*

│ │ │ +

PathExprSegment
    PathIdentSegment ( :: GenericArgs )?

│ │ │ +

PathIdentSegment
    IDENTIFIER | super | self | Self | crate | $crate

│ │ │ +

GenericArgs
      < >
    | < ( GenericArg , )* GenericArg ,? >

│ │ │ +

GenericArg
    Lifetime | Type | GenericArgsConst | GenericArgsBinding | GenericArgsBounds

│ │ │ +

GenericArgsConst
      BlockExpression
    | LiteralExpression
    | - LiteralExpression
    | SimplePathSegment

│ │ │ +

GenericArgsBinding
    IDENTIFIER GenericArgs? = Type

│ │ │ +

GenericArgsBounds
    IDENTIFIER GenericArgs? : TypeParamBounds

│ │ │ +

QualifiedPathInExpressionQualifiedPathType ( :: PathExprSegment )+

│ │ │ +

QualifiedPathType< Type ( as TypePath )? >

│ │ │ +

QualifiedPathInTypeQualifiedPathType ( :: TypePathSegment )+

│ │ │ +

TypePath::? TypePathSegment ( :: TypePathSegment )*

│ │ │ +

TypePathSegmentPathIdentSegment ( ::? ( GenericArgs | TypePathFn ) )?

│ │ │ +

TypePathFn( TypePathFnInputs? ) ( -> TypeNoBounds )?

│ │ │ +

TypePathFnInputsType ( , Type )* ,?

│ │ │ +

│ │ │ +
│ │ │ + │ │ │ +
│ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SimplePath │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +:: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SimplePathSegment │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +:: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SimplePathSegment │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SimplePathSegment │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +super │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +self │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +crate │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +$crate │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PathInExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +:: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PathExprSegment │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +:: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PathExprSegment │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PathExprSegment │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PathIdentSegment │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +:: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericArgs │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PathIdentSegment │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +super │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +self │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Self │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +crate │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +$crate │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericArgs │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +< │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +> │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +< │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericArg │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericArg │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +> │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericArg │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Lifetime │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericArgsConst │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericArgsBinding │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericArgsBounds │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericArgsConst │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +BlockExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +LiteralExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +- │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +LiteralExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +SimplePathSegment │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericArgsBinding │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericArgs │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ += │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericArgsBounds │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +IDENTIFIER │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericArgs │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypeParamBounds │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +QualifiedPathInExpression │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +QualifiedPathType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +:: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PathExprSegment │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +QualifiedPathType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +< │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +as │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypePath │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +> │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +QualifiedPathInType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +QualifiedPathType │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +:: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypePathSegment │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypePath │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +:: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypePathSegment │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +:: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypePathSegment │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypePathSegment │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +PathIdentSegment │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +:: │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +GenericArgs │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypePathFn │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypePathFn │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +( │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypePathFnInputs │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +) │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +-> │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypeNoBounds │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +TypePathFnInputs │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +Type │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +, │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ + │ │ │ +
│ │ │ + │ │ │ +
│ │ │ + │ │ │
│ │ │

Syntax index

│ │ │

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

│ │ │

Keywords

│ │ │
│ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ @@ -23849,181 +23849,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 )* ,? │ │ │ │ -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 , │ │ │ │ -********** _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 │ │ │ │ @@ -24041,32 +23876,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 │ │ │ │ @@ -24076,157 +23936,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 → │ │ │ │ _N_U_L → U+0000 │ │ │ │ _L_I_N_E___C_O_M_M_E_N_T → │ │ │ │       // ( ~[/ ! _L_F] | // ) ~_L_F* │ │ │ │     | // │ │ │ │ @@ -24248,24 +24089,14 @@ │ │ │ │       ( ~* | _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_R___D_O_C | ~[*/ _C_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 )not immediately followed by │ │ │ │ -XID_Continue │ │ │ │ _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 │ │ │ │ @@ -24440,14 +24271,24 @@ │ │ │ │     _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 )not immediately followed by │ │ │ │ +XID_Continue │ │ │ │ _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, ' ' │ │ │ │ @@ -24469,23 +24310,14 @@ │ │ │ │ INNER_LINE_DOC //! ⚠️ with the exception of LF CR CHAR │ │ │ │ INNER_BLOCK_DOC /*! BLOCK_COMMENT_OR_DOC ⚠️ with the exception of */ CR CHAR */ │ │ │ │ OUTER_LINE_DOC /// ⚠️ with the exception of / CHAR ⚠️ with the exception of LF │ │ │ │ CR CHAR │ │ │ │ OUTER_BLOCK_DOC /** ⚠️ with the exception of * CHAR BLOCK_COMMENT_OR_DOC │ │ │ │ BLOCK_COMMENT_OR_DOC ⚠️ with the exception of */ 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# not immediately followed by XID_Continue _ crate │ │ │ │ -self Self super │ │ │ │ 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 beginning with `e` or `E` SUFFIX │ │ │ │ CHAR_LITERAL ' ⚠️ with the exception of ' \ LF CR TAB CHAR QUOTE_ESCAPE │ │ │ │ @@ -24548,101 +24380,103 @@ │ │ │ │ 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# not immediately followed by XID_Continue _ crate │ │ │ │ +self Self super │ │ │ │ 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 → │ │ │ │ @@ -24744,71 +24578,243 @@ │ │ │ │ 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* │ │ │ │ -    ( │ │ │ │ -        _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* │ │ │ │ -    ( │ │ │ │ -        _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 _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 │ │ │ │ @@ -24856,134 +24862,123 @@ │ │ │ │     | _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 _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* │ │ │ │ +    ( │ │ │ │ +        _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* │ │ │ │ +    ( │ │ │ │ +        _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 LiteralExpression PathExpression │ │ │ │ -OperatorExpression GroupedExpression ArrayExpression AwaitExpression │ │ │ │ -IndexExpression TupleExpression TupleIndexingExpression StructExpression │ │ │ │ -CallExpression MethodCallExpression FieldExpression ClosureExpression │ │ │ │ -AsyncBlockExpression ContinueExpression BreakExpression RangeExpression │ │ │ │ -ReturnExpression UnderscoreExpression MacroInvocation │ │ │ │ -ExpressionWithBlock OuterAttribute 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 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 │ │ │ │ +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 │ │ │ │ @@ -24999,69 +24994,180 @@ │ │ │ │ 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 Expression │ │ │ │ -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 LiteralExpression PathExpression │ │ │ │ +OperatorExpression GroupedExpression ArrayExpression AwaitExpression │ │ │ │ +IndexExpression TupleExpression TupleIndexingExpression StructExpression │ │ │ │ +CallExpression MethodCallExpression FieldExpression ClosureExpression │ │ │ │ +AsyncBlockExpression ContinueExpression BreakExpression RangeExpression │ │ │ │ +ReturnExpression UnderscoreExpression MacroInvocation │ │ │ │ +ExpressionWithBlock OuterAttribute 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 )* ,? │ │ │ │ +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 , │ │ │ │ +********** _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 → │ │ │ │ @@ -25106,120 +25212,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, │ │ ├── ./usr/share/doc/rust-doc/html/test/bench/fn.benchmark.html │ │ │ @@ -1,8 +1,8 @@ │ │ │ benchmark in test::bench - Rust

benchmark

Function benchmark 

Source
pub fn benchmark<F>(
│ │ │      id: TestId,
│ │ │      desc: TestDesc,
│ │ │ -    monitor_ch: Sender<CompletedTest>,
│ │ │ -    nocapture: bool,
│ │ │ +    monitor_ch: Sender<CompletedTest>,
│ │ │ +    nocapture: bool,
│ │ │      f: F,
│ │ │  )
where │ │ │ - F: FnMut(&mut Bencher) -> Result<(), String>,
🔬This is a nightly-only experimental API. (test)
│ │ │ + F: FnMut(&mut Bencher) -> Result<(), String>,
🔬This is a nightly-only experimental API. (test)
│ │ ├── ./usr/share/doc/rust-doc/html/test/bench/fn.iter.html │ │ │ @@ -1,2 +1,2 @@ │ │ │ -iter in test::bench - Rust

iter

Function iter 

Source
pub fn iter<T, F>(inner: &mut F) -> Summary
where │ │ │ +iter in test::bench - Rust

iter

Function iter 

Source
pub fn iter<T, F>(inner: &mut F) -> Summary
where │ │ │ F: FnMut() -> T,
🔬This is a nightly-only experimental API. (test)
│ │ ├── ./usr/share/doc/rust-doc/html/test/bench/fn.run_once.html │ │ │ @@ -1,2 +1,2 @@ │ │ │ -run_once in test::bench - Rust

run_once

Function run_once 

Source
pub fn run_once<F>(f: F) -> Result<(), String>
where │ │ │ - F: FnMut(&mut Bencher) -> Result<(), String>,
🔬This is a nightly-only experimental API. (test)
│ │ │ +run_once in test::bench - Rust

run_once

Function run_once 

Source
pub fn run_once<F>(f: F) -> Result<(), String>
where │ │ │ + F: FnMut(&mut Bencher) -> Result<(), String>,
🔬This is a nightly-only experimental API. (test)
│ │ ├── ./usr/share/doc/rust-doc/html/test/bench/struct.BenchSamples.html │ │ │ @@ -1,17 +1,17 @@ │ │ │ BenchSamples in test::bench - Rust

BenchSamples

Struct BenchSamples 

Source
pub struct BenchSamples {
│ │ │      pub ns_iter_summ: Summary,
│ │ │ -    pub mb_s: usize,
│ │ │ -}
🔬This is a nightly-only experimental API. (test)

Fields§

§ns_iter_summ: Summary
🔬This is a nightly-only experimental API. (test)
§mb_s: usize
🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for BenchSamples

Source§

fn clone(&self) -> BenchSamples

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for BenchSamples

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for BenchSamples

Source§

fn eq(&self, other: &BenchSamples) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ + pub mb_s: usize, │ │ │ +}
🔬This is a nightly-only experimental API. (test)

Fields§

§ns_iter_summ: Summary
🔬This is a nightly-only experimental API. (test)
§mb_s: usize
🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for BenchSamples

Source§

fn clone(&self) -> BenchSamples

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for BenchSamples

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for BenchSamples

Source§

fn eq(&self, other: &BenchSamples) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for BenchSamples

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │ + T: ?Sized,
Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │
Source§

impl<T, U> Into<U> for T
where │ │ │ U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

│ │ │

That is, this conversion is whatever the implementation of │ │ │ From<T> for U chooses to do.

│ │ │
Source§

impl<T> ToOwned for T
where │ │ │ - T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where │ │ │ U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
│ │ ├── ./usr/share/doc/rust-doc/html/test/bench/struct.Bencher.html │ │ │ @@ -1,23 +1,23 @@ │ │ │ Bencher in test::bench - Rust

Bencher

Struct Bencher 

Source
pub struct Bencher {
│ │ │ -    pub bytes: u64,
│ │ │ +    pub bytes: u64,
│ │ │      /* private fields */
│ │ │  }
🔬This is a nightly-only experimental API. (test)
Expand description

Manager of the benchmarking runs.

│ │ │

This is fed into functions marked with #[bench] to allow for │ │ │ set-up & tear-down before running a piece of code repeatedly via a │ │ │ call to iter.

│ │ │ -

Fields§

§bytes: u64
🔬This is a nightly-only experimental API. (test)

Implementations§

Source§

impl Bencher

Source

pub fn iter<T, F>(&mut self, inner: F)
where │ │ │ +

Fields§

§bytes: u64
🔬This is a nightly-only experimental API. (test)

Implementations§

Source§

impl Bencher

Source

pub fn iter<T, F>(&mut self, inner: F)
where │ │ │ F: FnMut() -> T,

🔬This is a nightly-only experimental API. (test)

Callback for benchmark functions to run in their body.

│ │ │
Source

pub fn bench<F>(&mut self, f: F) -> Result<Option<Summary>, String>
where │ │ │ - F: FnMut(&mut Bencher) -> Result<(), String>,

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for Bencher

Source§

fn clone(&self) -> Bencher

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ + F: FnMut(&mut Bencher) -> Result<(), String>,

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for Bencher

Source§

fn clone(&self) -> Bencher

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │ + T: ?Sized,
Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │
Source§

impl<T, U> Into<U> for T
where │ │ │ U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

│ │ │

That is, this conversion is whatever the implementation of │ │ │ From<T> for U chooses to do.

│ │ │
Source§

impl<T> ToOwned for T
where │ │ │ - T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where │ │ │ U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
│ │ ├── ./usr/share/doc/rust-doc/html/test/constant.ERROR_EXIT_CODE.html │ │ │ @@ -1,2 +1,2 @@ │ │ │ -ERROR_EXIT_CODE in test - Rust

ERROR_EXIT_CODE

Constant ERROR_EXIT_CODE 

Source
pub const ERROR_EXIT_CODE: i32 = 101;
🔬This is a nightly-only experimental API. (test)
Expand description

Process exit code to be used to indicate test failures.

│ │ │ +ERROR_EXIT_CODE in test - Rust

ERROR_EXIT_CODE

Constant ERROR_EXIT_CODE 

Source
pub const ERROR_EXIT_CODE: i32 = 101;
🔬This is a nightly-only experimental API. (test)
Expand description

Process exit code to be used to indicate test failures.

│ │ │
│ │ ├── ./usr/share/doc/rust-doc/html/test/enum.ColorConfig.html │ │ │ @@ -1,18 +1,18 @@ │ │ │ ColorConfig in test - Rust

ColorConfig

Enum ColorConfig 

Source
pub enum ColorConfig {
│ │ │      AutoColor,
│ │ │      AlwaysColor,
│ │ │      NeverColor,
│ │ │  }
🔬This is a nightly-only experimental API. (test)
Expand description

Whether should console output be colored or not

│ │ │

Variants§

§

AutoColor

🔬This is a nightly-only experimental API. (test)
§

AlwaysColor

🔬This is a nightly-only experimental API. (test)
§

NeverColor

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for ColorConfig

Source§

fn clone(&self) -> ColorConfig

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ColorConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for ColorConfig

Source§

fn default() -> ColorConfig

Returns the “default value” for a type. Read more
Source§

impl Copy for ColorConfig

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │ + T: ?Sized,
Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │
Source§

impl<T, U> Into<U> for T
where │ │ │ U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

│ │ │

That is, this conversion is whatever the implementation of │ │ │ From<T> for U chooses to do.

│ │ │
Source§

impl<T> ToOwned for T
where │ │ │ - T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where │ │ │ U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
│ │ ├── ./usr/share/doc/rust-doc/html/test/enum.NamePadding.html │ │ │ @@ -1,19 +1,19 @@ │ │ │ NamePadding in test - Rust

NamePadding

Enum NamePadding 

Source
pub enum NamePadding {
│ │ │      PadNone,
│ │ │      PadOnRight,
│ │ │ -}
🔬This is a nightly-only experimental API. (test)

Variants§

§

PadNone

🔬This is a nightly-only experimental API. (test)
§

PadOnRight

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for NamePadding

Source§

fn clone(&self) -> NamePadding

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for NamePadding

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for NamePadding

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where │ │ │ +}
🔬This is a nightly-only experimental API. (test)

Variants§

§

PadNone

🔬This is a nightly-only experimental API. (test)
§

PadOnRight

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for NamePadding

Source§

fn clone(&self) -> NamePadding

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for NamePadding

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for NamePadding

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where │ │ │ H: Hasher, │ │ │ - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for NamePadding

Source§

fn eq(&self, other: &NamePadding) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for NamePadding

Source§

fn eq(&self, other: &NamePadding) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ and should not be overridden without very good reason.
Source§

impl Copy for NamePadding

Source§

impl Eq for NamePadding

Source§

impl StructuralPartialEq for NamePadding

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │ + T: ?Sized,
Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │
Source§

impl<T, U> Into<U> for T
where │ │ │ U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

│ │ │

That is, this conversion is whatever the implementation of │ │ │ From<T> for U chooses to do.

│ │ │
Source§

impl<T> ToOwned for T
where │ │ │ - T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where │ │ │ U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
│ │ ├── ./usr/share/doc/rust-doc/html/test/enum.OutputFormat.html │ │ │ @@ -4,21 +4,21 @@ │ │ │ Json, │ │ │ Junit, │ │ │ }
🔬This is a nightly-only experimental API. (test)
Expand description

Format of the test results output

│ │ │

Variants§

§

Pretty

🔬This is a nightly-only experimental API. (test)

Verbose output

│ │ │
§

Terse

🔬This is a nightly-only experimental API. (test)

Quiet output

│ │ │
§

Json

🔬This is a nightly-only experimental API. (test)

JSON output

│ │ │
§

Junit

🔬This is a nightly-only experimental API. (test)

JUnit output

│ │ │ -

Trait Implementations§

Source§

impl Clone for OutputFormat

Source§

fn clone(&self) -> OutputFormat

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for OutputFormat

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for OutputFormat

Source§

fn default() -> OutputFormat

Returns the “default value” for a type. Read more
Source§

impl PartialEq for OutputFormat

Source§

fn eq(&self, other: &OutputFormat) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ +

Trait Implementations§

Source§

impl Clone for OutputFormat

Source§

fn clone(&self) -> OutputFormat

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for OutputFormat

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for OutputFormat

Source§

fn default() -> OutputFormat

Returns the “default value” for a type. Read more
Source§

impl PartialEq for OutputFormat

Source§

fn eq(&self, other: &OutputFormat) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ and should not be overridden without very good reason.
Source§

impl Copy for OutputFormat

Source§

impl Eq for OutputFormat

Source§

impl StructuralPartialEq for OutputFormat

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │ + T: ?Sized,
Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │
Source§

impl<T, U> Into<U> for T
where │ │ │ U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

│ │ │

That is, this conversion is whatever the implementation of │ │ │ From<T> for U chooses to do.

│ │ │
Source§

impl<T> ToOwned for T
where │ │ │ - T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where │ │ │ U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
│ │ ├── ./usr/share/doc/rust-doc/html/test/enum.RunIgnored.html │ │ │ @@ -1,20 +1,20 @@ │ │ │ RunIgnored in test - Rust

RunIgnored

Enum RunIgnored 

Source
pub enum RunIgnored {
│ │ │      Yes,
│ │ │      No,
│ │ │      Only,
│ │ │  }
🔬This is a nightly-only experimental API. (test)
Expand description

Whether ignored test should be run or not

│ │ │

Variants§

§

Yes

🔬This is a nightly-only experimental API. (test)
§

No

🔬This is a nightly-only experimental API. (test)
§

Only

🔬This is a nightly-only experimental API. (test)

Run only ignored tests

│ │ │ -

Trait Implementations§

Source§

impl Clone for RunIgnored

Source§

fn clone(&self) -> RunIgnored

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RunIgnored

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for RunIgnored

Source§

fn eq(&self, other: &RunIgnored) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ +

Trait Implementations§

Source§

impl Clone for RunIgnored

Source§

fn clone(&self) -> RunIgnored

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RunIgnored

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for RunIgnored

Source§

fn eq(&self, other: &RunIgnored) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ and should not be overridden without very good reason.
Source§

impl Copy for RunIgnored

Source§

impl Eq for RunIgnored

Source§

impl StructuralPartialEq for RunIgnored

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │ + T: ?Sized,
Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │
Source§

impl<T, U> Into<U> for T
where │ │ │ U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

│ │ │

That is, this conversion is whatever the implementation of │ │ │ From<T> for U chooses to do.

│ │ │
Source§

impl<T> ToOwned for T
where │ │ │ - T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where │ │ │ U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
│ │ ├── ./usr/share/doc/rust-doc/html/test/enum.ShouldPanic.html │ │ │ @@ -1,21 +1,21 @@ │ │ │ ShouldPanic in test - Rust

ShouldPanic

Enum ShouldPanic 

Source
pub enum ShouldPanic {
│ │ │      No,
│ │ │      Yes,
│ │ │ -    YesWithMessage(&'static str),
│ │ │ +    YesWithMessage(&'static str),
│ │ │  }
🔬This is a nightly-only experimental API. (test)
Expand description

Whether test is expected to panic or not

│ │ │ -

Variants§

§

No

🔬This is a nightly-only experimental API. (test)
§

Yes

🔬This is a nightly-only experimental API. (test)
§

YesWithMessage(&'static str)

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for ShouldPanic

Source§

fn clone(&self) -> ShouldPanic

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ShouldPanic

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for ShouldPanic

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where │ │ │ +

Variants§

§

No

🔬This is a nightly-only experimental API. (test)
§

Yes

🔬This is a nightly-only experimental API. (test)
§

YesWithMessage(&'static str)

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for ShouldPanic

Source§

fn clone(&self) -> ShouldPanic

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ShouldPanic

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for ShouldPanic

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where │ │ │ H: Hasher, │ │ │ - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for ShouldPanic

Source§

fn eq(&self, other: &ShouldPanic) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ + Self: Sized,
Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for ShouldPanic

Source§

fn eq(&self, other: &ShouldPanic) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ and should not be overridden without very good reason.
Source§

impl Copy for ShouldPanic

Source§

impl Eq for ShouldPanic

Source§

impl StructuralPartialEq for ShouldPanic

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │ + T: ?Sized,
Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │
Source§

impl<T, U> Into<U> for T
where │ │ │ U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

│ │ │

That is, this conversion is whatever the implementation of │ │ │ From<T> for U chooses to do.

│ │ │
Source§

impl<T> ToOwned for T
where │ │ │ - T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where │ │ │ U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
│ │ ├── ./usr/share/doc/rust-doc/html/test/enum.TestFn.html │ │ │ @@ -1,18 +1,18 @@ │ │ │ TestFn in test - Rust

TestFn

Enum TestFn 

Source
pub enum TestFn {
│ │ │ -    StaticTestFn(fn() -> Result<(), String>),
│ │ │ -    StaticBenchFn(fn(&mut Bencher) -> Result<(), String>),
│ │ │ -    StaticBenchAsTestFn(fn(&mut Bencher) -> Result<(), String>),
│ │ │ -    DynTestFn(Box<dyn FnOnce() -> Result<(), String> + Send>),
│ │ │ -    DynBenchFn(Box<dyn Fn(&mut Bencher) -> Result<(), String> + Send>),
│ │ │ -    DynBenchAsTestFn(Box<dyn Fn(&mut Bencher) -> Result<(), String> + Send>),
│ │ │ -}
🔬This is a nightly-only experimental API. (test)

Variants§

§

StaticTestFn(fn() -> Result<(), String>)

🔬This is a nightly-only experimental API. (test)
§

StaticBenchFn(fn(&mut Bencher) -> Result<(), String>)

🔬This is a nightly-only experimental API. (test)
§

StaticBenchAsTestFn(fn(&mut Bencher) -> Result<(), String>)

🔬This is a nightly-only experimental API. (test)
§

DynTestFn(Box<dyn FnOnce() -> Result<(), String> + Send>)

🔬This is a nightly-only experimental API. (test)
§

DynBenchFn(Box<dyn Fn(&mut Bencher) -> Result<(), String> + Send>)

🔬This is a nightly-only experimental API. (test)
§

DynBenchAsTestFn(Box<dyn Fn(&mut Bencher) -> Result<(), String> + Send>)

🔬This is a nightly-only experimental API. (test)

Implementations§

Source§

impl TestFn

Source

pub fn padding(&self) -> NamePadding

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Debug for TestFn

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl Freeze for TestFn

§

impl !RefUnwindSafe for TestFn

§

impl Send for TestFn

§

impl !Sync for TestFn

§

impl Unpin for TestFn

§

impl !UnwindSafe for TestFn

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ + StaticTestFn(fn() -> Result<(), String>), │ │ │ + StaticBenchFn(fn(&mut Bencher) -> Result<(), String>), │ │ │ + StaticBenchAsTestFn(fn(&mut Bencher) -> Result<(), String>), │ │ │ + DynTestFn(Box<dyn FnOnce() -> Result<(), String> + Send>), │ │ │ + DynBenchFn(Box<dyn Fn(&mut Bencher) -> Result<(), String> + Send>), │ │ │ + DynBenchAsTestFn(Box<dyn Fn(&mut Bencher) -> Result<(), String> + Send>), │ │ │ +}
🔬This is a nightly-only experimental API. (test)

Variants§

§

StaticTestFn(fn() -> Result<(), String>)

🔬This is a nightly-only experimental API. (test)
§

StaticBenchFn(fn(&mut Bencher) -> Result<(), String>)

🔬This is a nightly-only experimental API. (test)
§

StaticBenchAsTestFn(fn(&mut Bencher) -> Result<(), String>)

🔬This is a nightly-only experimental API. (test)
§

DynTestFn(Box<dyn FnOnce() -> Result<(), String> + Send>)

🔬This is a nightly-only experimental API. (test)
§

DynBenchFn(Box<dyn Fn(&mut Bencher) -> Result<(), String> + Send>)

🔬This is a nightly-only experimental API. (test)
§

DynBenchAsTestFn(Box<dyn Fn(&mut Bencher) -> Result<(), String> + Send>)

🔬This is a nightly-only experimental API. (test)

Implementations§

Source§

impl TestFn

Source

pub fn padding(&self) -> NamePadding

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Debug for TestFn

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl Freeze for TestFn

§

impl !RefUnwindSafe for TestFn

§

impl Send for TestFn

§

impl !Sync for TestFn

§

impl Unpin for TestFn

§

impl !UnwindSafe for TestFn

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │ + T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │
Source§

impl<T, U> Into<U> for T
where │ │ │ U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

│ │ │

That is, this conversion is whatever the implementation of │ │ │ From<T> for U chooses to do.

│ │ │
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where │ │ │ U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
│ │ ├── ./usr/share/doc/rust-doc/html/test/enum.TestName.html │ │ │ @@ -1,21 +1,21 @@ │ │ │ TestName in test - Rust

TestName

Enum TestName 

Source
pub enum TestName {
│ │ │ -    StaticTestName(&'static str),
│ │ │ +    StaticTestName(&'static str),
│ │ │      DynTestName(String),
│ │ │ -    AlignedTestName(Cow<'static, str>, NamePadding),
│ │ │ -}
🔬This is a nightly-only experimental API. (test)

Variants§

§

StaticTestName(&'static str)

🔬This is a nightly-only experimental API. (test)
§

DynTestName(String)

🔬This is a nightly-only experimental API. (test)
§

AlignedTestName(Cow<'static, str>, NamePadding)

🔬This is a nightly-only experimental API. (test)

Implementations§

Source§

impl TestName

Source

pub fn as_slice(&self) -> &str

🔬This is a nightly-only experimental API. (test)
Source

pub fn padding(&self) -> NamePadding

🔬This is a nightly-only experimental API. (test)
Source

pub fn with_padding(&self, padding: NamePadding) -> TestName

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for TestName

Source§

fn clone(&self) -> TestName

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TestName

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for TestName

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for TestName

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where │ │ │ + AlignedTestName(Cow<'static, str>, NamePadding), │ │ │ +}
🔬This is a nightly-only experimental API. (test)

Variants§

§

StaticTestName(&'static str)

🔬This is a nightly-only experimental API. (test)
§

DynTestName(String)

🔬This is a nightly-only experimental API. (test)
§

AlignedTestName(Cow<'static, str>, NamePadding)

🔬This is a nightly-only experimental API. (test)

Implementations§

Source§

impl TestName

Source

pub fn as_slice(&self) -> &str

🔬This is a nightly-only experimental API. (test)
Source

pub fn padding(&self) -> NamePadding

🔬This is a nightly-only experimental API. (test)
Source

pub fn with_padding(&self, padding: NamePadding) -> TestName

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for TestName

Source§

fn clone(&self) -> TestName

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TestName

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for TestName

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for TestName

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where │ │ │ H: Hasher, │ │ │ - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for TestName

Source§

fn eq(&self, other: &TestName) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for TestName

Source§

fn eq(&self, other: &TestName) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ and should not be overridden without very good reason.
Source§

impl Eq for TestName

Source§

impl StructuralPartialEq for TestName

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │ + T: ?Sized,
Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │
Source§

impl<T, U> Into<U> for T
where │ │ │ U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

│ │ │

That is, this conversion is whatever the implementation of │ │ │ From<T> for U chooses to do.

│ │ │
Source§

impl<T> ToOwned for T
where │ │ │ - T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where │ │ │ + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where │ │ │ T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where │ │ │ U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
│ │ ├── ./usr/share/doc/rust-doc/html/test/enum.TestType.html │ │ │ @@ -6,23 +6,23 @@ │ │ │ }
🔬This is a nightly-only experimental API. (test)
Expand description

Type of the test according to the Rust book │ │ │ conventions.

│ │ │

Variants§

§

UnitTest

🔬This is a nightly-only experimental API. (test)

Unit-tests are expected to be in the src folder of the crate.

│ │ │
§

IntegrationTest

🔬This is a nightly-only experimental API. (test)

Integration-style tests are expected to be in the tests folder of the crate.

│ │ │
§

DocTest

🔬This is a nightly-only experimental API. (test)

Doctests are created by the librustdoc manually, so it’s a different type of test.

│ │ │
§

Unknown

🔬This is a nightly-only experimental API. (test)

Tests for the sources that don’t follow the project layout convention │ │ │ (e.g. tests in raw main.rs compiled by calling rustc --test directly).

│ │ │ -

Trait Implementations§

Source§

impl Clone for TestType

Source§

fn clone(&self) -> TestType

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TestType

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for TestType

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where │ │ │ +

Trait Implementations§

Source§

impl Clone for TestType

Source§

fn clone(&self) -> TestType

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TestType

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for TestType

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where │ │ │ H: Hasher, │ │ │ - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for TestType

Source§

fn eq(&self, other: &TestType) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ + Self: Sized,
Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for TestType

Source§

fn eq(&self, other: &TestType) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ and should not be overridden without very good reason.
Source§

impl Copy for TestType

Source§

impl Eq for TestType

Source§

impl StructuralPartialEq for TestType

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │ + T: ?Sized,
Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │
Source§

impl<T, U> Into<U> for T
where │ │ │ U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

│ │ │

That is, this conversion is whatever the implementation of │ │ │ From<T> for U chooses to do.

│ │ │
Source§

impl<T> ToOwned for T
where │ │ │ - T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where │ │ │ U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
│ │ ├── ./usr/share/doc/rust-doc/html/test/fn.assert_test_result.html │ │ │ @@ -1,4 +1,4 @@ │ │ │ -assert_test_result in test - Rust

assert_test_result

Function assert_test_result 

Source
pub fn assert_test_result<T: Termination>(result: T) -> Result<(), String>
🔬This is a nightly-only experimental API. (test)
Expand description

Invoked when unit tests terminate. Returns Result::Err if the test is │ │ │ +assert_test_result in test - Rust

assert_test_result

Function assert_test_result 

Source
pub fn assert_test_result<T: Termination>(result: T) -> Result<(), String>
🔬This is a nightly-only experimental API. (test)
Expand description

Invoked when unit tests terminate. Returns Result::Err if the test is │ │ │ considered a failure. By default, invokes report() and checks for a 0 │ │ │ result.

│ │ │
│ │ ├── ./usr/share/doc/rust-doc/html/test/fn.print_merged_doctests_times.html │ │ │ @@ -1,7 +1,7 @@ │ │ │ print_merged_doctests_times in test - Rust

print_merged_doctests_times

Function print_merged_doctests_times 

Source
pub fn print_merged_doctests_times(
│ │ │      args: &[String],
│ │ │ -    total_time: f64,
│ │ │ -    compilation_time: f64,
│ │ │ +    total_time: f64,
│ │ │ +    compilation_time: f64,
│ │ │  )
🔬This is a nightly-only experimental API. (test)
Expand description

Public API used by rustdoc to display the total and compilation times in the expected │ │ │ format.

│ │ │
│ │ ├── ./usr/share/doc/rust-doc/html/test/fn.run_test.html │ │ │ @@ -1,8 +1,8 @@ │ │ │ run_test in test - Rust

run_test

Function run_test 

Source
pub fn run_test(
│ │ │      opts: &TestOpts,
│ │ │ -    force_ignore: bool,
│ │ │ +    force_ignore: bool,
│ │ │      id: TestId,
│ │ │      test: TestDescAndFn,
│ │ │      strategy: RunStrategy,
│ │ │ -    monitor_ch: Sender<CompletedTest>,
│ │ │ -) -> Option<JoinHandle<()>>
🔬This is a nightly-only experimental API. (test)
│ │ │ + monitor_ch: Sender<CompletedTest>, │ │ │ +) -> Option<JoinHandle<()>>
🔬This is a nightly-only experimental API. (test)
│ │ ├── ./usr/share/doc/rust-doc/html/test/fn.run_tests.html │ │ │ @@ -1,6 +1,6 @@ │ │ │ run_tests in test - Rust

run_tests

Function run_tests 

Source
pub fn run_tests<F>(
│ │ │      opts: &TestOpts,
│ │ │      tests: Vec<TestDescAndFn>,
│ │ │      notify_about_test_event: F,
│ │ │ -) -> Result<()>
where │ │ │ - F: FnMut(TestEvent) -> Result<()>,
🔬This is a nightly-only experimental API. (test)
│ │ │ +) -> Result<()>
where │ │ │ + F: FnMut(TestEvent) -> Result<()>,
🔬This is a nightly-only experimental API. (test)
│ │ ├── ./usr/share/doc/rust-doc/html/test/fn.run_tests_console.html │ │ │ @@ -1,6 +1,6 @@ │ │ │ run_tests_console in test - Rust

run_tests_console

Function run_tests_console 

Source
pub fn run_tests_console(
│ │ │      opts: &TestOpts,
│ │ │      tests: Vec<TestDescAndFn>,
│ │ │ -) -> Result<bool>
🔬This is a nightly-only experimental API. (test)
Expand description

A simple console test runner. │ │ │ +) -> Result<bool>

🔬This is a nightly-only experimental API. (test)
Expand description

A simple console test runner. │ │ │ Runs provided tests reporting process and results to the stdout.

│ │ │
│ │ ├── ./usr/share/doc/rust-doc/html/test/stats/fn.winsorize.html │ │ │ @@ -1,7 +1,7 @@ │ │ │ -winsorize in test::stats - Rust

winsorize

Function winsorize 

Source
pub fn winsorize(samples: &mut [f64], pct: f64)
🔬This is a nightly-only experimental API. (test)
Expand description

Winsorize a set of samples, replacing values above the 100-pct percentile │ │ │ +winsorize in test::stats - Rust

winsorize

Function winsorize 

Source
pub fn winsorize(samples: &mut [f64], pct: f64)
🔬This is a nightly-only experimental API. (test)
Expand description

Winsorize a set of samples, replacing values above the 100-pct percentile │ │ │ and below the pct percentile with those percentiles themselves. This is a │ │ │ way of minimizing the effect of outliers, at the cost of biasing the sample. │ │ │ It differs from trimming in that it does not change the number of samples, │ │ │ just changes the values of those that are outliers.

│ │ │

See: https://en.wikipedia.org/wiki/Winsorising

│ │ │
│ │ ├── ./usr/share/doc/rust-doc/html/test/stats/struct.Summary.html │ │ │ @@ -1,29 +1,29 @@ │ │ │ Summary in test::stats - Rust

Summary

Struct Summary 

Source
pub struct Summary {
│ │ │ -    pub sum: f64,
│ │ │ -    pub min: f64,
│ │ │ -    pub max: f64,
│ │ │ -    pub mean: f64,
│ │ │ -    pub median: f64,
│ │ │ -    pub var: f64,
│ │ │ -    pub std_dev: f64,
│ │ │ -    pub std_dev_pct: f64,
│ │ │ -    pub median_abs_dev: f64,
│ │ │ -    pub median_abs_dev_pct: f64,
│ │ │ -    pub quartiles: (f64, f64, f64),
│ │ │ -    pub iqr: f64,
│ │ │ +    pub sum: f64,
│ │ │ +    pub min: f64,
│ │ │ +    pub max: f64,
│ │ │ +    pub mean: f64,
│ │ │ +    pub median: f64,
│ │ │ +    pub var: f64,
│ │ │ +    pub std_dev: f64,
│ │ │ +    pub std_dev_pct: f64,
│ │ │ +    pub median_abs_dev: f64,
│ │ │ +    pub median_abs_dev_pct: f64,
│ │ │ +    pub quartiles: (f64, f64, f64),
│ │ │ +    pub iqr: f64,
│ │ │  }
🔬This is a nightly-only experimental API. (test)
Expand description

Extracted collection of all the summary statistics of a sample set.

│ │ │ -

Fields§

§sum: f64
🔬This is a nightly-only experimental API. (test)
§min: f64
🔬This is a nightly-only experimental API. (test)
§max: f64
🔬This is a nightly-only experimental API. (test)
§mean: f64
🔬This is a nightly-only experimental API. (test)
§median: f64
🔬This is a nightly-only experimental API. (test)
§var: f64
🔬This is a nightly-only experimental API. (test)
§std_dev: f64
🔬This is a nightly-only experimental API. (test)
§std_dev_pct: f64
🔬This is a nightly-only experimental API. (test)
§median_abs_dev: f64
🔬This is a nightly-only experimental API. (test)
§median_abs_dev_pct: f64
🔬This is a nightly-only experimental API. (test)
§quartiles: (f64, f64, f64)
🔬This is a nightly-only experimental API. (test)
§iqr: f64
🔬This is a nightly-only experimental API. (test)

Implementations§

Source§

impl Summary

Source

pub fn new(samples: &[f64]) -> Summary

🔬This is a nightly-only experimental API. (test)

Constructs a new summary of a sample set.

│ │ │ -

Trait Implementations§

Source§

impl Clone for Summary

Source§

fn clone(&self) -> Summary

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Summary

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for Summary

Source§

fn eq(&self, other: &Summary) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ +

Fields§

§sum: f64
🔬This is a nightly-only experimental API. (test)
§min: f64
🔬This is a nightly-only experimental API. (test)
§max: f64
🔬This is a nightly-only experimental API. (test)
§mean: f64
🔬This is a nightly-only experimental API. (test)
§median: f64
🔬This is a nightly-only experimental API. (test)
§var: f64
🔬This is a nightly-only experimental API. (test)
§std_dev: f64
🔬This is a nightly-only experimental API. (test)
§std_dev_pct: f64
🔬This is a nightly-only experimental API. (test)
§median_abs_dev: f64
🔬This is a nightly-only experimental API. (test)
§median_abs_dev_pct: f64
🔬This is a nightly-only experimental API. (test)
§quartiles: (f64, f64, f64)
🔬This is a nightly-only experimental API. (test)
§iqr: f64
🔬This is a nightly-only experimental API. (test)

Implementations§

Source§

impl Summary

Source

pub fn new(samples: &[f64]) -> Summary

🔬This is a nightly-only experimental API. (test)

Constructs a new summary of a sample set.

│ │ │ +

Trait Implementations§

Source§

impl Clone for Summary

Source§

fn clone(&self) -> Summary

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Summary

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for Summary

Source§

fn eq(&self, other: &Summary) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ and should not be overridden without very good reason.
Source§

impl Copy for Summary

Source§

impl StructuralPartialEq for Summary

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │ + T: ?Sized,
Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │
Source§

impl<T, U> Into<U> for T
where │ │ │ U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

│ │ │

That is, this conversion is whatever the implementation of │ │ │ From<T> for U chooses to do.

│ │ │
Source§

impl<T> ToOwned for T
where │ │ │ - T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where │ │ │ U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
│ │ ├── ./usr/share/doc/rust-doc/html/test/stats/trait.Stats.html │ │ │ @@ -1,62 +1,62 @@ │ │ │ Stats in test::stats - Rust

Stats

Trait Stats 

Source
pub trait Stats {
│ │ │  
Show 13 methods // Required methods │ │ │ - fn sum(&self) -> f64; │ │ │ - fn min(&self) -> f64; │ │ │ - fn max(&self) -> f64; │ │ │ - fn mean(&self) -> f64; │ │ │ - fn median(&self) -> f64; │ │ │ - fn var(&self) -> f64; │ │ │ - fn std_dev(&self) -> f64; │ │ │ - fn std_dev_pct(&self) -> f64; │ │ │ - fn median_abs_dev(&self) -> f64; │ │ │ - fn median_abs_dev_pct(&self) -> f64; │ │ │ - fn percentile(&self, pct: f64) -> f64; │ │ │ - fn quartiles(&self) -> (f64, f64, f64); │ │ │ - fn iqr(&self) -> f64; │ │ │ + fn sum(&self) -> f64; │ │ │ + fn min(&self) -> f64; │ │ │ + fn max(&self) -> f64; │ │ │ + fn mean(&self) -> f64; │ │ │ + fn median(&self) -> f64; │ │ │ + fn var(&self) -> f64; │ │ │ + fn std_dev(&self) -> f64; │ │ │ + fn std_dev_pct(&self) -> f64; │ │ │ + fn median_abs_dev(&self) -> f64; │ │ │ + fn median_abs_dev_pct(&self) -> f64; │ │ │ + fn percentile(&self, pct: f64) -> f64; │ │ │ + fn quartiles(&self) -> (f64, f64, f64); │ │ │ + fn iqr(&self) -> f64; │ │ │
}
🔬This is a nightly-only experimental API. (test)
Expand description

Trait that provides simple descriptive statistics on a univariate set of numeric samples.

│ │ │ -

Required Methods§

Source

fn sum(&self) -> f64

🔬This is a nightly-only experimental API. (test)

Sum of the samples.

│ │ │ +

Required Methods§

Source

fn sum(&self) -> f64

🔬This is a nightly-only experimental API. (test)

Sum of the samples.

│ │ │

Note: this method sacrifices performance at the altar of accuracy │ │ │ Depends on IEEE 754 arithmetic guarantees. See proof of correctness at: │ │ │ “Adaptive Precision Floating-Point Arithmetic and Fast Robust Geometric │ │ │ Predicates”

│ │ │ -
Source

fn min(&self) -> f64

🔬This is a nightly-only experimental API. (test)

Minimum value of the samples.

│ │ │ -
Source

fn max(&self) -> f64

🔬This is a nightly-only experimental API. (test)

Maximum value of the samples.

│ │ │ -
Source

fn mean(&self) -> f64

🔬This is a nightly-only experimental API. (test)

Arithmetic mean (average) of the samples: sum divided by sample-count.

│ │ │ +
Source

fn min(&self) -> f64

🔬This is a nightly-only experimental API. (test)

Minimum value of the samples.

│ │ │ +
Source

fn max(&self) -> f64

🔬This is a nightly-only experimental API. (test)

Maximum value of the samples.

│ │ │ +
Source

fn mean(&self) -> f64

🔬This is a nightly-only experimental API. (test)

Arithmetic mean (average) of the samples: sum divided by sample-count.

│ │ │

See: https://en.wikipedia.org/wiki/Arithmetic_mean

│ │ │ -
Source

fn median(&self) -> f64

🔬This is a nightly-only experimental API. (test)

Median of the samples: value separating the lower half of the samples from the higher half. │ │ │ +

Source

fn median(&self) -> f64

🔬This is a nightly-only experimental API. (test)

Median of the samples: value separating the lower half of the samples from the higher half. │ │ │ Equal to self.percentile(50.0).

│ │ │

See: https://en.wikipedia.org/wiki/Median

│ │ │ -
Source

fn var(&self) -> f64

🔬This is a nightly-only experimental API. (test)

Variance of the samples: bias-corrected mean of the squares of the differences of each │ │ │ +

Source

fn var(&self) -> f64

🔬This is a nightly-only experimental API. (test)

Variance of the samples: bias-corrected mean of the squares of the differences of each │ │ │ sample from the sample mean. Note that this calculates the sample variance rather than the │ │ │ population variance, which is assumed to be unknown. It therefore corrects the (n-1)/n │ │ │ bias that would appear if we calculated a population variance, by dividing by (n-1) rather │ │ │ than n.

│ │ │

See: https://en.wikipedia.org/wiki/Variance

│ │ │ -
Source

fn std_dev(&self) -> f64

🔬This is a nightly-only experimental API. (test)

Standard deviation: the square root of the sample variance.

│ │ │ +
Source

fn std_dev(&self) -> f64

🔬This is a nightly-only experimental API. (test)

Standard deviation: the square root of the sample variance.

│ │ │

Note: this is not a robust statistic for non-normal distributions. Prefer the │ │ │ median_abs_dev for unknown distributions.

│ │ │

See: https://en.wikipedia.org/wiki/Standard_deviation

│ │ │ -
Source

fn std_dev_pct(&self) -> f64

🔬This is a nightly-only experimental API. (test)

Standard deviation as a percent of the mean value. See std_dev and mean.

│ │ │ +
Source

fn std_dev_pct(&self) -> f64

🔬This is a nightly-only experimental API. (test)

Standard deviation as a percent of the mean value. See std_dev and mean.

│ │ │

Note: this is not a robust statistic for non-normal distributions. Prefer the │ │ │ median_abs_dev_pct for unknown distributions.

│ │ │ -
Source

fn median_abs_dev(&self) -> f64

🔬This is a nightly-only experimental API. (test)

Scaled median of the absolute deviations of each sample from the sample median. This is a │ │ │ +

Source

fn median_abs_dev(&self) -> f64

🔬This is a nightly-only experimental API. (test)

Scaled median of the absolute deviations of each sample from the sample median. This is a │ │ │ robust (distribution-agnostic) estimator of sample variability. Use this in preference to │ │ │ std_dev if you cannot assume your sample is normally distributed. Note that this is scaled │ │ │ by the constant 1.4826 to allow its use as a consistent estimator for the standard │ │ │ deviation.

│ │ │

See: https://en.wikipedia.org/wiki/Median_absolute_deviation

│ │ │ -
Source

fn median_abs_dev_pct(&self) -> f64

🔬This is a nightly-only experimental API. (test)

Median absolute deviation as a percent of the median. See median_abs_dev and median.

│ │ │ -
Source

fn percentile(&self, pct: f64) -> f64

🔬This is a nightly-only experimental API. (test)

Percentile: the value below which pct percent of the values in self fall. For example, │ │ │ +

Source

fn median_abs_dev_pct(&self) -> f64

🔬This is a nightly-only experimental API. (test)

Median absolute deviation as a percent of the median. See median_abs_dev and median.

│ │ │ +
Source

fn percentile(&self, pct: f64) -> f64

🔬This is a nightly-only experimental API. (test)

Percentile: the value below which pct percent of the values in self fall. For example, │ │ │ percentile(95.0) will return the value v such that 95% of the samples s in self │ │ │ satisfy s <= v.

│ │ │

Calculated by linear interpolation between closest ranks.

│ │ │

See: https://en.wikipedia.org/wiki/Percentile

│ │ │ -
Source

fn quartiles(&self) -> (f64, f64, f64)

🔬This is a nightly-only experimental API. (test)

Quartiles of the sample: three values that divide the sample into four equal groups, each │ │ │ +

Source

fn quartiles(&self) -> (f64, f64, f64)

🔬This is a nightly-only experimental API. (test)

Quartiles of the sample: three values that divide the sample into four equal groups, each │ │ │ with 1/4 of the data. The middle value is the median. See median and percentile. This │ │ │ function may calculate the 3 quartiles more efficiently than 3 calls to percentile, but │ │ │ is otherwise equivalent.

│ │ │

See also: https://en.wikipedia.org/wiki/Quartile

│ │ │ -
Source

fn iqr(&self) -> f64

🔬This is a nightly-only experimental API. (test)

Inter-quartile range: the difference between the 25th percentile (1st quartile) and the 75th │ │ │ +

Source

fn iqr(&self) -> f64

🔬This is a nightly-only experimental API. (test)

Inter-quartile range: the difference between the 25th percentile (1st quartile) and the 75th │ │ │ percentile (3rd quartile). See quartiles.

│ │ │

See also: https://en.wikipedia.org/wiki/Interquartile_range

│ │ │ -

Implementations on Foreign Types§

Source§

impl Stats for [f64]

Source§

fn sum(&self) -> f64

🔬This is a nightly-only experimental API. (test)
Source§

fn min(&self) -> f64

🔬This is a nightly-only experimental API. (test)
Source§

fn max(&self) -> f64

🔬This is a nightly-only experimental API. (test)
Source§

fn mean(&self) -> f64

🔬This is a nightly-only experimental API. (test)
Source§

fn median(&self) -> f64

🔬This is a nightly-only experimental API. (test)
Source§

fn var(&self) -> f64

🔬This is a nightly-only experimental API. (test)
Source§

fn std_dev(&self) -> f64

🔬This is a nightly-only experimental API. (test)
Source§

fn std_dev_pct(&self) -> f64

🔬This is a nightly-only experimental API. (test)
Source§

fn median_abs_dev(&self) -> f64

🔬This is a nightly-only experimental API. (test)
Source§

fn median_abs_dev_pct(&self) -> f64

🔬This is a nightly-only experimental API. (test)
Source§

fn percentile(&self, pct: f64) -> f64

🔬This is a nightly-only experimental API. (test)
Source§

fn quartiles(&self) -> (f64, f64, f64)

🔬This is a nightly-only experimental API. (test)
Source§

fn iqr(&self) -> f64

🔬This is a nightly-only experimental API. (test)

Implementors§

│ │ │ +

Implementations on Foreign Types§

Source§

impl Stats for [f64]

Source§

fn sum(&self) -> f64

🔬This is a nightly-only experimental API. (test)
Source§

fn min(&self) -> f64

🔬This is a nightly-only experimental API. (test)
Source§

fn max(&self) -> f64

🔬This is a nightly-only experimental API. (test)
Source§

fn mean(&self) -> f64

🔬This is a nightly-only experimental API. (test)
Source§

fn median(&self) -> f64

🔬This is a nightly-only experimental API. (test)
Source§

fn var(&self) -> f64

🔬This is a nightly-only experimental API. (test)
Source§

fn std_dev(&self) -> f64

🔬This is a nightly-only experimental API. (test)
Source§

fn std_dev_pct(&self) -> f64

🔬This is a nightly-only experimental API. (test)
Source§

fn median_abs_dev(&self) -> f64

🔬This is a nightly-only experimental API. (test)
Source§

fn median_abs_dev_pct(&self) -> f64

🔬This is a nightly-only experimental API. (test)
Source§

fn percentile(&self, pct: f64) -> f64

🔬This is a nightly-only experimental API. (test)
Source§

fn quartiles(&self) -> (f64, f64, f64)

🔬This is a nightly-only experimental API. (test)
Source§

fn iqr(&self) -> f64

🔬This is a nightly-only experimental API. (test)

Implementors§

│ │ ├── ./usr/share/doc/rust-doc/html/test/struct.Options.html │ │ │ @@ -1,18 +1,18 @@ │ │ │ Options in test - Rust

Options

Struct Options 

Source
pub struct Options {
│ │ │ -    pub display_output: bool,
│ │ │ -    pub panic_abort: bool,
│ │ │ +    pub display_output: bool,
│ │ │ +    pub panic_abort: bool,
│ │ │  }
🔬This is a nightly-only experimental API. (test)
Expand description

Options for the test run defined by the caller (instead of CLI arguments). │ │ │ In case we want to add other options as well, just add them in this struct.

│ │ │ -

Fields§

§display_output: bool
🔬This is a nightly-only experimental API. (test)
§panic_abort: bool
🔬This is a nightly-only experimental API. (test)

Implementations§

Source§

impl Options

Source

pub fn new() -> Options

🔬This is a nightly-only experimental API. (test)
Source

pub fn display_output(self, display_output: bool) -> Options

🔬This is a nightly-only experimental API. (test)
Source

pub fn panic_abort(self, panic_abort: bool) -> Options

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for Options

Source§

fn clone(&self) -> Options

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Options

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Copy for Options

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ +

Fields§

§display_output: bool
🔬This is a nightly-only experimental API. (test)
§panic_abort: bool
🔬This is a nightly-only experimental API. (test)

Implementations§

Source§

impl Options

Source

pub fn new() -> Options

🔬This is a nightly-only experimental API. (test)
Source

pub fn display_output(self, display_output: bool) -> Options

🔬This is a nightly-only experimental API. (test)
Source

pub fn panic_abort(self, panic_abort: bool) -> Options

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for Options

Source§

fn clone(&self) -> Options

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Options

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Copy for Options

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │ + T: ?Sized,
Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │
Source§

impl<T, U> Into<U> for T
where │ │ │ U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

│ │ │

That is, this conversion is whatever the implementation of │ │ │ From<T> for U chooses to do.

│ │ │
Source§

impl<T> ToOwned for T
where │ │ │ - T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where │ │ │ U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
│ │ ├── ./usr/share/doc/rust-doc/html/test/struct.TestDesc.html │ │ │ @@ -1,28 +1,28 @@ │ │ │ TestDesc in test - Rust

TestDesc

Struct TestDesc 

Source
pub struct TestDesc {
│ │ │      pub name: TestName,
│ │ │ -    pub ignore: bool,
│ │ │ -    pub ignore_message: Option<&'static str>,
│ │ │ -    pub source_file: &'static str,
│ │ │ -    pub start_line: usize,
│ │ │ -    pub start_col: usize,
│ │ │ -    pub end_line: usize,
│ │ │ -    pub end_col: usize,
│ │ │ +    pub ignore: bool,
│ │ │ +    pub ignore_message: Option<&'static str>,
│ │ │ +    pub source_file: &'static str,
│ │ │ +    pub start_line: usize,
│ │ │ +    pub start_col: usize,
│ │ │ +    pub end_line: usize,
│ │ │ +    pub end_col: usize,
│ │ │      pub should_panic: ShouldPanic,
│ │ │ -    pub compile_fail: bool,
│ │ │ -    pub no_run: bool,
│ │ │ +    pub compile_fail: bool,
│ │ │ +    pub no_run: bool,
│ │ │      pub test_type: TestType,
│ │ │ -}
🔬This is a nightly-only experimental API. (test)

Fields§

§name: TestName
🔬This is a nightly-only experimental API. (test)
§ignore: bool
🔬This is a nightly-only experimental API. (test)
§ignore_message: Option<&'static str>
🔬This is a nightly-only experimental API. (test)
§source_file: &'static str
🔬This is a nightly-only experimental API. (test)
§start_line: usize
🔬This is a nightly-only experimental API. (test)
§start_col: usize
🔬This is a nightly-only experimental API. (test)
§end_line: usize
🔬This is a nightly-only experimental API. (test)
§end_col: usize
🔬This is a nightly-only experimental API. (test)
§should_panic: ShouldPanic
🔬This is a nightly-only experimental API. (test)
§compile_fail: bool
🔬This is a nightly-only experimental API. (test)
§no_run: bool
🔬This is a nightly-only experimental API. (test)
§test_type: TestType
🔬This is a nightly-only experimental API. (test)

Implementations§

Source§

impl TestDesc

Source

pub fn padded_name(&self, column_count: usize, align: NamePadding) -> String

🔬This is a nightly-only experimental API. (test)
Source

pub fn test_mode(&self) -> Option<&'static str>

🔬This is a nightly-only experimental API. (test)

Returns None for ignored test or tests that are just run, otherwise returns a description of the type of test. │ │ │ +}

🔬This is a nightly-only experimental API. (test)

Fields§

§name: TestName
🔬This is a nightly-only experimental API. (test)
§ignore: bool
🔬This is a nightly-only experimental API. (test)
§ignore_message: Option<&'static str>
🔬This is a nightly-only experimental API. (test)
§source_file: &'static str
🔬This is a nightly-only experimental API. (test)
§start_line: usize
🔬This is a nightly-only experimental API. (test)
§start_col: usize
🔬This is a nightly-only experimental API. (test)
§end_line: usize
🔬This is a nightly-only experimental API. (test)
§end_col: usize
🔬This is a nightly-only experimental API. (test)
§should_panic: ShouldPanic
🔬This is a nightly-only experimental API. (test)
§compile_fail: bool
🔬This is a nightly-only experimental API. (test)
§no_run: bool
🔬This is a nightly-only experimental API. (test)
§test_type: TestType
🔬This is a nightly-only experimental API. (test)

Implementations§

Source§

impl TestDesc

Source

pub fn padded_name(&self, column_count: usize, align: NamePadding) -> String

🔬This is a nightly-only experimental API. (test)
Source

pub fn test_mode(&self) -> Option<&'static str>

🔬This is a nightly-only experimental API. (test)

Returns None for ignored test or tests that are just run, otherwise returns a description of the type of test. │ │ │ Descriptions include “should panic”, “compile fail” and “compile”.

│ │ │

Trait Implementations§

Source§

impl Clone for TestDesc

Source§

fn clone(&self) -> TestDesc

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TestDesc

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │ + T: ?Sized,
Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │
Source§

impl<T, U> Into<U> for T
where │ │ │ U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

│ │ │

That is, this conversion is whatever the implementation of │ │ │ From<T> for U chooses to do.

│ │ │
Source§

impl<T> ToOwned for T
where │ │ │ - T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where │ │ │ U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
│ │ ├── ./usr/share/doc/rust-doc/html/test/struct.TestDescAndFn.html │ │ │ @@ -1,22 +1,22 @@ │ │ │ TestDescAndFn in test - Rust

TestDescAndFn

Struct TestDescAndFn 

Source
pub struct TestDescAndFn {
│ │ │      pub desc: TestDesc,
│ │ │      pub testfn: TestFn,
│ │ │  }
🔬This is a nightly-only experimental API. (test)

Fields§

§desc: TestDesc
🔬This is a nightly-only experimental API. (test)
§testfn: TestFn
🔬This is a nightly-only experimental API. (test)

Implementations§

Source§

impl TestDescAndFn

Source

pub const fn new_doctest( │ │ │ - test_name: &'static str, │ │ │ - ignore: bool, │ │ │ - source_file: &'static str, │ │ │ - start_line: usize, │ │ │ - no_run: bool, │ │ │ - should_panic: bool, │ │ │ + test_name: &'static str, │ │ │ + ignore: bool, │ │ │ + source_file: &'static str, │ │ │ + start_line: usize, │ │ │ + no_run: bool, │ │ │ + should_panic: bool, │ │ │ testfn: TestFn, │ │ │ ) -> Self

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Debug for TestDescAndFn

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │ + T: ?Sized,
Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │
Source§

impl<T, U> Into<U> for T
where │ │ │ U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

│ │ │

That is, this conversion is whatever the implementation of │ │ │ From<T> for U chooses to do.

│ │ │
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where │ │ │ U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
│ │ ├── ./usr/share/doc/rust-doc/html/test/struct.TestId.html │ │ │ @@ -1,16 +1,16 @@ │ │ │ -TestId in test - Rust

TestId

Struct TestId 

Source
pub struct TestId(pub usize);
🔬This is a nightly-only experimental API. (test)

Tuple Fields§

§0: usize
🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for TestId

Source§

fn clone(&self) -> TestId

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TestId

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for TestId

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where │ │ │ +TestId in test - Rust

TestId

Struct TestId 

Source
pub struct TestId(pub usize);
🔬This is a nightly-only experimental API. (test)

Tuple Fields§

§0: usize
🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for TestId

Source§

fn clone(&self) -> TestId

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TestId

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for TestId

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where │ │ │ H: Hasher, │ │ │ - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for TestId

Source§

fn eq(&self, other: &TestId) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for TestId

Source§

fn eq(&self, other: &TestId) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ and should not be overridden without very good reason.
Source§

impl Copy for TestId

Source§

impl Eq for TestId

Source§

impl StructuralPartialEq for TestId

Auto Trait Implementations§

§

impl Freeze for TestId

§

impl RefUnwindSafe for TestId

§

impl Send for TestId

§

impl Sync for TestId

§

impl Unpin for TestId

§

impl UnwindSafe for TestId

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │ + T: ?Sized,
Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │
Source§

impl<T, U> Into<U> for T
where │ │ │ U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

│ │ │

That is, this conversion is whatever the implementation of │ │ │ From<T> for U chooses to do.

│ │ │
Source§

impl<T> ToOwned for T
where │ │ │ - T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where │ │ │ U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
│ │ ├── ./usr/share/doc/rust-doc/html/test/struct.TestOpts.html │ │ │ @@ -1,34 +1,34 @@ │ │ │ TestOpts in test - Rust

TestOpts

Struct TestOpts 

Source
pub struct TestOpts {
Show 19 fields │ │ │ - pub list: bool, │ │ │ + pub list: bool, │ │ │ pub filters: Vec<String>, │ │ │ - pub filter_exact: bool, │ │ │ - pub force_run_in_process: bool, │ │ │ - pub exclude_should_panic: bool, │ │ │ + pub filter_exact: bool, │ │ │ + pub force_run_in_process: bool, │ │ │ + pub exclude_should_panic: bool, │ │ │ pub run_ignored: RunIgnored, │ │ │ - pub run_tests: bool, │ │ │ - pub bench_benchmarks: bool, │ │ │ - pub logfile: Option<PathBuf>, │ │ │ - pub nocapture: bool, │ │ │ + pub run_tests: bool, │ │ │ + pub bench_benchmarks: bool, │ │ │ + pub logfile: Option<PathBuf>, │ │ │ + pub nocapture: bool, │ │ │ pub color: ColorConfig, │ │ │ pub format: OutputFormat, │ │ │ - pub shuffle: bool, │ │ │ - pub shuffle_seed: Option<u64>, │ │ │ - pub test_threads: Option<usize>, │ │ │ + pub shuffle: bool, │ │ │ + pub shuffle_seed: Option<u64>, │ │ │ + pub test_threads: Option<usize>, │ │ │ pub skip: Vec<String>, │ │ │ pub time_options: Option<TestTimeOptions>, │ │ │ - pub fail_fast: bool, │ │ │ + pub fail_fast: bool, │ │ │ pub options: Options, │ │ │ -
}
🔬This is a nightly-only experimental API. (test)

Fields§

§list: bool
🔬This is a nightly-only experimental API. (test)
§filters: Vec<String>
🔬This is a nightly-only experimental API. (test)
§filter_exact: bool
🔬This is a nightly-only experimental API. (test)
§force_run_in_process: bool
🔬This is a nightly-only experimental API. (test)
§exclude_should_panic: bool
🔬This is a nightly-only experimental API. (test)
§run_ignored: RunIgnored
🔬This is a nightly-only experimental API. (test)
§run_tests: bool
🔬This is a nightly-only experimental API. (test)
§bench_benchmarks: bool
🔬This is a nightly-only experimental API. (test)
§logfile: Option<PathBuf>
🔬This is a nightly-only experimental API. (test)
§nocapture: bool
🔬This is a nightly-only experimental API. (test)
§color: ColorConfig
🔬This is a nightly-only experimental API. (test)
§format: OutputFormat
🔬This is a nightly-only experimental API. (test)
§shuffle: bool
🔬This is a nightly-only experimental API. (test)
§shuffle_seed: Option<u64>
🔬This is a nightly-only experimental API. (test)
§test_threads: Option<usize>
🔬This is a nightly-only experimental API. (test)
§skip: Vec<String>
🔬This is a nightly-only experimental API. (test)
§time_options: Option<TestTimeOptions>
🔬This is a nightly-only experimental API. (test)
§fail_fast: bool
🔬This is a nightly-only experimental API. (test)

Stop at first failing test. │ │ │ +}

🔬This is a nightly-only experimental API. (test)

Fields§

§list: bool
🔬This is a nightly-only experimental API. (test)
§filters: Vec<String>
🔬This is a nightly-only experimental API. (test)
§filter_exact: bool
🔬This is a nightly-only experimental API. (test)
§force_run_in_process: bool
🔬This is a nightly-only experimental API. (test)
§exclude_should_panic: bool
🔬This is a nightly-only experimental API. (test)
§run_ignored: RunIgnored
🔬This is a nightly-only experimental API. (test)
§run_tests: bool
🔬This is a nightly-only experimental API. (test)
§bench_benchmarks: bool
🔬This is a nightly-only experimental API. (test)
§logfile: Option<PathBuf>
🔬This is a nightly-only experimental API. (test)
§nocapture: bool
🔬This is a nightly-only experimental API. (test)
§color: ColorConfig
🔬This is a nightly-only experimental API. (test)
§format: OutputFormat
🔬This is a nightly-only experimental API. (test)
§shuffle: bool
🔬This is a nightly-only experimental API. (test)
§shuffle_seed: Option<u64>
🔬This is a nightly-only experimental API. (test)
§test_threads: Option<usize>
🔬This is a nightly-only experimental API. (test)
§skip: Vec<String>
🔬This is a nightly-only experimental API. (test)
§time_options: Option<TestTimeOptions>
🔬This is a nightly-only experimental API. (test)
§fail_fast: bool
🔬This is a nightly-only experimental API. (test)

Stop at first failing test. │ │ │ May run a few more tests due to threading, but will │ │ │ abort as soon as possible.

│ │ │ -
§options: Options
🔬This is a nightly-only experimental API. (test)

Implementations§

Source§

impl TestOpts

Source

pub fn use_color(&self) -> bool

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Debug for TestOpts

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ +
§options: Options
🔬This is a nightly-only experimental API. (test)

Implementations§

Source§

impl TestOpts

Source

pub fn use_color(&self) -> bool

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Debug for TestOpts

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │ + T: ?Sized,
Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │
Source§

impl<T, U> Into<U> for T
where │ │ │ U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

│ │ │

That is, this conversion is whatever the implementation of │ │ │ From<T> for U chooses to do.

│ │ │
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where │ │ │ U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
│ │ ├── ./usr/share/doc/rust-doc/html/test/test/enum.RunIgnored.html │ │ │ @@ -1,20 +1,20 @@ │ │ │ RunIgnored in test::test - Rust

RunIgnored

Enum RunIgnored 

Source
pub enum RunIgnored {
│ │ │      Yes,
│ │ │      No,
│ │ │      Only,
│ │ │  }
🔬This is a nightly-only experimental API. (test)
Expand description

Whether ignored test should be run or not

│ │ │

Variants§

§

Yes

🔬This is a nightly-only experimental API. (test)
§

No

🔬This is a nightly-only experimental API. (test)
§

Only

🔬This is a nightly-only experimental API. (test)

Run only ignored tests

│ │ │ -

Trait Implementations§

Source§

impl Clone for RunIgnored

Source§

fn clone(&self) -> RunIgnored

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RunIgnored

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for RunIgnored

Source§

fn eq(&self, other: &RunIgnored) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ +

Trait Implementations§

Source§

impl Clone for RunIgnored

Source§

fn clone(&self) -> RunIgnored

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RunIgnored

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for RunIgnored

Source§

fn eq(&self, other: &RunIgnored) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ and should not be overridden without very good reason.
Source§

impl Copy for RunIgnored

Source§

impl Eq for RunIgnored

Source§

impl StructuralPartialEq for RunIgnored

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │ + T: ?Sized,
Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │
Source§

impl<T, U> Into<U> for T
where │ │ │ U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

│ │ │

That is, this conversion is whatever the implementation of │ │ │ From<T> for U chooses to do.

│ │ │
Source§

impl<T> ToOwned for T
where │ │ │ - T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where │ │ │ U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
│ │ ├── ./usr/share/doc/rust-doc/html/test/test/enum.RunStrategy.html │ │ │ @@ -4,18 +4,18 @@ │ │ │ }
🔬This is a nightly-only experimental API. (test)

Variants§

§

InProcess

🔬This is a nightly-only experimental API. (test)

Runs the test in the current process, and sends the result back over the │ │ │ supplied channel.

│ │ │
§

SpawnPrimary

🔬This is a nightly-only experimental API. (test)

Spawns a subprocess to run the test, and sends the result back over the │ │ │ supplied channel. Requires argv[0] to exist and point to the binary │ │ │ that’s currently running.

│ │ │

Trait Implementations§

Source§

impl Clone for RunStrategy

Source§

fn clone(&self) -> RunStrategy

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for RunStrategy

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │ + T: ?Sized,
Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │
Source§

impl<T, U> Into<U> for T
where │ │ │ U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

│ │ │

That is, this conversion is whatever the implementation of │ │ │ From<T> for U chooses to do.

│ │ │
Source§

impl<T> ToOwned for T
where │ │ │ - T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where │ │ │ U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
│ │ ├── ./usr/share/doc/rust-doc/html/test/test/enum.ShouldPanic.html │ │ │ @@ -1,21 +1,21 @@ │ │ │ ShouldPanic in test::test - Rust

ShouldPanic

Enum ShouldPanic 

Source
pub enum ShouldPanic {
│ │ │      No,
│ │ │      Yes,
│ │ │ -    YesWithMessage(&'static str),
│ │ │ +    YesWithMessage(&'static str),
│ │ │  }
🔬This is a nightly-only experimental API. (test)
Expand description

Whether test is expected to panic or not

│ │ │ -

Variants§

§

No

🔬This is a nightly-only experimental API. (test)
§

Yes

🔬This is a nightly-only experimental API. (test)
§

YesWithMessage(&'static str)

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for ShouldPanic

Source§

fn clone(&self) -> ShouldPanic

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ShouldPanic

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for ShouldPanic

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where │ │ │ +

Variants§

§

No

🔬This is a nightly-only experimental API. (test)
§

Yes

🔬This is a nightly-only experimental API. (test)
§

YesWithMessage(&'static str)

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for ShouldPanic

Source§

fn clone(&self) -> ShouldPanic

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ShouldPanic

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for ShouldPanic

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where │ │ │ H: Hasher, │ │ │ - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for ShouldPanic

Source§

fn eq(&self, other: &ShouldPanic) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ + Self: Sized,
Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for ShouldPanic

Source§

fn eq(&self, other: &ShouldPanic) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ and should not be overridden without very good reason.
Source§

impl Copy for ShouldPanic

Source§

impl Eq for ShouldPanic

Source§

impl StructuralPartialEq for ShouldPanic

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │ + T: ?Sized,
Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │
Source§

impl<T, U> Into<U> for T
where │ │ │ U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

│ │ │

That is, this conversion is whatever the implementation of │ │ │ From<T> for U chooses to do.

│ │ │
Source§

impl<T> ToOwned for T
where │ │ │ - T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where │ │ │ U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
│ │ ├── ./usr/share/doc/rust-doc/html/test/test/enum.TestName.html │ │ │ @@ -1,21 +1,21 @@ │ │ │ TestName in test::test - Rust

TestName

Enum TestName 

Source
pub enum TestName {
│ │ │ -    StaticTestName(&'static str),
│ │ │ +    StaticTestName(&'static str),
│ │ │      DynTestName(String),
│ │ │ -    AlignedTestName(Cow<'static, str>, NamePadding),
│ │ │ -}
🔬This is a nightly-only experimental API. (test)

Variants§

§

StaticTestName(&'static str)

🔬This is a nightly-only experimental API. (test)
§

DynTestName(String)

🔬This is a nightly-only experimental API. (test)
§

AlignedTestName(Cow<'static, str>, NamePadding)

🔬This is a nightly-only experimental API. (test)

Implementations§

Source§

impl TestName

Source

pub fn as_slice(&self) -> &str

🔬This is a nightly-only experimental API. (test)
Source

pub fn padding(&self) -> NamePadding

🔬This is a nightly-only experimental API. (test)
Source

pub fn with_padding(&self, padding: NamePadding) -> TestName

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for TestName

Source§

fn clone(&self) -> TestName

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TestName

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for TestName

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for TestName

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where │ │ │ + AlignedTestName(Cow<'static, str>, NamePadding), │ │ │ +}
🔬This is a nightly-only experimental API. (test)

Variants§

§

StaticTestName(&'static str)

🔬This is a nightly-only experimental API. (test)
§

DynTestName(String)

🔬This is a nightly-only experimental API. (test)
§

AlignedTestName(Cow<'static, str>, NamePadding)

🔬This is a nightly-only experimental API. (test)

Implementations§

Source§

impl TestName

Source

pub fn as_slice(&self) -> &str

🔬This is a nightly-only experimental API. (test)
Source

pub fn padding(&self) -> NamePadding

🔬This is a nightly-only experimental API. (test)
Source

pub fn with_padding(&self, padding: NamePadding) -> TestName

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for TestName

Source§

fn clone(&self) -> TestName

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TestName

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for TestName

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for TestName

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where │ │ │ H: Hasher, │ │ │ - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for TestName

Source§

fn eq(&self, other: &TestName) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for TestName

Source§

fn eq(&self, other: &TestName) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ and should not be overridden without very good reason.
Source§

impl Eq for TestName

Source§

impl StructuralPartialEq for TestName

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │ + T: ?Sized,
Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │
Source§

impl<T, U> Into<U> for T
where │ │ │ U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

│ │ │

That is, this conversion is whatever the implementation of │ │ │ From<T> for U chooses to do.

│ │ │
Source§

impl<T> ToOwned for T
where │ │ │ - T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where │ │ │ + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where │ │ │ T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where │ │ │ U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
│ │ ├── ./usr/share/doc/rust-doc/html/test/test/enum.TestResult.html │ │ │ @@ -1,21 +1,21 @@ │ │ │ TestResult in test::test - Rust

TestResult

Enum TestResult 

Source
pub enum TestResult {
│ │ │      TrOk,
│ │ │      TrFailed,
│ │ │      TrFailedMsg(String),
│ │ │      TrIgnored,
│ │ │      TrBench(BenchSamples),
│ │ │      TrTimedFail,
│ │ │ -}
🔬This is a nightly-only experimental API. (test)

Variants§

§

TrOk

🔬This is a nightly-only experimental API. (test)
§

TrFailed

🔬This is a nightly-only experimental API. (test)
§

TrFailedMsg(String)

🔬This is a nightly-only experimental API. (test)
§

TrIgnored

🔬This is a nightly-only experimental API. (test)
§

TrBench(BenchSamples)

🔬This is a nightly-only experimental API. (test)
§

TrTimedFail

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for TestResult

Source§

fn clone(&self) -> TestResult

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TestResult

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for TestResult

Source§

fn eq(&self, other: &TestResult) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ +}
🔬This is a nightly-only experimental API. (test)

Variants§

§

TrOk

🔬This is a nightly-only experimental API. (test)
§

TrFailed

🔬This is a nightly-only experimental API. (test)
§

TrFailedMsg(String)

🔬This is a nightly-only experimental API. (test)
§

TrIgnored

🔬This is a nightly-only experimental API. (test)
§

TrBench(BenchSamples)

🔬This is a nightly-only experimental API. (test)
§

TrTimedFail

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for TestResult

Source§

fn clone(&self) -> TestResult

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TestResult

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for TestResult

Source§

fn eq(&self, other: &TestResult) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for TestResult

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │ + T: ?Sized,
Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │
Source§

impl<T, U> Into<U> for T
where │ │ │ U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

│ │ │

That is, this conversion is whatever the implementation of │ │ │ From<T> for U chooses to do.

│ │ │
Source§

impl<T> ToOwned for T
where │ │ │ - T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where │ │ │ U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
│ │ ├── ./usr/share/doc/rust-doc/html/test/test/enum.TestType.html │ │ │ @@ -6,23 +6,23 @@ │ │ │ }
🔬This is a nightly-only experimental API. (test)
Expand description

Type of the test according to the Rust book │ │ │ conventions.

│ │ │

Variants§

§

UnitTest

🔬This is a nightly-only experimental API. (test)

Unit-tests are expected to be in the src folder of the crate.

│ │ │
§

IntegrationTest

🔬This is a nightly-only experimental API. (test)

Integration-style tests are expected to be in the tests folder of the crate.

│ │ │
§

DocTest

🔬This is a nightly-only experimental API. (test)

Doctests are created by the librustdoc manually, so it’s a different type of test.

│ │ │
§

Unknown

🔬This is a nightly-only experimental API. (test)

Tests for the sources that don’t follow the project layout convention │ │ │ (e.g. tests in raw main.rs compiled by calling rustc --test directly).

│ │ │ -

Trait Implementations§

Source§

impl Clone for TestType

Source§

fn clone(&self) -> TestType

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TestType

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for TestType

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where │ │ │ +

Trait Implementations§

Source§

impl Clone for TestType

Source§

fn clone(&self) -> TestType

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TestType

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for TestType

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where │ │ │ H: Hasher, │ │ │ - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for TestType

Source§

fn eq(&self, other: &TestType) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ + Self: Sized,
Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for TestType

Source§

fn eq(&self, other: &TestType) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ and should not be overridden without very good reason.
Source§

impl Copy for TestType

Source§

impl Eq for TestType

Source§

impl StructuralPartialEq for TestType

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │ + T: ?Sized,
Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │
Source§

impl<T, U> Into<U> for T
where │ │ │ U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

│ │ │

That is, this conversion is whatever the implementation of │ │ │ From<T> for U chooses to do.

│ │ │
Source§

impl<T> ToOwned for T
where │ │ │ - T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where │ │ │ U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
│ │ ├── ./usr/share/doc/rust-doc/html/test/test/struct.Metric.html │ │ │ @@ -1,14 +1,14 @@ │ │ │ -Metric in test::test - Rust

Metric

Struct Metric 

Source
pub struct Metric { /* private fields */ }
🔬This is a nightly-only experimental API. (test)

Implementations§

Source§

impl Metric

Source

pub fn new(value: f64, noise: f64) -> Metric

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for Metric

Source§

fn clone(&self) -> Metric

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Metric

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for Metric

Source§

fn eq(&self, other: &Metric) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ +Metric in test::test - Rust

Metric

Struct Metric 

Source
pub struct Metric { /* private fields */ }
🔬This is a nightly-only experimental API. (test)

Implementations§

Source§

impl Metric

Source

pub fn new(value: f64, noise: f64) -> Metric

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for Metric

Source§

fn clone(&self) -> Metric

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Metric

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for Metric

Source§

fn eq(&self, other: &Metric) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ and should not be overridden without very good reason.
Source§

impl Copy for Metric

Source§

impl StructuralPartialEq for Metric

Auto Trait Implementations§

§

impl Freeze for Metric

§

impl RefUnwindSafe for Metric

§

impl Send for Metric

§

impl Sync for Metric

§

impl Unpin for Metric

§

impl UnwindSafe for Metric

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │ + T: ?Sized,
Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │
Source§

impl<T, U> Into<U> for T
where │ │ │ U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

│ │ │

That is, this conversion is whatever the implementation of │ │ │ From<T> for U chooses to do.

│ │ │
Source§

impl<T> ToOwned for T
where │ │ │ - T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where │ │ │ U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
│ │ ├── ./usr/share/doc/rust-doc/html/test/test/struct.MetricMap.html │ │ │ @@ -1,25 +1,25 @@ │ │ │ -MetricMap in test::test - Rust

MetricMap

Struct MetricMap 

Source
pub struct MetricMap(/* private fields */);
🔬This is a nightly-only experimental API. (test)

Implementations§

Source§

impl MetricMap

Source

pub fn new() -> MetricMap

🔬This is a nightly-only experimental API. (test)
Source

pub fn insert_metric(&mut self, name: &str, value: f64, noise: f64)

🔬This is a nightly-only experimental API. (test)

Insert a named value (+/- noise) metric into the map. The value │ │ │ +MetricMap in test::test - Rust

MetricMap

Struct MetricMap 

Source
pub struct MetricMap(/* private fields */);
🔬This is a nightly-only experimental API. (test)

Implementations§

Source§

impl MetricMap

Source

pub fn new() -> MetricMap

🔬This is a nightly-only experimental API. (test)
Source

pub fn insert_metric(&mut self, name: &str, value: f64, noise: f64)

🔬This is a nightly-only experimental API. (test)

Insert a named value (+/- noise) metric into the map. The value │ │ │ must be non-negative. The noise indicates the uncertainty of the │ │ │ metric, which doubles as the “noise range” of acceptable │ │ │ pairwise-regressions on this named value, when comparing from one │ │ │ metric to the next using compare_to_old.

│ │ │

If noise is positive, then it means this metric is of a value │ │ │ you want to see grow smaller, so a change larger than noise in the │ │ │ positive direction represents a regression.

│ │ │

If noise is negative, then it means this metric is of a value │ │ │ you want to see grow larger, so a change larger than noise in the │ │ │ negative direction represents a regression.

│ │ │ -
Source

pub fn fmt_metrics(&self) -> String

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for MetricMap

Source§

fn clone(&self) -> MetricMap

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl PartialEq for MetricMap

Source§

fn eq(&self, other: &MetricMap) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ +
Source

pub fn fmt_metrics(&self) -> String

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for MetricMap

Source§

fn clone(&self) -> MetricMap

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl PartialEq for MetricMap

Source§

fn eq(&self, other: &MetricMap) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for MetricMap

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │ + T: ?Sized,
Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │
Source§

impl<T, U> Into<U> for T
where │ │ │ U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

│ │ │

That is, this conversion is whatever the implementation of │ │ │ From<T> for U chooses to do.

│ │ │
Source§

impl<T> ToOwned for T
where │ │ │ - T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where │ │ │ U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
│ │ ├── ./usr/share/doc/rust-doc/html/test/test/struct.Options.html │ │ │ @@ -1,18 +1,18 @@ │ │ │ Options in test::test - Rust

Options

Struct Options 

Source
pub struct Options {
│ │ │ -    pub display_output: bool,
│ │ │ -    pub panic_abort: bool,
│ │ │ +    pub display_output: bool,
│ │ │ +    pub panic_abort: bool,
│ │ │  }
🔬This is a nightly-only experimental API. (test)
Expand description

Options for the test run defined by the caller (instead of CLI arguments). │ │ │ In case we want to add other options as well, just add them in this struct.

│ │ │ -

Fields§

§display_output: bool
🔬This is a nightly-only experimental API. (test)
§panic_abort: bool
🔬This is a nightly-only experimental API. (test)

Implementations§

Source§

impl Options

Source

pub fn new() -> Options

🔬This is a nightly-only experimental API. (test)
Source

pub fn display_output(self, display_output: bool) -> Options

🔬This is a nightly-only experimental API. (test)
Source

pub fn panic_abort(self, panic_abort: bool) -> Options

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for Options

Source§

fn clone(&self) -> Options

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Options

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Copy for Options

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ +

Fields§

§display_output: bool
🔬This is a nightly-only experimental API. (test)
§panic_abort: bool
🔬This is a nightly-only experimental API. (test)

Implementations§

Source§

impl Options

Source

pub fn new() -> Options

🔬This is a nightly-only experimental API. (test)
Source

pub fn display_output(self, display_output: bool) -> Options

🔬This is a nightly-only experimental API. (test)
Source

pub fn panic_abort(self, panic_abort: bool) -> Options

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for Options

Source§

fn clone(&self) -> Options

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Options

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Copy for Options

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │ + T: ?Sized,
Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │
Source§

impl<T, U> Into<U> for T
where │ │ │ U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

│ │ │

That is, this conversion is whatever the implementation of │ │ │ From<T> for U chooses to do.

│ │ │
Source§

impl<T> ToOwned for T
where │ │ │ - T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where │ │ │ U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
│ │ ├── ./usr/share/doc/rust-doc/html/test/test/struct.TestDesc.html │ │ │ @@ -1,28 +1,28 @@ │ │ │ TestDesc in test::test - Rust

TestDesc

Struct TestDesc 

Source
pub struct TestDesc {
│ │ │      pub name: TestName,
│ │ │ -    pub ignore: bool,
│ │ │ -    pub ignore_message: Option<&'static str>,
│ │ │ -    pub source_file: &'static str,
│ │ │ -    pub start_line: usize,
│ │ │ -    pub start_col: usize,
│ │ │ -    pub end_line: usize,
│ │ │ -    pub end_col: usize,
│ │ │ +    pub ignore: bool,
│ │ │ +    pub ignore_message: Option<&'static str>,
│ │ │ +    pub source_file: &'static str,
│ │ │ +    pub start_line: usize,
│ │ │ +    pub start_col: usize,
│ │ │ +    pub end_line: usize,
│ │ │ +    pub end_col: usize,
│ │ │      pub should_panic: ShouldPanic,
│ │ │ -    pub compile_fail: bool,
│ │ │ -    pub no_run: bool,
│ │ │ +    pub compile_fail: bool,
│ │ │ +    pub no_run: bool,
│ │ │      pub test_type: TestType,
│ │ │ -}
🔬This is a nightly-only experimental API. (test)

Fields§

§name: TestName
🔬This is a nightly-only experimental API. (test)
§ignore: bool
🔬This is a nightly-only experimental API. (test)
§ignore_message: Option<&'static str>
🔬This is a nightly-only experimental API. (test)
§source_file: &'static str
🔬This is a nightly-only experimental API. (test)
§start_line: usize
🔬This is a nightly-only experimental API. (test)
§start_col: usize
🔬This is a nightly-only experimental API. (test)
§end_line: usize
🔬This is a nightly-only experimental API. (test)
§end_col: usize
🔬This is a nightly-only experimental API. (test)
§should_panic: ShouldPanic
🔬This is a nightly-only experimental API. (test)
§compile_fail: bool
🔬This is a nightly-only experimental API. (test)
§no_run: bool
🔬This is a nightly-only experimental API. (test)
§test_type: TestType
🔬This is a nightly-only experimental API. (test)

Implementations§

Source§

impl TestDesc

Source

pub fn padded_name(&self, column_count: usize, align: NamePadding) -> String

🔬This is a nightly-only experimental API. (test)
Source

pub fn test_mode(&self) -> Option<&'static str>

🔬This is a nightly-only experimental API. (test)

Returns None for ignored test or tests that are just run, otherwise returns a description of the type of test. │ │ │ +}

🔬This is a nightly-only experimental API. (test)

Fields§

§name: TestName
🔬This is a nightly-only experimental API. (test)
§ignore: bool
🔬This is a nightly-only experimental API. (test)
§ignore_message: Option<&'static str>
🔬This is a nightly-only experimental API. (test)
§source_file: &'static str
🔬This is a nightly-only experimental API. (test)
§start_line: usize
🔬This is a nightly-only experimental API. (test)
§start_col: usize
🔬This is a nightly-only experimental API. (test)
§end_line: usize
🔬This is a nightly-only experimental API. (test)
§end_col: usize
🔬This is a nightly-only experimental API. (test)
§should_panic: ShouldPanic
🔬This is a nightly-only experimental API. (test)
§compile_fail: bool
🔬This is a nightly-only experimental API. (test)
§no_run: bool
🔬This is a nightly-only experimental API. (test)
§test_type: TestType
🔬This is a nightly-only experimental API. (test)

Implementations§

Source§

impl TestDesc

Source

pub fn padded_name(&self, column_count: usize, align: NamePadding) -> String

🔬This is a nightly-only experimental API. (test)
Source

pub fn test_mode(&self) -> Option<&'static str>

🔬This is a nightly-only experimental API. (test)

Returns None for ignored test or tests that are just run, otherwise returns a description of the type of test. │ │ │ Descriptions include “should panic”, “compile fail” and “compile”.

│ │ │

Trait Implementations§

Source§

impl Clone for TestDesc

Source§

fn clone(&self) -> TestDesc

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TestDesc

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │ + T: ?Sized,
Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │
Source§

impl<T, U> Into<U> for T
where │ │ │ U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

│ │ │

That is, this conversion is whatever the implementation of │ │ │ From<T> for U chooses to do.

│ │ │
Source§

impl<T> ToOwned for T
where │ │ │ - T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where │ │ │ U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
│ │ ├── ./usr/share/doc/rust-doc/html/test/test/struct.TestDescAndFn.html │ │ │ @@ -1,22 +1,22 @@ │ │ │ TestDescAndFn in test::test - Rust

TestDescAndFn

Struct TestDescAndFn 

Source
pub struct TestDescAndFn {
│ │ │      pub desc: TestDesc,
│ │ │      pub testfn: TestFn,
│ │ │  }
🔬This is a nightly-only experimental API. (test)

Fields§

§desc: TestDesc
🔬This is a nightly-only experimental API. (test)
§testfn: TestFn
🔬This is a nightly-only experimental API. (test)

Implementations§

Source§

impl TestDescAndFn

Source

pub const fn new_doctest( │ │ │ - test_name: &'static str, │ │ │ - ignore: bool, │ │ │ - source_file: &'static str, │ │ │ - start_line: usize, │ │ │ - no_run: bool, │ │ │ - should_panic: bool, │ │ │ + test_name: &'static str, │ │ │ + ignore: bool, │ │ │ + source_file: &'static str, │ │ │ + start_line: usize, │ │ │ + no_run: bool, │ │ │ + should_panic: bool, │ │ │ testfn: TestFn, │ │ │ ) -> Self

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Debug for TestDescAndFn

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │ + T: ?Sized,
Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │
Source§

impl<T, U> Into<U> for T
where │ │ │ U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

│ │ │

That is, this conversion is whatever the implementation of │ │ │ From<T> for U chooses to do.

│ │ │
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where │ │ │ U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
│ │ ├── ./usr/share/doc/rust-doc/html/test/test/struct.TestExecTime.html │ │ │ @@ -1,16 +1,16 @@ │ │ │ TestExecTime in test::test - Rust

TestExecTime

Struct TestExecTime 

Source
pub struct TestExecTime(pub Duration);
🔬This is a nightly-only experimental API. (test)
Expand description

The measured execution time of a unit test.

│ │ │ -

Tuple Fields§

§0: Duration
🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for TestExecTime

Source§

fn clone(&self) -> TestExecTime

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TestExecTime

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for TestExecTime

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for TestExecTime

Source§

fn eq(&self, other: &TestExecTime) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ +

Tuple Fields§

§0: Duration
🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for TestExecTime

Source§

fn clone(&self) -> TestExecTime

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TestExecTime

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for TestExecTime

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for TestExecTime

Source§

fn eq(&self, other: &TestExecTime) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for TestExecTime

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │ + T: ?Sized,
Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │
Source§

impl<T, U> Into<U> for T
where │ │ │ U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

│ │ │

That is, this conversion is whatever the implementation of │ │ │ From<T> for U chooses to do.

│ │ │
Source§

impl<T> ToOwned for T
where │ │ │ - T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where │ │ │ + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where │ │ │ T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where │ │ │ U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
│ │ ├── ./usr/share/doc/rust-doc/html/test/test/struct.TestId.html │ │ │ @@ -1,16 +1,16 @@ │ │ │ -TestId in test::test - Rust

TestId

Struct TestId 

Source
pub struct TestId(pub usize);
🔬This is a nightly-only experimental API. (test)

Tuple Fields§

§0: usize
🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for TestId

Source§

fn clone(&self) -> TestId

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TestId

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for TestId

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where │ │ │ +TestId in test::test - Rust

TestId

Struct TestId 

Source
pub struct TestId(pub usize);
🔬This is a nightly-only experimental API. (test)

Tuple Fields§

§0: usize
🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for TestId

Source§

fn clone(&self) -> TestId

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TestId

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for TestId

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where │ │ │ H: Hasher, │ │ │ - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for TestId

Source§

fn eq(&self, other: &TestId) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for TestId

Source§

fn eq(&self, other: &TestId) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ and should not be overridden without very good reason.
Source§

impl Copy for TestId

Source§

impl Eq for TestId

Source§

impl StructuralPartialEq for TestId

Auto Trait Implementations§

§

impl Freeze for TestId

§

impl RefUnwindSafe for TestId

§

impl Send for TestId

§

impl Sync for TestId

§

impl Unpin for TestId

§

impl UnwindSafe for TestId

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │ + T: ?Sized,
Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │
Source§

impl<T, U> Into<U> for T
where │ │ │ U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

│ │ │

That is, this conversion is whatever the implementation of │ │ │ From<T> for U chooses to do.

│ │ │
Source§

impl<T> ToOwned for T
where │ │ │ - T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where │ │ │ U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
│ │ ├── ./usr/share/doc/rust-doc/html/test/test/struct.TestOpts.html │ │ │ @@ -1,34 +1,34 @@ │ │ │ TestOpts in test::test - Rust

TestOpts

Struct TestOpts 

Source
pub struct TestOpts {
Show 19 fields │ │ │ - pub list: bool, │ │ │ + pub list: bool, │ │ │ pub filters: Vec<String>, │ │ │ - pub filter_exact: bool, │ │ │ - pub force_run_in_process: bool, │ │ │ - pub exclude_should_panic: bool, │ │ │ + pub filter_exact: bool, │ │ │ + pub force_run_in_process: bool, │ │ │ + pub exclude_should_panic: bool, │ │ │ pub run_ignored: RunIgnored, │ │ │ - pub run_tests: bool, │ │ │ - pub bench_benchmarks: bool, │ │ │ - pub logfile: Option<PathBuf>, │ │ │ - pub nocapture: bool, │ │ │ + pub run_tests: bool, │ │ │ + pub bench_benchmarks: bool, │ │ │ + pub logfile: Option<PathBuf>, │ │ │ + pub nocapture: bool, │ │ │ pub color: ColorConfig, │ │ │ pub format: OutputFormat, │ │ │ - pub shuffle: bool, │ │ │ - pub shuffle_seed: Option<u64>, │ │ │ - pub test_threads: Option<usize>, │ │ │ + pub shuffle: bool, │ │ │ + pub shuffle_seed: Option<u64>, │ │ │ + pub test_threads: Option<usize>, │ │ │ pub skip: Vec<String>, │ │ │ pub time_options: Option<TestTimeOptions>, │ │ │ - pub fail_fast: bool, │ │ │ + pub fail_fast: bool, │ │ │ pub options: Options, │ │ │ -
}
🔬This is a nightly-only experimental API. (test)

Fields§

§list: bool
🔬This is a nightly-only experimental API. (test)
§filters: Vec<String>
🔬This is a nightly-only experimental API. (test)
§filter_exact: bool
🔬This is a nightly-only experimental API. (test)
§force_run_in_process: bool
🔬This is a nightly-only experimental API. (test)
§exclude_should_panic: bool
🔬This is a nightly-only experimental API. (test)
§run_ignored: RunIgnored
🔬This is a nightly-only experimental API. (test)
§run_tests: bool
🔬This is a nightly-only experimental API. (test)
§bench_benchmarks: bool
🔬This is a nightly-only experimental API. (test)
§logfile: Option<PathBuf>
🔬This is a nightly-only experimental API. (test)
§nocapture: bool
🔬This is a nightly-only experimental API. (test)
§color: ColorConfig
🔬This is a nightly-only experimental API. (test)
§format: OutputFormat
🔬This is a nightly-only experimental API. (test)
§shuffle: bool
🔬This is a nightly-only experimental API. (test)
§shuffle_seed: Option<u64>
🔬This is a nightly-only experimental API. (test)
§test_threads: Option<usize>
🔬This is a nightly-only experimental API. (test)
§skip: Vec<String>
🔬This is a nightly-only experimental API. (test)
§time_options: Option<TestTimeOptions>
🔬This is a nightly-only experimental API. (test)
§fail_fast: bool
🔬This is a nightly-only experimental API. (test)

Stop at first failing test. │ │ │ +}

🔬This is a nightly-only experimental API. (test)

Fields§

§list: bool
🔬This is a nightly-only experimental API. (test)
§filters: Vec<String>
🔬This is a nightly-only experimental API. (test)
§filter_exact: bool
🔬This is a nightly-only experimental API. (test)
§force_run_in_process: bool
🔬This is a nightly-only experimental API. (test)
§exclude_should_panic: bool
🔬This is a nightly-only experimental API. (test)
§run_ignored: RunIgnored
🔬This is a nightly-only experimental API. (test)
§run_tests: bool
🔬This is a nightly-only experimental API. (test)
§bench_benchmarks: bool
🔬This is a nightly-only experimental API. (test)
§logfile: Option<PathBuf>
🔬This is a nightly-only experimental API. (test)
§nocapture: bool
🔬This is a nightly-only experimental API. (test)
§color: ColorConfig
🔬This is a nightly-only experimental API. (test)
§format: OutputFormat
🔬This is a nightly-only experimental API. (test)
§shuffle: bool
🔬This is a nightly-only experimental API. (test)
§shuffle_seed: Option<u64>
🔬This is a nightly-only experimental API. (test)
§test_threads: Option<usize>
🔬This is a nightly-only experimental API. (test)
§skip: Vec<String>
🔬This is a nightly-only experimental API. (test)
§time_options: Option<TestTimeOptions>
🔬This is a nightly-only experimental API. (test)
§fail_fast: bool
🔬This is a nightly-only experimental API. (test)

Stop at first failing test. │ │ │ May run a few more tests due to threading, but will │ │ │ abort as soon as possible.

│ │ │ -
§options: Options
🔬This is a nightly-only experimental API. (test)

Implementations§

Source§

impl TestOpts

Source

pub fn use_color(&self) -> bool

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Debug for TestOpts

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ +
§options: Options
🔬This is a nightly-only experimental API. (test)

Implementations§

Source§

impl TestOpts

Source

pub fn use_color(&self) -> bool

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Debug for TestOpts

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │ + T: ?Sized,
Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │
Source§

impl<T, U> Into<U> for T
where │ │ │ U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

│ │ │

That is, this conversion is whatever the implementation of │ │ │ From<T> for U chooses to do.

│ │ │
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where │ │ │ U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
│ │ ├── ./usr/share/doc/rust-doc/html/test/test/struct.TestTimeOptions.html │ │ │ @@ -1,22 +1,22 @@ │ │ │ TestTimeOptions in test::test - Rust

TestTimeOptions

Struct TestTimeOptions 

Source
pub struct TestTimeOptions {
│ │ │ -    pub error_on_excess: bool,
│ │ │ +    pub error_on_excess: bool,
│ │ │      pub unit_threshold: TimeThreshold,
│ │ │      pub integration_threshold: TimeThreshold,
│ │ │      pub doctest_threshold: TimeThreshold,
│ │ │  }
🔬This is a nightly-only experimental API. (test)
Expand description

Structure with parameters for calculating test execution time.

│ │ │ -

Fields§

§error_on_excess: bool
🔬This is a nightly-only experimental API. (test)

Denotes if the test critical execution time limit excess should be considered │ │ │ +

Fields§

§error_on_excess: bool
🔬This is a nightly-only experimental API. (test)

Denotes if the test critical execution time limit excess should be considered │ │ │ a test failure.

│ │ │ -
§unit_threshold: TimeThreshold
🔬This is a nightly-only experimental API. (test)
§integration_threshold: TimeThreshold
🔬This is a nightly-only experimental API. (test)
§doctest_threshold: TimeThreshold
🔬This is a nightly-only experimental API. (test)

Implementations§

Source§

impl TestTimeOptions

Source

pub fn new_from_env(error_on_excess: bool) -> Self

🔬This is a nightly-only experimental API. (test)
Source

pub fn is_warn(&self, test: &TestDesc, exec_time: &TestExecTime) -> bool

🔬This is a nightly-only experimental API. (test)
Source

pub fn is_critical(&self, test: &TestDesc, exec_time: &TestExecTime) -> bool

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for TestTimeOptions

Source§

fn clone(&self) -> TestTimeOptions

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TestTimeOptions

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for TestTimeOptions

Source§

fn default() -> TestTimeOptions

Returns the “default value” for a type. Read more
Source§

impl PartialEq for TestTimeOptions

Source§

fn eq(&self, other: &TestTimeOptions) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ +
§unit_threshold: TimeThreshold
🔬This is a nightly-only experimental API. (test)
§integration_threshold: TimeThreshold
🔬This is a nightly-only experimental API. (test)
§doctest_threshold: TimeThreshold
🔬This is a nightly-only experimental API. (test)

Implementations§

Source§

impl TestTimeOptions

Source

pub fn new_from_env(error_on_excess: bool) -> Self

🔬This is a nightly-only experimental API. (test)
Source

pub fn is_warn(&self, test: &TestDesc, exec_time: &TestExecTime) -> bool

🔬This is a nightly-only experimental API. (test)
Source

pub fn is_critical(&self, test: &TestDesc, exec_time: &TestExecTime) -> bool

🔬This is a nightly-only experimental API. (test)

Trait Implementations§

Source§

impl Clone for TestTimeOptions

Source§

fn clone(&self) -> TestTimeOptions

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TestTimeOptions

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for TestTimeOptions

Source§

fn default() -> TestTimeOptions

Returns the “default value” for a type. Read more
Source§

impl PartialEq for TestTimeOptions

Source§

fn eq(&self, other: &TestTimeOptions) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, │ │ │ and should not be overridden without very good reason.
Source§

impl Copy for TestTimeOptions

Source§

impl Eq for TestTimeOptions

Source§

impl StructuralPartialEq for TestTimeOptions

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where │ │ │ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ - T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │ + T: ?Sized,
Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where │ │ │ + T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where │ │ │ + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

│ │ │
Source§

impl<T, U> Into<U> for T
where │ │ │ U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

│ │ │

That is, this conversion is whatever the implementation of │ │ │ From<T> for U chooses to do.

│ │ │
Source§

impl<T> ToOwned for T
where │ │ │ - T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ + T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where │ │ │ U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where │ │ │ U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.