[INFO] crate lalr 0.0.2 is already in cache [INFO] extracting crate lalr 0.0.2 into work/ex/clippy-test-run/sources/stable/reg/lalr/0.0.2 [INFO] extracting crate lalr 0.0.2 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/lalr/0.0.2 [INFO] validating manifest of lalr-0.0.2 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 lalr-0.0.2 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 lalr-0.0.2 [INFO] finished frobbing lalr-0.0.2 [INFO] frobbed toml for lalr-0.0.2 written to work/ex/clippy-test-run/sources/stable/reg/lalr/0.0.2/Cargo.toml [INFO] started frobbing lalr-0.0.2 [INFO] finished frobbing lalr-0.0.2 [INFO] frobbed toml for lalr-0.0.2 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/lalr/0.0.2/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 lalr-0.0.2 against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/lalr/0.0.2:/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 -Dclippy::into_iter_on_array" "-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] d4b94478fca1b808cb5c316c8133cada8265c0afab20fa287896345cb282c76a [INFO] running `"docker" "start" "-a" "d4b94478fca1b808cb5c316c8133cada8265c0afab20fa287896345cb282c76a"` [INFO] [stderr] Checking lalr v0.0.2 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tests.rs:19:9 [INFO] [stderr] | [INFO] [stderr] 19 | syms: syms, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `syms` [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/tests.rs:20:9 [INFO] [stderr] | [INFO] [stderr] 20 | act: act, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `act` [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:215:37 [INFO] [stderr] | [INFO] [stderr] 215 | rhs: rhs, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `rhs` [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:259:61 [INFO] [stderr] | [INFO] [stderr] 259 | let ix = state.complete_nub(self, ItemSet { items: items }); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `items` [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: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/lib.rs:594:17 [INFO] [stderr] | [INFO] [stderr] 594 | print!("
\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::print_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:215:37 [INFO] [stderr] | [INFO] [stderr] 215 | rhs: rhs, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `rhs` [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:259:61 [INFO] [stderr] | [INFO] [stderr] 259 | let ix = state.complete_nub(self, ItemSet { items: items }); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `items` [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: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/lib.rs:594:17 [INFO] [stderr] | [INFO] [stderr] 594 | print!("
\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::print_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/lib.rs:427:24 [INFO] [stderr] | [INFO] [stderr] 427 | for &Rhs { syms: _, act: (end_state, rhs) } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unneeded_field_pattern)] on by default [INFO] [stderr] = help: Try with `Rhs { act: (end_state, rhs), .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/lib.rs:427:24 [INFO] [stderr] | [INFO] [stderr] 427 | for &Rhs { syms: _, act: (end_state, rhs) } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unneeded_field_pattern)] on by default [INFO] [stderr] = help: Try with `Rhs { act: (end_state, rhs), .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/lib.rs:127:17 [INFO] [stderr] | [INFO] [stderr] 127 | pub states: Vec<(ItemSet<'a, T, N, A>, BTreeMap<&'a Symbol, usize>)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/lib.rs:189:21 [INFO] [stderr] | [INFO] [stderr] 189 | states: Vec<(ItemSet<'a, T, N, A>, BTreeMap<&'a Symbol, usize>)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/lib.rs:231:66 [INFO] [stderr] | [INFO] [stderr] 231 | fn advance<'a, 'b, T, N, A>(i: &'b Item<'a, T, N, A>) -> Option<(&'a Symbol, Item<'a, T, N, A>)> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/lib.rs:248:19 [INFO] [stderr] | [INFO] [stderr] 248 | rhs: &self.rules.get(&self.start).unwrap()[0], [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.rules[&self.start]` [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: use of `or_insert` followed by a function call [INFO] [stderr] --> src/lib.rs:255:42 [INFO] [stderr] | [INFO] [stderr] 255 | next_nubs.entry(sym).or_insert(BTreeSet::new()).insert(next); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(BTreeSet::new)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/lib.rs:298:44 [INFO] [stderr] | [INFO] [stderr] 298 | let them = r.get(n).unwrap().borrow(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `&r[n]` [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:336:38 [INFO] [stderr] | [INFO] [stderr] 336 | let mut follow = r.get(lhs).unwrap().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try this: `&r[lhs]` [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:355:58 [INFO] [stderr] | [INFO] [stderr] 355 | let &(ref f, nullable) = first.get(n).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `&first[n]` [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 are using an explicit closure for cloning elements [INFO] [stderr] --> src/lib.rs:360:49 [INFO] [stderr] | [INFO] [stderr] 360 | follow.0.extend(f.iter().map(|x| *x)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `f.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/lib.rs:386:5 [INFO] [stderr] | [INFO] [stderr] 386 | / pub fn lalr1<'a, FR, FO>(&'a self, mut reduce_on: FR, mut priority_of: FO) [INFO] [stderr] 387 | | -> Result, LR1Conflict<'a, T, N, A>> [INFO] [stderr] 388 | | where FR: FnMut(&Rhs, Option<&T>) -> bool, [INFO] [stderr] 389 | | FO: FnMut(&Rhs, Option<&T>) -> i32 { [INFO] [stderr] ... | [INFO] [stderr] 530 | | Ok(r) [INFO] [stderr] 531 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:479:25 [INFO] [stderr] | [INFO] [stderr] 479 | / match state.eof { [INFO] [stderr] 480 | | Some(_) => unreachable!(), [INFO] [stderr] 481 | | _ => () [INFO] [stderr] 482 | | } [INFO] [stderr] | |_________________________^ help: try this: `if let Some(_) = state.eof { unreachable!() }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/lib.rs:537:39 [INFO] [stderr] | [INFO] [stderr] 537 | pub fn extended_grammar(&self) -> Grammar<&'a T, (usize, &'a N), (usize, &'a Rhs)> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/lib.rs:538:20 [INFO] [stderr] | [INFO] [stderr] 538 | let mut r: BTreeMap<(usize, &'a N), Vec)>>> = BTreeMap::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/lib.rs:547:38 [INFO] [stderr] | [INFO] [stderr] 547 | state = *self.states[old_st].1.get(sym).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.states[old_st].1[sym]` [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: use of `or_insert` followed by a function call [INFO] [stderr] --> src/lib.rs:561:38 [INFO] [stderr] | [INFO] [stderr] 561 | r.entry(new_lhs).or_insert(vec![]).push(new_rhs); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/tests.rs:84:70 [INFO] [stderr] | [INFO] [stderr] 84 | let total: usize = extended.rules.values().map(|rhss| rhss.len()).fold(0, |x, y| x + y); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `.sum()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_fold)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/lib.rs:127:17 [INFO] [stderr] | [INFO] [stderr] 127 | pub states: Vec<(ItemSet<'a, T, N, A>, BTreeMap<&'a Symbol, usize>)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/lib.rs:189:21 [INFO] [stderr] | [INFO] [stderr] 189 | states: Vec<(ItemSet<'a, T, N, A>, BTreeMap<&'a Symbol, usize>)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/lib.rs:231:66 [INFO] [stderr] | [INFO] [stderr] 231 | fn advance<'a, 'b, T, N, A>(i: &'b Item<'a, T, N, A>) -> Option<(&'a Symbol, Item<'a, T, N, A>)> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/lib.rs:248:19 [INFO] [stderr] | [INFO] [stderr] 248 | rhs: &self.rules.get(&self.start).unwrap()[0], [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.rules[&self.start]` [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: use of `or_insert` followed by a function call [INFO] [stderr] --> src/lib.rs:255:42 [INFO] [stderr] | [INFO] [stderr] 255 | next_nubs.entry(sym).or_insert(BTreeSet::new()).insert(next); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(BTreeSet::new)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/lib.rs:298:44 [INFO] [stderr] | [INFO] [stderr] 298 | let them = r.get(n).unwrap().borrow(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `&r[n]` [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:336:38 [INFO] [stderr] | [INFO] [stderr] 336 | let mut follow = r.get(lhs).unwrap().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try this: `&r[lhs]` [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:355:58 [INFO] [stderr] | [INFO] [stderr] 355 | let &(ref f, nullable) = first.get(n).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `&first[n]` [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 are using an explicit closure for cloning elements [INFO] [stderr] --> src/lib.rs:360:49 [INFO] [stderr] | [INFO] [stderr] 360 | follow.0.extend(f.iter().map(|x| *x)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `f.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/lib.rs:386:5 [INFO] [stderr] | [INFO] [stderr] 386 | / pub fn lalr1<'a, FR, FO>(&'a self, mut reduce_on: FR, mut priority_of: FO) [INFO] [stderr] 387 | | -> Result, LR1Conflict<'a, T, N, A>> [INFO] [stderr] 388 | | where FR: FnMut(&Rhs, Option<&T>) -> bool, [INFO] [stderr] 389 | | FO: FnMut(&Rhs, Option<&T>) -> i32 { [INFO] [stderr] ... | [INFO] [stderr] 530 | | Ok(r) [INFO] [stderr] 531 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:479:25 [INFO] [stderr] | [INFO] [stderr] 479 | / match state.eof { [INFO] [stderr] 480 | | Some(_) => unreachable!(), [INFO] [stderr] 481 | | _ => () [INFO] [stderr] 482 | | } [INFO] [stderr] | |_________________________^ help: try this: `if let Some(_) = state.eof { unreachable!() }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/lib.rs:537:39 [INFO] [stderr] | [INFO] [stderr] 537 | pub fn extended_grammar(&self) -> Grammar<&'a T, (usize, &'a N), (usize, &'a Rhs)> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/lib.rs:538:20 [INFO] [stderr] | [INFO] [stderr] 538 | let mut r: BTreeMap<(usize, &'a N), Vec)>>> = BTreeMap::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/lib.rs:547:38 [INFO] [stderr] | [INFO] [stderr] 547 | state = *self.states[old_st].1.get(sym).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.states[old_st].1[sym]` [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: use of `or_insert` followed by a function call [INFO] [stderr] --> src/lib.rs:561:38 [INFO] [stderr] | [INFO] [stderr] 561 | r.entry(new_lhs).or_insert(vec![]).push(new_rhs); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 1.05s [INFO] running `"docker" "inspect" "d4b94478fca1b808cb5c316c8133cada8265c0afab20fa287896345cb282c76a"` [INFO] running `"docker" "rm" "-f" "d4b94478fca1b808cb5c316c8133cada8265c0afab20fa287896345cb282c76a"` [INFO] [stdout] d4b94478fca1b808cb5c316c8133cada8265c0afab20fa287896345cb282c76a