[INFO] fetching crate bnf_syntax_parser 0.1.0...
[INFO] testing bnf_syntax_parser-0.1.0 against master#c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38 for pr-146098-7
[INFO] extracting crate bnf_syntax_parser 0.1.0 into /workspace/builds/worker-4-tc1/source
[INFO] started tweaking crates.io crate bnf_syntax_parser 0.1.0
[INFO] finished tweaking crates.io crate bnf_syntax_parser 0.1.0
[INFO] tweaked toml for crates.io crate bnf_syntax_parser 0.1.0 written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate bnf_syntax_parser 0.1.0 on toolchain c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 4a303329d2fd157531305b65335812f4f8bae3c0ff7959fd9b6670ec0f11e9db
[INFO] running `Command { std: "docker" "start" "-a" "4a303329d2fd157531305b65335812f4f8bae3c0ff7959fd9b6670ec0f11e9db", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4a303329d2fd157531305b65335812f4f8bae3c0ff7959fd9b6670ec0f11e9db", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4a303329d2fd157531305b65335812f4f8bae3c0ff7959fd9b6670ec0f11e9db", kill_on_drop: false }`
[INFO] [stdout] 4a303329d2fd157531305b65335812f4f8bae3c0ff7959fd9b6670ec0f11e9db
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 5f145f13eea65e0798768fb63bb730934c90ce6dcaa9343b27daceeecf36f973
[INFO] running `Command { std: "docker" "start" "-a" "5f145f13eea65e0798768fb63bb730934c90ce6dcaa9343b27daceeecf36f973", kill_on_drop: false }`
[INFO] [stderr]    Compiling bnf_syntax_parser v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `Display`
[INFO] [stdout]  --> src/bnf_rules.rs:3:39
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::{collections::HashMap, fmt::{Display, Write}};
[INFO] [stdout]   |                                       ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MatchRecord`, `ParseErrorType`, `TokenIndex`, and `Token`
[INFO] [stdout]  --> src/bnf_rules.rs:5:33
[INFO] [stdout]   |
[INFO] [stdout] 5 | ...r, ParseErrorType, RuleParseError}, DescriptionIndex, MatchRecord, ParseTree, ParseTreeNode, Parser, RuleIndex, Token, TokenIndex, T...
[INFO] [stdout]   |       ^^^^^^^^^^^^^^                                     ^^^^^^^^^^^                                               ^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BNFDescription`
[INFO] [stdout]  --> src/error.rs:3:37
[INFO] [stdout]   |
[INFO] [stdout] 3 | use super::{parser::LocationRecord, BNFDescription, DescriptionIndex, RuleIndex, TokenIndex};
[INFO] [stdout]   |                                     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `marker::PhantomData`
[INFO] [stdout]  --> src/format.rs:1:34
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{fmt::{Display, Write}, marker::PhantomData};
[INFO] [stdout]   |                                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TokenType`
[INFO] [stdout]  --> src/format.rs:3:187
[INFO] [stdout]   |
[INFO] [stdout] 3 | ...tionIndex, ParseTree, ParseTreeNode, RuleIndex, TokenIndex, TokenType};
[INFO] [stdout]   |                                                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Display`
[INFO] [stdout]  --> src/parser.rs:1:16
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::{Display, Write};
[INFO] [stdout]   |                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ParseTree`
[INFO] [stdout]  --> src/rules_parser_generator.rs:3:48
[INFO] [stdout]   |
[INFO] [stdout] 3 | use super::{BNFDescription, BNFRule, BNFRules, ParseTree, Parser, RuleIndex};
[INFO] [stdout]   |                                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/bnf_rules.rs:3:48
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::{collections::HashMap, fmt::{Display, Write}};
[INFO] [stdout]   |                                                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/parser.rs:1:25
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::{Display, Write};
[INFO] [stdout]   |                         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ChoiceEnd`
[INFO] [stdout]   --> src/bnf_rules.rs:93:46
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 BNFDescription::ChoiceMidEnd(ChoiceEnd) => {
[INFO] [stdout]    |                                              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ChoiceEnd`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ChoiceEnd`
[INFO] [stdout]   --> src/bnf_rules.rs:96:68
[INFO] [stdout]    |
[INFO] [stdout] 96 |                         BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i + 1,
[INFO] [stdout]    |                                                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ChoiceEnd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ChoiceEnd`
[INFO] [stdout]   --> src/bnf_rules.rs:97:71
[INFO] [stdout]    |
[INFO] [stdout] 97 |                         BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i + 1,
[INFO] [stdout]    |                                                                       ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ChoiceEnd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ChoiceEnd`
[INFO] [stdout]    --> src/bnf_rules.rs:108:68
[INFO] [stdout]     |
[INFO] [stdout] 108 |                         BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i,
[INFO] [stdout]     |                                                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ChoiceEnd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ChoiceEnd`
[INFO] [stdout]    --> src/bnf_rules.rs:109:71
[INFO] [stdout]     |
[INFO] [stdout] 109 |                         BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i,
[INFO] [stdout]     |                                                                       ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ChoiceEnd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `NextChoiceMid`
[INFO] [stdout]    --> src/bnf_rules.rs:114:57
[INFO] [stdout]     |
[INFO] [stdout] 114 | ...                   BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => {*ChoiceEnd = i; break},
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_NextChoiceMid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `NextChoiceMid`
[INFO] [stdout]    --> src/bnf_rules.rs:115:60
[INFO] [stdout]     |
[INFO] [stdout] 115 | ...                   BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *ChoiceEnd = i,
[INFO] [stdout]     |                                                      ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_NextChoiceMid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `index`
[INFO] [stdout]   --> src/debug_recorder.rs:36:28
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub fn set_active_recorder(index: usize) {
[INFO] [stdout]    |                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token_index`
[INFO] [stdout]   --> src/debug_recorder.rs:61:20
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub fn record_step(token_index: TokenIndex, rule_location: LocationRecord) {
[INFO] [stdout]    |                    ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_token_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rule_location`
[INFO] [stdout]   --> src/debug_recorder.rs:61:45
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub fn record_step(token_index: TokenIndex, rule_location: LocationRecord) {
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rule_location`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]   --> src/debug_recorder.rs:66:24
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub fn record_rule_end(s: String) {
[INFO] [stdout]    |                        ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token_index`
[INFO] [stdout]   --> src/debug_recorder.rs:71:32
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub fn record_traceback_record(token_index: TokenIndex, rule_location: LocationRecord, traceback_record_index: usize) {
[INFO] [stdout]    |                                ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_token_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rule_location`
[INFO] [stdout]   --> src/debug_recorder.rs:71:57
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub fn record_traceback_record(token_index: TokenIndex, rule_location: LocationRecord, traceback_record_index: usize) {
[INFO] [stdout]    |                                                         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rule_location`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `traceback_record_index`
[INFO] [stdout]   --> src/debug_recorder.rs:71:88
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub fn record_traceback_record(token_index: TokenIndex, rule_location: LocationRecord, traceback_record_index: usize) {
[INFO] [stdout]    |                                                                                        ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_traceback_record_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token_index`
[INFO] [stdout]   --> src/debug_recorder.rs:76:25
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub fn record_traceback(token_index: TokenIndex, rule_location: LocationRecord, traceback_record_index: usize) {
[INFO] [stdout]    |                         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_token_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rule_location`
[INFO] [stdout]   --> src/debug_recorder.rs:76:50
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub fn record_traceback(token_index: TokenIndex, rule_location: LocationRecord, traceback_record_index: usize) {
[INFO] [stdout]    |                                                  ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rule_location`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `traceback_record_index`
[INFO] [stdout]   --> src/debug_recorder.rs:76:81
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub fn record_traceback(token_index: TokenIndex, rule_location: LocationRecord, traceback_record_index: usize) {
[INFO] [stdout]    |                                                                                 ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_traceback_record_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_best_match`
[INFO] [stdout]   --> src/debug_recorder.rs:81:26
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub fn record_best_match(new_best_match: &[MatchRecord]) {
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_best_match`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]    --> src/format.rs:196:44
[INFO] [stdout]     |
[INFO] [stdout] 196 |     pub fn format_best_match<TT, F>(&self, f: &mut F) {
[INFO] [stdout]     |                                            ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `r`
[INFO] [stdout]    --> src/format.rs:197:13
[INFO] [stdout]     |
[INFO] [stdout] 197 |         for r in &self.best_match {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_r`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `try_into` is never used
[INFO] [stdout]   --> src/bnf_rules.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl<TT> BNFDescription<TT> {
[INFO] [stdout]    | --------------------------- method in this implementation
[INFO] [stdout] 24 |     fn try_into<TT2, E>(self) -> Result<BNFDescription<TT2>, E> where TT2: TryFrom<TT, Error = E> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `active_recorder_mut` is never used
[INFO] [stdout]   --> src/debug_recorder.rs:30:4
[INFO] [stdout]    |
[INFO] [stdout] 30 | fn active_recorder_mut() -> Option<&'static mut Recorder> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `generate_bnf_rules_parser` is never used
[INFO] [stdout]    --> src/rules_parser_generator.rs:197:12
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl RulesParserGenerator {
[INFO] [stdout]     | ------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 197 |     pub fn generate_bnf_rules_parser(&mut self) -> Parser<char> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:41:41
[INFO] [stdout]    |
[INFO] [stdout] 41 |             BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd),
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:41:56
[INFO] [stdout]    |
[INFO] [stdout] 41 |             BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd),
[INFO] [stdout]    |                                                        ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:42:42
[INFO] [stdout]    |
[INFO] [stdout] 42 |             BNFDescription::ChoiceMidEnd(ChoiceEnd) => BNFDescription::ChoiceMidEnd(ChoiceEnd),
[INFO] [stdout]    |                                          ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:43:44
[INFO] [stdout]    |
[INFO] [stdout] 43 |             BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd),
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:43:59
[INFO] [stdout]    |
[INFO] [stdout] 43 |             BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd),
[INFO] [stdout]    |                                                           ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `OptionEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:45:41
[INFO] [stdout]    |
[INFO] [stdout] 45 |             BNFDescription::OptionStart(OptionEnd) => BNFDescription::OptionStart(OptionEnd),
[INFO] [stdout]    |                                         ^^^^^^^^^ help: convert the identifier to snake case: `option_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:47:45
[INFO] [stdout]    |
[INFO] [stdout] 47 |             BNFDescription::RepetitionStart(RepetitionEnd) => BNFDescription::RepetitionStart(RepetitionEnd),
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionStart` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:48:43
[INFO] [stdout]    |
[INFO] [stdout] 48 |             BNFDescription::RepetitionEnd(RepetitionStart) => BNFDescription::RepetitionEnd(RepetitionStart),
[INFO] [stdout]    |                                           ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:55:41
[INFO] [stdout]    |
[INFO] [stdout] 55 |             BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => BNFDescription::ChoiceStart(*NextChoiceMid, *ChoiceEnd),
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:55:56
[INFO] [stdout]    |
[INFO] [stdout] 55 |             BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => BNFDescription::ChoiceStart(*NextChoiceMid, *ChoiceEnd),
[INFO] [stdout]    |                                                        ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:56:42
[INFO] [stdout]    |
[INFO] [stdout] 56 |             BNFDescription::ChoiceMidEnd(ChoiceEnd) => BNFDescription::ChoiceMidEnd(*ChoiceEnd),
[INFO] [stdout]    |                                          ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:57:44
[INFO] [stdout]    |
[INFO] [stdout] 57 |             BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => BNFDescription::ChoiceMidStart(*NextChoiceMid, *ChoiceEnd),
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:57:59
[INFO] [stdout]    |
[INFO] [stdout] 57 |             BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => BNFDescription::ChoiceMidStart(*NextChoiceMid, *ChoiceEnd),
[INFO] [stdout]    |                                                           ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `OptionEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:59:41
[INFO] [stdout]    |
[INFO] [stdout] 59 |             BNFDescription::OptionStart(OptionEnd) => BNFDescription::OptionStart(*OptionEnd),
[INFO] [stdout]    |                                         ^^^^^^^^^ help: convert the identifier to snake case: `option_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:61:45
[INFO] [stdout]    |
[INFO] [stdout] 61 |             BNFDescription::RepetitionStart(RepetitionEnd) => BNFDescription::RepetitionStart(*RepetitionEnd),
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionStart` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:62:43
[INFO] [stdout]    |
[INFO] [stdout] 62 |             BNFDescription::RepetitionEnd(RepetitionStart) => BNFDescription::RepetitionEnd(*RepetitionStart),
[INFO] [stdout]    |                                           ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:93:46
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 BNFDescription::ChoiceMidEnd(ChoiceEnd) => {
[INFO] [stdout]    |                                              ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:96:53
[INFO] [stdout]    |
[INFO] [stdout] 96 |                         BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i + 1,
[INFO] [stdout]    |                                                     ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:96:68
[INFO] [stdout]    |
[INFO] [stdout] 96 |                         BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i + 1,
[INFO] [stdout]    |                                                                    ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:97:56
[INFO] [stdout]    |
[INFO] [stdout] 97 |                         BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i + 1,
[INFO] [stdout]    |                                                        ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:97:71
[INFO] [stdout]    |
[INFO] [stdout] 97 |                         BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i + 1,
[INFO] [stdout]    |                                                                       ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:108:53
[INFO] [stdout]     |
[INFO] [stdout] 108 |                         BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i,
[INFO] [stdout]     |                                                     ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:108:68
[INFO] [stdout]     |
[INFO] [stdout] 108 |                         BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i,
[INFO] [stdout]     |                                                                    ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:109:56
[INFO] [stdout]     |
[INFO] [stdout] 109 |                         BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i,
[INFO] [stdout]     |                                                        ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:109:71
[INFO] [stdout]     |
[INFO] [stdout] 109 |                         BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i,
[INFO] [stdout]     |                                                                       ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:114:57
[INFO] [stdout]     |
[INFO] [stdout] 114 | ...                   BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => {*ChoiceEnd = i; break},
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:114:72
[INFO] [stdout]     |
[INFO] [stdout] 114 | ...                   BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => {*ChoiceEnd = i; break},
[INFO] [stdout]     |                                                                  ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:115:60
[INFO] [stdout]     |
[INFO] [stdout] 115 | ...                   BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *ChoiceEnd = i,
[INFO] [stdout]     |                                                      ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:115:75
[INFO] [stdout]     |
[INFO] [stdout] 115 | ...                   BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *ChoiceEnd = i,
[INFO] [stdout]     |                                                                     ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:116:58
[INFO] [stdout]     |
[INFO] [stdout] 116 | ...                   BNFDescription::ChoiceMidEnd(ChoiceEnd) => *ChoiceEnd = i,
[INFO] [stdout]     |                                                    ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `OptionEnd` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:122:49
[INFO] [stdout]     |
[INFO] [stdout] 122 |                     BNFDescription::OptionStart(OptionEnd) => *OptionEnd = i,
[INFO] [stdout]     |                                                 ^^^^^^^^^ help: convert the identifier to snake case: `option_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionStart` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:128:55
[INFO] [stdout]     |
[INFO] [stdout] 128 |                         BNFDescription::RepetitionEnd(RepetitionStart) => *RepetitionStart = repetition_start,
[INFO] [stdout]     |                                                       ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionEnd` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:132:57
[INFO] [stdout]     |
[INFO] [stdout] 132 |                         BNFDescription::RepetitionStart(RepetitionEnd) => *RepetitionEnd = i,
[INFO] [stdout]     |                                                         ^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/debug_recorder.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 26 |         RECORDERS.get(ACTIVE_RECORD)
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/debug_recorder.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 |         RECORDERS.get_mut(ACTIVE_RECORD)
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/debug_recorder.rs:45:9
[INFO] [stdout]    |
[INFO] [stdout] 45 |         RECORDERS.push(Recorder::default());
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/debug_recorder.rs:46:25
[INFO] [stdout]    |
[INFO] [stdout] 46 |         ACTIVE_RECORD = RECORDERS.len() - 1;
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/debug_recorder.rs:57:25
[INFO] [stdout]    |
[INFO] [stdout] 57 |         ACTIVE_RECORD = RECORDERS.len();
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]   --> src/format.rs:24:41
[INFO] [stdout]    |
[INFO] [stdout] 24 |             BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => write!(f, "ChoiceStart({}, {})", NextChoiceMid, ChoiceEnd)?,
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/format.rs:24:56
[INFO] [stdout]    |
[INFO] [stdout] 24 |             BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => write!(f, "ChoiceStart({}, {})", NextChoiceMid, ChoiceEnd)?,
[INFO] [stdout]    |                                                        ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/format.rs:25:42
[INFO] [stdout]    |
[INFO] [stdout] 25 |             BNFDescription::ChoiceMidEnd(ChoiceEnd) => write!(f, "ChoiceMidEnd({})", ChoiceEnd)?,
[INFO] [stdout]    |                                          ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]   --> src/format.rs:26:44
[INFO] [stdout]    |
[INFO] [stdout] 26 |             BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => write!(f, "ChoiceMidStart({}, {})", NextChoiceMid, ChoiceEnd)?,
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/format.rs:26:59
[INFO] [stdout]    |
[INFO] [stdout] 26 |             BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => write!(f, "ChoiceMidStart({}, {})", NextChoiceMid, ChoiceEnd)?,
[INFO] [stdout]    |                                                           ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `OptionEnd` should have a snake case name
[INFO] [stdout]   --> src/format.rs:28:41
[INFO] [stdout]    |
[INFO] [stdout] 28 |             BNFDescription::OptionStart(OptionEnd) => write!(f, "OptionStart({})", OptionEnd)?,
[INFO] [stdout]    |                                         ^^^^^^^^^ help: convert the identifier to snake case: `option_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionEnd` should have a snake case name
[INFO] [stdout]   --> src/format.rs:30:45
[INFO] [stdout]    |
[INFO] [stdout] 30 |             BNFDescription::RepetitionStart(RepetitionEnd) => write!(f, "RepetitionStart({})", RepetitionEnd)?,
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionStart` should have a snake case name
[INFO] [stdout]   --> src/format.rs:31:43
[INFO] [stdout]    |
[INFO] [stdout] 31 |             BNFDescription::RepetitionEnd(RepetitionStart) => write!(f, "RepetitionEnd({})", RepetitionStart)?,
[INFO] [stdout]    |                                           ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionStart` should have a snake case name
[INFO] [stdout]   --> src/parser.rs:50:99
[INFO] [stdout]    |
[INFO] [stdout] 50 | ...ance_id: RuleInstanceId, RepetitionStart: DescriptionIndex, token_index: &TokenIndex, description_index: DescriptionIndex) -> Par...
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]   --> src/parser.rs:85:41
[INFO] [stdout]    |
[INFO] [stdout] 85 |             BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => if NextChoiceMid == ChoiceEnd {
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/parser.rs:85:56
[INFO] [stdout]    |
[INFO] [stdout] 85 |             BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => if NextChoiceMid == ChoiceEnd {
[INFO] [stdout]    |                                                        ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]   --> src/parser.rs:91:44
[INFO] [stdout]    |
[INFO] [stdout] 91 |             BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => if NextChoiceMid == ChoiceEnd {
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/parser.rs:91:59
[INFO] [stdout]    |
[INFO] [stdout] 91 |             BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => if NextChoiceMid == ChoiceEnd {
[INFO] [stdout]    |                                                           ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `OptionEnd` should have a snake case name
[INFO] [stdout]   --> src/parser.rs:97:41
[INFO] [stdout]    |
[INFO] [stdout] 97 |             BNFDescription::OptionStart(OptionEnd) => OptionEnd + 1,
[INFO] [stdout]    |                                         ^^^^^^^^^ help: convert the identifier to snake case: `option_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionEnd` should have a snake case name
[INFO] [stdout]   --> src/parser.rs:98:45
[INFO] [stdout]    |
[INFO] [stdout] 98 |             BNFDescription::RepetitionStart(RepetitionEnd) => RepetitionEnd + 1,
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]    --> src/parser.rs:237:46
[INFO] [stdout]     |
[INFO] [stdout] 237 | ...   BNFDescription::ChoiceMidEnd(ChoiceEnd) => rule_location.description_index = *ChoiceEnd, // 之后会description_index += 1，直...
[INFO] [stdout]     |                                    ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `OptionEnd` should have a snake case name
[INFO] [stdout]    --> src/parser.rs:239:45
[INFO] [stdout]     |
[INFO] [stdout] 239 |                 BNFDescription::OptionStart(OptionEnd) => RecordOrJump!(*OptionEnd),
[INFO] [stdout]     |                                             ^^^^^^^^^ help: convert the identifier to snake case: `option_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionEnd` should have a snake case name
[INFO] [stdout]    --> src/parser.rs:241:49
[INFO] [stdout]     |
[INFO] [stdout] 241 |                 BNFDescription::RepetitionStart(RepetitionEnd) => RecordOrJump!(*RepetitionEnd),
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionStart` should have a snake case name
[INFO] [stdout]    --> src/parser.rs:242:47
[INFO] [stdout]     |
[INFO] [stdout] 242 | ...   BNFDescription::RepetitionEnd(RepetitionStart) => if *token_index < tokens.len() { // 如果 token 没有匹配完，需要检查是否无...
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `BNFRule_BLOCK_COMMENT_CONTENT` should have a snake case name
[INFO] [stdout]   --> src/rules_parser_generator.rs:98:34
[INFO] [stdout]    |
[INFO] [stdout] 98 |             Some((block_comment, BNFRule_BLOCK_COMMENT_CONTENT)) => (Some(block_comment), Some(BNFRule_BLOCK_COMMENT_CONTENT)),
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `bnfrule_block_comment_content`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `BNFRule_BLOCK_COMMENT_CONTENT` should have a snake case name
[INFO] [stdout]   --> src/rules_parser_generator.rs:72:29
[INFO] [stdout]    |
[INFO] [stdout] 72 | ...ck_comment, BNFRule_BLOCK_COMMENT_CONTENT) = match self.block_comment_start_end.as_ref().map(|(block_comment_start, block_comment...
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `bnfrule_block_comment_content`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `BNFRule_SINGLE_SPACE` should have a snake case name
[INFO] [stdout]    --> src/rules_parser_generator.rs:102:13
[INFO] [stdout]     |
[INFO] [stdout] 102 |         let BNFRule_SINGLE_SPACE: Option<BNFRule<char>> = (line_comment.is_some() || block_comment.is_some()).then(||
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `bnfrule_single_space`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `BNFDescription_SINGLE_SPACE` should have a snake case name
[INFO] [stdout]    --> src/rules_parser_generator.rs:115:13
[INFO] [stdout]     |
[INFO] [stdout] 115 |         let BNFDescription_SINGLE_SPACE = match BNFRule_SINGLE_SPACE {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `bnfdescription_single_space`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `BNFRule_IDENTIFIER` should have a snake case name
[INFO] [stdout]    --> src/rules_parser_generator.rs:120:13
[INFO] [stdout]     |
[INFO] [stdout] 120 |         let BNFRule_IDENTIFIER = BNFRule::new(IDENTIFIER, vec![
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `bnfrule_identifier`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `BNFRule_STRING` should have a snake case name
[INFO] [stdout]    --> src/rules_parser_generator.rs:127:13
[INFO] [stdout]     |
[INFO] [stdout] 127 |         let BNFRule_STRING = BNFRule::new(STRING, vec![
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `bnfrule_string`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `BNFRule_BNF_RULE` should have a snake case name
[INFO] [stdout]    --> src/rules_parser_generator.rs:135:13
[INFO] [stdout]     |
[INFO] [stdout] 135 |         let BNFRule_BNF_RULE = BNFRule::new(BNF_RULE, vec![
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `bnfrule_bnf_rule`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `BNFRule_BNF_RULES` should have a snake case name
[INFO] [stdout]    --> src/rules_parser_generator.rs:158:13
[INFO] [stdout]     |
[INFO] [stdout] 158 |         let BNFRule_BNF_RULES = BNFRule::new(BNF_RULES, vec![
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `bnfrule_bnf_rules`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.78s
[INFO] running `Command { std: "docker" "inspect" "5f145f13eea65e0798768fb63bb730934c90ce6dcaa9343b27daceeecf36f973", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5f145f13eea65e0798768fb63bb730934c90ce6dcaa9343b27daceeecf36f973", kill_on_drop: false }`
[INFO] [stdout] 5f145f13eea65e0798768fb63bb730934c90ce6dcaa9343b27daceeecf36f973
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] b9ab04e08c8f87a6471099869c97b88b2733cc0a9bd6e5c7be82d4c2c7b14d21
[INFO] running `Command { std: "docker" "start" "-a" "b9ab04e08c8f87a6471099869c97b88b2733cc0a9bd6e5c7be82d4c2c7b14d21", kill_on_drop: false }`
[INFO] [stdout] warning: unused import: `Display`
[INFO] [stdout]  --> src/bnf_rules.rs:3:39
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::{collections::HashMap, fmt::{Display, Write}};
[INFO] [stdout]   |                                       ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MatchRecord`, `ParseErrorType`, `TokenIndex`, and `Token`
[INFO] [stdout]  --> src/bnf_rules.rs:5:33
[INFO] [stdout]   |
[INFO] [stdout] 5 | ...r, ParseErrorType, RuleParseError}, DescriptionIndex, MatchRecord, ParseTree, ParseTreeNode, Parser, RuleIndex, Token, TokenIndex, T...
[INFO] [stdout]   |       ^^^^^^^^^^^^^^                                     ^^^^^^^^^^^                                               ^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BNFDescription`
[INFO] [stdout]  --> src/error.rs:3:37
[INFO] [stdout]   |
[INFO] [stdout] 3 | use super::{parser::LocationRecord, BNFDescription, DescriptionIndex, RuleIndex, TokenIndex};
[INFO] [stdout]   |                                     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `marker::PhantomData`
[INFO] [stdout]  --> src/format.rs:1:34
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{fmt::{Display, Write}, marker::PhantomData};
[INFO] [stdout]   |                                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TokenType`
[INFO] [stdout]  --> src/format.rs:3:187
[INFO] [stdout]   |
[INFO] [stdout] 3 | ...tionIndex, ParseTree, ParseTreeNode, RuleIndex, TokenIndex, TokenType};
[INFO] [stdout]   |                                                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Display`
[INFO] [stdout]  --> src/parser.rs:1:16
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::{Display, Write};
[INFO] [stdout]   |                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ParseTree`
[INFO] [stdout]  --> src/rules_parser_generator.rs:3:48
[INFO] [stdout]   |
[INFO] [stdout] 3 | use super::{BNFDescription, BNFRule, BNFRules, ParseTree, Parser, RuleIndex};
[INFO] [stdout]   |                                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/bnf_rules.rs:3:48
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::{collections::HashMap, fmt::{Display, Write}};
[INFO] [stdout]   |                                                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/parser.rs:1:25
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::{Display, Write};
[INFO] [stdout]   |                         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ChoiceEnd`
[INFO] [stdout]   --> src/bnf_rules.rs:93:46
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 BNFDescription::ChoiceMidEnd(ChoiceEnd) => {
[INFO] [stdout]    |                                              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ChoiceEnd`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ChoiceEnd`
[INFO] [stdout]   --> src/bnf_rules.rs:96:68
[INFO] [stdout]    |
[INFO] [stdout] 96 |                         BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i + 1,
[INFO] [stdout]    |                                                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ChoiceEnd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ChoiceEnd`
[INFO] [stdout]   --> src/bnf_rules.rs:97:71
[INFO] [stdout]    |
[INFO] [stdout] 97 |                         BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i + 1,
[INFO] [stdout]    |                                                                       ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ChoiceEnd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ChoiceEnd`
[INFO] [stdout]    --> src/bnf_rules.rs:108:68
[INFO] [stdout]     |
[INFO] [stdout] 108 |                         BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i,
[INFO] [stdout]     |                                                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ChoiceEnd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ChoiceEnd`
[INFO] [stdout]    --> src/bnf_rules.rs:109:71
[INFO] [stdout]     |
[INFO] [stdout] 109 |                         BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i,
[INFO] [stdout]     |                                                                       ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ChoiceEnd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `NextChoiceMid`
[INFO] [stdout]    --> src/bnf_rules.rs:114:57
[INFO] [stdout]     |
[INFO] [stdout] 114 | ...                   BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => {*ChoiceEnd = i; break},
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_NextChoiceMid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `NextChoiceMid`
[INFO] [stdout]    --> src/bnf_rules.rs:115:60
[INFO] [stdout]     |
[INFO] [stdout] 115 | ...                   BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *ChoiceEnd = i,
[INFO] [stdout]     |                                                      ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_NextChoiceMid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `index`
[INFO] [stdout]   --> src/debug_recorder.rs:36:28
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub fn set_active_recorder(index: usize) {
[INFO] [stdout]    |                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token_index`
[INFO] [stdout]   --> src/debug_recorder.rs:61:20
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub fn record_step(token_index: TokenIndex, rule_location: LocationRecord) {
[INFO] [stdout]    |                    ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_token_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rule_location`
[INFO] [stdout]   --> src/debug_recorder.rs:61:45
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub fn record_step(token_index: TokenIndex, rule_location: LocationRecord) {
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rule_location`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]   --> src/debug_recorder.rs:66:24
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub fn record_rule_end(s: String) {
[INFO] [stdout]    |                        ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token_index`
[INFO] [stdout]   --> src/debug_recorder.rs:71:32
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub fn record_traceback_record(token_index: TokenIndex, rule_location: LocationRecord, traceback_record_index: usize) {
[INFO] [stdout]    |                                ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_token_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rule_location`
[INFO] [stdout]   --> src/debug_recorder.rs:71:57
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub fn record_traceback_record(token_index: TokenIndex, rule_location: LocationRecord, traceback_record_index: usize) {
[INFO] [stdout]    |                                                         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rule_location`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `traceback_record_index`
[INFO] [stdout]   --> src/debug_recorder.rs:71:88
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub fn record_traceback_record(token_index: TokenIndex, rule_location: LocationRecord, traceback_record_index: usize) {
[INFO] [stdout]    |                                                                                        ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_traceback_record_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token_index`
[INFO] [stdout]   --> src/debug_recorder.rs:76:25
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub fn record_traceback(token_index: TokenIndex, rule_location: LocationRecord, traceback_record_index: usize) {
[INFO] [stdout]    |                         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_token_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rule_location`
[INFO] [stdout]   --> src/debug_recorder.rs:76:50
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub fn record_traceback(token_index: TokenIndex, rule_location: LocationRecord, traceback_record_index: usize) {
[INFO] [stdout]    |                                                  ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rule_location`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `traceback_record_index`
[INFO] [stdout]   --> src/debug_recorder.rs:76:81
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub fn record_traceback(token_index: TokenIndex, rule_location: LocationRecord, traceback_record_index: usize) {
[INFO] [stdout]    |                                                                                 ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_traceback_record_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_best_match`
[INFO] [stdout]   --> src/debug_recorder.rs:81:26
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub fn record_best_match(new_best_match: &[MatchRecord]) {
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_best_match`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]    --> src/format.rs:196:44
[INFO] [stdout]     |
[INFO] [stdout] 196 |     pub fn format_best_match<TT, F>(&self, f: &mut F) {
[INFO] [stdout]     |                                            ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `r`
[INFO] [stdout]    --> src/format.rs:197:13
[INFO] [stdout]     |
[INFO] [stdout] 197 |         for r in &self.best_match {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_r`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `try_into` is never used
[INFO] [stdout]   --> src/bnf_rules.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl<TT> BNFDescription<TT> {
[INFO] [stdout]    | --------------------------- method in this implementation
[INFO] [stdout] 24 |     fn try_into<TT2, E>(self) -> Result<BNFDescription<TT2>, E> where TT2: TryFrom<TT, Error = E> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `active_recorder_mut` is never used
[INFO] [stdout]   --> src/debug_recorder.rs:30:4
[INFO] [stdout]    |
[INFO] [stdout] 30 | fn active_recorder_mut() -> Option<&'static mut Recorder> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `generate_bnf_rules_parser` is never used
[INFO] [stdout]    --> src/rules_parser_generator.rs:197:12
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl RulesParserGenerator {
[INFO] [stdout]     | ------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 197 |     pub fn generate_bnf_rules_parser(&mut self) -> Parser<char> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:41:41
[INFO] [stdout]    |
[INFO] [stdout] 41 |             BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd),
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:41:56
[INFO] [stdout]    |
[INFO] [stdout] 41 |             BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd),
[INFO] [stdout]    |                                                        ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:42:42
[INFO] [stdout]    |
[INFO] [stdout] 42 |             BNFDescription::ChoiceMidEnd(ChoiceEnd) => BNFDescription::ChoiceMidEnd(ChoiceEnd),
[INFO] [stdout]    |                                          ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:43:44
[INFO] [stdout]    |
[INFO] [stdout] 43 |             BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd),
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:43:59
[INFO] [stdout]    |
[INFO] [stdout] 43 |             BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd),
[INFO] [stdout]    |                                                           ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `OptionEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:45:41
[INFO] [stdout]    |
[INFO] [stdout] 45 |             BNFDescription::OptionStart(OptionEnd) => BNFDescription::OptionStart(OptionEnd),
[INFO] [stdout]    |                                         ^^^^^^^^^ help: convert the identifier to snake case: `option_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:47:45
[INFO] [stdout]    |
[INFO] [stdout] 47 |             BNFDescription::RepetitionStart(RepetitionEnd) => BNFDescription::RepetitionStart(RepetitionEnd),
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionStart` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:48:43
[INFO] [stdout]    |
[INFO] [stdout] 48 |             BNFDescription::RepetitionEnd(RepetitionStart) => BNFDescription::RepetitionEnd(RepetitionStart),
[INFO] [stdout]    |                                           ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:55:41
[INFO] [stdout]    |
[INFO] [stdout] 55 |             BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => BNFDescription::ChoiceStart(*NextChoiceMid, *ChoiceEnd),
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:55:56
[INFO] [stdout]    |
[INFO] [stdout] 55 |             BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => BNFDescription::ChoiceStart(*NextChoiceMid, *ChoiceEnd),
[INFO] [stdout]    |                                                        ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:56:42
[INFO] [stdout]    |
[INFO] [stdout] 56 |             BNFDescription::ChoiceMidEnd(ChoiceEnd) => BNFDescription::ChoiceMidEnd(*ChoiceEnd),
[INFO] [stdout]    |                                          ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:57:44
[INFO] [stdout]    |
[INFO] [stdout] 57 |             BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => BNFDescription::ChoiceMidStart(*NextChoiceMid, *ChoiceEnd),
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:57:59
[INFO] [stdout]    |
[INFO] [stdout] 57 |             BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => BNFDescription::ChoiceMidStart(*NextChoiceMid, *ChoiceEnd),
[INFO] [stdout]    |                                                           ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `OptionEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:59:41
[INFO] [stdout]    |
[INFO] [stdout] 59 |             BNFDescription::OptionStart(OptionEnd) => BNFDescription::OptionStart(*OptionEnd),
[INFO] [stdout]    |                                         ^^^^^^^^^ help: convert the identifier to snake case: `option_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:61:45
[INFO] [stdout]    |
[INFO] [stdout] 61 |             BNFDescription::RepetitionStart(RepetitionEnd) => BNFDescription::RepetitionStart(*RepetitionEnd),
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionStart` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:62:43
[INFO] [stdout]    |
[INFO] [stdout] 62 |             BNFDescription::RepetitionEnd(RepetitionStart) => BNFDescription::RepetitionEnd(*RepetitionStart),
[INFO] [stdout]    |                                           ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:93:46
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 BNFDescription::ChoiceMidEnd(ChoiceEnd) => {
[INFO] [stdout]    |                                              ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:96:53
[INFO] [stdout]    |
[INFO] [stdout] 96 |                         BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i + 1,
[INFO] [stdout]    |                                                     ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:96:68
[INFO] [stdout]    |
[INFO] [stdout] 96 |                         BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i + 1,
[INFO] [stdout]    |                                                                    ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:97:56
[INFO] [stdout]    |
[INFO] [stdout] 97 |                         BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i + 1,
[INFO] [stdout]    |                                                        ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:97:71
[INFO] [stdout]    |
[INFO] [stdout] 97 |                         BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i + 1,
[INFO] [stdout]    |                                                                       ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:108:53
[INFO] [stdout]     |
[INFO] [stdout] 108 |                         BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i,
[INFO] [stdout]     |                                                     ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:108:68
[INFO] [stdout]     |
[INFO] [stdout] 108 |                         BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i,
[INFO] [stdout]     |                                                                    ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:109:56
[INFO] [stdout]     |
[INFO] [stdout] 109 |                         BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i,
[INFO] [stdout]     |                                                        ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:109:71
[INFO] [stdout]     |
[INFO] [stdout] 109 |                         BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i,
[INFO] [stdout]     |                                                                       ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:114:57
[INFO] [stdout]     |
[INFO] [stdout] 114 | ...                   BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => {*ChoiceEnd = i; break},
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:114:72
[INFO] [stdout]     |
[INFO] [stdout] 114 | ...                   BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => {*ChoiceEnd = i; break},
[INFO] [stdout]     |                                                                  ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:115:60
[INFO] [stdout]     |
[INFO] [stdout] 115 | ...                   BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *ChoiceEnd = i,
[INFO] [stdout]     |                                                      ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:115:75
[INFO] [stdout]     |
[INFO] [stdout] 115 | ...                   BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *ChoiceEnd = i,
[INFO] [stdout]     |                                                                     ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:116:58
[INFO] [stdout]     |
[INFO] [stdout] 116 | ...                   BNFDescription::ChoiceMidEnd(ChoiceEnd) => *ChoiceEnd = i,
[INFO] [stdout]     |                                                    ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `OptionEnd` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:122:49
[INFO] [stdout]     |
[INFO] [stdout] 122 |                     BNFDescription::OptionStart(OptionEnd) => *OptionEnd = i,
[INFO] [stdout]     |                                                 ^^^^^^^^^ help: convert the identifier to snake case: `option_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionStart` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:128:55
[INFO] [stdout]     |
[INFO] [stdout] 128 |                         BNFDescription::RepetitionEnd(RepetitionStart) => *RepetitionStart = repetition_start,
[INFO] [stdout]     |                                                       ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionEnd` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:132:57
[INFO] [stdout]     |
[INFO] [stdout] 132 |                         BNFDescription::RepetitionStart(RepetitionEnd) => *RepetitionEnd = i,
[INFO] [stdout]     |                                                         ^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/debug_recorder.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 26 |         RECORDERS.get(ACTIVE_RECORD)
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/debug_recorder.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 |         RECORDERS.get_mut(ACTIVE_RECORD)
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/debug_recorder.rs:45:9
[INFO] [stdout]    |
[INFO] [stdout] 45 |         RECORDERS.push(Recorder::default());
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/debug_recorder.rs:46:25
[INFO] [stdout]    |
[INFO] [stdout] 46 |         ACTIVE_RECORD = RECORDERS.len() - 1;
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/debug_recorder.rs:57:25
[INFO] [stdout]    |
[INFO] [stdout] 57 |         ACTIVE_RECORD = RECORDERS.len();
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]   --> src/format.rs:24:41
[INFO] [stdout]    |
[INFO] [stdout] 24 |             BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => write!(f, "ChoiceStart({}, {})", NextChoiceMid, ChoiceEnd)?,
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/format.rs:24:56
[INFO] [stdout]    |
[INFO] [stdout] 24 |             BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => write!(f, "ChoiceStart({}, {})", NextChoiceMid, ChoiceEnd)?,
[INFO] [stdout]    |                                                        ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/format.rs:25:42
[INFO] [stdout]    |
[INFO] [stdout] 25 |             BNFDescription::ChoiceMidEnd(ChoiceEnd) => write!(f, "ChoiceMidEnd({})", ChoiceEnd)?,
[INFO] [stdout]    |                                          ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]   --> src/format.rs:26:44
[INFO] [stdout]    |
[INFO] [stdout] 26 |             BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => write!(f, "ChoiceMidStart({}, {})", NextChoiceMid, ChoiceEnd)?,
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/format.rs:26:59
[INFO] [stdout]    |
[INFO] [stdout] 26 |             BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => write!(f, "ChoiceMidStart({}, {})", NextChoiceMid, ChoiceEnd)?,
[INFO] [stdout]    |                                                           ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `OptionEnd` should have a snake case name
[INFO] [stdout]   --> src/format.rs:28:41
[INFO] [stdout]    |
[INFO] [stdout] 28 |             BNFDescription::OptionStart(OptionEnd) => write!(f, "OptionStart({})", OptionEnd)?,
[INFO] [stdout]    |                                         ^^^^^^^^^ help: convert the identifier to snake case: `option_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionEnd` should have a snake case name
[INFO] [stdout]   --> src/format.rs:30:45
[INFO] [stdout]    |
[INFO] [stdout] 30 |             BNFDescription::RepetitionStart(RepetitionEnd) => write!(f, "RepetitionStart({})", RepetitionEnd)?,
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionStart` should have a snake case name
[INFO] [stdout]   --> src/format.rs:31:43
[INFO] [stdout]    |
[INFO] [stdout] 31 |             BNFDescription::RepetitionEnd(RepetitionStart) => write!(f, "RepetitionEnd({})", RepetitionStart)?,
[INFO] [stdout]    |                                           ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionStart` should have a snake case name
[INFO] [stdout]   --> src/parser.rs:50:99
[INFO] [stdout]    |
[INFO] [stdout] 50 | ...ance_id: RuleInstanceId, RepetitionStart: DescriptionIndex, token_index: &TokenIndex, description_index: DescriptionIndex) -> Par...
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]   --> src/parser.rs:85:41
[INFO] [stdout]    |
[INFO] [stdout] 85 |             BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => if NextChoiceMid == ChoiceEnd {
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/parser.rs:85:56
[INFO] [stdout]    |
[INFO] [stdout] 85 |             BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => if NextChoiceMid == ChoiceEnd {
[INFO] [stdout]    |                                                        ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]   --> src/parser.rs:91:44
[INFO] [stdout]    |
[INFO] [stdout] 91 |             BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => if NextChoiceMid == ChoiceEnd {
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/parser.rs:91:59
[INFO] [stdout]    |
[INFO] [stdout] 91 |             BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => if NextChoiceMid == ChoiceEnd {
[INFO] [stdout]    |                                                           ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `OptionEnd` should have a snake case name
[INFO] [stdout]   --> src/parser.rs:97:41
[INFO] [stdout]    |
[INFO] [stdout] 97 |             BNFDescription::OptionStart(OptionEnd) => OptionEnd + 1,
[INFO] [stdout]    |                                         ^^^^^^^^^ help: convert the identifier to snake case: `option_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionEnd` should have a snake case name
[INFO] [stdout]   --> src/parser.rs:98:45
[INFO] [stdout]    |
[INFO] [stdout] 98 |             BNFDescription::RepetitionStart(RepetitionEnd) => RepetitionEnd + 1,
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]    --> src/parser.rs:237:46
[INFO] [stdout]     |
[INFO] [stdout] 237 | ...   BNFDescription::ChoiceMidEnd(ChoiceEnd) => rule_location.description_index = *ChoiceEnd, // 之后会description_index += 1，直...
[INFO] [stdout]     |                                    ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `OptionEnd` should have a snake case name
[INFO] [stdout]    --> src/parser.rs:239:45
[INFO] [stdout]     |
[INFO] [stdout] 239 |                 BNFDescription::OptionStart(OptionEnd) => RecordOrJump!(*OptionEnd),
[INFO] [stdout]     |                                             ^^^^^^^^^ help: convert the identifier to snake case: `option_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionEnd` should have a snake case name
[INFO] [stdout]    --> src/parser.rs:241:49
[INFO] [stdout]     |
[INFO] [stdout] 241 |                 BNFDescription::RepetitionStart(RepetitionEnd) => RecordOrJump!(*RepetitionEnd),
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionStart` should have a snake case name
[INFO] [stdout]    --> src/parser.rs:242:47
[INFO] [stdout]     |
[INFO] [stdout] 242 | ...   BNFDescription::RepetitionEnd(RepetitionStart) => if *token_index < tokens.len() { // 如果 token 没有匹配完，需要检查是否无...
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `BNFRule_BLOCK_COMMENT_CONTENT` should have a snake case name
[INFO] [stdout]   --> src/rules_parser_generator.rs:98:34
[INFO] [stdout]    |
[INFO] [stdout] 98 |             Some((block_comment, BNFRule_BLOCK_COMMENT_CONTENT)) => (Some(block_comment), Some(BNFRule_BLOCK_COMMENT_CONTENT)),
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `bnfrule_block_comment_content`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `BNFRule_BLOCK_COMMENT_CONTENT` should have a snake case name
[INFO] [stdout]   --> src/rules_parser_generator.rs:72:29
[INFO] [stdout]    |
[INFO] [stdout] 72 | ...ck_comment, BNFRule_BLOCK_COMMENT_CONTENT) = match self.block_comment_start_end.as_ref().map(|(block_comment_start, block_comment...
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `bnfrule_block_comment_content`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `BNFRule_SINGLE_SPACE` should have a snake case name
[INFO] [stdout]    --> src/rules_parser_generator.rs:102:13
[INFO] [stdout]     |
[INFO] [stdout] 102 |         let BNFRule_SINGLE_SPACE: Option<BNFRule<char>> = (line_comment.is_some() || block_comment.is_some()).then(||
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `bnfrule_single_space`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `BNFDescription_SINGLE_SPACE` should have a snake case name
[INFO] [stdout]    --> src/rules_parser_generator.rs:115:13
[INFO] [stdout]     |
[INFO] [stdout] 115 |         let BNFDescription_SINGLE_SPACE = match BNFRule_SINGLE_SPACE {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `bnfdescription_single_space`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `BNFRule_IDENTIFIER` should have a snake case name
[INFO] [stdout]    --> src/rules_parser_generator.rs:120:13
[INFO] [stdout]     |
[INFO] [stdout] 120 |         let BNFRule_IDENTIFIER = BNFRule::new(IDENTIFIER, vec![
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `bnfrule_identifier`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling bnf_syntax_parser v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: variable `BNFRule_STRING` should have a snake case name
[INFO] [stdout]    --> src/rules_parser_generator.rs:127:13
[INFO] [stdout]     |
[INFO] [stdout] 127 |         let BNFRule_STRING = BNFRule::new(STRING, vec![
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `bnfrule_string`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `BNFRule_BNF_RULE` should have a snake case name
[INFO] [stdout]    --> src/rules_parser_generator.rs:135:13
[INFO] [stdout]     |
[INFO] [stdout] 135 |         let BNFRule_BNF_RULE = BNFRule::new(BNF_RULE, vec![
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `bnfrule_bnf_rule`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `BNFRule_BNF_RULES` should have a snake case name
[INFO] [stdout]    --> src/rules_parser_generator.rs:158:13
[INFO] [stdout]     |
[INFO] [stdout] 158 |         let BNFRule_BNF_RULES = BNFRule::new(BNF_RULES, vec![
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `bnfrule_bnf_rules`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BNFRule` and `MatchRecord`
[INFO] [stdout]  --> tests/integration_test.rs:5:47
[INFO] [stdout]   |
[INFO] [stdout] 5 |     use bnf_syntax_parser::{TokenType, Token, BNFRule, BNFRules, Parser, MatchRecord, ParseTree};
[INFO] [stdout]   |                                               ^^^^^^^                    ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Display`
[INFO] [stdout]  --> src/bnf_rules.rs:3:39
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::{collections::HashMap, fmt::{Display, Write}};
[INFO] [stdout]   |                                       ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MatchRecord`, `ParseErrorType`, `TokenIndex`, and `Token`
[INFO] [stdout]  --> src/bnf_rules.rs:5:33
[INFO] [stdout]   |
[INFO] [stdout] 5 | ...r, ParseErrorType, RuleParseError}, DescriptionIndex, MatchRecord, ParseTree, ParseTreeNode, Parser, RuleIndex, Token, TokenIndex, T...
[INFO] [stdout]   |       ^^^^^^^^^^^^^^                                     ^^^^^^^^^^^                                               ^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BNFDescription`
[INFO] [stdout]  --> src/error.rs:3:37
[INFO] [stdout]   |
[INFO] [stdout] 3 | use super::{parser::LocationRecord, BNFDescription, DescriptionIndex, RuleIndex, TokenIndex};
[INFO] [stdout]   |                                     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `marker::PhantomData`
[INFO] [stdout]  --> src/format.rs:1:34
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{fmt::{Display, Write}, marker::PhantomData};
[INFO] [stdout]   |                                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TokenType`
[INFO] [stdout]  --> src/format.rs:3:187
[INFO] [stdout]   |
[INFO] [stdout] 3 | ...tionIndex, ParseTree, ParseTreeNode, RuleIndex, TokenIndex, TokenType};
[INFO] [stdout]   |                                                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Display`
[INFO] [stdout]  --> src/parser.rs:1:16
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::{Display, Write};
[INFO] [stdout]   |                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ParseTree`
[INFO] [stdout]  --> src/rules_parser_generator.rs:3:48
[INFO] [stdout]   |
[INFO] [stdout] 3 | use super::{BNFDescription, BNFRule, BNFRules, ParseTree, Parser, RuleIndex};
[INFO] [stdout]   |                                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `parser`
[INFO] [stdout]   --> tests/integration_test.rs:71:9
[INFO] [stdout]    |
[INFO] [stdout] 71 |     let parser = Parser::new(rules.rules.clone(), rules.start_rule_index.unwrap());
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_parser`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `r`
[INFO] [stdout]    --> tests/integration_test.rs:111:16
[INFO] [stdout]     |
[INFO] [stdout] 111 |             Ok(r) => (),
[INFO] [stdout]     |                ^ help: if this is intentional, prefix it with an underscore: `_r`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `TOKEN_TYPE_CONVERTER` should have a snake case name
[INFO] [stdout]   --> tests/integration_test.rs:50:9
[INFO] [stdout]    |
[INFO] [stdout] 50 |     let TOKEN_TYPE_CONVERTER = HashMap::from([
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `token_type_converter`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `TOKEN_CONVERTER` should have a snake case name
[INFO] [stdout]   --> tests/integration_test.rs:75:9
[INFO] [stdout]    |
[INFO] [stdout] 75 |     let TOKEN_CONVERTER = HashMap::from([
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `token_converter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/bnf_rules.rs:3:48
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::{collections::HashMap, fmt::{Display, Write}};
[INFO] [stdout]   |                                                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/parser.rs:1:25
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::{Display, Write};
[INFO] [stdout]   |                         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ChoiceEnd`
[INFO] [stdout]   --> src/bnf_rules.rs:93:46
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 BNFDescription::ChoiceMidEnd(ChoiceEnd) => {
[INFO] [stdout]    |                                              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ChoiceEnd`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ChoiceEnd`
[INFO] [stdout]   --> src/bnf_rules.rs:96:68
[INFO] [stdout]    |
[INFO] [stdout] 96 |                         BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i + 1,
[INFO] [stdout]    |                                                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ChoiceEnd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ChoiceEnd`
[INFO] [stdout]   --> src/bnf_rules.rs:97:71
[INFO] [stdout]    |
[INFO] [stdout] 97 |                         BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i + 1,
[INFO] [stdout]    |                                                                       ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ChoiceEnd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ChoiceEnd`
[INFO] [stdout]    --> src/bnf_rules.rs:108:68
[INFO] [stdout]     |
[INFO] [stdout] 108 |                         BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i,
[INFO] [stdout]     |                                                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ChoiceEnd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ChoiceEnd`
[INFO] [stdout]    --> src/bnf_rules.rs:109:71
[INFO] [stdout]     |
[INFO] [stdout] 109 |                         BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i,
[INFO] [stdout]     |                                                                       ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ChoiceEnd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `NextChoiceMid`
[INFO] [stdout]    --> src/bnf_rules.rs:114:57
[INFO] [stdout]     |
[INFO] [stdout] 114 | ...                   BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => {*ChoiceEnd = i; break},
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_NextChoiceMid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `NextChoiceMid`
[INFO] [stdout]    --> src/bnf_rules.rs:115:60
[INFO] [stdout]     |
[INFO] [stdout] 115 | ...                   BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *ChoiceEnd = i,
[INFO] [stdout]     |                                                      ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_NextChoiceMid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `index`
[INFO] [stdout]   --> src/debug_recorder.rs:36:28
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub fn set_active_recorder(index: usize) {
[INFO] [stdout]    |                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token_index`
[INFO] [stdout]   --> src/debug_recorder.rs:61:20
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub fn record_step(token_index: TokenIndex, rule_location: LocationRecord) {
[INFO] [stdout]    |                    ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_token_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rule_location`
[INFO] [stdout]   --> src/debug_recorder.rs:61:45
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub fn record_step(token_index: TokenIndex, rule_location: LocationRecord) {
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rule_location`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]   --> src/debug_recorder.rs:66:24
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub fn record_rule_end(s: String) {
[INFO] [stdout]    |                        ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token_index`
[INFO] [stdout]   --> src/debug_recorder.rs:71:32
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub fn record_traceback_record(token_index: TokenIndex, rule_location: LocationRecord, traceback_record_index: usize) {
[INFO] [stdout]    |                                ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_token_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rule_location`
[INFO] [stdout]   --> src/debug_recorder.rs:71:57
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub fn record_traceback_record(token_index: TokenIndex, rule_location: LocationRecord, traceback_record_index: usize) {
[INFO] [stdout]    |                                                         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rule_location`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `traceback_record_index`
[INFO] [stdout]   --> src/debug_recorder.rs:71:88
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub fn record_traceback_record(token_index: TokenIndex, rule_location: LocationRecord, traceback_record_index: usize) {
[INFO] [stdout]    |                                                                                        ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_traceback_record_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token_index`
[INFO] [stdout]   --> src/debug_recorder.rs:76:25
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub fn record_traceback(token_index: TokenIndex, rule_location: LocationRecord, traceback_record_index: usize) {
[INFO] [stdout]    |                         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_token_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rule_location`
[INFO] [stdout]   --> src/debug_recorder.rs:76:50
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub fn record_traceback(token_index: TokenIndex, rule_location: LocationRecord, traceback_record_index: usize) {
[INFO] [stdout]    |                                                  ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rule_location`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `traceback_record_index`
[INFO] [stdout]   --> src/debug_recorder.rs:76:81
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub fn record_traceback(token_index: TokenIndex, rule_location: LocationRecord, traceback_record_index: usize) {
[INFO] [stdout]    |                                                                                 ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_traceback_record_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_best_match`
[INFO] [stdout]   --> src/debug_recorder.rs:81:26
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub fn record_best_match(new_best_match: &[MatchRecord]) {
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_best_match`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]    --> src/format.rs:196:44
[INFO] [stdout]     |
[INFO] [stdout] 196 |     pub fn format_best_match<TT, F>(&self, f: &mut F) {
[INFO] [stdout]     |                                            ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `r`
[INFO] [stdout]    --> src/format.rs:197:13
[INFO] [stdout]     |
[INFO] [stdout] 197 |         for r in &self.best_match {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_r`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `try_into` is never used
[INFO] [stdout]   --> src/bnf_rules.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl<TT> BNFDescription<TT> {
[INFO] [stdout]    | --------------------------- method in this implementation
[INFO] [stdout] 24 |     fn try_into<TT2, E>(self) -> Result<BNFDescription<TT2>, E> where TT2: TryFrom<TT, Error = E> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `active_recorder_mut` is never used
[INFO] [stdout]   --> src/debug_recorder.rs:30:4
[INFO] [stdout]    |
[INFO] [stdout] 30 | fn active_recorder_mut() -> Option<&'static mut Recorder> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `generate_bnf_rules_parser` is never used
[INFO] [stdout]    --> src/rules_parser_generator.rs:197:12
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl RulesParserGenerator {
[INFO] [stdout]     | ------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 197 |     pub fn generate_bnf_rules_parser(&mut self) -> Parser<char> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:41:41
[INFO] [stdout]    |
[INFO] [stdout] 41 |             BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd),
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:41:56
[INFO] [stdout]    |
[INFO] [stdout] 41 |             BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd),
[INFO] [stdout]    |                                                        ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:42:42
[INFO] [stdout]    |
[INFO] [stdout] 42 |             BNFDescription::ChoiceMidEnd(ChoiceEnd) => BNFDescription::ChoiceMidEnd(ChoiceEnd),
[INFO] [stdout]    |                                          ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:43:44
[INFO] [stdout]    |
[INFO] [stdout] 43 |             BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd),
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:43:59
[INFO] [stdout]    |
[INFO] [stdout] 43 |             BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd),
[INFO] [stdout]    |                                                           ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `OptionEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:45:41
[INFO] [stdout]    |
[INFO] [stdout] 45 |             BNFDescription::OptionStart(OptionEnd) => BNFDescription::OptionStart(OptionEnd),
[INFO] [stdout]    |                                         ^^^^^^^^^ help: convert the identifier to snake case: `option_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:47:45
[INFO] [stdout]    |
[INFO] [stdout] 47 |             BNFDescription::RepetitionStart(RepetitionEnd) => BNFDescription::RepetitionStart(RepetitionEnd),
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionStart` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:48:43
[INFO] [stdout]    |
[INFO] [stdout] 48 |             BNFDescription::RepetitionEnd(RepetitionStart) => BNFDescription::RepetitionEnd(RepetitionStart),
[INFO] [stdout]    |                                           ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:55:41
[INFO] [stdout]    |
[INFO] [stdout] 55 |             BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => BNFDescription::ChoiceStart(*NextChoiceMid, *ChoiceEnd),
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:55:56
[INFO] [stdout]    |
[INFO] [stdout] 55 |             BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => BNFDescription::ChoiceStart(*NextChoiceMid, *ChoiceEnd),
[INFO] [stdout]    |                                                        ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:56:42
[INFO] [stdout]    |
[INFO] [stdout] 56 |             BNFDescription::ChoiceMidEnd(ChoiceEnd) => BNFDescription::ChoiceMidEnd(*ChoiceEnd),
[INFO] [stdout]    |                                          ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:57:44
[INFO] [stdout]    |
[INFO] [stdout] 57 |             BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => BNFDescription::ChoiceMidStart(*NextChoiceMid, *ChoiceEnd),
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:57:59
[INFO] [stdout]    |
[INFO] [stdout] 57 |             BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => BNFDescription::ChoiceMidStart(*NextChoiceMid, *ChoiceEnd),
[INFO] [stdout]    |                                                           ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `OptionEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:59:41
[INFO] [stdout]    |
[INFO] [stdout] 59 |             BNFDescription::OptionStart(OptionEnd) => BNFDescription::OptionStart(*OptionEnd),
[INFO] [stdout]    |                                         ^^^^^^^^^ help: convert the identifier to snake case: `option_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:61:45
[INFO] [stdout]    |
[INFO] [stdout] 61 |             BNFDescription::RepetitionStart(RepetitionEnd) => BNFDescription::RepetitionStart(*RepetitionEnd),
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionStart` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:62:43
[INFO] [stdout]    |
[INFO] [stdout] 62 |             BNFDescription::RepetitionEnd(RepetitionStart) => BNFDescription::RepetitionEnd(*RepetitionStart),
[INFO] [stdout]    |                                           ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:93:46
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 BNFDescription::ChoiceMidEnd(ChoiceEnd) => {
[INFO] [stdout]    |                                              ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:96:53
[INFO] [stdout]    |
[INFO] [stdout] 96 |                         BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i + 1,
[INFO] [stdout]    |                                                     ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:96:68
[INFO] [stdout]    |
[INFO] [stdout] 96 |                         BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i + 1,
[INFO] [stdout]    |                                                                    ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:97:56
[INFO] [stdout]    |
[INFO] [stdout] 97 |                         BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i + 1,
[INFO] [stdout]    |                                                        ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/bnf_rules.rs:97:71
[INFO] [stdout]    |
[INFO] [stdout] 97 |                         BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i + 1,
[INFO] [stdout]    |                                                                       ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:108:53
[INFO] [stdout]     |
[INFO] [stdout] 108 |                         BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i,
[INFO] [stdout]     |                                                     ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:108:68
[INFO] [stdout]     |
[INFO] [stdout] 108 |                         BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i,
[INFO] [stdout]     |                                                                    ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:109:56
[INFO] [stdout]     |
[INFO] [stdout] 109 |                         BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i,
[INFO] [stdout]     |                                                        ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:109:71
[INFO] [stdout]     |
[INFO] [stdout] 109 |                         BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i,
[INFO] [stdout]     |                                                                       ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:114:57
[INFO] [stdout]     |
[INFO] [stdout] 114 | ...                   BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => {*ChoiceEnd = i; break},
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:114:72
[INFO] [stdout]     |
[INFO] [stdout] 114 | ...                   BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => {*ChoiceEnd = i; break},
[INFO] [stdout]     |                                                                  ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:115:60
[INFO] [stdout]     |
[INFO] [stdout] 115 | ...                   BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *ChoiceEnd = i,
[INFO] [stdout]     |                                                      ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:115:75
[INFO] [stdout]     |
[INFO] [stdout] 115 | ...                   BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *ChoiceEnd = i,
[INFO] [stdout]     |                                                                     ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:116:58
[INFO] [stdout]     |
[INFO] [stdout] 116 | ...                   BNFDescription::ChoiceMidEnd(ChoiceEnd) => *ChoiceEnd = i,
[INFO] [stdout]     |                                                    ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `OptionEnd` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:122:49
[INFO] [stdout]     |
[INFO] [stdout] 122 |                     BNFDescription::OptionStart(OptionEnd) => *OptionEnd = i,
[INFO] [stdout]     |                                                 ^^^^^^^^^ help: convert the identifier to snake case: `option_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionStart` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:128:55
[INFO] [stdout]     |
[INFO] [stdout] 128 |                         BNFDescription::RepetitionEnd(RepetitionStart) => *RepetitionStart = repetition_start,
[INFO] [stdout]     |                                                       ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionEnd` should have a snake case name
[INFO] [stdout]    --> src/bnf_rules.rs:132:57
[INFO] [stdout]     |
[INFO] [stdout] 132 |                         BNFDescription::RepetitionStart(RepetitionEnd) => *RepetitionEnd = i,
[INFO] [stdout]     |                                                         ^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/debug_recorder.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 26 |         RECORDERS.get(ACTIVE_RECORD)
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/debug_recorder.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 |         RECORDERS.get_mut(ACTIVE_RECORD)
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/debug_recorder.rs:45:9
[INFO] [stdout]    |
[INFO] [stdout] 45 |         RECORDERS.push(Recorder::default());
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/debug_recorder.rs:46:25
[INFO] [stdout]    |
[INFO] [stdout] 46 |         ACTIVE_RECORD = RECORDERS.len() - 1;
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/debug_recorder.rs:57:25
[INFO] [stdout]    |
[INFO] [stdout] 57 |         ACTIVE_RECORD = RECORDERS.len();
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]   --> src/format.rs:24:41
[INFO] [stdout]    |
[INFO] [stdout] 24 |             BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => write!(f, "ChoiceStart({}, {})", NextChoiceMid, ChoiceEnd)?,
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/format.rs:24:56
[INFO] [stdout]    |
[INFO] [stdout] 24 |             BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => write!(f, "ChoiceStart({}, {})", NextChoiceMid, ChoiceEnd)?,
[INFO] [stdout]    |                                                        ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/format.rs:25:42
[INFO] [stdout]    |
[INFO] [stdout] 25 |             BNFDescription::ChoiceMidEnd(ChoiceEnd) => write!(f, "ChoiceMidEnd({})", ChoiceEnd)?,
[INFO] [stdout]    |                                          ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]   --> src/format.rs:26:44
[INFO] [stdout]    |
[INFO] [stdout] 26 |             BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => write!(f, "ChoiceMidStart({}, {})", NextChoiceMid, ChoiceEnd)?,
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/format.rs:26:59
[INFO] [stdout]    |
[INFO] [stdout] 26 |             BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => write!(f, "ChoiceMidStart({}, {})", NextChoiceMid, ChoiceEnd)?,
[INFO] [stdout]    |                                                           ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `OptionEnd` should have a snake case name
[INFO] [stdout]   --> src/format.rs:28:41
[INFO] [stdout]    |
[INFO] [stdout] 28 |             BNFDescription::OptionStart(OptionEnd) => write!(f, "OptionStart({})", OptionEnd)?,
[INFO] [stdout]    |                                         ^^^^^^^^^ help: convert the identifier to snake case: `option_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionEnd` should have a snake case name
[INFO] [stdout]   --> src/format.rs:30:45
[INFO] [stdout]    |
[INFO] [stdout] 30 |             BNFDescription::RepetitionStart(RepetitionEnd) => write!(f, "RepetitionStart({})", RepetitionEnd)?,
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionStart` should have a snake case name
[INFO] [stdout]   --> src/format.rs:31:43
[INFO] [stdout]    |
[INFO] [stdout] 31 |             BNFDescription::RepetitionEnd(RepetitionStart) => write!(f, "RepetitionEnd({})", RepetitionStart)?,
[INFO] [stdout]    |                                           ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionStart` should have a snake case name
[INFO] [stdout]   --> src/parser.rs:50:99
[INFO] [stdout]    |
[INFO] [stdout] 50 | ...ance_id: RuleInstanceId, RepetitionStart: DescriptionIndex, token_index: &TokenIndex, description_index: DescriptionIndex) -> Par...
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]   --> src/parser.rs:85:41
[INFO] [stdout]    |
[INFO] [stdout] 85 |             BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => if NextChoiceMid == ChoiceEnd {
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/parser.rs:85:56
[INFO] [stdout]    |
[INFO] [stdout] 85 |             BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => if NextChoiceMid == ChoiceEnd {
[INFO] [stdout]    |                                                        ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stdout]   --> src/parser.rs:91:44
[INFO] [stdout]    |
[INFO] [stdout] 91 |             BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => if NextChoiceMid == ChoiceEnd {
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]   --> src/parser.rs:91:59
[INFO] [stdout]    |
[INFO] [stdout] 91 |             BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => if NextChoiceMid == ChoiceEnd {
[INFO] [stdout]    |                                                           ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `OptionEnd` should have a snake case name
[INFO] [stdout]   --> src/parser.rs:97:41
[INFO] [stdout]    |
[INFO] [stdout] 97 |             BNFDescription::OptionStart(OptionEnd) => OptionEnd + 1,
[INFO] [stdout]    |                                         ^^^^^^^^^ help: convert the identifier to snake case: `option_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionEnd` should have a snake case name
[INFO] [stdout]   --> src/parser.rs:98:45
[INFO] [stdout]    |
[INFO] [stdout] 98 |             BNFDescription::RepetitionStart(RepetitionEnd) => RepetitionEnd + 1,
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stdout]    --> src/parser.rs:237:46
[INFO] [stdout]     |
[INFO] [stdout] 237 | ...   BNFDescription::ChoiceMidEnd(ChoiceEnd) => rule_location.description_index = *ChoiceEnd, // 之后会description_index += 1，直...
[INFO] [stdout]     |                                    ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `OptionEnd` should have a snake case name
[INFO] [stdout]    --> src/parser.rs:239:45
[INFO] [stdout]     |
[INFO] [stdout] 239 |                 BNFDescription::OptionStart(OptionEnd) => RecordOrJump!(*OptionEnd),
[INFO] [stdout]     |                                             ^^^^^^^^^ help: convert the identifier to snake case: `option_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionEnd` should have a snake case name
[INFO] [stdout]    --> src/parser.rs:241:49
[INFO] [stdout]     |
[INFO] [stdout] 241 |                 BNFDescription::RepetitionStart(RepetitionEnd) => RecordOrJump!(*RepetitionEnd),
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `RepetitionStart` should have a snake case name
[INFO] [stdout]    --> src/parser.rs:242:47
[INFO] [stdout]     |
[INFO] [stdout] 242 | ...   BNFDescription::RepetitionEnd(RepetitionStart) => if *token_index < tokens.len() { // 如果 token 没有匹配完，需要检查是否无...
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `BNFRule_BLOCK_COMMENT_CONTENT` should have a snake case name
[INFO] [stdout]   --> src/rules_parser_generator.rs:98:34
[INFO] [stdout]    |
[INFO] [stdout] 98 |             Some((block_comment, BNFRule_BLOCK_COMMENT_CONTENT)) => (Some(block_comment), Some(BNFRule_BLOCK_COMMENT_CONTENT)),
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `bnfrule_block_comment_content`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `BNFRule_BLOCK_COMMENT_CONTENT` should have a snake case name
[INFO] [stdout]   --> src/rules_parser_generator.rs:72:29
[INFO] [stdout]    |
[INFO] [stdout] 72 | ...ck_comment, BNFRule_BLOCK_COMMENT_CONTENT) = match self.block_comment_start_end.as_ref().map(|(block_comment_start, block_comment...
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `bnfrule_block_comment_content`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `BNFRule_SINGLE_SPACE` should have a snake case name
[INFO] [stdout]    --> src/rules_parser_generator.rs:102:13
[INFO] [stdout]     |
[INFO] [stdout] 102 |         let BNFRule_SINGLE_SPACE: Option<BNFRule<char>> = (line_comment.is_some() || block_comment.is_some()).then(||
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `bnfrule_single_space`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `BNFDescription_SINGLE_SPACE` should have a snake case name
[INFO] [stdout]    --> src/rules_parser_generator.rs:115:13
[INFO] [stdout]     |
[INFO] [stdout] 115 |         let BNFDescription_SINGLE_SPACE = match BNFRule_SINGLE_SPACE {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `bnfdescription_single_space`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `BNFRule_IDENTIFIER` should have a snake case name
[INFO] [stdout]    --> src/rules_parser_generator.rs:120:13
[INFO] [stdout]     |
[INFO] [stdout] 120 |         let BNFRule_IDENTIFIER = BNFRule::new(IDENTIFIER, vec![
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `bnfrule_identifier`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `BNFRule_STRING` should have a snake case name
[INFO] [stdout]    --> src/rules_parser_generator.rs:127:13
[INFO] [stdout]     |
[INFO] [stdout] 127 |         let BNFRule_STRING = BNFRule::new(STRING, vec![
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `bnfrule_string`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `BNFRule_BNF_RULE` should have a snake case name
[INFO] [stdout]    --> src/rules_parser_generator.rs:135:13
[INFO] [stdout]     |
[INFO] [stdout] 135 |         let BNFRule_BNF_RULE = BNFRule::new(BNF_RULE, vec![
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `bnfrule_bnf_rule`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `BNFRule_BNF_RULES` should have a snake case name
[INFO] [stdout]    --> src/rules_parser_generator.rs:158:13
[INFO] [stdout]     |
[INFO] [stdout] 158 |         let BNFRule_BNF_RULES = BNFRule::new(BNF_RULES, vec![
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `bnfrule_bnf_rules`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1.28s
[INFO] running `Command { std: "docker" "inspect" "b9ab04e08c8f87a6471099869c97b88b2733cc0a9bd6e5c7be82d4c2c7b14d21", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b9ab04e08c8f87a6471099869c97b88b2733cc0a9bd6e5c7be82d4c2c7b14d21", kill_on_drop: false }`
[INFO] [stdout] b9ab04e08c8f87a6471099869c97b88b2733cc0a9bd6e5c7be82d4c2c7b14d21
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 7402600847b696330ea8434cad2c5f5e3c1f88cb0f2ef5d7222c286d0fc71b59
[INFO] running `Command { std: "docker" "start" "-a" "7402600847b696330ea8434cad2c5f5e3c1f88cb0f2ef5d7222c286d0fc71b59", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `Display`
[INFO] [stderr]  --> src/bnf_rules.rs:3:39
[INFO] [stderr]   |
[INFO] [stderr] 3 | use std::{collections::HashMap, fmt::{Display, Write}};
[INFO] [stderr]   |                                       ^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `MatchRecord`, `ParseErrorType`, `TokenIndex`, and `Token`
[INFO] [stderr]  --> src/bnf_rules.rs:5:33
[INFO] [stderr]   |
[INFO] [stderr] 5 | ...r, ParseErrorType, RuleParseError}, DescriptionIndex, MatchRecord, ParseTree, ParseTreeNode, Parser, RuleIndex, Token, TokenIndex, T...
[INFO] [stderr]   |       ^^^^^^^^^^^^^^                                     ^^^^^^^^^^^                                               ^^^^^  ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `BNFDescription`
[INFO] [stderr]  --> src/error.rs:3:37
[INFO] [stderr]   |
[INFO] [stderr] 3 | use super::{parser::LocationRecord, BNFDescription, DescriptionIndex, RuleIndex, TokenIndex};
[INFO] [stderr]   |                                     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `marker::PhantomData`
[INFO] [stderr]  --> src/format.rs:1:34
[INFO] [stderr]   |
[INFO] [stderr] 1 | use std::{fmt::{Display, Write}, marker::PhantomData};
[INFO] [stderr]   |                                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `TokenType`
[INFO] [stderr]  --> src/format.rs:3:187
[INFO] [stderr]   |
[INFO] [stderr] 3 | ...tionIndex, ParseTree, ParseTreeNode, RuleIndex, TokenIndex, TokenType};
[INFO] [stderr]   |                                                                ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Display`
[INFO] [stderr]  --> src/parser.rs:1:16
[INFO] [stderr]   |
[INFO] [stderr] 1 | use std::fmt::{Display, Write};
[INFO] [stderr]   |                ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `ParseTree`
[INFO] [stderr]  --> src/rules_parser_generator.rs:3:48
[INFO] [stderr]   |
[INFO] [stderr] 3 | use super::{BNFDescription, BNFRule, BNFRules, ParseTree, Parser, RuleIndex};
[INFO] [stderr]   |                                                ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Write`
[INFO] [stderr]  --> src/bnf_rules.rs:3:48
[INFO] [stderr]   |
[INFO] [stderr] 3 | use std::{collections::HashMap, fmt::{Display, Write}};
[INFO] [stderr]   |                                                ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Write`
[INFO] [stderr]  --> src/parser.rs:1:25
[INFO] [stderr]   |
[INFO] [stderr] 1 | use std::fmt::{Display, Write};
[INFO] [stderr]   |                         ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ChoiceEnd`
[INFO] [stderr]   --> src/bnf_rules.rs:93:46
[INFO] [stderr]    |
[INFO] [stderr] 93 |                 BNFDescription::ChoiceMidEnd(ChoiceEnd) => {
[INFO] [stderr]    |                                              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ChoiceEnd`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ChoiceEnd`
[INFO] [stderr]   --> src/bnf_rules.rs:96:68
[INFO] [stderr]    |
[INFO] [stderr] 96 |                         BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i + 1,
[INFO] [stderr]    |                                                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ChoiceEnd`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ChoiceEnd`
[INFO] [stderr]   --> src/bnf_rules.rs:97:71
[INFO] [stderr]    |
[INFO] [stderr] 97 |                         BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i + 1,
[INFO] [stderr]    |                                                                       ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ChoiceEnd`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ChoiceEnd`
[INFO] [stderr]    --> src/bnf_rules.rs:108:68
[INFO] [stderr]     |
[INFO] [stderr] 108 |                         BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i,
[INFO] [stderr]     |                                                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ChoiceEnd`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ChoiceEnd`
[INFO] [stderr]    --> src/bnf_rules.rs:109:71
[INFO] [stderr]     |
[INFO] [stderr] 109 |                         BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i,
[INFO] [stderr]     |                                                                       ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ChoiceEnd`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `NextChoiceMid`
[INFO] [stderr]    --> src/bnf_rules.rs:114:57
[INFO] [stderr]     |
[INFO] [stderr] 114 | ...                   BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => {*ChoiceEnd = i; break},
[INFO] [stderr]     |                                                   ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_NextChoiceMid`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `NextChoiceMid`
[INFO] [stderr]    --> src/bnf_rules.rs:115:60
[INFO] [stderr]     |
[INFO] [stderr] 115 | ...                   BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *ChoiceEnd = i,
[INFO] [stderr]     |                                                      ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_NextChoiceMid`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `index`
[INFO] [stderr]   --> src/debug_recorder.rs:36:28
[INFO] [stderr]    |
[INFO] [stderr] 36 | pub fn set_active_recorder(index: usize) {
[INFO] [stderr]    |                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_index`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `token_index`
[INFO] [stderr]   --> src/debug_recorder.rs:61:20
[INFO] [stderr]    |
[INFO] [stderr] 61 | pub fn record_step(token_index: TokenIndex, rule_location: LocationRecord) {
[INFO] [stderr]    |                    ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_token_index`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `rule_location`
[INFO] [stderr]   --> src/debug_recorder.rs:61:45
[INFO] [stderr]    |
[INFO] [stderr] 61 | pub fn record_step(token_index: TokenIndex, rule_location: LocationRecord) {
[INFO] [stderr]    |                                             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rule_location`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `s`
[INFO] [stderr]   --> src/debug_recorder.rs:66:24
[INFO] [stderr]    |
[INFO] [stderr] 66 | pub fn record_rule_end(s: String) {
[INFO] [stderr]    |                        ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `token_index`
[INFO] [stderr]   --> src/debug_recorder.rs:71:32
[INFO] [stderr]    |
[INFO] [stderr] 71 | pub fn record_traceback_record(token_index: TokenIndex, rule_location: LocationRecord, traceback_record_index: usize) {
[INFO] [stderr]    |                                ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_token_index`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `rule_location`
[INFO] [stderr]   --> src/debug_recorder.rs:71:57
[INFO] [stderr]    |
[INFO] [stderr] 71 | pub fn record_traceback_record(token_index: TokenIndex, rule_location: LocationRecord, traceback_record_index: usize) {
[INFO] [stderr]    |                                                         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rule_location`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `traceback_record_index`
[INFO] [stderr]   --> src/debug_recorder.rs:71:88
[INFO] [stderr]    |
[INFO] [stderr] 71 | pub fn record_traceback_record(token_index: TokenIndex, rule_location: LocationRecord, traceback_record_index: usize) {
[INFO] [stderr]    |                                                                                        ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_traceback_record_index`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `token_index`
[INFO] [stderr]   --> src/debug_recorder.rs:76:25
[INFO] [stderr]    |
[INFO] [stderr] 76 | pub fn record_traceback(token_index: TokenIndex, rule_location: LocationRecord, traceback_record_index: usize) {
[INFO] [stderr]    |                         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_token_index`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `rule_location`
[INFO] [stderr]   --> src/debug_recorder.rs:76:50
[INFO] [stderr]    |
[INFO] [stderr] 76 | pub fn record_traceback(token_index: TokenIndex, rule_location: LocationRecord, traceback_record_index: usize) {
[INFO] [stderr]    |                                                  ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rule_location`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `traceback_record_index`
[INFO] [stderr]   --> src/debug_recorder.rs:76:81
[INFO] [stderr]    |
[INFO] [stderr] 76 | pub fn record_traceback(token_index: TokenIndex, rule_location: LocationRecord, traceback_record_index: usize) {
[INFO] [stderr]    |                                                                                 ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_traceback_record_index`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `new_best_match`
[INFO] [stderr]   --> src/debug_recorder.rs:81:26
[INFO] [stderr]    |
[INFO] [stderr] 81 | pub fn record_best_match(new_best_match: &[MatchRecord]) {
[INFO] [stderr]    |                          ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_best_match`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `f`
[INFO] [stderr]    --> src/format.rs:196:44
[INFO] [stderr]     |
[INFO] [stderr] 196 |     pub fn format_best_match<TT, F>(&self, f: &mut F) {
[INFO] [stderr]     |                                            ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `r`
[INFO] [stderr]    --> src/format.rs:197:13
[INFO] [stderr]     |
[INFO] [stderr] 197 |         for r in &self.best_match {
[INFO] [stderr]     |             ^ help: if this is intentional, prefix it with an underscore: `_r`
[INFO] [stderr] 
[INFO] [stderr] warning: method `try_into` is never used
[INFO] [stderr]   --> src/bnf_rules.rs:24:8
[INFO] [stderr]    |
[INFO] [stderr] 23 | impl<TT> BNFDescription<TT> {
[INFO] [stderr]    | --------------------------- method in this implementation
[INFO] [stderr] 24 |     fn try_into<TT2, E>(self) -> Result<BNFDescription<TT2>, E> where TT2: TryFrom<TT, Error = E> {
[INFO] [stderr]    |        ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `active_recorder_mut` is never used
[INFO] [stderr]   --> src/debug_recorder.rs:30:4
[INFO] [stderr]    |
[INFO] [stderr] 30 | fn active_recorder_mut() -> Option<&'static mut Recorder> {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `generate_bnf_rules_parser` is never used
[INFO] [stderr]    --> src/rules_parser_generator.rs:197:12
[INFO] [stderr]     |
[INFO] [stderr]  42 | impl RulesParserGenerator {
[INFO] [stderr]     | ------------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 197 |     pub fn generate_bnf_rules_parser(&mut self) -> Parser<char> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stderr]   --> src/bnf_rules.rs:41:41
[INFO] [stderr]    |
[INFO] [stderr] 41 |             BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd),
[INFO] [stderr]    |                                         ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stderr]   --> src/bnf_rules.rs:41:56
[INFO] [stderr]    |
[INFO] [stderr] 41 |             BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd),
[INFO] [stderr]    |                                                        ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stderr]   --> src/bnf_rules.rs:42:42
[INFO] [stderr]    |
[INFO] [stderr] 42 |             BNFDescription::ChoiceMidEnd(ChoiceEnd) => BNFDescription::ChoiceMidEnd(ChoiceEnd),
[INFO] [stderr]    |                                          ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stderr]   --> src/bnf_rules.rs:43:44
[INFO] [stderr]    |
[INFO] [stderr] 43 |             BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd),
[INFO] [stderr]    |                                            ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stderr]   --> src/bnf_rules.rs:43:59
[INFO] [stderr]    |
[INFO] [stderr] 43 |             BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd),
[INFO] [stderr]    |                                                           ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `OptionEnd` should have a snake case name
[INFO] [stderr]   --> src/bnf_rules.rs:45:41
[INFO] [stderr]    |
[INFO] [stderr] 45 |             BNFDescription::OptionStart(OptionEnd) => BNFDescription::OptionStart(OptionEnd),
[INFO] [stderr]    |                                         ^^^^^^^^^ help: convert the identifier to snake case: `option_end`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `RepetitionEnd` should have a snake case name
[INFO] [stderr]   --> src/bnf_rules.rs:47:45
[INFO] [stderr]    |
[INFO] [stderr] 47 |             BNFDescription::RepetitionStart(RepetitionEnd) => BNFDescription::RepetitionStart(RepetitionEnd),
[INFO] [stderr]    |                                             ^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_end`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `RepetitionStart` should have a snake case name
[INFO] [stderr]   --> src/bnf_rules.rs:48:43
[INFO] [stderr]    |
[INFO] [stderr] 48 |             BNFDescription::RepetitionEnd(RepetitionStart) => BNFDescription::RepetitionEnd(RepetitionStart),
[INFO] [stderr]    |                                           ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_start`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stderr]   --> src/bnf_rules.rs:55:41
[INFO] [stderr]    |
[INFO] [stderr] 55 |             BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => BNFDescription::ChoiceStart(*NextChoiceMid, *ChoiceEnd),
[INFO] [stderr]    |                                         ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stderr]   --> src/bnf_rules.rs:55:56
[INFO] [stderr]    |
[INFO] [stderr] 55 |             BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => BNFDescription::ChoiceStart(*NextChoiceMid, *ChoiceEnd),
[INFO] [stderr]    |                                                        ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stderr]   --> src/bnf_rules.rs:56:42
[INFO] [stderr]    |
[INFO] [stderr] 56 |             BNFDescription::ChoiceMidEnd(ChoiceEnd) => BNFDescription::ChoiceMidEnd(*ChoiceEnd),
[INFO] [stderr]    |                                          ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stderr]   --> src/bnf_rules.rs:57:44
[INFO] [stderr]    |
[INFO] [stderr] 57 |             BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => BNFDescription::ChoiceMidStart(*NextChoiceMid, *ChoiceEnd),
[INFO] [stderr]    |                                            ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stderr]   --> src/bnf_rules.rs:57:59
[INFO] [stderr]    |
[INFO] [stderr] 57 |             BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => BNFDescription::ChoiceMidStart(*NextChoiceMid, *ChoiceEnd),
[INFO] [stderr]    |                                                           ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `OptionEnd` should have a snake case name
[INFO] [stderr]   --> src/bnf_rules.rs:59:41
[INFO] [stderr]    |
[INFO] [stderr] 59 |             BNFDescription::OptionStart(OptionEnd) => BNFDescription::OptionStart(*OptionEnd),
[INFO] [stderr]    |                                         ^^^^^^^^^ help: convert the identifier to snake case: `option_end`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `RepetitionEnd` should have a snake case name
[INFO] [stderr]   --> src/bnf_rules.rs:61:45
[INFO] [stderr]    |
[INFO] [stderr] 61 |             BNFDescription::RepetitionStart(RepetitionEnd) => BNFDescription::RepetitionStart(*RepetitionEnd),
[INFO] [stderr]    |                                             ^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_end`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `RepetitionStart` should have a snake case name
[INFO] [stderr]   --> src/bnf_rules.rs:62:43
[INFO] [stderr]    |
[INFO] [stderr] 62 |             BNFDescription::RepetitionEnd(RepetitionStart) => BNFDescription::RepetitionEnd(*RepetitionStart),
[INFO] [stderr]    |                                           ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_start`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stderr]   --> src/bnf_rules.rs:93:46
[INFO] [stderr]    |
[INFO] [stderr] 93 |                 BNFDescription::ChoiceMidEnd(ChoiceEnd) => {
[INFO] [stderr]    |                                              ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stderr]   --> src/bnf_rules.rs:96:53
[INFO] [stderr]    |
[INFO] [stderr] 96 |                         BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i + 1,
[INFO] [stderr]    |                                                     ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stderr]   --> src/bnf_rules.rs:96:68
[INFO] [stderr]    |
[INFO] [stderr] 96 |                         BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i + 1,
[INFO] [stderr]    |                                                                    ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stderr]   --> src/bnf_rules.rs:97:56
[INFO] [stderr]    |
[INFO] [stderr] 97 |                         BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i + 1,
[INFO] [stderr]    |                                                        ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stderr]   --> src/bnf_rules.rs:97:71
[INFO] [stderr]    |
[INFO] [stderr] 97 |                         BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i + 1,
[INFO] [stderr]    |                                                                       ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stderr]    --> src/bnf_rules.rs:108:53
[INFO] [stderr]     |
[INFO] [stderr] 108 |                         BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i,
[INFO] [stderr]     |                                                     ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stderr]    --> src/bnf_rules.rs:108:68
[INFO] [stderr]     |
[INFO] [stderr] 108 |                         BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i,
[INFO] [stderr]     |                                                                    ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stderr]    --> src/bnf_rules.rs:109:56
[INFO] [stderr]     |
[INFO] [stderr] 109 |                         BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i,
[INFO] [stderr]     |                                                        ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stderr]    --> src/bnf_rules.rs:109:71
[INFO] [stderr]     |
[INFO] [stderr] 109 |                         BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *NextChoiceMid = i,
[INFO] [stderr]     |                                                                       ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stderr]    --> src/bnf_rules.rs:114:57
[INFO] [stderr]     |
[INFO] [stderr] 114 | ...                   BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => {*ChoiceEnd = i; break},
[INFO] [stderr]     |                                                   ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stderr]    --> src/bnf_rules.rs:114:72
[INFO] [stderr]     |
[INFO] [stderr] 114 | ...                   BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => {*ChoiceEnd = i; break},
[INFO] [stderr]     |                                                                  ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stderr]    --> src/bnf_rules.rs:115:60
[INFO] [stderr]     |
[INFO] [stderr] 115 | ...                   BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *ChoiceEnd = i,
[INFO] [stderr]     |                                                      ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stderr]    --> src/bnf_rules.rs:115:75
[INFO] [stderr]     |
[INFO] [stderr] 115 | ...                   BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => *ChoiceEnd = i,
[INFO] [stderr]     |                                                                     ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stderr]    --> src/bnf_rules.rs:116:58
[INFO] [stderr]     |
[INFO] [stderr] 116 | ...                   BNFDescription::ChoiceMidEnd(ChoiceEnd) => *ChoiceEnd = i,
[INFO] [stderr]     |                                                    ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `OptionEnd` should have a snake case name
[INFO] [stderr]    --> src/bnf_rules.rs:122:49
[INFO] [stderr]     |
[INFO] [stderr] 122 |                     BNFDescription::OptionStart(OptionEnd) => *OptionEnd = i,
[INFO] [stderr]     |                                                 ^^^^^^^^^ help: convert the identifier to snake case: `option_end`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `RepetitionStart` should have a snake case name
[INFO] [stderr]    --> src/bnf_rules.rs:128:55
[INFO] [stderr]     |
[INFO] [stderr] 128 |                         BNFDescription::RepetitionEnd(RepetitionStart) => *RepetitionStart = repetition_start,
[INFO] [stderr]     |                                                       ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_start`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `RepetitionEnd` should have a snake case name
[INFO] [stderr]    --> src/bnf_rules.rs:132:57
[INFO] [stderr]     |
[INFO] [stderr] 132 |                         BNFDescription::RepetitionStart(RepetitionEnd) => *RepetitionEnd = i,
[INFO] [stderr]     |                                                         ^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_end`
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static
[INFO] [stderr]   --> src/debug_recorder.rs:26:9
[INFO] [stderr]    |
[INFO] [stderr] 26 |         RECORDERS.get(ACTIVE_RECORD)
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]    |
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stderr]    = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: creating a mutable reference to mutable static
[INFO] [stderr]   --> src/debug_recorder.rs:32:9
[INFO] [stderr]    |
[INFO] [stderr] 32 |         RECORDERS.get_mut(ACTIVE_RECORD)
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stderr]    |
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stderr] 
[INFO] [stderr] warning: creating a mutable reference to mutable static
[INFO] [stderr]   --> src/debug_recorder.rs:45:9
[INFO] [stderr]    |
[INFO] [stderr] 45 |         RECORDERS.push(Recorder::default());
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stderr]    |
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static
[INFO] [stderr]   --> src/debug_recorder.rs:46:25
[INFO] [stderr]    |
[INFO] [stderr] 46 |         ACTIVE_RECORD = RECORDERS.len() - 1;
[INFO] [stderr]    |                         ^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]    |
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static
[INFO] [stderr]   --> src/debug_recorder.rs:57:25
[INFO] [stderr]    |
[INFO] [stderr] 57 |         ACTIVE_RECORD = RECORDERS.len();
[INFO] [stderr]    |                         ^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]    |
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stderr] 
[INFO] [stderr] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stderr]   --> src/format.rs:24:41
[INFO] [stderr]    |
[INFO] [stderr] 24 |             BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => write!(f, "ChoiceStart({}, {})", NextChoiceMid, ChoiceEnd)?,
[INFO] [stderr]    |                                         ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stderr]   --> src/format.rs:24:56
[INFO] [stderr]    |
[INFO] [stderr] 24 |             BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => write!(f, "ChoiceStart({}, {})", NextChoiceMid, ChoiceEnd)?,
[INFO] [stderr]    |                                                        ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stderr]   --> src/format.rs:25:42
[INFO] [stderr]    |
[INFO] [stderr] 25 |             BNFDescription::ChoiceMidEnd(ChoiceEnd) => write!(f, "ChoiceMidEnd({})", ChoiceEnd)?,
[INFO] [stderr]    |                                          ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stderr]   --> src/format.rs:26:44
[INFO] [stderr]    |
[INFO] [stderr] 26 |             BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => write!(f, "ChoiceMidStart({}, {})", NextChoiceMid, ChoiceEnd)?,
[INFO] [stderr]    |                                            ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stderr]   --> src/format.rs:26:59
[INFO] [stderr]    |
[INFO] [stderr] 26 |             BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => write!(f, "ChoiceMidStart({}, {})", NextChoiceMid, ChoiceEnd)?,
[INFO] [stderr]    |                                                           ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `OptionEnd` should have a snake case name
[INFO] [stderr]   --> src/format.rs:28:41
[INFO] [stderr]    |
[INFO] [stderr] 28 |             BNFDescription::OptionStart(OptionEnd) => write!(f, "OptionStart({})", OptionEnd)?,
[INFO] [stderr]    |                                         ^^^^^^^^^ help: convert the identifier to snake case: `option_end`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `RepetitionEnd` should have a snake case name
[INFO] [stderr]   --> src/format.rs:30:45
[INFO] [stderr]    |
[INFO] [stderr] 30 |             BNFDescription::RepetitionStart(RepetitionEnd) => write!(f, "RepetitionStart({})", RepetitionEnd)?,
[INFO] [stderr]    |                                             ^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_end`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `RepetitionStart` should have a snake case name
[INFO] [stderr]   --> src/format.rs:31:43
[INFO] [stderr]    |
[INFO] [stderr] 31 |             BNFDescription::RepetitionEnd(RepetitionStart) => write!(f, "RepetitionEnd({})", RepetitionStart)?,
[INFO] [stderr]    |                                           ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_start`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `RepetitionStart` should have a snake case name
[INFO] [stderr]   --> src/parser.rs:50:99
[INFO] [stderr]    |
[INFO] [stderr] 50 | ...ance_id: RuleInstanceId, RepetitionStart: DescriptionIndex, token_index: &TokenIndex, description_index: DescriptionIndex) -> Par...
[INFO] [stderr]    |                             ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_start`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stderr]   --> src/parser.rs:85:41
[INFO] [stderr]    |
[INFO] [stderr] 85 |             BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => if NextChoiceMid == ChoiceEnd {
[INFO] [stderr]    |                                         ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stderr]   --> src/parser.rs:85:56
[INFO] [stderr]    |
[INFO] [stderr] 85 |             BNFDescription::ChoiceStart(NextChoiceMid, ChoiceEnd) => if NextChoiceMid == ChoiceEnd {
[INFO] [stderr]    |                                                        ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `NextChoiceMid` should have a snake case name
[INFO] [stderr]   --> src/parser.rs:91:44
[INFO] [stderr]    |
[INFO] [stderr] 91 |             BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => if NextChoiceMid == ChoiceEnd {
[INFO] [stderr]    |                                            ^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_choice_mid`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stderr]   --> src/parser.rs:91:59
[INFO] [stderr]    |
[INFO] [stderr] 91 |             BNFDescription::ChoiceMidStart(NextChoiceMid, ChoiceEnd) => if NextChoiceMid == ChoiceEnd {
[INFO] [stderr]    |                                                           ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `OptionEnd` should have a snake case name
[INFO] [stderr]   --> src/parser.rs:97:41
[INFO] [stderr]    |
[INFO] [stderr] 97 |             BNFDescription::OptionStart(OptionEnd) => OptionEnd + 1,
[INFO] [stderr]    |                                         ^^^^^^^^^ help: convert the identifier to snake case: `option_end`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `RepetitionEnd` should have a snake case name
[INFO] [stderr]   --> src/parser.rs:98:45
[INFO] [stderr]    |
[INFO] [stderr] 98 |             BNFDescription::RepetitionStart(RepetitionEnd) => RepetitionEnd + 1,
[INFO] [stderr]    |                                             ^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_end`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `ChoiceEnd` should have a snake case name
[INFO] [stderr]    --> src/parser.rs:237:46
[INFO] [stderr]     |
[INFO] [stderr] 237 | ...   BNFDescription::ChoiceMidEnd(ChoiceEnd) => rule_location.description_index = *ChoiceEnd, // 之后会description_index += 1，直...
[INFO] [stderr]     |                                    ^^^^^^^^^ help: convert the identifier to snake case: `choice_end`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `OptionEnd` should have a snake case name
[INFO] [stderr]    --> src/parser.rs:239:45
[INFO] [stderr]     |
[INFO] [stderr] 239 |                 BNFDescription::OptionStart(OptionEnd) => RecordOrJump!(*OptionEnd),
[INFO] [stderr]     |                                             ^^^^^^^^^ help: convert the identifier to snake case: `option_end`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `RepetitionEnd` should have a snake case name
[INFO] [stderr]    --> src/parser.rs:241:49
[INFO] [stderr]     |
[INFO] [stderr] 241 |                 BNFDescription::RepetitionStart(RepetitionEnd) => RecordOrJump!(*RepetitionEnd),
[INFO] [stderr]     |                                                 ^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_end`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `RepetitionStart` should have a snake case name
[INFO] [stderr]    --> src/parser.rs:242:47
[INFO] [stderr]     |
[INFO] [stderr] 242 | ...   BNFDescription::RepetitionEnd(RepetitionStart) => if *token_index < tokens.len() { // 如果 token 没有匹配完，需要检查是否无...
[INFO] [stderr]     |                                     ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `repetition_start`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `BNFRule_BLOCK_COMMENT_CONTENT` should have a snake case name
[INFO] [stderr]   --> src/rules_parser_generator.rs:98:34
[INFO] [stderr]    |
[INFO] [stderr] 98 |             Some((block_comment, BNFRule_BLOCK_COMMENT_CONTENT)) => (Some(block_comment), Some(BNFRule_BLOCK_COMMENT_CONTENT)),
[INFO] [stderr]    |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `bnfrule_block_comment_content`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `BNFRule_BLOCK_COMMENT_CONTENT` should have a snake case name
[INFO] [stderr]   --> src/rules_parser_generator.rs:72:29
[INFO] [stderr]    |
[INFO] [stderr] 72 | ...ck_comment, BNFRule_BLOCK_COMMENT_CONTENT) = match self.block_comment_start_end.as_ref().map(|(block_comment_start, block_comment...
[INFO] [stderr]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `bnfrule_block_comment_content`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `BNFRule_SINGLE_SPACE` should have a snake case name
[INFO] [stderr]    --> src/rules_parser_generator.rs:102:13
[INFO] [stderr]     |
[INFO] [stderr] 102 |         let BNFRule_SINGLE_SPACE: Option<BNFRule<char>> = (line_comment.is_some() || block_comment.is_some()).then(||
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `bnfrule_single_space`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `BNFDescription_SINGLE_SPACE` should have a snake case name
[INFO] [stderr]    --> src/rules_parser_generator.rs:115:13
[INFO] [stderr]     |
[INFO] [stderr] 115 |         let BNFDescription_SINGLE_SPACE = match BNFRule_SINGLE_SPACE {
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `bnfdescription_single_space`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `BNFRule_IDENTIFIER` should have a snake case name
[INFO] [stderr]    --> src/rules_parser_generator.rs:120:13
[INFO] [stderr]     |
[INFO] [stderr] 120 |         let BNFRule_IDENTIFIER = BNFRule::new(IDENTIFIER, vec![
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `bnfrule_identifier`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `BNFRule_STRING` should have a snake case name
[INFO] [stderr]    --> src/rules_parser_generator.rs:127:13
[INFO] [stderr]     |
[INFO] [stderr] 127 |         let BNFRule_STRING = BNFRule::new(STRING, vec![
[INFO] [stderr]     |             ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `bnfrule_string`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `BNFRule_BNF_RULE` should have a snake case name
[INFO] [stderr]    --> src/rules_parser_generator.rs:135:13
[INFO] [stderr]     |
[INFO] [stderr] 135 |         let BNFRule_BNF_RULE = BNFRule::new(BNF_RULE, vec![
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `bnfrule_bnf_rule`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `BNFRule_BNF_RULES` should have a snake case name
[INFO] [stderr]    --> src/rules_parser_generator.rs:158:13
[INFO] [stderr]     |
[INFO] [stderr] 158 |         let BNFRule_BNF_RULES = BNFRule::new(BNF_RULES, vec![
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `bnfrule_bnf_rules`
[INFO] [stderr] 
[INFO] [stderr] warning: `bnf_syntax_parser` (lib) generated 97 warnings (run `cargo fix --lib -p bnf_syntax_parser` to apply 27 suggestions)
[INFO] [stderr] warning: unused imports: `BNFRule` and `MatchRecord`
[INFO] [stderr]  --> tests/integration_test.rs:5:47
[INFO] [stderr]   |
[INFO] [stderr] 5 |     use bnf_syntax_parser::{TokenType, Token, BNFRule, BNFRules, Parser, MatchRecord, ParseTree};
[INFO] [stderr]   |                                               ^^^^^^^                    ^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `parser`
[INFO] [stderr]   --> tests/integration_test.rs:71:9
[INFO] [stderr]    |
[INFO] [stderr] 71 |     let parser = Parser::new(rules.rules.clone(), rules.start_rule_index.unwrap());
[INFO] [stderr]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_parser`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `r`
[INFO] [stderr]    --> tests/integration_test.rs:111:16
[INFO] [stderr]     |
[INFO] [stderr] 111 |             Ok(r) => (),
[INFO] [stderr]     |                ^ help: if this is intentional, prefix it with an underscore: `_r`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `TOKEN_TYPE_CONVERTER` should have a snake case name
[INFO] [stderr]   --> tests/integration_test.rs:50:9
[INFO] [stderr]    |
[INFO] [stderr] 50 |     let TOKEN_TYPE_CONVERTER = HashMap::from([
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `token_type_converter`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable `TOKEN_CONVERTER` should have a snake case name
[INFO] [stderr]   --> tests/integration_test.rs:75:9
[INFO] [stderr]    |
[INFO] [stderr] 75 |     let TOKEN_CONVERTER = HashMap::from([
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `token_converter`
[INFO] [stderr] 
[INFO] [stderr] warning: `bnf_syntax_parser` (test "integration_test") generated 5 warnings (run `cargo fix --test "integration_test" -p bnf_syntax_parser` to apply 3 suggestions)
[INFO] [stderr] warning: `bnf_syntax_parser` (lib test) generated 97 warnings (97 duplicates)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.08s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/bnf_syntax_parser-35ad25ddd9dd8dea)
[INFO] [stderr]      Running tests/integration_test.rs (/opt/rustwide/target/debug/deps/integration_test-2162cb0a987bf8f6)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test example ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests bnf_syntax_parser
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "7402600847b696330ea8434cad2c5f5e3c1f88cb0f2ef5d7222c286d0fc71b59", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7402600847b696330ea8434cad2c5f5e3c1f88cb0f2ef5d7222c286d0fc71b59", kill_on_drop: false }`
[INFO] [stdout] 7402600847b696330ea8434cad2c5f5e3c1f88cb0f2ef5d7222c286d0fc71b59
