[INFO] crate gallop 1.0.4 is already in cache [INFO] extracting crate gallop 1.0.4 into work/ex/clippy-test-run/sources/stable/reg/gallop/1.0.4 [INFO] extracting crate gallop 1.0.4 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/gallop/1.0.4 [INFO] validating manifest of gallop-1.0.4 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of gallop-1.0.4 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing gallop-1.0.4 [INFO] finished frobbing gallop-1.0.4 [INFO] frobbed toml for gallop-1.0.4 written to work/ex/clippy-test-run/sources/stable/reg/gallop/1.0.4/Cargo.toml [INFO] started frobbing gallop-1.0.4 [INFO] finished frobbing gallop-1.0.4 [INFO] frobbed toml for gallop-1.0.4 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/gallop/1.0.4/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting gallop-1.0.4 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/gallop/1.0.4:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] a6920737953ec094ed0751ae957b4746d7d4a35abfa168fbad4def81c54e7381 [INFO] running `"docker" "start" "-a" "a6920737953ec094ed0751ae957b4746d7d4a35abfa168fbad4def81c54e7381"` [INFO] [stderr] Checking gallop v1.0.4 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:494:33 [INFO] [stderr] | [INFO] [stderr] 494 | parse_table: parse_table, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `parse_table` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:680:21 [INFO] [stderr] | [INFO] [stderr] 680 | non_terminal: non_terminal, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `non_terminal` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:706:45 [INFO] [stderr] | [INFO] [stderr] 706 | non_terminal: non_terminal, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `non_terminal` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:876:33 [INFO] [stderr] | [INFO] [stderr] 876 | non_terminal: non_terminal, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `non_terminal` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:893:45 [INFO] [stderr] | [INFO] [stderr] 893 | non_terminal: non_terminal, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `non_terminal` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:917:33 [INFO] [stderr] | [INFO] [stderr] 917 | non_terminal: non_terminal, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `non_terminal` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:1305:13 [INFO] [stderr] | [INFO] [stderr] 1305 | parse_table: parse_table, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `parse_table` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:494:33 [INFO] [stderr] | [INFO] [stderr] 494 | parse_table: parse_table, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `parse_table` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:680:21 [INFO] [stderr] | [INFO] [stderr] 680 | non_terminal: non_terminal, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `non_terminal` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:706:45 [INFO] [stderr] | [INFO] [stderr] 706 | non_terminal: non_terminal, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `non_terminal` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:876:33 [INFO] [stderr] | [INFO] [stderr] 876 | non_terminal: non_terminal, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `non_terminal` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:893:45 [INFO] [stderr] | [INFO] [stderr] 893 | non_terminal: non_terminal, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `non_terminal` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:917:33 [INFO] [stderr] | [INFO] [stderr] 917 | non_terminal: non_terminal, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `non_terminal` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:1305:13 [INFO] [stderr] | [INFO] [stderr] 1305 | parse_table: parse_table, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `parse_table` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:1069:12 [INFO] [stderr] | [INFO] [stderr] 1069 | (0x0..(0x10FFFF + 1)) [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0010_FFFF` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:1078:12 [INFO] [stderr] | [INFO] [stderr] 1078 | (0x0..(0x10FFFF + 1)) [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0010_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:1087:12 [INFO] [stderr] | [INFO] [stderr] 1087 | (0x0..(0x10FFFF + 1)) [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0010_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:1096:12 [INFO] [stderr] | [INFO] [stderr] 1096 | (0x0..(0x10FFFF + 1)) [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0010_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:1105:12 [INFO] [stderr] | [INFO] [stderr] 1105 | (0x0..(0x10FFFF + 1)) [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0010_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:1069:12 [INFO] [stderr] | [INFO] [stderr] 1069 | (0x0..(0x10FFFF + 1)) [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0010_FFFF` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:1078:12 [INFO] [stderr] | [INFO] [stderr] 1078 | (0x0..(0x10FFFF + 1)) [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0010_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:1087:12 [INFO] [stderr] | [INFO] [stderr] 1087 | (0x0..(0x10FFFF + 1)) [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0010_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:1096:12 [INFO] [stderr] | [INFO] [stderr] 1096 | (0x0..(0x10FFFF + 1)) [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0010_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:1105:12 [INFO] [stderr] | [INFO] [stderr] 1105 | (0x0..(0x10FFFF + 1)) [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0010_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:444:9 [INFO] [stderr] | [INFO] [stderr] 444 | / match grammar.contains_key("START") { [INFO] [stderr] 445 | | false => Err(GrammarError::NoStartSymbol), [INFO] [stderr] 446 | | true => match grammar.len() > 1 { [INFO] [stderr] 447 | | false => Err(GrammarError::EmptyGrammar), [INFO] [stderr] ... | [INFO] [stderr] 500 | | }, [INFO] [stderr] 501 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 444 | if grammar.contains_key("START") { match grammar.len() > 1 { [INFO] [stderr] 445 | false => Err(GrammarError::EmptyGrammar), [INFO] [stderr] 446 | true => { [INFO] [stderr] 447 | let reserved_non_terminals = get_reserved_non_terminals(); [INFO] [stderr] 448 | let mut reserved_non_terminals_used = BTreeSet::new(); [INFO] [stderr] 449 | [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:446:22 [INFO] [stderr] | [INFO] [stderr] 446 | true => match grammar.len() > 1 { [INFO] [stderr] | ______________________^ [INFO] [stderr] 447 | | false => Err(GrammarError::EmptyGrammar), [INFO] [stderr] 448 | | true => { [INFO] [stderr] 449 | | let reserved_non_terminals = get_reserved_non_terminals(); [INFO] [stderr] ... | [INFO] [stderr] 499 | | }, [INFO] [stderr] 500 | | }, [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 446 | true => if grammar.len() > 1 { [INFO] [stderr] 447 | let reserved_non_terminals = get_reserved_non_terminals(); [INFO] [stderr] 448 | let mut reserved_non_terminals_used = BTreeSet::new(); [INFO] [stderr] 449 | [INFO] [stderr] 450 | for (non_terminal, rules) in grammar.iter() { [INFO] [stderr] 451 | if reserved_non_terminals.contains_key(non_terminal) { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/lib.rs:463:44 [INFO] [stderr] | [INFO] [stderr] 463 | if false == grammar.contains_key(u) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!grammar.contains_key(u)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/lib.rs:479:29 [INFO] [stderr] | [INFO] [stderr] 479 | reserved_non_terminals.get(reserved_non_terminal_used).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&reserved_non_terminals[reserved_non_terminal_used]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:522:26 [INFO] [stderr] | [INFO] [stderr] 522 | None => match input_stack.input.peek().is_some() { [INFO] [stderr] | __________________________^ [INFO] [stderr] 523 | | true => Err(ParseError::InvalidInput(input_stack.index)), [INFO] [stderr] 524 | | false => Ok(parse_tree), [INFO] [stderr] 525 | | }, [INFO] [stderr] | |_____________^ help: consider using an if/else expression: `if input_stack.input.peek().is_some() { Err(ParseError::InvalidInput(input_stack.index)) } else { Ok(parse_tree) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/lib.rs:559:31 [INFO] [stderr] | [INFO] [stderr] 559 | match self.parse_table.get(symbol).unwrap().get(&ParseTableElement::Empty) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.parse_table[symbol]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/lib.rs:564:47 [INFO] [stderr] | [INFO] [stderr] 564 | Some(next_input) => match self.parse_table.get(symbol).unwrap().get(&ParseTableElement::Terminal(*next_input)) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.parse_table[symbol]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:579:37 [INFO] [stderr] | [INFO] [stderr] 579 | / match u == next_input { [INFO] [stderr] 580 | | false => return Some(ParseError::InvalidInput(input_stack.index)), [INFO] [stderr] 581 | | true => current_children.push(ParseTree::Terminal(next_input)), [INFO] [stderr] 582 | | } [INFO] [stderr] | |_____________________________________^ help: consider using an if/else expression: `if u == next_input { current_children.push(ParseTree::Terminal(next_input)) } else { return Some(ParseError::InvalidInput(input_stack.index)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lib.rs:584:37 [INFO] [stderr] | [INFO] [stderr] 584 | input_stack.index = input_stack.index + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `input_stack.index += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:597:37 [INFO] [stderr] | [INFO] [stderr] 597 | / match self.rollups.contains(u) || u.ends_with('*') || u.ends_with('+') { [INFO] [stderr] 598 | | false => current_children.push(child), [INFO] [stderr] 599 | | true => { [INFO] [stderr] 600 | | match child { [INFO] [stderr] ... | [INFO] [stderr] 606 | | }, [INFO] [stderr] 607 | | } [INFO] [stderr] | |_____________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 597 | if self.rollups.contains(u) || u.ends_with('*') || u.ends_with('+') { [INFO] [stderr] 598 | match child { [INFO] [stderr] 599 | ParseTree::Terminal(_) => {}, [INFO] [stderr] 600 | ParseTree::NonTerminal { ref mut children, .. } => { [INFO] [stderr] 601 | current_children.append(children); [INFO] [stderr] 602 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:700:29 [INFO] [stderr] | [INFO] [stderr] 700 | / match u == *non_terminal { [INFO] [stderr] 701 | | true => continue, [INFO] [stderr] 702 | | false => { [INFO] [stderr] 703 | | let mut first_rule_element_clone = match first_set.get(u) { [INFO] [stderr] ... | [INFO] [stderr] 726 | | }, [INFO] [stderr] 727 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 700 | if u == *non_terminal { continue } else { [INFO] [stderr] 701 | let mut first_rule_element_clone = match first_set.get(u) { [INFO] [stderr] 702 | Some(first_rule_element) => first_rule_element.clone(), [INFO] [stderr] 703 | None => return Err(GrammarError::InvalidGrammar { [INFO] [stderr] 704 | non_terminal: non_terminal, [INFO] [stderr] 705 | rule: rule.clone(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:722:37 [INFO] [stderr] | [INFO] [stderr] 722 | / match has_empty { [INFO] [stderr] 723 | | true => continue, [INFO] [stderr] 724 | | false => break, [INFO] [stderr] 725 | | } [INFO] [stderr] | |_____________________________________^ help: consider using an if/else expression: `if has_empty { continue } else { break }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:732:17 [INFO] [stderr] | [INFO] [stderr] 732 | / match has_empty && (1 == rule.iter().len()) { [INFO] [stderr] 733 | | false => continue, [INFO] [stderr] 734 | | true => { [INFO] [stderr] 735 | | let mut first_non_terminal = first_set.get_mut(non_terminal).unwrap(); [INFO] [stderr] ... | [INFO] [stderr] 744 | | }, [INFO] [stderr] 745 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 732 | if has_empty && (1 == rule.iter().len()) { [INFO] [stderr] 733 | let mut first_non_terminal = first_set.get_mut(non_terminal).unwrap(); [INFO] [stderr] 734 | [INFO] [stderr] 735 | match first_non_terminal.contains(&FirstElement::Empty) { [INFO] [stderr] 736 | true => continue, [INFO] [stderr] 737 | false => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:737:25 [INFO] [stderr] | [INFO] [stderr] 737 | / match first_non_terminal.contains(&FirstElement::Empty) { [INFO] [stderr] 738 | | true => continue, [INFO] [stderr] 739 | | false => { [INFO] [stderr] 740 | | first_non_terminal.insert(FirstElement::Empty); [INFO] [stderr] 741 | | has_changed = true; [INFO] [stderr] 742 | | }, [INFO] [stderr] 743 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 737 | if first_non_terminal.contains(&FirstElement::Empty) { continue } else { [INFO] [stderr] 738 | first_non_terminal.insert(FirstElement::Empty); [INFO] [stderr] 739 | has_changed = true; [INFO] [stderr] 740 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:749:9 [INFO] [stderr] | [INFO] [stderr] 749 | / match has_changed { [INFO] [stderr] 750 | | true => continue, [INFO] [stderr] 751 | | false => break, [INFO] [stderr] 752 | | } [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if has_changed { continue } else { break }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/lib.rs:776:39 [INFO] [stderr] | [INFO] [stderr] 776 | let follow_non_terminal = follow_set.get(non_terminal).unwrap().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&follow_set[non_terminal]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:802:48 [INFO] [stderr] | [INFO] [stderr] 802 | || first_rule_element_y.len() == 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `first_rule_element_y.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:808:53 [INFO] [stderr] | [INFO] [stderr] 808 | / match follow_rule_element_b.insert(fy) { [INFO] [stderr] 809 | | true => has_changed = true, [INFO] [stderr] 810 | | false => continue, [INFO] [stderr] 811 | | } [INFO] [stderr] | |_____________________________________________________^ help: consider using an if/else expression: `if follow_rule_element_b.insert(fy) { has_changed = true } else { continue }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:816:41 [INFO] [stderr] | [INFO] [stderr] 816 | / match has_empty { [INFO] [stderr] 817 | | true => extend_from_empty = true, [INFO] [stderr] 818 | | false => break, [INFO] [stderr] 819 | | } [INFO] [stderr] | |_________________________________________^ help: consider using an if/else expression: `if has_empty { extend_from_empty = true } else { break }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:824:29 [INFO] [stderr] | [INFO] [stderr] 824 | / match extend_from_empty || (i + 1) == rule.iter().len() { [INFO] [stderr] 825 | | true => follow_rule_element_b.extend(follow_non_terminal.clone()), [INFO] [stderr] 826 | | false => continue, [INFO] [stderr] 827 | | } [INFO] [stderr] | |_____________________________^ help: consider using an if/else expression: `if extend_from_empty || (i + 1) == rule.iter().len() { follow_rule_element_b.extend(follow_non_terminal.clone()) } else { continue }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:834:9 [INFO] [stderr] | [INFO] [stderr] 834 | / match has_changed { [INFO] [stderr] 835 | | true => continue, [INFO] [stderr] 836 | | false => break, [INFO] [stderr] 837 | | } [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if has_changed { continue } else { break }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:873:25 [INFO] [stderr] | [INFO] [stderr] 873 | / match parse_table_non_terminal.insert(ParseTableElement::Terminal(u), rule.clone()).is_some() { [INFO] [stderr] 874 | | false => break, [INFO] [stderr] 875 | | true => return Err(GrammarError::Conflict { [INFO] [stderr] 876 | | non_terminal: non_terminal, [INFO] [stderr] ... | [INFO] [stderr] 879 | | }), [INFO] [stderr] 880 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 873 | if parse_table_non_terminal.insert(ParseTableElement::Terminal(u), rule.clone()).is_some() { return Err(GrammarError::Conflict { [INFO] [stderr] 874 | non_terminal: non_terminal, [INFO] [stderr] 875 | rule: rule.clone(), [INFO] [stderr] 876 | rule_element: rule_element.clone(), [INFO] [stderr] 877 | }) } else { break } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:890:37 [INFO] [stderr] | [INFO] [stderr] 890 | / match parse_table_non_terminal.insert(ParseTableElement::Terminal(fu), rule.clone()).is_some() { [INFO] [stderr] 891 | | false => continue, [INFO] [stderr] 892 | | true => return Err(GrammarError::Conflict { [INFO] [stderr] 893 | | non_terminal: non_terminal, [INFO] [stderr] ... | [INFO] [stderr] 896 | | }), [INFO] [stderr] 897 | | } [INFO] [stderr] | |_____________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 890 | if parse_table_non_terminal.insert(ParseTableElement::Terminal(fu), rule.clone()).is_some() { return Err(GrammarError::Conflict { [INFO] [stderr] 891 | non_terminal: non_terminal, [INFO] [stderr] 892 | rule: rule.clone(), [INFO] [stderr] 893 | rule_element: rule_element.clone(), [INFO] [stderr] 894 | }) } else { continue } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:902:25 [INFO] [stderr] | [INFO] [stderr] 902 | / match has_empty { [INFO] [stderr] 903 | | true => continue, [INFO] [stderr] 904 | | false => break, [INFO] [stderr] 905 | | } [INFO] [stderr] | |_________________________^ help: consider using an if/else expression: `if has_empty { continue } else { break }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:910:13 [INFO] [stderr] | [INFO] [stderr] 910 | / match extend_from_empty { [INFO] [stderr] 911 | | false => continue, [INFO] [stderr] 912 | | true => { [INFO] [stderr] 913 | | for follow_u in follow_non_terminal { [INFO] [stderr] ... | [INFO] [stderr] 923 | | }, [INFO] [stderr] 924 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 910 | if extend_from_empty { [INFO] [stderr] 911 | for follow_u in follow_non_terminal { [INFO] [stderr] 912 | match parse_table_non_terminal.insert(ParseTableElement::Terminal(*follow_u), rule.clone()).is_some() { [INFO] [stderr] 913 | false => continue, [INFO] [stderr] 914 | true => return Err(GrammarError::Conflict { [INFO] [stderr] 915 | non_terminal: non_terminal, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:914:25 [INFO] [stderr] | [INFO] [stderr] 914 | / match parse_table_non_terminal.insert(ParseTableElement::Terminal(*follow_u), rule.clone()).is_some() { [INFO] [stderr] 915 | | false => continue, [INFO] [stderr] 916 | | true => return Err(GrammarError::Conflict { [INFO] [stderr] 917 | | non_terminal: non_terminal, [INFO] [stderr] ... | [INFO] [stderr] 920 | | }), [INFO] [stderr] 921 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 914 | if parse_table_non_terminal.insert(ParseTableElement::Terminal(*follow_u), rule.clone()).is_some() { return Err(GrammarError::Conflict { [INFO] [stderr] 915 | non_terminal: non_terminal, [INFO] [stderr] 916 | rule: rule.clone(), [INFO] [stderr] 917 | rule_element: RuleElement::Empty, [INFO] [stderr] 918 | }) } else { continue } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:963:5 [INFO] [stderr] | [INFO] [stderr] 963 | / (0x0..(0x7f + 1 as u8)) [INFO] [stderr] 964 | | .into_iter() [INFO] [stderr] | |____________________^ help: consider removing `.into_iter()`: `(0x0..(0x7f + 1 as u8))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:970:53 [INFO] [stderr] | [INFO] [stderr] 970 | let mut characters: Vec>> = (0x0..(0x1f + 1 as u8)) [INFO] [stderr] | _____________________________________________________^ [INFO] [stderr] 971 | | .into_iter() [INFO] [stderr] | |____________________^ help: consider removing `.into_iter()`: `(0x0..(0x1f + 1 as u8))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] error: this .into_iter() call is equivalent to .iter() and will not move the array [INFO] [stderr] --> src/lib.rs:982:10 [INFO] [stderr] | [INFO] [stderr] 982 | .into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::into_iter_on_array)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_array [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:988:5 [INFO] [stderr] | [INFO] [stderr] 988 | / (('0' as u8)..('9' as u8 + 1)) [INFO] [stderr] 989 | | .into_iter() [INFO] [stderr] | |____________________^ help: consider removing `.into_iter()`: `(('0' as u8)..('9' as u8 + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/lib.rs:988:5 [INFO] [stderr] | [INFO] [stderr] 988 | (('0' as u8)..('9' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(('0' as u8)..='9' as u8)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/lib.rs:988:6 [INFO] [stderr] | [INFO] [stderr] 988 | (('0' as u8)..('9' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'0' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/lib.rs:988:20 [INFO] [stderr] | [INFO] [stderr] 988 | (('0' as u8)..('9' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'9' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:995:5 [INFO] [stderr] | [INFO] [stderr] 995 | / (('a' as u8)..('z' as u8 + 1)) [INFO] [stderr] 996 | | .into_iter() [INFO] [stderr] | |____________________^ help: consider removing `.into_iter()`: `(('a' as u8)..('z' as u8 + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/lib.rs:995:5 [INFO] [stderr] | [INFO] [stderr] 995 | (('a' as u8)..('z' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(('a' as u8)..='z' as u8)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/lib.rs:995:6 [INFO] [stderr] | [INFO] [stderr] 995 | (('a' as u8)..('z' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/lib.rs:995:20 [INFO] [stderr] | [INFO] [stderr] 995 | (('a' as u8)..('z' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'z' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:1002:5 [INFO] [stderr] | [INFO] [stderr] 1002 | / (('A' as u8)..('Z' as u8 + 1)) [INFO] [stderr] 1003 | | .into_iter() [INFO] [stderr] | |____________________^ help: consider removing `.into_iter()`: `(('A' as u8)..('Z' as u8 + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/lib.rs:1002:5 [INFO] [stderr] | [INFO] [stderr] 1002 | (('A' as u8)..('Z' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(('A' as u8)..='Z' as u8)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/lib.rs:1002:6 [INFO] [stderr] | [INFO] [stderr] 1002 | (('A' as u8)..('Z' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'A' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/lib.rs:1002:20 [INFO] [stderr] | [INFO] [stderr] 1002 | (('A' as u8)..('Z' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'Z' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:1027:53 [INFO] [stderr] | [INFO] [stderr] 1027 | let mut characters: Vec>> = (('a' as u8)..('f' as u8 + 1)) [INFO] [stderr] | _____________________________________________________^ [INFO] [stderr] 1028 | | .into_iter() [INFO] [stderr] | |____________________^ help: consider removing `.into_iter()`: `(('a' as u8)..('f' as u8 + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/lib.rs:1027:53 [INFO] [stderr] | [INFO] [stderr] 1027 | let mut characters: Vec>> = (('a' as u8)..('f' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(('a' as u8)..='f' as u8)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/lib.rs:1027:54 [INFO] [stderr] | [INFO] [stderr] 1027 | let mut characters: Vec>> = (('a' as u8)..('f' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/lib.rs:1027:68 [INFO] [stderr] | [INFO] [stderr] 1027 | let mut characters: Vec>> = (('a' as u8)..('f' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'f' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:1038:53 [INFO] [stderr] | [INFO] [stderr] 1038 | let mut characters: Vec>> = (('A' as u8)..('F' as u8 + 1)) [INFO] [stderr] | _____________________________________________________^ [INFO] [stderr] 1039 | | .into_iter() [INFO] [stderr] | |____________________^ help: consider removing `.into_iter()`: `(('A' as u8)..('F' as u8 + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/lib.rs:1038:53 [INFO] [stderr] | [INFO] [stderr] 1038 | let mut characters: Vec>> = (('A' as u8)..('F' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(('A' as u8)..='F' as u8)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/lib.rs:1038:54 [INFO] [stderr] | [INFO] [stderr] 1038 | let mut characters: Vec>> = (('A' as u8)..('F' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'A' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/lib.rs:1038:68 [INFO] [stderr] | [INFO] [stderr] 1038 | let mut characters: Vec>> = (('A' as u8)..('F' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'F' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:1053:28 [INFO] [stderr] | [INFO] [stderr] 1053 | characters.append(&mut (('a' as u8)..('f' as u8 + 1)) [INFO] [stderr] | ____________________________^ [INFO] [stderr] 1054 | | .into_iter() [INFO] [stderr] | |____________________^ help: consider removing `.into_iter()`: `(('a' as u8)..('f' as u8 + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/lib.rs:1053:28 [INFO] [stderr] | [INFO] [stderr] 1053 | characters.append(&mut (('a' as u8)..('f' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(('a' as u8)..='f' as u8)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/lib.rs:1053:29 [INFO] [stderr] | [INFO] [stderr] 1053 | characters.append(&mut (('a' as u8)..('f' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/lib.rs:1053:43 [INFO] [stderr] | [INFO] [stderr] 1053 | characters.append(&mut (('a' as u8)..('f' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'f' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:1059:28 [INFO] [stderr] | [INFO] [stderr] 1059 | characters.append(&mut (('A' as u8)..('F' as u8 + 1)) [INFO] [stderr] | ____________________________^ [INFO] [stderr] 1060 | | .into_iter() [INFO] [stderr] | |____________________^ help: consider removing `.into_iter()`: `(('A' as u8)..('F' as u8 + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/lib.rs:1059:28 [INFO] [stderr] | [INFO] [stderr] 1059 | characters.append(&mut (('A' as u8)..('F' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(('A' as u8)..='F' as u8)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/lib.rs:1059:29 [INFO] [stderr] | [INFO] [stderr] 1059 | characters.append(&mut (('A' as u8)..('F' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'A' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/lib.rs:1059:43 [INFO] [stderr] | [INFO] [stderr] 1059 | characters.append(&mut (('A' as u8)..('F' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'F' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/lib.rs:1071:21 [INFO] [stderr] | [INFO] [stderr] 1071 | .filter_map(|c| char::from_u32(c)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `char::from_u32` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:1069:5 [INFO] [stderr] | [INFO] [stderr] 1069 | / (0x0..(0x10FFFF + 1)) [INFO] [stderr] 1070 | | .into_iter() [INFO] [stderr] | |____________________^ help: consider removing `.into_iter()`: `(0x0..(0x10FFFF + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/lib.rs:1069:5 [INFO] [stderr] | [INFO] [stderr] 1069 | (0x0..(0x10FFFF + 1)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `(0x0..=0x10FFFF)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/lib.rs:1080:21 [INFO] [stderr] | [INFO] [stderr] 1080 | .filter_map(|c| char::from_u32(c)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `char::from_u32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:1078:5 [INFO] [stderr] | [INFO] [stderr] 1078 | / (0x0..(0x10FFFF + 1)) [INFO] [stderr] 1079 | | .into_iter() [INFO] [stderr] | |____________________^ help: consider removing `.into_iter()`: `(0x0..(0x10FFFF + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/lib.rs:1078:5 [INFO] [stderr] | [INFO] [stderr] 1078 | (0x0..(0x10FFFF + 1)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `(0x0..=0x10FFFF)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/lib.rs:1089:21 [INFO] [stderr] | [INFO] [stderr] 1089 | .filter_map(|c| char::from_u32(c)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `char::from_u32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:1087:5 [INFO] [stderr] | [INFO] [stderr] 1087 | / (0x0..(0x10FFFF + 1)) [INFO] [stderr] 1088 | | .into_iter() [INFO] [stderr] | |____________________^ help: consider removing `.into_iter()`: `(0x0..(0x10FFFF + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/lib.rs:1087:5 [INFO] [stderr] | [INFO] [stderr] 1087 | (0x0..(0x10FFFF + 1)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `(0x0..=0x10FFFF)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/lib.rs:1098:21 [INFO] [stderr] | [INFO] [stderr] 1098 | .filter_map(|c| char::from_u32(c)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `char::from_u32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:1096:5 [INFO] [stderr] | [INFO] [stderr] 1096 | / (0x0..(0x10FFFF + 1)) [INFO] [stderr] 1097 | | .into_iter() [INFO] [stderr] | |____________________^ help: consider removing `.into_iter()`: `(0x0..(0x10FFFF + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/lib.rs:1096:5 [INFO] [stderr] | [INFO] [stderr] 1096 | (0x0..(0x10FFFF + 1)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `(0x0..=0x10FFFF)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/lib.rs:1107:21 [INFO] [stderr] | [INFO] [stderr] 1107 | .filter_map(|c| char::from_u32(c)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `char::from_u32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:1105:5 [INFO] [stderr] | [INFO] [stderr] 1105 | / (0x0..(0x10FFFF + 1)) [INFO] [stderr] 1106 | | .into_iter() [INFO] [stderr] | |____________________^ help: consider removing `.into_iter()`: `(0x0..(0x10FFFF + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/lib.rs:1105:5 [INFO] [stderr] | [INFO] [stderr] 1105 | (0x0..(0x10FFFF + 1)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `(0x0..=0x10FFFF)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `gallop`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:444:9 [INFO] [stderr] | [INFO] [stderr] 444 | / match grammar.contains_key("START") { [INFO] [stderr] 445 | | false => Err(GrammarError::NoStartSymbol), [INFO] [stderr] 446 | | true => match grammar.len() > 1 { [INFO] [stderr] 447 | | false => Err(GrammarError::EmptyGrammar), [INFO] [stderr] ... | [INFO] [stderr] 500 | | }, [INFO] [stderr] 501 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 444 | if grammar.contains_key("START") { match grammar.len() > 1 { [INFO] [stderr] 445 | false => Err(GrammarError::EmptyGrammar), [INFO] [stderr] 446 | true => { [INFO] [stderr] 447 | let reserved_non_terminals = get_reserved_non_terminals(); [INFO] [stderr] 448 | let mut reserved_non_terminals_used = BTreeSet::new(); [INFO] [stderr] 449 | [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:446:22 [INFO] [stderr] | [INFO] [stderr] 446 | true => match grammar.len() > 1 { [INFO] [stderr] | ______________________^ [INFO] [stderr] 447 | | false => Err(GrammarError::EmptyGrammar), [INFO] [stderr] 448 | | true => { [INFO] [stderr] 449 | | let reserved_non_terminals = get_reserved_non_terminals(); [INFO] [stderr] ... | [INFO] [stderr] 499 | | }, [INFO] [stderr] 500 | | }, [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 446 | true => if grammar.len() > 1 { [INFO] [stderr] 447 | let reserved_non_terminals = get_reserved_non_terminals(); [INFO] [stderr] 448 | let mut reserved_non_terminals_used = BTreeSet::new(); [INFO] [stderr] 449 | [INFO] [stderr] 450 | for (non_terminal, rules) in grammar.iter() { [INFO] [stderr] 451 | if reserved_non_terminals.contains_key(non_terminal) { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/lib.rs:463:44 [INFO] [stderr] | [INFO] [stderr] 463 | if false == grammar.contains_key(u) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!grammar.contains_key(u)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/lib.rs:479:29 [INFO] [stderr] | [INFO] [stderr] 479 | reserved_non_terminals.get(reserved_non_terminal_used).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&reserved_non_terminals[reserved_non_terminal_used]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:522:26 [INFO] [stderr] | [INFO] [stderr] 522 | None => match input_stack.input.peek().is_some() { [INFO] [stderr] | __________________________^ [INFO] [stderr] 523 | | true => Err(ParseError::InvalidInput(input_stack.index)), [INFO] [stderr] 524 | | false => Ok(parse_tree), [INFO] [stderr] 525 | | }, [INFO] [stderr] | |_____________^ help: consider using an if/else expression: `if input_stack.input.peek().is_some() { Err(ParseError::InvalidInput(input_stack.index)) } else { Ok(parse_tree) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/lib.rs:559:31 [INFO] [stderr] | [INFO] [stderr] 559 | match self.parse_table.get(symbol).unwrap().get(&ParseTableElement::Empty) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.parse_table[symbol]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/lib.rs:564:47 [INFO] [stderr] | [INFO] [stderr] 564 | Some(next_input) => match self.parse_table.get(symbol).unwrap().get(&ParseTableElement::Terminal(*next_input)) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.parse_table[symbol]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:579:37 [INFO] [stderr] | [INFO] [stderr] 579 | / match u == next_input { [INFO] [stderr] 580 | | false => return Some(ParseError::InvalidInput(input_stack.index)), [INFO] [stderr] 581 | | true => current_children.push(ParseTree::Terminal(next_input)), [INFO] [stderr] 582 | | } [INFO] [stderr] | |_____________________________________^ help: consider using an if/else expression: `if u == next_input { current_children.push(ParseTree::Terminal(next_input)) } else { return Some(ParseError::InvalidInput(input_stack.index)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lib.rs:584:37 [INFO] [stderr] | [INFO] [stderr] 584 | input_stack.index = input_stack.index + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `input_stack.index += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:597:37 [INFO] [stderr] | [INFO] [stderr] 597 | / match self.rollups.contains(u) || u.ends_with('*') || u.ends_with('+') { [INFO] [stderr] 598 | | false => current_children.push(child), [INFO] [stderr] 599 | | true => { [INFO] [stderr] 600 | | match child { [INFO] [stderr] ... | [INFO] [stderr] 606 | | }, [INFO] [stderr] 607 | | } [INFO] [stderr] | |_____________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 597 | if self.rollups.contains(u) || u.ends_with('*') || u.ends_with('+') { [INFO] [stderr] 598 | match child { [INFO] [stderr] 599 | ParseTree::Terminal(_) => {}, [INFO] [stderr] 600 | ParseTree::NonTerminal { ref mut children, .. } => { [INFO] [stderr] 601 | current_children.append(children); [INFO] [stderr] 602 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:700:29 [INFO] [stderr] | [INFO] [stderr] 700 | / match u == *non_terminal { [INFO] [stderr] 701 | | true => continue, [INFO] [stderr] 702 | | false => { [INFO] [stderr] 703 | | let mut first_rule_element_clone = match first_set.get(u) { [INFO] [stderr] ... | [INFO] [stderr] 726 | | }, [INFO] [stderr] 727 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 700 | if u == *non_terminal { continue } else { [INFO] [stderr] 701 | let mut first_rule_element_clone = match first_set.get(u) { [INFO] [stderr] 702 | Some(first_rule_element) => first_rule_element.clone(), [INFO] [stderr] 703 | None => return Err(GrammarError::InvalidGrammar { [INFO] [stderr] 704 | non_terminal: non_terminal, [INFO] [stderr] 705 | rule: rule.clone(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:722:37 [INFO] [stderr] | [INFO] [stderr] 722 | / match has_empty { [INFO] [stderr] 723 | | true => continue, [INFO] [stderr] 724 | | false => break, [INFO] [stderr] 725 | | } [INFO] [stderr] | |_____________________________________^ help: consider using an if/else expression: `if has_empty { continue } else { break }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:732:17 [INFO] [stderr] | [INFO] [stderr] 732 | / match has_empty && (1 == rule.iter().len()) { [INFO] [stderr] 733 | | false => continue, [INFO] [stderr] 734 | | true => { [INFO] [stderr] 735 | | let mut first_non_terminal = first_set.get_mut(non_terminal).unwrap(); [INFO] [stderr] ... | [INFO] [stderr] 744 | | }, [INFO] [stderr] 745 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 732 | if has_empty && (1 == rule.iter().len()) { [INFO] [stderr] 733 | let mut first_non_terminal = first_set.get_mut(non_terminal).unwrap(); [INFO] [stderr] 734 | [INFO] [stderr] 735 | match first_non_terminal.contains(&FirstElement::Empty) { [INFO] [stderr] 736 | true => continue, [INFO] [stderr] 737 | false => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:737:25 [INFO] [stderr] | [INFO] [stderr] 737 | / match first_non_terminal.contains(&FirstElement::Empty) { [INFO] [stderr] 738 | | true => continue, [INFO] [stderr] 739 | | false => { [INFO] [stderr] 740 | | first_non_terminal.insert(FirstElement::Empty); [INFO] [stderr] 741 | | has_changed = true; [INFO] [stderr] 742 | | }, [INFO] [stderr] 743 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 737 | if first_non_terminal.contains(&FirstElement::Empty) { continue } else { [INFO] [stderr] 738 | first_non_terminal.insert(FirstElement::Empty); [INFO] [stderr] 739 | has_changed = true; [INFO] [stderr] 740 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:749:9 [INFO] [stderr] | [INFO] [stderr] 749 | / match has_changed { [INFO] [stderr] 750 | | true => continue, [INFO] [stderr] 751 | | false => break, [INFO] [stderr] 752 | | } [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if has_changed { continue } else { break }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/lib.rs:776:39 [INFO] [stderr] | [INFO] [stderr] 776 | let follow_non_terminal = follow_set.get(non_terminal).unwrap().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&follow_set[non_terminal]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:802:48 [INFO] [stderr] | [INFO] [stderr] 802 | || first_rule_element_y.len() == 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `first_rule_element_y.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:808:53 [INFO] [stderr] | [INFO] [stderr] 808 | / match follow_rule_element_b.insert(fy) { [INFO] [stderr] 809 | | true => has_changed = true, [INFO] [stderr] 810 | | false => continue, [INFO] [stderr] 811 | | } [INFO] [stderr] | |_____________________________________________________^ help: consider using an if/else expression: `if follow_rule_element_b.insert(fy) { has_changed = true } else { continue }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:816:41 [INFO] [stderr] | [INFO] [stderr] 816 | / match has_empty { [INFO] [stderr] 817 | | true => extend_from_empty = true, [INFO] [stderr] 818 | | false => break, [INFO] [stderr] 819 | | } [INFO] [stderr] | |_________________________________________^ help: consider using an if/else expression: `if has_empty { extend_from_empty = true } else { break }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:824:29 [INFO] [stderr] | [INFO] [stderr] 824 | / match extend_from_empty || (i + 1) == rule.iter().len() { [INFO] [stderr] 825 | | true => follow_rule_element_b.extend(follow_non_terminal.clone()), [INFO] [stderr] 826 | | false => continue, [INFO] [stderr] 827 | | } [INFO] [stderr] | |_____________________________^ help: consider using an if/else expression: `if extend_from_empty || (i + 1) == rule.iter().len() { follow_rule_element_b.extend(follow_non_terminal.clone()) } else { continue }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:834:9 [INFO] [stderr] | [INFO] [stderr] 834 | / match has_changed { [INFO] [stderr] 835 | | true => continue, [INFO] [stderr] 836 | | false => break, [INFO] [stderr] 837 | | } [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if has_changed { continue } else { break }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:873:25 [INFO] [stderr] | [INFO] [stderr] 873 | / match parse_table_non_terminal.insert(ParseTableElement::Terminal(u), rule.clone()).is_some() { [INFO] [stderr] 874 | | false => break, [INFO] [stderr] 875 | | true => return Err(GrammarError::Conflict { [INFO] [stderr] 876 | | non_terminal: non_terminal, [INFO] [stderr] ... | [INFO] [stderr] 879 | | }), [INFO] [stderr] 880 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 873 | if parse_table_non_terminal.insert(ParseTableElement::Terminal(u), rule.clone()).is_some() { return Err(GrammarError::Conflict { [INFO] [stderr] 874 | non_terminal: non_terminal, [INFO] [stderr] 875 | rule: rule.clone(), [INFO] [stderr] 876 | rule_element: rule_element.clone(), [INFO] [stderr] 877 | }) } else { break } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:890:37 [INFO] [stderr] | [INFO] [stderr] 890 | / match parse_table_non_terminal.insert(ParseTableElement::Terminal(fu), rule.clone()).is_some() { [INFO] [stderr] 891 | | false => continue, [INFO] [stderr] 892 | | true => return Err(GrammarError::Conflict { [INFO] [stderr] 893 | | non_terminal: non_terminal, [INFO] [stderr] ... | [INFO] [stderr] 896 | | }), [INFO] [stderr] 897 | | } [INFO] [stderr] | |_____________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 890 | if parse_table_non_terminal.insert(ParseTableElement::Terminal(fu), rule.clone()).is_some() { return Err(GrammarError::Conflict { [INFO] [stderr] 891 | non_terminal: non_terminal, [INFO] [stderr] 892 | rule: rule.clone(), [INFO] [stderr] 893 | rule_element: rule_element.clone(), [INFO] [stderr] 894 | }) } else { continue } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:902:25 [INFO] [stderr] | [INFO] [stderr] 902 | / match has_empty { [INFO] [stderr] 903 | | true => continue, [INFO] [stderr] 904 | | false => break, [INFO] [stderr] 905 | | } [INFO] [stderr] | |_________________________^ help: consider using an if/else expression: `if has_empty { continue } else { break }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:910:13 [INFO] [stderr] | [INFO] [stderr] 910 | / match extend_from_empty { [INFO] [stderr] 911 | | false => continue, [INFO] [stderr] 912 | | true => { [INFO] [stderr] 913 | | for follow_u in follow_non_terminal { [INFO] [stderr] ... | [INFO] [stderr] 923 | | }, [INFO] [stderr] 924 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 910 | if extend_from_empty { [INFO] [stderr] 911 | for follow_u in follow_non_terminal { [INFO] [stderr] 912 | match parse_table_non_terminal.insert(ParseTableElement::Terminal(*follow_u), rule.clone()).is_some() { [INFO] [stderr] 913 | false => continue, [INFO] [stderr] 914 | true => return Err(GrammarError::Conflict { [INFO] [stderr] 915 | non_terminal: non_terminal, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:914:25 [INFO] [stderr] | [INFO] [stderr] 914 | / match parse_table_non_terminal.insert(ParseTableElement::Terminal(*follow_u), rule.clone()).is_some() { [INFO] [stderr] 915 | | false => continue, [INFO] [stderr] 916 | | true => return Err(GrammarError::Conflict { [INFO] [stderr] 917 | | non_terminal: non_terminal, [INFO] [stderr] ... | [INFO] [stderr] 920 | | }), [INFO] [stderr] 921 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 914 | if parse_table_non_terminal.insert(ParseTableElement::Terminal(*follow_u), rule.clone()).is_some() { return Err(GrammarError::Conflict { [INFO] [stderr] 915 | non_terminal: non_terminal, [INFO] [stderr] 916 | rule: rule.clone(), [INFO] [stderr] 917 | rule_element: RuleElement::Empty, [INFO] [stderr] 918 | }) } else { continue } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:963:5 [INFO] [stderr] | [INFO] [stderr] 963 | / (0x0..(0x7f + 1 as u8)) [INFO] [stderr] 964 | | .into_iter() [INFO] [stderr] | |____________________^ help: consider removing `.into_iter()`: `(0x0..(0x7f + 1 as u8))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:970:53 [INFO] [stderr] | [INFO] [stderr] 970 | let mut characters: Vec>> = (0x0..(0x1f + 1 as u8)) [INFO] [stderr] | _____________________________________________________^ [INFO] [stderr] 971 | | .into_iter() [INFO] [stderr] | |____________________^ help: consider removing `.into_iter()`: `(0x0..(0x1f + 1 as u8))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] error: this .into_iter() call is equivalent to .iter() and will not move the array [INFO] [stderr] --> src/lib.rs:982:10 [INFO] [stderr] | [INFO] [stderr] 982 | .into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::into_iter_on_array)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_array [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:988:5 [INFO] [stderr] | [INFO] [stderr] 988 | / (('0' as u8)..('9' as u8 + 1)) [INFO] [stderr] 989 | | .into_iter() [INFO] [stderr] | |____________________^ help: consider removing `.into_iter()`: `(('0' as u8)..('9' as u8 + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/lib.rs:988:5 [INFO] [stderr] | [INFO] [stderr] 988 | (('0' as u8)..('9' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(('0' as u8)..='9' as u8)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/lib.rs:988:6 [INFO] [stderr] | [INFO] [stderr] 988 | (('0' as u8)..('9' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'0' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/lib.rs:988:20 [INFO] [stderr] | [INFO] [stderr] 988 | (('0' as u8)..('9' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'9' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:995:5 [INFO] [stderr] | [INFO] [stderr] 995 | / (('a' as u8)..('z' as u8 + 1)) [INFO] [stderr] 996 | | .into_iter() [INFO] [stderr] | |____________________^ help: consider removing `.into_iter()`: `(('a' as u8)..('z' as u8 + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/lib.rs:995:5 [INFO] [stderr] | [INFO] [stderr] 995 | (('a' as u8)..('z' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(('a' as u8)..='z' as u8)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/lib.rs:995:6 [INFO] [stderr] | [INFO] [stderr] 995 | (('a' as u8)..('z' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/lib.rs:995:20 [INFO] [stderr] | [INFO] [stderr] 995 | (('a' as u8)..('z' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'z' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:1002:5 [INFO] [stderr] | [INFO] [stderr] 1002 | / (('A' as u8)..('Z' as u8 + 1)) [INFO] [stderr] 1003 | | .into_iter() [INFO] [stderr] | |____________________^ help: consider removing `.into_iter()`: `(('A' as u8)..('Z' as u8 + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/lib.rs:1002:5 [INFO] [stderr] | [INFO] [stderr] 1002 | (('A' as u8)..('Z' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(('A' as u8)..='Z' as u8)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/lib.rs:1002:6 [INFO] [stderr] | [INFO] [stderr] 1002 | (('A' as u8)..('Z' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'A' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/lib.rs:1002:20 [INFO] [stderr] | [INFO] [stderr] 1002 | (('A' as u8)..('Z' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'Z' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:1027:53 [INFO] [stderr] | [INFO] [stderr] 1027 | let mut characters: Vec>> = (('a' as u8)..('f' as u8 + 1)) [INFO] [stderr] | _____________________________________________________^ [INFO] [stderr] 1028 | | .into_iter() [INFO] [stderr] | |____________________^ help: consider removing `.into_iter()`: `(('a' as u8)..('f' as u8 + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/lib.rs:1027:53 [INFO] [stderr] | [INFO] [stderr] 1027 | let mut characters: Vec>> = (('a' as u8)..('f' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(('a' as u8)..='f' as u8)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/lib.rs:1027:54 [INFO] [stderr] | [INFO] [stderr] 1027 | let mut characters: Vec>> = (('a' as u8)..('f' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/lib.rs:1027:68 [INFO] [stderr] | [INFO] [stderr] 1027 | let mut characters: Vec>> = (('a' as u8)..('f' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'f' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:1038:53 [INFO] [stderr] | [INFO] [stderr] 1038 | let mut characters: Vec>> = (('A' as u8)..('F' as u8 + 1)) [INFO] [stderr] | _____________________________________________________^ [INFO] [stderr] 1039 | | .into_iter() [INFO] [stderr] | |____________________^ help: consider removing `.into_iter()`: `(('A' as u8)..('F' as u8 + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/lib.rs:1038:53 [INFO] [stderr] | [INFO] [stderr] 1038 | let mut characters: Vec>> = (('A' as u8)..('F' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(('A' as u8)..='F' as u8)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/lib.rs:1038:54 [INFO] [stderr] | [INFO] [stderr] 1038 | let mut characters: Vec>> = (('A' as u8)..('F' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'A' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/lib.rs:1038:68 [INFO] [stderr] | [INFO] [stderr] 1038 | let mut characters: Vec>> = (('A' as u8)..('F' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'F' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:1053:28 [INFO] [stderr] | [INFO] [stderr] 1053 | characters.append(&mut (('a' as u8)..('f' as u8 + 1)) [INFO] [stderr] | ____________________________^ [INFO] [stderr] 1054 | | .into_iter() [INFO] [stderr] | |____________________^ help: consider removing `.into_iter()`: `(('a' as u8)..('f' as u8 + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/lib.rs:1053:28 [INFO] [stderr] | [INFO] [stderr] 1053 | characters.append(&mut (('a' as u8)..('f' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(('a' as u8)..='f' as u8)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/lib.rs:1053:29 [INFO] [stderr] | [INFO] [stderr] 1053 | characters.append(&mut (('a' as u8)..('f' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/lib.rs:1053:43 [INFO] [stderr] | [INFO] [stderr] 1053 | characters.append(&mut (('a' as u8)..('f' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'f' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:1059:28 [INFO] [stderr] | [INFO] [stderr] 1059 | characters.append(&mut (('A' as u8)..('F' as u8 + 1)) [INFO] [stderr] | ____________________________^ [INFO] [stderr] 1060 | | .into_iter() [INFO] [stderr] | |____________________^ help: consider removing `.into_iter()`: `(('A' as u8)..('F' as u8 + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/lib.rs:1059:28 [INFO] [stderr] | [INFO] [stderr] 1059 | characters.append(&mut (('A' as u8)..('F' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(('A' as u8)..='F' as u8)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/lib.rs:1059:29 [INFO] [stderr] | [INFO] [stderr] 1059 | characters.append(&mut (('A' as u8)..('F' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'A' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/lib.rs:1059:43 [INFO] [stderr] | [INFO] [stderr] 1059 | characters.append(&mut (('A' as u8)..('F' as u8 + 1)) [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'F' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/lib.rs:1071:21 [INFO] [stderr] | [INFO] [stderr] 1071 | .filter_map(|c| char::from_u32(c)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `char::from_u32` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:1069:5 [INFO] [stderr] | [INFO] [stderr] 1069 | / (0x0..(0x10FFFF + 1)) [INFO] [stderr] 1070 | | .into_iter() [INFO] [stderr] | |____________________^ help: consider removing `.into_iter()`: `(0x0..(0x10FFFF + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/lib.rs:1069:5 [INFO] [stderr] | [INFO] [stderr] 1069 | (0x0..(0x10FFFF + 1)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `(0x0..=0x10FFFF)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/lib.rs:1080:21 [INFO] [stderr] | [INFO] [stderr] 1080 | .filter_map(|c| char::from_u32(c)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `char::from_u32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:1078:5 [INFO] [stderr] | [INFO] [stderr] 1078 | / (0x0..(0x10FFFF + 1)) [INFO] [stderr] 1079 | | .into_iter() [INFO] [stderr] | |____________________^ help: consider removing `.into_iter()`: `(0x0..(0x10FFFF + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/lib.rs:1078:5 [INFO] [stderr] | [INFO] [stderr] 1078 | (0x0..(0x10FFFF + 1)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `(0x0..=0x10FFFF)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/lib.rs:1089:21 [INFO] [stderr] | [INFO] [stderr] 1089 | .filter_map(|c| char::from_u32(c)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `char::from_u32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:1087:5 [INFO] [stderr] | [INFO] [stderr] 1087 | / (0x0..(0x10FFFF + 1)) [INFO] [stderr] 1088 | | .into_iter() [INFO] [stderr] | |____________________^ help: consider removing `.into_iter()`: `(0x0..(0x10FFFF + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/lib.rs:1087:5 [INFO] [stderr] | [INFO] [stderr] 1087 | (0x0..(0x10FFFF + 1)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `(0x0..=0x10FFFF)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/lib.rs:1098:21 [INFO] [stderr] | [INFO] [stderr] 1098 | .filter_map(|c| char::from_u32(c)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `char::from_u32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:1096:5 [INFO] [stderr] | [INFO] [stderr] 1096 | / (0x0..(0x10FFFF + 1)) [INFO] [stderr] 1097 | | .into_iter() [INFO] [stderr] | |____________________^ help: consider removing `.into_iter()`: `(0x0..(0x10FFFF + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/lib.rs:1096:5 [INFO] [stderr] | [INFO] [stderr] 1096 | (0x0..(0x10FFFF + 1)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `(0x0..=0x10FFFF)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/lib.rs:1107:21 [INFO] [stderr] | [INFO] [stderr] 1107 | .filter_map(|c| char::from_u32(c)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `char::from_u32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:1105:5 [INFO] [stderr] | [INFO] [stderr] 1105 | / (0x0..(0x10FFFF + 1)) [INFO] [stderr] 1106 | | .into_iter() [INFO] [stderr] | |____________________^ help: consider removing `.into_iter()`: `(0x0..(0x10FFFF + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/lib.rs:1105:5 [INFO] [stderr] | [INFO] [stderr] 1105 | (0x0..(0x10FFFF + 1)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `(0x0..=0x10FFFF)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/lib.rs:1192:13 [INFO] [stderr] | [INFO] [stderr] 1192 | Err(_) => panic!(), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_wild_err_arm)] on by default [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/lib.rs:1272:13 [INFO] [stderr] | [INFO] [stderr] 1272 | Err(_) => panic!(), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/lib.rs:1443:13 [INFO] [stderr] | [INFO] [stderr] 1443 | Err(_) => panic!(), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/lib.rs:1504:13 [INFO] [stderr] | [INFO] [stderr] 1504 | Err(_) => panic!(), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/lib.rs:1551:13 [INFO] [stderr] | [INFO] [stderr] 1551 | Err(_) => panic!(), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/lib.rs:1579:13 [INFO] [stderr] | [INFO] [stderr] 1579 | Err(_) => panic!(), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/lib.rs:1610:13 [INFO] [stderr] | [INFO] [stderr] 1610 | Err(_) => panic!(), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/lib.rs:1645:13 [INFO] [stderr] | [INFO] [stderr] 1645 | Err(_) => panic!(), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/lib.rs:1678:13 [INFO] [stderr] | [INFO] [stderr] 1678 | Err(_) => panic!(), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/lib.rs:1713:13 [INFO] [stderr] | [INFO] [stderr] 1713 | Err(_) => panic!(), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/lib.rs:1744:13 [INFO] [stderr] | [INFO] [stderr] 1744 | Err(_) => panic!(), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/lib.rs:1779:13 [INFO] [stderr] | [INFO] [stderr] 1779 | Err(_) => panic!(), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/lib.rs:1815:13 [INFO] [stderr] | [INFO] [stderr] 1815 | Err(_) => panic!(), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/lib.rs:1854:13 [INFO] [stderr] | [INFO] [stderr] 1854 | Err(_) => panic!(), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/lib.rs:1893:13 [INFO] [stderr] | [INFO] [stderr] 1893 | Err(_) => panic!(), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/lib.rs:1926:13 [INFO] [stderr] | [INFO] [stderr] 1926 | Err(_) => panic!(), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/lib.rs:1965:13 [INFO] [stderr] | [INFO] [stderr] 1965 | Err(_) => panic!(), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/lib.rs:2004:13 [INFO] [stderr] | [INFO] [stderr] 2004 | Err(_) => panic!(), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: The function/method `get_parse_table` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:3675:57 [INFO] [stderr] | [INFO] [stderr] 3675 | assert!(expected_parse_table == get_parse_table(&mut grammar, &first_set, &follow_set).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `get_parse_table` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:3697:57 [INFO] [stderr] | [INFO] [stderr] 3697 | assert!(expected_parse_table == get_parse_table(&mut grammar, &first_set, &follow_set).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `get_parse_table` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:3725:57 [INFO] [stderr] | [INFO] [stderr] 3725 | assert!(expected_parse_table == get_parse_table(&mut grammar, &first_set, &follow_set).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `get_parse_table` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:3755:57 [INFO] [stderr] | [INFO] [stderr] 3755 | assert!(expected_parse_table == get_parse_table(&mut grammar, &first_set, &follow_set).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `get_parse_table` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:3794:57 [INFO] [stderr] | [INFO] [stderr] 3794 | assert!(expected_parse_table == get_parse_table(&mut grammar, &first_set, &follow_set).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `get_parse_table` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:3821:31 [INFO] [stderr] | [INFO] [stderr] 3821 | match get_parse_table(&mut grammar, &first_set, &follow_set) { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `get_parse_table` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:3855:31 [INFO] [stderr] | [INFO] [stderr] 3855 | match get_parse_table(&mut grammar, &first_set, &follow_set) { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `get_parse_table` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:3890:57 [INFO] [stderr] | [INFO] [stderr] 3890 | assert!(expected_parse_table == get_parse_table(&mut grammar, &first_set, &follow_set).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `get_parse_table` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:3918:57 [INFO] [stderr] | [INFO] [stderr] 3918 | assert!(expected_parse_table == get_parse_table(&mut grammar, &first_set, &follow_set).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `get_parse_table` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:3946:57 [INFO] [stderr] | [INFO] [stderr] 3946 | assert!(expected_parse_table == get_parse_table(&mut grammar, &first_set, &follow_set).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `get_parse_table` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:3965:31 [INFO] [stderr] | [INFO] [stderr] 3965 | match get_parse_table(&mut grammar, &first_set, &follow_set) { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `get_parse_table` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:3991:31 [INFO] [stderr] | [INFO] [stderr] 3991 | match get_parse_table(&mut grammar, &first_set, &follow_set) { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `get_parse_table` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:4034:57 [INFO] [stderr] | [INFO] [stderr] 4034 | assert!(expected_parse_table == get_parse_table(&mut grammar, &first_set, &follow_set).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `get_parse_table` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:4073:57 [INFO] [stderr] | [INFO] [stderr] 4073 | assert!(expected_parse_table == get_parse_table(&mut grammar, &first_set, &follow_set).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `get_parse_table` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:4103:57 [INFO] [stderr] | [INFO] [stderr] 4103 | assert!(expected_parse_table == get_parse_table(&mut grammar, &first_set, &follow_set).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `get_parse_table` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:4141:57 [INFO] [stderr] | [INFO] [stderr] 4141 | assert!(expected_parse_table == get_parse_table(&mut grammar, &first_set, &follow_set).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `get_parse_table` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:4171:57 [INFO] [stderr] | [INFO] [stderr] 4171 | assert!(expected_parse_table == get_parse_table(&mut grammar, &first_set, &follow_set).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `get_parse_table` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:4210:57 [INFO] [stderr] | [INFO] [stderr] 4210 | assert!(expected_parse_table == get_parse_table(&mut grammar, &first_set, &follow_set).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `get_parse_table` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:4237:31 [INFO] [stderr] | [INFO] [stderr] 4237 | match get_parse_table(&mut grammar, &first_set, &follow_set) { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `get_parse_table` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:4284:57 [INFO] [stderr] | [INFO] [stderr] 4284 | assert!(expected_parse_table == get_parse_table(&mut grammar, &first_set, &follow_set).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `get_parse_table` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:4323:57 [INFO] [stderr] | [INFO] [stderr] 4323 | assert!(expected_parse_table == get_parse_table(&mut grammar, &first_set, &follow_set).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `get_parse_table` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:4361:57 [INFO] [stderr] | [INFO] [stderr] 4361 | assert!(expected_parse_table == get_parse_table(&mut grammar, &first_set, &follow_set).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `get_parse_table` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:4411:57 [INFO] [stderr] | [INFO] [stderr] 4411 | assert!(expected_parse_table == get_parse_table(&mut grammar, &first_set, &follow_set).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `get_parse_table` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:4434:31 [INFO] [stderr] | [INFO] [stderr] 4434 | match get_parse_table(&mut grammar, &first_set, &follow_set) { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `get_parse_table` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:4468:31 [INFO] [stderr] | [INFO] [stderr] 4468 | match get_parse_table(&mut grammar, &first_set, &follow_set) { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `get_parse_table` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:4685:33 [INFO] [stderr] | [INFO] [stderr] 4685 | assert!(get_parse_table(&mut grammar, &first_set, &follow_set).unwrap() == expected_parse_table); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `get_parse_table` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:4965:33 [INFO] [stderr] | [INFO] [stderr] 4965 | assert!(get_parse_table(&mut grammar, &first_set, &follow_set).unwrap() == expected_parse_table); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `get_parse_table` doesn't need a mutable reference [INFO] [stderr] --> src/lib.rs:5318:33 [INFO] [stderr] | [INFO] [stderr] 5318 | assert!(get_parse_table(&mut grammar, &first_set, &follow_set).unwrap() == expected_parse_table); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/lib.rs:5374:20 [INFO] [stderr] | [INFO] [stderr] 5374 | fn set_grammar<'a>(grammar: &mut Grammar) { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `gallop`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "a6920737953ec094ed0751ae957b4746d7d4a35abfa168fbad4def81c54e7381"` [INFO] running `"docker" "rm" "-f" "a6920737953ec094ed0751ae957b4746d7d4a35abfa168fbad4def81c54e7381"` [INFO] [stdout] a6920737953ec094ed0751ae957b4746d7d4a35abfa168fbad4def81c54e7381