[INFO] updating cached repository mmueller/advent2016 [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/mmueller/advent2016 [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/mmueller/advent2016" "work/ex/clippy-test-run/sources/stable/gh/mmueller/advent2016"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/mmueller/advent2016'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/mmueller/advent2016" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mmueller/advent2016"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mmueller/advent2016'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] ae140beb832ff98fd285c54d7100d9835c2399a1 [INFO] sha for GitHub repo mmueller/advent2016: ae140beb832ff98fd285c54d7100d9835c2399a1 [INFO] validating manifest of mmueller/advent2016 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 mmueller/advent2016 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 mmueller/advent2016 [INFO] finished frobbing mmueller/advent2016 [INFO] frobbed toml for mmueller/advent2016 written to work/ex/clippy-test-run/sources/stable/gh/mmueller/advent2016/Cargo.toml [INFO] started frobbing mmueller/advent2016 [INFO] finished frobbing mmueller/advent2016 [INFO] frobbed toml for mmueller/advent2016 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mmueller/advent2016/Cargo.toml [INFO] crate mmueller/advent2016 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 mmueller/advent2016 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-6/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/mmueller/advent2016:/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] e04362e2bd3018b0596442c4c25ea622fa0369cb68e1032beeffdf3cbc567c77 [INFO] running `"docker" "start" "-a" "e04362e2bd3018b0596442c4c25ea622fa0369cb68e1032beeffdf3cbc567c77"` [INFO] [stderr] Compiling backtrace-sys v0.1.5 [INFO] [stderr] Checking backtrace v0.3.0 [INFO] [stderr] Checking error-chain v0.7.1 [INFO] [stderr] Checking advent2016 v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/day1.rs:98:5 [INFO] [stderr] | [INFO] [stderr] 98 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/day5.rs:45:17 [INFO] [stderr] | [INFO] [stderr] 45 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/day5.rs:85:25 [INFO] [stderr] | [INFO] [stderr] 85 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/day8.rs:37:13 [INFO] [stderr] | [INFO] [stderr] 37 | width: width, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `width` [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/day8.rs:38:13 [INFO] [stderr] | [INFO] [stderr] 38 | height: height, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `height` [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/day8.rs:39:13 [INFO] [stderr] | [INFO] [stderr] 39 | rows: rows [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `rows` [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/day10.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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 `println!("")` [INFO] [stderr] --> src/day10.rs:228:9 [INFO] [stderr] | [INFO] [stderr] 228 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/day1.rs:98:5 [INFO] [stderr] | [INFO] [stderr] 98 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/day5.rs:45:17 [INFO] [stderr] | [INFO] [stderr] 45 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/day5.rs:85:25 [INFO] [stderr] | [INFO] [stderr] 85 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/day8.rs:37:13 [INFO] [stderr] | [INFO] [stderr] 37 | width: width, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `width` [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/day8.rs:38:13 [INFO] [stderr] | [INFO] [stderr] 38 | height: height, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `height` [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/day8.rs:39:13 [INFO] [stderr] | [INFO] [stderr] 39 | rows: rows [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `rows` [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/day10.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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 `println!("")` [INFO] [stderr] --> src/day10.rs:228:9 [INFO] [stderr] | [INFO] [stderr] 228 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/day5.rs:12:16 [INFO] [stderr] | [INFO] [stderr] 12 | const PREFIX: &'static str = "ffykfhsq"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/day5.rs:12:16 [INFO] [stderr] | [INFO] [stderr] 12 | const PREFIX: &'static str = "ffykfhsq"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/day1.rs:16:18 [INFO] [stderr] | [INFO] [stderr] 16 | fn turn_left(&self) -> Direction { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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/day1.rs:24:19 [INFO] [stderr] | [INFO] [stderr] 24 | fn turn_right(&self) -> Direction { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/day1.rs:52:27 [INFO] [stderr] | [INFO] [stderr] 52 | fn manhattan_distance(&self, other: Point) -> i32 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day1.rs:84:47 [INFO] [stderr] | [INFO] [stderr] 84 | point_visited_twice = current_position.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `current_position` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/day2.rs:54:47 [INFO] [stderr] | [INFO] [stderr] 54 | let instructions: Vec<&str> = input.split("\n") [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/day2.rs:59:9 [INFO] [stderr] | [INFO] [stderr] 59 | let ref mut keypad1 = Keypad::new(); [INFO] [stderr] | ----^^^^^^^^^^^^^^^----------------- help: try: `let keypad1 = &mut Keypad::new();` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/day2.rs:67:9 [INFO] [stderr] | [INFO] [stderr] 67 | let ref mut keypad2 = Keypad::new(); [INFO] [stderr] | ----^^^^^^^^^^^^^^^----------------- help: try: `let keypad2 = &mut Keypad::new();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day3.rs:4:32 [INFO] [stderr] | [INFO] [stderr] 4 | fn is_valid_triangle(triangle: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[u32]` [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: the loop variable `side` is only used to index `triangle`. [INFO] [stderr] --> src/day3.rs:6:17 [INFO] [stderr] | [INFO] [stderr] 6 | for side in 0..3 { [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] 6 | for in triangle.iter().take(3) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/day3.rs:8:56 [INFO] [stderr] | [INFO] [stderr] 8 | .map(|i| triangle[i]) [INFO] [stderr] | ________________________________________________________^ [INFO] [stderr] 9 | | .fold(0, |acc, length| acc+length); [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day3.rs:17:31 [INFO] [stderr] | [INFO] [stderr] 17 | fn valid_triangles(triangles: &Vec>) -> Vec> { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[Vec]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/day3.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | / triangles.iter() [INFO] [stderr] 19 | | .filter(|t| is_valid_triangle(t)) [INFO] [stderr] 20 | | .map(|v| v.clone()) [INFO] [stderr] | |________________________________^ [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] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 18 | triangles.iter() [INFO] [stderr] 19 | .filter(|t| is_valid_triangle(t)).cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/day3.rs:30:21 [INFO] [stderr] | [INFO] [stderr] 30 | input.split("\n") [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `row` [INFO] [stderr] --> src/day3.rs:44:47 [INFO] [stderr] | [INFO] [stderr] 44 | let triangle = vec![row_triangles[row+0][col], [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/day4.rs:17:9 [INFO] [stderr] | [INFO] [stderr] 17 | / if char_counts.contains_key(&char) { [INFO] [stderr] 18 | | let new_value = char_counts[&char] + 1; [INFO] [stderr] 19 | | char_counts.insert(char, new_value); [INFO] [stderr] 20 | | } else { [INFO] [stderr] 21 | | char_counts.insert(char, 1); [INFO] [stderr] 22 | | } [INFO] [stderr] | |_________^ help: consider using: `char_counts.entry(char)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_entry)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/day4.rs:55:24 [INFO] [stderr] | [INFO] [stderr] 55 | char::from_u32(rotated as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(rotated)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/day4.rs:73:45 [INFO] [stderr] | [INFO] [stderr] 73 | let room_names: Vec<&str> = input.split("\n") [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day5.rs:54:31 [INFO] [stderr] | [INFO] [stderr] 54 | fn display_animated(password: &Vec) { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[char]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: called `.get_mut().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/day5.rs:82:22 [INFO] [stderr] | [INFO] [stderr] 82 | *(password.get_mut(pos).unwrap()) = val; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `password[pos]` [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: single-character string constant used as pattern [INFO] [stderr] --> src/day6.rs:28:50 [INFO] [stderr] | [INFO] [stderr] 28 | let messages: Vec<&str> = input.trim().split("\n").collect(); [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/day7.rs:98:51 [INFO] [stderr] | [INFO] [stderr] 98 | let addresses: Vec<&str> = input.trim().split("\n").collect(); [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `new_col` [INFO] [stderr] --> src/day8.rs:56:18 [INFO] [stderr] | [INFO] [stderr] 56 | for i in 0..self.height { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [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] 56 | for (i, ) in new_col.iter().enumerate().take(self.height) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `new_row` [INFO] [stderr] --> src/day8.rs:66:18 [INFO] [stderr] | [INFO] [stderr] 66 | for i in 0..self.width { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [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] 66 | for (i, ) in new_row.iter().enumerate().take(self.width) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/day8.rs:66:18 [INFO] [stderr] | [INFO] [stderr] 66 | for i in 0..self.width { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try replacing the loop by: `self.rows[y][..self.width].clone_from_slice(&new_row[..self.width])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_memcpy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/day8.rs:73:72 [INFO] [stderr] | [INFO] [stderr] 73 | .map(|row| row.iter().filter(|&pixel| *pixel).count()) [INFO] [stderr] | ________________________________________________________________________^ [INFO] [stderr] 74 | | .fold(0, |total, count| total + count) [INFO] [stderr] | |_______________________________________________________^ help: try: `.sum()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/day10.rs:112:14 [INFO] [stderr] | [INFO] [stderr] 112 | for i in bots.len()..(id+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: use: `bots.len()..=id` [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/day10.rs:118:14 [INFO] [stderr] | [INFO] [stderr] 118 | for _ in outputs.len()..(id+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `outputs.len()..=id` [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/day1.rs:16:18 [INFO] [stderr] | [INFO] [stderr] 16 | fn turn_left(&self) -> Direction { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/day10.rs:188:25 [INFO] [stderr] | [INFO] [stderr] 188 | let clone = bot.clone(); [INFO] [stderr] | ^^^^^^^^^^^ help: try dereferencing it: `*bot` [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] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/day1.rs:24:19 [INFO] [stderr] | [INFO] [stderr] 24 | fn turn_right(&self) -> Direction { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/day1.rs:52:27 [INFO] [stderr] | [INFO] [stderr] 52 | fn manhattan_distance(&self, other: Point) -> i32 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day1.rs:84:47 [INFO] [stderr] | [INFO] [stderr] 84 | point_visited_twice = current_position.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `current_position` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/day2.rs:54:47 [INFO] [stderr] | [INFO] [stderr] 54 | let instructions: Vec<&str> = input.split("\n") [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/day2.rs:59:9 [INFO] [stderr] | [INFO] [stderr] 59 | let ref mut keypad1 = Keypad::new(); [INFO] [stderr] | ----^^^^^^^^^^^^^^^----------------- help: try: `let keypad1 = &mut Keypad::new();` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/day2.rs:67:9 [INFO] [stderr] | [INFO] [stderr] 67 | let ref mut keypad2 = Keypad::new(); [INFO] [stderr] | ----^^^^^^^^^^^^^^^----------------- help: try: `let keypad2 = &mut Keypad::new();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day3.rs:4:32 [INFO] [stderr] | [INFO] [stderr] 4 | fn is_valid_triangle(triangle: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[u32]` [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: the loop variable `side` is only used to index `triangle`. [INFO] [stderr] --> src/day3.rs:6:17 [INFO] [stderr] | [INFO] [stderr] 6 | for side in 0..3 { [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] 6 | for in triangle.iter().take(3) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/day3.rs:8:56 [INFO] [stderr] | [INFO] [stderr] 8 | .map(|i| triangle[i]) [INFO] [stderr] | ________________________________________________________^ [INFO] [stderr] 9 | | .fold(0, |acc, length| acc+length); [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day3.rs:17:31 [INFO] [stderr] | [INFO] [stderr] 17 | fn valid_triangles(triangles: &Vec>) -> Vec> { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[Vec]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/day3.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | / triangles.iter() [INFO] [stderr] 19 | | .filter(|t| is_valid_triangle(t)) [INFO] [stderr] 20 | | .map(|v| v.clone()) [INFO] [stderr] | |________________________________^ [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] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 18 | triangles.iter() [INFO] [stderr] 19 | .filter(|t| is_valid_triangle(t)).cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/day3.rs:30:21 [INFO] [stderr] | [INFO] [stderr] 30 | input.split("\n") [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `row` [INFO] [stderr] --> src/day3.rs:44:47 [INFO] [stderr] | [INFO] [stderr] 44 | let triangle = vec![row_triangles[row+0][col], [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/day4.rs:17:9 [INFO] [stderr] | [INFO] [stderr] 17 | / if char_counts.contains_key(&char) { [INFO] [stderr] 18 | | let new_value = char_counts[&char] + 1; [INFO] [stderr] 19 | | char_counts.insert(char, new_value); [INFO] [stderr] 20 | | } else { [INFO] [stderr] 21 | | char_counts.insert(char, 1); [INFO] [stderr] 22 | | } [INFO] [stderr] | |_________^ help: consider using: `char_counts.entry(char)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_entry)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/day4.rs:55:24 [INFO] [stderr] | [INFO] [stderr] 55 | char::from_u32(rotated as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(rotated)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/day4.rs:73:45 [INFO] [stderr] | [INFO] [stderr] 73 | let room_names: Vec<&str> = input.split("\n") [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day5.rs:54:31 [INFO] [stderr] | [INFO] [stderr] 54 | fn display_animated(password: &Vec) { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[char]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: called `.get_mut().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/day5.rs:82:22 [INFO] [stderr] | [INFO] [stderr] 82 | *(password.get_mut(pos).unwrap()) = val; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `password[pos]` [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: single-character string constant used as pattern [INFO] [stderr] --> src/day6.rs:28:50 [INFO] [stderr] | [INFO] [stderr] 28 | let messages: Vec<&str> = input.trim().split("\n").collect(); [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/day7.rs:98:51 [INFO] [stderr] | [INFO] [stderr] 98 | let addresses: Vec<&str> = input.trim().split("\n").collect(); [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `new_col` [INFO] [stderr] --> src/day8.rs:56:18 [INFO] [stderr] | [INFO] [stderr] 56 | for i in 0..self.height { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [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] 56 | for (i, ) in new_col.iter().enumerate().take(self.height) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `new_row` [INFO] [stderr] --> src/day8.rs:66:18 [INFO] [stderr] | [INFO] [stderr] 66 | for i in 0..self.width { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [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] 66 | for (i, ) in new_row.iter().enumerate().take(self.width) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/day8.rs:66:18 [INFO] [stderr] | [INFO] [stderr] 66 | for i in 0..self.width { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try replacing the loop by: `self.rows[y][..self.width].clone_from_slice(&new_row[..self.width])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_memcpy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/day8.rs:73:72 [INFO] [stderr] | [INFO] [stderr] 73 | .map(|row| row.iter().filter(|&pixel| *pixel).count()) [INFO] [stderr] | ________________________________________________________________________^ [INFO] [stderr] 74 | | .fold(0, |total, count| total + count) [INFO] [stderr] | |_______________________________________________________^ help: try: `.sum()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/day10.rs:112:14 [INFO] [stderr] | [INFO] [stderr] 112 | for i in bots.len()..(id+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: use: `bots.len()..=id` [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/day10.rs:118:14 [INFO] [stderr] | [INFO] [stderr] 118 | for _ in outputs.len()..(id+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: use: `outputs.len()..=id` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day10.rs:188:25 [INFO] [stderr] | [INFO] [stderr] 188 | let clone = bot.clone(); [INFO] [stderr] | ^^^^^^^^^^^ help: try dereferencing it: `*bot` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 5.81s [INFO] running `"docker" "inspect" "e04362e2bd3018b0596442c4c25ea622fa0369cb68e1032beeffdf3cbc567c77"` [INFO] running `"docker" "rm" "-f" "e04362e2bd3018b0596442c4c25ea622fa0369cb68e1032beeffdf3cbc567c77"` [INFO] [stdout] e04362e2bd3018b0596442c4c25ea622fa0369cb68e1032beeffdf3cbc567c77