[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 for clippy-test-run
[INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/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" "-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] 740e1ea3cb7532d0b70a78c4536f05cbac7fdc94c45ab683255619ae5824aebf
[INFO] running `"docker" "start" "-a" "740e1ea3cb7532d0b70a78c4536f05cbac7fdc94c45ab683255619ae5824aebf"`
[INFO] [stderr] Checking lalr v0.0.2 (/opt/crater/workdir)
[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: 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: 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: 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: 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 2.17s
[INFO] running `"docker" "inspect" "740e1ea3cb7532d0b70a78c4536f05cbac7fdc94c45ab683255619ae5824aebf"`
[INFO] running `"docker" "rm" "-f" "740e1ea3cb7532d0b70a78c4536f05cbac7fdc94c45ab683255619ae5824aebf"`
[INFO] [stdout] 740e1ea3cb7532d0b70a78c4536f05cbac7fdc94c45ab683255619ae5824aebf