[INFO] updating cached repository Virviil/aoc2018 [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/Virviil/aoc2018 [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/Virviil/aoc2018" "work/ex/clippy-test-run/sources/stable/gh/Virviil/aoc2018"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/Virviil/aoc2018'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/Virviil/aoc2018" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Virviil/aoc2018"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Virviil/aoc2018'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 163df879899b9fab98482d66750c9a8897125a2b [INFO] sha for GitHub repo Virviil/aoc2018: 163df879899b9fab98482d66750c9a8897125a2b [INFO] validating manifest of Virviil/aoc2018 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 Virviil/aoc2018 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 Virviil/aoc2018 [INFO] finished frobbing Virviil/aoc2018 [INFO] frobbed toml for Virviil/aoc2018 written to work/ex/clippy-test-run/sources/stable/gh/Virviil/aoc2018/Cargo.toml [INFO] started frobbing Virviil/aoc2018 [INFO] finished frobbing Virviil/aoc2018 [INFO] frobbed toml for Virviil/aoc2018 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Virviil/aoc2018/Cargo.toml [INFO] crate Virviil/aoc2018 has a lockfile. skipping [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 Virviil/aoc2018 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-7/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/Virviil/aoc2018:/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] 0ce839c8ed0fd949c06eee3666aa10413d2473c3939ff381f8c268aee139eec6 [INFO] running `"docker" "start" "-a" "0ce839c8ed0fd949c06eee3666aa10413d2473c3939ff381f8c268aee139eec6"` [INFO] [stderr] Checking advent v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/checksum/mod.rs:20:20 [INFO] [stderr] | [INFO] [stderr] 20 | return acc; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `acc` [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/checksum/mod.rs:22:20 [INFO] [stderr] | [INFO] [stderr] 22 | return acc; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `acc` [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 unit expression [INFO] [stderr] --> src/checksum/mod.rs:29:17 [INFO] [stderr] | [INFO] [stderr] 29 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/fabric/mod.rs:79:13 [INFO] [stderr] | [INFO] [stderr] 79 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/guards/mod.rs:63:17 [INFO] [stderr] | [INFO] [stderr] 63 | timestamp: _, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unneeded_field_pattern)] on by default [INFO] [stderr] = help: Try with `Entry { state: State::Begin(id), .. }` [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: unneeded return statement [INFO] [stderr] --> src/checksum/mod.rs:20:20 [INFO] [stderr] | [INFO] [stderr] 20 | return acc; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `acc` [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/checksum/mod.rs:22:20 [INFO] [stderr] | [INFO] [stderr] 22 | return acc; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `acc` [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 unit expression [INFO] [stderr] --> src/checksum/mod.rs:29:17 [INFO] [stderr] | [INFO] [stderr] 29 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/fabric/mod.rs:79:13 [INFO] [stderr] | [INFO] [stderr] 79 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/guards/entry.rs:64:42 [INFO] [stderr] | [INFO] [stderr] 64 | timestamp: Utc.ymd(1518, 11, 01).and_hms(0, 0, 0) [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::zero_prefixed_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 64 | timestamp: Utc.ymd(1518, 11, 1).and_hms(0, 0, 0) [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 64 | timestamp: Utc.ymd(1518, 11, 0o1).and_hms(0, 0, 0) [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/guards/entry.rs:73:42 [INFO] [stderr] | [INFO] [stderr] 73 | timestamp: Utc.ymd(1518, 11, 01).and_hms(0, 5, 0) [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 73 | timestamp: Utc.ymd(1518, 11, 1).and_hms(0, 5, 0) [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 73 | timestamp: Utc.ymd(1518, 11, 0o1).and_hms(0, 5, 0) [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/guards/entry.rs:80:42 [INFO] [stderr] | [INFO] [stderr] 80 | timestamp: Utc.ymd(1518, 11, 01).and_hms(0, 25, 0) [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 80 | timestamp: Utc.ymd(1518, 11, 1).and_hms(0, 25, 0) [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 80 | timestamp: Utc.ymd(1518, 11, 0o1).and_hms(0, 25, 0) [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/guards/mod.rs:63:17 [INFO] [stderr] | [INFO] [stderr] 63 | timestamp: _, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unneeded_field_pattern)] on by default [INFO] [stderr] = help: Try with `Entry { state: State::Begin(id), .. }` [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: an inclusive range would be more readable [INFO] [stderr] --> src/area/mod.rs:39:14 [INFO] [stderr] | [INFO] [stderr] 39 | for y in y_min - 1..y_max + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: use: `y_min - 1..=y_max` [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: an inclusive range would be more readable [INFO] [stderr] --> src/area/mod.rs:40:18 [INFO] [stderr] | [INFO] [stderr] 40 | for x in x_min - 1..x_max + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: use: `x_min - 1..=x_max` [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: an inclusive range would be more readable [INFO] [stderr] --> src/area/mod.rs:117:14 [INFO] [stderr] | [INFO] [stderr] 117 | for y in y_min - 1..y_max + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: use: `y_min - 1..=y_max` [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: an inclusive range would be more readable [INFO] [stderr] --> src/area/mod.rs:118:18 [INFO] [stderr] | [INFO] [stderr] 118 | for x in x_min - 1..x_max + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: use: `x_min - 1..=x_max` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/area/mod.rs:140:27 [INFO] [stderr] | [INFO] [stderr] 140 | fn manhattan_distance(rh: &(i32, i32), lh: &(i32, i32)) -> i32 { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `(i32, i32)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/area/mod.rs:140:44 [INFO] [stderr] | [INFO] [stderr] 140 | fn manhattan_distance(rh: &(i32, i32), lh: &(i32, i32)) -> i32 { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `(i32, i32)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frequency/mod.rs:18:9 [INFO] [stderr] | [INFO] [stderr] 18 | frequency = frequency + adjust; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `frequency += adjust` [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: manual implementation of an assign operation [INFO] [stderr] --> src/frequency/mod.rs:32:9 [INFO] [stderr] | [INFO] [stderr] 32 | frequency = frequency + iterator.next().unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `frequency += iterator.next().unwrap()` [INFO] [stderr] | [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: this loop could be written as a `while let` loop [INFO] [stderr] --> src/polymer/mod.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | / loop { [INFO] [stderr] 26 | | match trigger_cycle(&result) { [INFO] [stderr] 27 | | Some(new_result) => result = new_result, [INFO] [stderr] 28 | | None => break, [INFO] [stderr] 29 | | } [INFO] [stderr] 30 | | } [INFO] [stderr] | |_____^ help: try: `while let Some(new_result) = trigger_cycle(&result) { .. }` [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: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/polymer/mod.rs:74:40 [INFO] [stderr] | [INFO] [stderr] 74 | for letter in (0..26).map(|x| (x + 'a' as u8) as char) { [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'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: you seem to want to iterate on a map's values [INFO] [stderr] --> src/steps/mod.rs:18:40 [INFO] [stderr] | [INFO] [stderr] 18 | for (_action, requirements) in &mut state { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::for_kv_map)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stderr] help: use the corresponding method [INFO] [stderr] | [INFO] [stderr] 18 | for requirements in state.values_mut() { [INFO] [stderr] | ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/steps/mod.rs:40:12 [INFO] [stderr] | [INFO] [stderr] 40 | if state.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `state.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: an inclusive range would be more readable [INFO] [stderr] --> src/steps/mod.rs:48:26 [INFO] [stderr] | [INFO] [stderr] 48 | for i in 0..i + 1 { [INFO] [stderr] | ^^^^^^^^ help: use: `0..=i` [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: you seem to want to iterate on a map's values [INFO] [stderr] --> src/steps/mod.rs:63:48 [INFO] [stderr] | [INFO] [stderr] 63 | for (_action, requirements) in &mut state { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stderr] help: use the corresponding method [INFO] [stderr] | [INFO] [stderr] 63 | for requirements in state.values_mut() { [INFO] [stderr] | ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `j` is only used to index `worker`. [INFO] [stderr] --> src/steps/mod.rs:80:38 [INFO] [stderr] | [INFO] [stderr] 80 | for j in i..i + (base_time + 1 + action as usize - 'A' as usize) { [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] 80 | for in worker.iter_mut().skip(i).take((base_time + 1 + action as usize - 'A' as usize)) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/steps/mod.rs:114:8 [INFO] [stderr] | [INFO] [stderr] 114 | if available_actions.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `available_actions.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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/steps/mod.rs:122:28 [INFO] [stderr] | [INFO] [stderr] 122 | fn get_initial_state(data: &String) -> HashMap> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/steps/mod.rs:129:44 [INFO] [stderr] | [INFO] [stderr] 129 | let entry = state.entry(child).or_insert(HashSet::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(HashSet::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: use of `or_insert` followed by a function call [INFO] [stderr] --> src/steps/mod.rs:133:27 [INFO] [stderr] | [INFO] [stderr] 133 | state.entry(root).or_insert(HashSet::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(HashSet::new)` [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: an inclusive range would be more readable [INFO] [stderr] --> src/area/mod.rs:39:14 [INFO] [stderr] | [INFO] [stderr] 39 | for y in y_min - 1..y_max + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: use: `y_min - 1..=y_max` [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: an inclusive range would be more readable [INFO] [stderr] --> src/area/mod.rs:40:18 [INFO] [stderr] | [INFO] [stderr] 40 | for x in x_min - 1..x_max + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: use: `x_min - 1..=x_max` [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: an inclusive range would be more readable [INFO] [stderr] --> src/area/mod.rs:117:14 [INFO] [stderr] | [INFO] [stderr] 117 | for y in y_min - 1..y_max + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: use: `y_min - 1..=y_max` [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: an inclusive range would be more readable [INFO] [stderr] --> src/area/mod.rs:118:18 [INFO] [stderr] | [INFO] [stderr] 118 | for x in x_min - 1..x_max + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: use: `x_min - 1..=x_max` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/area/mod.rs:140:27 [INFO] [stderr] | [INFO] [stderr] 140 | fn manhattan_distance(rh: &(i32, i32), lh: &(i32, i32)) -> i32 { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `(i32, i32)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/area/mod.rs:140:44 [INFO] [stderr] | [INFO] [stderr] 140 | fn manhattan_distance(rh: &(i32, i32), lh: &(i32, i32)) -> i32 { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `(i32, i32)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frequency/mod.rs:18:9 [INFO] [stderr] | [INFO] [stderr] 18 | frequency = frequency + adjust; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `frequency += adjust` [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: manual implementation of an assign operation [INFO] [stderr] --> src/frequency/mod.rs:32:9 [INFO] [stderr] | [INFO] [stderr] 32 | frequency = frequency + iterator.next().unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `frequency += iterator.next().unwrap()` [INFO] [stderr] | [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: this loop could be written as a `while let` loop [INFO] [stderr] --> src/polymer/mod.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | / loop { [INFO] [stderr] 26 | | match trigger_cycle(&result) { [INFO] [stderr] 27 | | Some(new_result) => result = new_result, [INFO] [stderr] 28 | | None => break, [INFO] [stderr] 29 | | } [INFO] [stderr] 30 | | } [INFO] [stderr] | |_____^ help: try: `while let Some(new_result) = trigger_cycle(&result) { .. }` [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: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/polymer/mod.rs:74:40 [INFO] [stderr] | [INFO] [stderr] 74 | for letter in (0..26).map(|x| (x + 'a' as u8) as char) { [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'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: you seem to want to iterate on a map's values [INFO] [stderr] --> src/steps/mod.rs:18:40 [INFO] [stderr] | [INFO] [stderr] 18 | for (_action, requirements) in &mut state { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::for_kv_map)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stderr] help: use the corresponding method [INFO] [stderr] | [INFO] [stderr] 18 | for requirements in state.values_mut() { [INFO] [stderr] | ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/steps/mod.rs:40:12 [INFO] [stderr] | [INFO] [stderr] 40 | if state.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `state.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: an inclusive range would be more readable [INFO] [stderr] --> src/steps/mod.rs:48:26 [INFO] [stderr] | [INFO] [stderr] 48 | for i in 0..i + 1 { [INFO] [stderr] | ^^^^^^^^ help: use: `0..=i` [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: you seem to want to iterate on a map's values [INFO] [stderr] --> src/steps/mod.rs:63:48 [INFO] [stderr] | [INFO] [stderr] 63 | for (_action, requirements) in &mut state { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stderr] help: use the corresponding method [INFO] [stderr] | [INFO] [stderr] 63 | for requirements in state.values_mut() { [INFO] [stderr] | ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `j` is only used to index `worker`. [INFO] [stderr] --> src/steps/mod.rs:80:38 [INFO] [stderr] | [INFO] [stderr] 80 | for j in i..i + (base_time + 1 + action as usize - 'A' as usize) { [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] 80 | for in worker.iter_mut().skip(i).take((base_time + 1 + action as usize - 'A' as usize)) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/steps/mod.rs:114:8 [INFO] [stderr] | [INFO] [stderr] 114 | if available_actions.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `available_actions.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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/steps/mod.rs:122:28 [INFO] [stderr] | [INFO] [stderr] 122 | fn get_initial_state(data: &String) -> HashMap> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/steps/mod.rs:129:44 [INFO] [stderr] | [INFO] [stderr] 129 | let entry = state.entry(child).or_insert(HashSet::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(HashSet::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: use of `or_insert` followed by a function call [INFO] [stderr] --> src/steps/mod.rs:133:27 [INFO] [stderr] | [INFO] [stderr] 133 | state.entry(root).or_insert(HashSet::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(HashSet::new)` [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.30s [INFO] running `"docker" "inspect" "0ce839c8ed0fd949c06eee3666aa10413d2473c3939ff381f8c268aee139eec6"` [INFO] running `"docker" "rm" "-f" "0ce839c8ed0fd949c06eee3666aa10413d2473c3939ff381f8c268aee139eec6"` [INFO] [stdout] 0ce839c8ed0fd949c06eee3666aa10413d2473c3939ff381f8c268aee139eec6