[INFO] crate redfa 0.0.2 is already in cache [INFO] extracting crate redfa 0.0.2 into work/ex/clippy-test-run/sources/stable/reg/redfa/0.0.2 [INFO] extracting crate redfa 0.0.2 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/redfa/0.0.2 [INFO] validating manifest of redfa-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 redfa-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 redfa-0.0.2 [INFO] finished frobbing redfa-0.0.2 [INFO] frobbed toml for redfa-0.0.2 written to work/ex/clippy-test-run/sources/stable/reg/redfa/0.0.2/Cargo.toml [INFO] started frobbing redfa-0.0.2 [INFO] finished frobbing redfa-0.0.2 [INFO] frobbed toml for redfa-0.0.2 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/redfa/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 redfa-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-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/redfa/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] c6286009780f7c221282ce8bcbf2948e28f9009f556d03f6585d9fac78e8bcea [INFO] running `"docker" "start" "-a" "c6286009780f7c221282ce8bcbf2948e28f9009f556d03f6585d9fac78e8bcea"` [INFO] [stderr] Checking redfa v0.0.2 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/regex.rs:43:13 [INFO] [stderr] | [INFO] [stderr] 43 | f: f, [INFO] [stderr] | ^^^^ help: replace it with: `f` [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/regex.rs:43:13 [INFO] [stderr] | [INFO] [stderr] 43 | f: f, [INFO] [stderr] | ^^^^ help: replace it with: `f` [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/dfa.rs:74:17 [INFO] [stderr] | [INFO] [stderr] 74 | by_char: by_char, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `by_char` [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/dfa.rs:75:17 [INFO] [stderr] | [INFO] [stderr] 75 | default: default, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `default` [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/dfa.rs:249:17 [INFO] [stderr] | [INFO] [stderr] 249 | default: default, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `default` [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/dfa.rs:264:15 [INFO] [stderr] | [INFO] [stderr] 264 | Dfa { states: states } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `states` [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] | [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/dfa.rs:74:17 [INFO] [stderr] | [INFO] [stderr] 74 | by_char: by_char, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `by_char` [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/dfa.rs:75:17 [INFO] [stderr] | [INFO] [stderr] 75 | default: default, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `default` [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/dfa.rs:249:17 [INFO] [stderr] | [INFO] [stderr] 249 | default: default, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `default` [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/dfa.rs:264:15 [INFO] [stderr] | [INFO] [stderr] 264 | Dfa { states: states } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `states` [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: unneeded return statement [INFO] [stderr] --> src/dfa.rs:308:9 [INFO] [stderr] | [INFO] [stderr] 308 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/dfa.rs:320:9 [INFO] [stderr] | [INFO] [stderr] 320 | return self.minimize() == other.minimize(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.minimize() == other.minimize()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/dfa.rs:308:9 [INFO] [stderr] | [INFO] [stderr] 308 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/dfa.rs:320:9 [INFO] [stderr] | [INFO] [stderr] 320 | return self.minimize() == other.minimize(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.minimize() == other.minimize()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/regex.rs:165:40 [INFO] [stderr] | [INFO] [stderr] 165 | Except(ref chs) if chs.len() == 0 => not_null, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `chs.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: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/regex.rs:245:32 [INFO] [stderr] | [INFO] [stderr] 245 | if let None = self.it.peek() { [INFO] [stderr] | _________________________- ^^^^ [INFO] [stderr] 246 | | return Err(ParseError::UnexpectedEof("unterminated range")); [INFO] [stderr] 247 | | } [INFO] [stderr] | |_________________________- help: try this: `if self.it.peek().is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/regex.rs:250:34 [INFO] [stderr] | [INFO] [stderr] 250 | for x in (c as u64)..(d as u64 + 1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `((c as u64)..=d as u64)` [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: this loop could be written as a `while let` loop [INFO] [stderr] --> src/regex.rs:354:9 [INFO] [stderr] | [INFO] [stderr] 354 | / loop { [INFO] [stderr] 355 | | match self.it.peek() { [INFO] [stderr] 356 | | Some(&'&') => { [INFO] [stderr] 357 | | self.it.next(); [INFO] [stderr] ... | [INFO] [stderr] 361 | | } [INFO] [stderr] 362 | | } [INFO] [stderr] | |_________^ help: try: `while let Some(&'&') = self.it.peek() { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/regex.rs:367:9 [INFO] [stderr] | [INFO] [stderr] 367 | / loop { [INFO] [stderr] 368 | | match self.it.peek() { [INFO] [stderr] 369 | | Some(&'|') => { [INFO] [stderr] 370 | | self.it.next(); [INFO] [stderr] ... | [INFO] [stderr] 374 | | } [INFO] [stderr] 375 | | } [INFO] [stderr] | |_________^ help: try: `while let Some(&'|') = self.it.peek() { .. }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/derivatives.rs:173:16 [INFO] [stderr] | [INFO] [stderr] 173 | if v.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `v.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/derivatives.rs:178:12 [INFO] [stderr] | [INFO] [stderr] 178 | if v.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `v.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/derivatives.rs:219:20 [INFO] [stderr] | [INFO] [stderr] 219 | if cs.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `cs.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/derivatives.rs:226:52 [INFO] [stderr] | [INFO] [stderr] 226 | let mut ds = Vec::with_capacity(if cs.len() > 0 { 1 } else { 0 } + xs.len()); [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!cs.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/derivatives.rs:227:20 [INFO] [stderr] | [INFO] [stderr] 227 | if cs.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!cs.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `xs`. [INFO] [stderr] --> src/derivatives.rs:240:26 [INFO] [stderr] | [INFO] [stderr] 240 | for i in 0..xs.len() { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 240 | for in &xs { [INFO] [stderr] | ^^^^^^ ^^^ [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/dfa.rs:96:30 [INFO] [stderr] | [INFO] [stderr] 96 | pub fn reverse(&self) -> Vec<(BTreeMap<&T, BTreeSet >, BTreeSet)> [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: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> src/dfa.rs:255:84 [INFO] [stderr] | [INFO] [stderr] 255 | debug_assert!(partitions.iter().zip(states.iter()).all(|(part, new_state)| { [INFO] [stderr] | ____________________________________________________________________________________^ [INFO] [stderr] 256 | | part.iter().all(|&state_ix| { [INFO] [stderr] 257 | | let state = &self.states[state_ix]; [INFO] [stderr] 258 | | state.by_char.iter().all(|(key, &to)| partition[&(to as usize)] == new_state.by_char.get(key).cloned().unwrap_or(new_state.default)) [INFO] [stderr] ... | [INFO] [stderr] 261 | | }) [INFO] [stderr] 262 | | })); [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::block_in_if_condition_stmt)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/regex.rs:165:40 [INFO] [stderr] | [INFO] [stderr] 165 | Except(ref chs) if chs.len() == 0 => not_null, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `chs.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: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/regex.rs:245:32 [INFO] [stderr] | [INFO] [stderr] 245 | if let None = self.it.peek() { [INFO] [stderr] | _________________________- ^^^^ [INFO] [stderr] 246 | | return Err(ParseError::UnexpectedEof("unterminated range")); [INFO] [stderr] 247 | | } [INFO] [stderr] | |_________________________- help: try this: `if self.it.peek().is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/regex.rs:250:34 [INFO] [stderr] | [INFO] [stderr] 250 | for x in (c as u64)..(d as u64 + 1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `((c as u64)..=d as u64)` [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: this loop could be written as a `while let` loop [INFO] [stderr] --> src/regex.rs:354:9 [INFO] [stderr] | [INFO] [stderr] 354 | / loop { [INFO] [stderr] 355 | | match self.it.peek() { [INFO] [stderr] 356 | | Some(&'&') => { [INFO] [stderr] 357 | | self.it.next(); [INFO] [stderr] ... | [INFO] [stderr] 361 | | } [INFO] [stderr] 362 | | } [INFO] [stderr] | |_________^ help: try: `while let Some(&'&') = self.it.peek() { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/regex.rs:367:9 [INFO] [stderr] | [INFO] [stderr] 367 | / loop { [INFO] [stderr] 368 | | match self.it.peek() { [INFO] [stderr] 369 | | Some(&'|') => { [INFO] [stderr] 370 | | self.it.next(); [INFO] [stderr] ... | [INFO] [stderr] 374 | | } [INFO] [stderr] 375 | | } [INFO] [stderr] | |_________^ help: try: `while let Some(&'|') = self.it.peek() { .. }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/derivatives.rs:173:16 [INFO] [stderr] | [INFO] [stderr] 173 | if v.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `v.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/derivatives.rs:178:12 [INFO] [stderr] | [INFO] [stderr] 178 | if v.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `v.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/derivatives.rs:219:20 [INFO] [stderr] | [INFO] [stderr] 219 | if cs.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `cs.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/derivatives.rs:226:52 [INFO] [stderr] | [INFO] [stderr] 226 | let mut ds = Vec::with_capacity(if cs.len() > 0 { 1 } else { 0 } + xs.len()); [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!cs.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/derivatives.rs:227:20 [INFO] [stderr] | [INFO] [stderr] 227 | if cs.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!cs.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `xs`. [INFO] [stderr] --> src/derivatives.rs:240:26 [INFO] [stderr] | [INFO] [stderr] 240 | for i in 0..xs.len() { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 240 | for in &xs { [INFO] [stderr] | ^^^^^^ ^^^ [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/dfa.rs:96:30 [INFO] [stderr] | [INFO] [stderr] 96 | pub fn reverse(&self) -> Vec<(BTreeMap<&T, BTreeSet >, BTreeSet)> [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: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> src/dfa.rs:255:84 [INFO] [stderr] | [INFO] [stderr] 255 | debug_assert!(partitions.iter().zip(states.iter()).all(|(part, new_state)| { [INFO] [stderr] | ____________________________________________________________________________________^ [INFO] [stderr] 256 | | part.iter().all(|&state_ix| { [INFO] [stderr] 257 | | let state = &self.states[state_ix]; [INFO] [stderr] 258 | | state.by_char.iter().all(|(key, &to)| partition[&(to as usize)] == new_state.by_char.get(key).cloned().unwrap_or(new_state.default)) [INFO] [stderr] ... | [INFO] [stderr] 261 | | }) [INFO] [stderr] 262 | | })); [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::block_in_if_condition_stmt)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 2.62s [INFO] running `"docker" "inspect" "c6286009780f7c221282ce8bcbf2948e28f9009f556d03f6585d9fac78e8bcea"` [INFO] running `"docker" "rm" "-f" "c6286009780f7c221282ce8bcbf2948e28f9009f556d03f6585d9fac78e8bcea"` [INFO] [stdout] c6286009780f7c221282ce8bcbf2948e28f9009f556d03f6585d9fac78e8bcea