[INFO] updating cached repository rcuhljr/aoc2018 [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/rcuhljr/aoc2018 [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/rcuhljr/aoc2018" "work/ex/clippy-test-run/sources/stable/gh/rcuhljr/aoc2018"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/rcuhljr/aoc2018'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/rcuhljr/aoc2018" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/rcuhljr/aoc2018"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/rcuhljr/aoc2018'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] ad88a1f2425ee3803669f4f2c01343d806bdc872 [INFO] sha for GitHub repo rcuhljr/aoc2018: ad88a1f2425ee3803669f4f2c01343d806bdc872 [INFO] validating manifest of rcuhljr/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 rcuhljr/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 rcuhljr/aoc2018 [INFO] finished frobbing rcuhljr/aoc2018 [INFO] frobbed toml for rcuhljr/aoc2018 written to work/ex/clippy-test-run/sources/stable/gh/rcuhljr/aoc2018/Cargo.toml [INFO] started frobbing rcuhljr/aoc2018 [INFO] finished frobbing rcuhljr/aoc2018 [INFO] frobbed toml for rcuhljr/aoc2018 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/rcuhljr/aoc2018/Cargo.toml [INFO] crate rcuhljr/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 rcuhljr/aoc2018 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/gh/rcuhljr/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] 0fc6d145ec60deea253a4e0920fe3538aa50177a91b263fc1b3b93e8d6b05a36 [INFO] running `"docker" "start" "-a" "0fc6d145ec60deea253a4e0920fe3538aa50177a91b263fc1b3b93e8d6b05a36"` [INFO] [stderr] Checking aoc2018 v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/day1/mod.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | return adjusts.iter().fold(0, |acc, x| acc + x); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `adjusts.iter().fold(0, |acc, x| acc + x)` [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/day1/mod.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | return total_adjustments(utility::load_numbers("input1.txt".to_string())).to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `total_adjustments(utility::load_numbers("input1.txt".to_string())).to_string()` [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/day1/mod.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | return stops_twice(utility::load_numbers("input1.txt".to_string())).to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `stops_twice(utility::load_numbers("input1.txt".to_string())).to_string()` [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: long literal lacking separators [INFO] [stderr] --> src/day10/mod.rs:123:53 [INFO] [stderr] | [INFO] [stderr] 123 | let (mut minx, mut miny, mut maxx, mut maxy) = (1000000, 1000000, -1000000, -1000000); [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/day10/mod.rs:123:62 [INFO] [stderr] | [INFO] [stderr] 123 | let (mut minx, mut miny, mut maxx, mut maxy) = (1000000, 1000000, -1000000, -1000000); [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/day10/mod.rs:123:72 [INFO] [stderr] | [INFO] [stderr] 123 | let (mut minx, mut miny, mut maxx, mut maxy) = (1000000, 1000000, -1000000, -1000000); [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/day10/mod.rs:123:82 [INFO] [stderr] | [INFO] [stderr] 123 | let (mut minx, mut miny, mut maxx, mut maxy) = (1000000, 1000000, -1000000, -1000000); [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/day12/mod.rs:9:50 [INFO] [stderr] | [INFO] [stderr] 9 | sum_living_plants("input12.txt".to_string(), 50000000000).to_string() [INFO] [stderr] | ^^^^^^^^^^^ help: consider: `50_000_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/day14/mod.rs:2:40 [INFO] [stderr] | [INFO] [stderr] 2 | find_next_scores("37".to_string(), 360781, 10) [INFO] [stderr] | ^^^^^^ help: consider: `360_781` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/day14/mod.rs:6:35 [INFO] [stderr] | [INFO] [stderr] 6 | find_part_2("37".to_string(), 360781).to_string() [INFO] [stderr] | ^^^^^^ help: consider: `360_781` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/day16/mod.rs:110:16 [INFO] [stderr] | [INFO] [stderr] 110 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 111 | | if let Some(caps) = OPCODE_REGEX.captures(line) { [INFO] [stderr] 112 | | op_code = [ [INFO] [stderr] 113 | | caps[1].parse().unwrap(), [INFO] [stderr] ... | [INFO] [stderr] 119 | | } [INFO] [stderr] 120 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 110 | } else if let Some(caps) = OPCODE_REGEX.captures(line) { [INFO] [stderr] 111 | op_code = [ [INFO] [stderr] 112 | caps[1].parse().unwrap(), [INFO] [stderr] 113 | caps[2].parse().unwrap(), [INFO] [stderr] 114 | caps[3].parse().unwrap(), [INFO] [stderr] 115 | caps[4].parse().unwrap(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/day2/mod.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | return doubles * triples; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `doubles * triples` [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/day2/mod.rs:32:5 [INFO] [stderr] | [INFO] [stderr] 32 | return "".to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `"".to_string()` [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/day2/mod.rs:40:5 [INFO] [stderr] | [INFO] [stderr] 40 | / return match pairs.try_for_each(|(chl, chr)| { [INFO] [stderr] 41 | | if chl == chr { [INFO] [stderr] 42 | | common.push(chl) [INFO] [stderr] 43 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 53 | | Err(()) => "".to_string(), [INFO] [stderr] 54 | | }; [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 40 | match pairs.try_for_each(|(chl, chr)| { [INFO] [stderr] 41 | if chl == chr { [INFO] [stderr] 42 | common.push(chl) [INFO] [stderr] 43 | } else { [INFO] [stderr] 44 | if missmatch { [INFO] [stderr] 45 | return Err(()); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/day2/mod.rs:50:9 [INFO] [stderr] | [INFO] [stderr] 50 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/day2/mod.rs:43:16 [INFO] [stderr] | [INFO] [stderr] 43 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 44 | | if missmatch { [INFO] [stderr] 45 | | return Err(()); [INFO] [stderr] 46 | | } else { [INFO] [stderr] 47 | | missmatch = true; [INFO] [stderr] 48 | | } [INFO] [stderr] 49 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 43 | } else if missmatch { [INFO] [stderr] 44 | return Err(()); [INFO] [stderr] 45 | } else { [INFO] [stderr] 46 | missmatch = true; [INFO] [stderr] 47 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/day2/mod.rs:58:5 [INFO] [stderr] | [INFO] [stderr] 58 | return find_checksum(utility::load_strings("input2.txt".to_string())).to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `find_checksum(utility::load_strings("input2.txt".to_string())).to_string()` [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/day2/mod.rs:62:5 [INFO] [stderr] | [INFO] [stderr] 62 | return find_near_match(utility::load_strings("input2.txt".to_string())).to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `find_near_match(utility::load_strings("input2.txt".to_string())).to_string()` [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/day3/mod.rs:38:9 [INFO] [stderr] | [INFO] [stderr] 38 | / return self.x == other.x [INFO] [stderr] 39 | | && self.y == other.y [INFO] [stderr] 40 | | && self.width == other.width [INFO] [stderr] 41 | | && self.height == other.height; [INFO] [stderr] | |___________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 38 | self.x == other.x [INFO] [stderr] 39 | && self.y == other.y [INFO] [stderr] 40 | && self.width == other.width [INFO] [stderr] 41 | && self.height == other.height [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Unnecessary `>= y + 1` or `x - 1 >=` [INFO] [stderr] --> src/day8/mod.rs:40:20 [INFO] [stderr] | [INFO] [stderr] 40 | if x - 1 >= self.children.len() as i32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::int_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#int_plus_one [INFO] [stderr] help: change `>= y + 1` to `> y` as shown [INFO] [stderr] | [INFO] [stderr] 40 | if x > self.children.len() as i32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/day9/mod.rs:8:20 [INFO] [stderr] | [INFO] [stderr] 8 | play_game(419, 7105200).to_string() [INFO] [stderr] | ^^^^^^^ help: consider: `7_105_200` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/utility/mod.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | / return load_strings(filename) [INFO] [stderr] 7 | | .iter() [INFO] [stderr] 8 | | .map(|val| val.parse().unwrap()) [INFO] [stderr] 9 | | .collect(); [INFO] [stderr] | |___________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 6 | load_strings(filename) [INFO] [stderr] 7 | .iter() [INFO] [stderr] 8 | .map(|val| val.parse().unwrap()) [INFO] [stderr] 9 | .collect() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/utility/mod.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | return v.map(|val| val.to_string()).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `v.map(|val| val.to_string()).collect()` [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/day1/mod.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | return adjusts.iter().fold(0, |acc, x| acc + x); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `adjusts.iter().fold(0, |acc, x| acc + x)` [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/day1/mod.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | return total_adjustments(utility::load_numbers("input1.txt".to_string())).to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `total_adjustments(utility::load_numbers("input1.txt".to_string())).to_string()` [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/day1/mod.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | return stops_twice(utility::load_numbers("input1.txt".to_string())).to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `stops_twice(utility::load_numbers("input1.txt".to_string())).to_string()` [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: long literal lacking separators [INFO] [stderr] --> src/day10/mod.rs:123:53 [INFO] [stderr] | [INFO] [stderr] 123 | let (mut minx, mut miny, mut maxx, mut maxy) = (1000000, 1000000, -1000000, -1000000); [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/day10/mod.rs:123:62 [INFO] [stderr] | [INFO] [stderr] 123 | let (mut minx, mut miny, mut maxx, mut maxy) = (1000000, 1000000, -1000000, -1000000); [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/day10/mod.rs:123:72 [INFO] [stderr] | [INFO] [stderr] 123 | let (mut minx, mut miny, mut maxx, mut maxy) = (1000000, 1000000, -1000000, -1000000); [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/day10/mod.rs:123:82 [INFO] [stderr] | [INFO] [stderr] 123 | let (mut minx, mut miny, mut maxx, mut maxy) = (1000000, 1000000, -1000000, -1000000); [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/day12/mod.rs:9:50 [INFO] [stderr] | [INFO] [stderr] 9 | sum_living_plants("input12.txt".to_string(), 50000000000).to_string() [INFO] [stderr] | ^^^^^^^^^^^ help: consider: `50_000_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/day12/mod.rs:112:67 [INFO] [stderr] | [INFO] [stderr] 112 | let actual = sum_living_plants("input12.txt".to_string(), 50000000000); [INFO] [stderr] | ^^^^^^^^^^^ help: consider: `50_000_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/day12/mod.rs:113:28 [INFO] [stderr] | [INFO] [stderr] 113 | assert_eq!(actual, 2550000000883); [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider: `2_550_000_000_883` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/day14/mod.rs:2:40 [INFO] [stderr] | [INFO] [stderr] 2 | find_next_scores("37".to_string(), 360781, 10) [INFO] [stderr] | ^^^^^^ help: consider: `360_781` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/day14/mod.rs:6:35 [INFO] [stderr] | [INFO] [stderr] 6 | find_part_2("37".to_string(), 360781).to_string() [INFO] [stderr] | ^^^^^^ help: consider: `360_781` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/day14/mod.rs:95:57 [INFO] [stderr] | [INFO] [stderr] 95 | let actual = find_next_scores("37".to_string(), 360781, 10); [INFO] [stderr] | ^^^^^^ help: consider: `360_781` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/day16/mod.rs:110:16 [INFO] [stderr] | [INFO] [stderr] 110 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 111 | | if let Some(caps) = OPCODE_REGEX.captures(line) { [INFO] [stderr] 112 | | op_code = [ [INFO] [stderr] 113 | | caps[1].parse().unwrap(), [INFO] [stderr] ... | [INFO] [stderr] 119 | | } [INFO] [stderr] 120 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 110 | } else if let Some(caps) = OPCODE_REGEX.captures(line) { [INFO] [stderr] 111 | op_code = [ [INFO] [stderr] 112 | caps[1].parse().unwrap(), [INFO] [stderr] 113 | caps[2].parse().unwrap(), [INFO] [stderr] 114 | caps[3].parse().unwrap(), [INFO] [stderr] 115 | caps[4].parse().unwrap(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/day2/mod.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | return doubles * triples; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `doubles * triples` [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/day2/mod.rs:32:5 [INFO] [stderr] | [INFO] [stderr] 32 | return "".to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `"".to_string()` [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/day2/mod.rs:40:5 [INFO] [stderr] | [INFO] [stderr] 40 | / return match pairs.try_for_each(|(chl, chr)| { [INFO] [stderr] 41 | | if chl == chr { [INFO] [stderr] 42 | | common.push(chl) [INFO] [stderr] 43 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 53 | | Err(()) => "".to_string(), [INFO] [stderr] 54 | | }; [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 40 | match pairs.try_for_each(|(chl, chr)| { [INFO] [stderr] 41 | if chl == chr { [INFO] [stderr] 42 | common.push(chl) [INFO] [stderr] 43 | } else { [INFO] [stderr] 44 | if missmatch { [INFO] [stderr] 45 | return Err(()); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/day2/mod.rs:50:9 [INFO] [stderr] | [INFO] [stderr] 50 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/day2/mod.rs:43:16 [INFO] [stderr] | [INFO] [stderr] 43 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 44 | | if missmatch { [INFO] [stderr] 45 | | return Err(()); [INFO] [stderr] 46 | | } else { [INFO] [stderr] 47 | | missmatch = true; [INFO] [stderr] 48 | | } [INFO] [stderr] 49 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 43 | } else if missmatch { [INFO] [stderr] 44 | return Err(()); [INFO] [stderr] 45 | } else { [INFO] [stderr] 46 | missmatch = true; [INFO] [stderr] 47 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/day2/mod.rs:58:5 [INFO] [stderr] | [INFO] [stderr] 58 | return find_checksum(utility::load_strings("input2.txt".to_string())).to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `find_checksum(utility::load_strings("input2.txt".to_string())).to_string()` [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/day2/mod.rs:62:5 [INFO] [stderr] | [INFO] [stderr] 62 | return find_near_match(utility::load_strings("input2.txt".to_string())).to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `find_near_match(utility::load_strings("input2.txt".to_string())).to_string()` [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/day3/mod.rs:38:9 [INFO] [stderr] | [INFO] [stderr] 38 | / return self.x == other.x [INFO] [stderr] 39 | | && self.y == other.y [INFO] [stderr] 40 | | && self.width == other.width [INFO] [stderr] 41 | | && self.height == other.height; [INFO] [stderr] | |___________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 38 | self.x == other.x [INFO] [stderr] 39 | && self.y == other.y [INFO] [stderr] 40 | && self.width == other.width [INFO] [stderr] 41 | && self.height == other.height [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Unnecessary `>= y + 1` or `x - 1 >=` [INFO] [stderr] --> src/day8/mod.rs:40:20 [INFO] [stderr] | [INFO] [stderr] 40 | if x - 1 >= self.children.len() as i32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::int_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#int_plus_one [INFO] [stderr] help: change `>= y + 1` to `> y` as shown [INFO] [stderr] | [INFO] [stderr] 40 | if x > self.children.len() as i32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/day9/mod.rs:8:20 [INFO] [stderr] | [INFO] [stderr] 8 | play_game(419, 7105200).to_string() [INFO] [stderr] | ^^^^^^^ help: consider: `7_105_200` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/utility/mod.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | / return load_strings(filename) [INFO] [stderr] 7 | | .iter() [INFO] [stderr] 8 | | .map(|val| val.parse().unwrap()) [INFO] [stderr] 9 | | .collect(); [INFO] [stderr] | |___________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 6 | load_strings(filename) [INFO] [stderr] 7 | .iter() [INFO] [stderr] 8 | .map(|val| val.parse().unwrap()) [INFO] [stderr] 9 | .collect() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/utility/mod.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | return v.map(|val| val.to_string()).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `v.map(|val| val.to_string()).collect()` [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: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/day1/mod.rs:5:26 [INFO] [stderr] | [INFO] [stderr] 5 | return adjusts.iter().fold(0, |acc, x| acc + x); [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day1/mod.rs:17:22 [INFO] [stderr] | [INFO] [stderr] 17 | stops.insert(current.clone(), true); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `current` [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: Negation by multiplying with -1 [INFO] [stderr] --> src/day10/mod.rs:41:9 [INFO] [stderr] | [INFO] [stderr] 41 | self.minx * -1 [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::neg_multiply)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_multiply [INFO] [stderr] [INFO] [stderr] warning: Negation by multiplying with -1 [INFO] [stderr] --> src/day10/mod.rs:45:9 [INFO] [stderr] | [INFO] [stderr] 45 | self.miny * -1 [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_multiply [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/day11/mod.rs:56:14 [INFO] [stderr] | [INFO] [stderr] 56 | for x in 0..size + 1 { [INFO] [stderr] | ^^^^^^^^^^^ help: use: `0..=size` [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/day11/mod.rs:58:18 [INFO] [stderr] | [INFO] [stderr] 58 | for y in 0..size + 1 { [INFO] [stderr] | ^^^^^^^^^^^ help: use: `0..=size` [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/day12/mod.rs:37:14 [INFO] [stderr] | [INFO] [stderr] 37 | for i in 1..gens + 1 { [INFO] [stderr] | ^^^^^^^^^^^ help: use: `1..=gens` [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: equality checks against true are unnecessary [INFO] [stderr] --> src/day12/mod.rs:38:12 [INFO] [stderr] | [INFO] [stderr] 38 | if pots[pots.len() - 3] == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `pots[pots.len() - 3]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/day12/mod.rs:68:21 [INFO] [stderr] | [INFO] [stderr] 68 | .filter(|x| x.len() > 0) [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!x.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day12/mod.rs:84:57 [INFO] [stderr] | [INFO] [stderr] 84 | fn process_generation(pots: &mut VecDeque, rules: &Vec>) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Vec]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day13/mod.rs:140:36 [INFO] [stderr] | [INFO] [stderr] 140 | fn get_spot(x: i32, y: i32, track: &Vec>) -> char { [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day13/mod.rs:164:62 [INFO] [stderr] | [INFO] [stderr] 164 | carts.push(CartData::new(x as i32, y as i32, space.clone(), 0)); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `space` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day15/mod.rs:35:33 [INFO] [stderr] | [INFO] [stderr] 35 | fn is_blocked(&self, field: &Vec>, units_map: &HashMap) -> bool { [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/day15/mod.rs:35:19 [INFO] [stderr] | [INFO] [stderr] 35 | fn is_blocked(&self, field: &Vec>, units_map: &HashMap) -> bool { [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/day15/mod.rs:72:37 [INFO] [stderr] | [INFO] [stderr] 72 | fn adjacent_space(&self, point: &Point) -> bool { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Point` [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/day15/mod.rs:76:37 [INFO] [stderr] | [INFO] [stderr] 76 | fn update_loc(&mut self, point: &Point) { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Point` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day15/mod.rs:102:24 [INFO] [stderr] | [INFO] [stderr] 102 | fn pretty_print(field: &Vec>, units_map: &HashMap) { [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day15/mod.rs:114:44 [INFO] [stderr] | [INFO] [stderr] 114 | side_info.push(u.race.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try removing the `clone` call: `u.race` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day15/mod.rs:115:49 [INFO] [stderr] | [INFO] [stderr] 115 | side_info.push_str(&u.hp.clone().to_string()); [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `u.hp` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day15/mod.rs:143:14 [INFO] [stderr] | [INFO] [stderr] 143 | targets: &Vec, [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[Unit]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day15/mod.rs:144:12 [INFO] [stderr] | [INFO] [stderr] 144 | field: &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: length comparison to zero [INFO] [stderr] --> src/day15/mod.rs:156:11 [INFO] [stderr] | [INFO] [stderr] 156 | while todo.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!todo.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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day15/mod.rs:163:25 [INFO] [stderr] | [INFO] [stderr] 163 | valids.push(current.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `current` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day15/mod.rs:178:26 [INFO] [stderr] | [INFO] [stderr] 178 | paths.insert(child.clone(), current.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `child` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day15/mod.rs:178:41 [INFO] [stderr] | [INFO] [stderr] 178 | paths.insert(child.clone(), current.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `current` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day15/mod.rs:181:24 [INFO] [stderr] | [INFO] [stderr] 181 | visited.insert(current.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `current` [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: length comparison to zero [INFO] [stderr] --> src/day15/mod.rs:183:8 [INFO] [stderr] | [INFO] [stderr] 183 | if valids.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `valids.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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day15/mod.rs:188:17 [INFO] [stderr] | [INFO] [stderr] 188 | best_step = (*paths.get(&valids[0]).unwrap()).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `(*paths.get(&valids[0]).unwrap())` [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/day15/mod.rs:188:19 [INFO] [stderr] | [INFO] [stderr] 188 | best_step = (*paths.get(&valids[0]).unwrap()).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&paths[&valids[0]]` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day15/mod.rs:189:29 [INFO] [stderr] | [INFO] [stderr] 189 | let mut previous_step = best_step.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `best_step` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day15/mod.rs:191:25 [INFO] [stderr] | [INFO] [stderr] 191 | previous_step = best_step.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `best_step` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day15/mod.rs:192:21 [INFO] [stderr] | [INFO] [stderr] 192 | best_step = (*paths.get(&best_step).unwrap()).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `(*paths.get(&best_step).unwrap())` [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/day15/mod.rs:192:23 [INFO] [stderr] | [INFO] [stderr] 192 | best_step = (*paths.get(&best_step).unwrap()).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&paths[&best_step]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/day15/mod.rs:197:21 [INFO] [stderr] | [INFO] [stderr] 197 | best_step = valids[0].clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `valids[0]` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day15/mod.rs:200:19 [INFO] [stderr] | [INFO] [stderr] 200 | let old_loc = unit.loc.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `unit.loc` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day15/mod.rs:215:25 [INFO] [stderr] | [INFO] [stderr] 215 | unit_map.insert(unit.loc.clone(), unit.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `unit.loc` [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: length comparison to zero [INFO] [stderr] --> src/day15/mod.rs:242:16 [INFO] [stderr] | [INFO] [stderr] 242 | if targets.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `targets.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/day15/mod.rs:258:16 [INFO] [stderr] | [INFO] [stderr] 258 | if valid_targets.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `valid_targets.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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/day15/mod.rs:269:16 [INFO] [stderr] | [INFO] [stderr] 269 | if unit_map.get(&best_target).unwrap().race == 'D' { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&unit_map[&best_target]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/day15/mod.rs:275:24 [INFO] [stderr] | [INFO] [stderr] 275 | winning_race = unit_iter.next().unwrap().race.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `unit_iter.next().unwrap().race` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day16/mod.rs:153:29 [INFO] [stderr] | [INFO] [stderr] 153 | found_key = key.clone(); [INFO] [stderr] | ^^^^^^^^^^^ help: try dereferencing it: `*key` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day16/mod.rs:159:20 [INFO] [stderr] | [INFO] [stderr] 159 | let inst = found_val.iter().next().unwrap().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*found_val.iter().next().unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day16/mod.rs:192:24 [INFO] [stderr] | [INFO] [stderr] 192 | let mut regs = sample.before.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `sample.before` [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/day16/mod.rs:201:73 [INFO] [stderr] | [INFO] [stderr] 201 | fn process_instruction(regs: &mut [usize; 4], inst: &[usize; 4], itype: &OpCode) { [INFO] [stderr] | ^^^^^^^ help: consider passing by value instead: `OpCode` [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/day16/mod.rs:262:47 [INFO] [stderr] | [INFO] [stderr] 262 | process_instruction(&mut regs, &inst, spec.get(&inst[0]).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&spec[&inst[0]]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/day17/mod.rs:52:11 [INFO] [stderr] | [INFO] [stderr] 52 | while sources.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!sources.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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day17/mod.rs:72:23 [INFO] [stderr] | [INFO] [stderr] 72 | let mut current = source.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try dereferencing it: `*source` [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: an inclusive range would be more readable [INFO] [stderr] --> src/day17/mod.rs:127:22 [INFO] [stderr] | [INFO] [stderr] 127 | for x in left.x + 1..right.x + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: use: `left.x + 1..=right.x` [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/day17/mod.rs:140:22 [INFO] [stderr] | [INFO] [stderr] 140 | for x in left.x..right.x + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: use: `left.x..=right.x` [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/day17/mod.rs:187:18 [INFO] [stderr] | [INFO] [stderr] 187 | for y in ystart..ystop + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use: `ystart..=ystop` [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/day17/mod.rs:193:18 [INFO] [stderr] | [INFO] [stderr] 193 | for x in xstart..xstop + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use: `xstart..=xstop` [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 creates an owned instance just for comparison [INFO] [stderr] --> src/day2/mod.rs:27:26 [INFO] [stderr] | [INFO] [stderr] 27 | if result != "".to_string() { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `""` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_owned)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/day2/mod.rs:35:22 [INFO] [stderr] | [INFO] [stderr] 35 | fn check_match(left: &String, right: &String) -> String { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/day2/mod.rs:35:38 [INFO] [stderr] | [INFO] [stderr] 35 | fn check_match(left: &String, right: &String) -> String { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: taken reference of right operand [INFO] [stderr] --> src/day3/mod.rs:69:36 [INFO] [stderr] | [INFO] [stderr] 69 | field.iter().fold(0, |a, b| if b > &1 { a + 1 } else { a }) [INFO] [stderr] | ^^^^-- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/day3/mod.rs:107:56 [INFO] [stderr] | [INFO] [stderr] 107 | } else if left.lry < right.y || right.lry < left.y { [INFO] [stderr] | ________________________________________________________^ [INFO] [stderr] 108 | | false [INFO] [stderr] 109 | | } else { [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/day3/mod.rs:105:49 [INFO] [stderr] | [INFO] [stderr] 105 | if left.lrx < right.x || right.lrx < left.x { [INFO] [stderr] | _________________________________________________^ [INFO] [stderr] 106 | | false [INFO] [stderr] 107 | | } else if left.lry < right.y || right.lry < left.y { [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/day3/mod.rs:107:12 [INFO] [stderr] | [INFO] [stderr] 107 | } else if left.lry < right.y || right.lry < left.y { [INFO] [stderr] | ____________^ [INFO] [stderr] 108 | | false [INFO] [stderr] 109 | | } else { [INFO] [stderr] 110 | | true [INFO] [stderr] 111 | | } [INFO] [stderr] | |_____^ help: you can reduce it to: `!(left.lry < right.y || right.lry < left.y)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/day4/mod.rs:109:35 [INFO] [stderr] | [INFO] [stderr] 109 | if claim.data.starts_with("#") { [INFO] [stderr] | ^^^ help: try using a char instead: `'#'` [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: use of `or_insert` followed by a function call [INFO] [stderr] --> src/day4/mod.rs:115:54 [INFO] [stderr] | [INFO] [stderr] 115 | let watch = watches.entry(guard.clone()).or_insert(Vec::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(Vec::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: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/day4/mod.rs:140:34 [INFO] [stderr] | [INFO] [stderr] 140 | let total = totals.iter().fold(0, |acc, x| acc + x); [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/day5/mod.rs:23:45 [INFO] [stderr] | [INFO] [stderr] 23 | pub fn collapse_polymers_string(polystring: &String) -> String { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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/day5/mod.rs:24:5 [INFO] [stderr] | [INFO] [stderr] 24 | / polystring [INFO] [stderr] 25 | | .chars() [INFO] [stderr] 26 | | .fold(Vec::new(), |mut remaining, newchar| { [INFO] [stderr] 27 | | if remaining.len() == 0 { [INFO] [stderr] ... | [INFO] [stderr] 40 | | }).iter() [INFO] [stderr] 41 | | .map(|c| *c) [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] 24 | polystring [INFO] [stderr] 25 | .chars() [INFO] [stderr] 26 | .fold(Vec::new(), |mut remaining, newchar| { [INFO] [stderr] 27 | if remaining.len() == 0 { [INFO] [stderr] 28 | remaining.push(newchar); [INFO] [stderr] 29 | } else { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/day5/mod.rs:27:16 [INFO] [stderr] | [INFO] [stderr] 27 | if remaining.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `remaining.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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day6/mod.rs:68:37 [INFO] [stderr] | [INFO] [stderr] 68 | infinite.insert(distances[0].1.clone(), true); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `distances[0].1` [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/day6/mod.rs:84:25 [INFO] [stderr] | [INFO] [stderr] 84 | }).map(|x| (x, *result.get(&x).unwrap())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&result[&x]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/day7/mod.rs:29:27 [INFO] [stderr] | [INFO] [stderr] 29 | for letter in done_at.get(&timer).unwrap() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&done_at[&timer]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/day7/mod.rs:40:12 [INFO] [stderr] | [INFO] [stderr] 40 | if options.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `options.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/day7/mod.rs:41:16 [INFO] [stderr] | [INFO] [stderr] 41 | if in_work.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!in_work.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/day7/mod.rs:52:12 [INFO] [stderr] | [INFO] [stderr] 52 | if ready.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `ready.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 `index` is only used to index `ready`. [INFO] [stderr] --> src/day7/mod.rs:56:22 [INFO] [stderr] | [INFO] [stderr] 56 | for index in 0..cmp::min(ready.len(), workers 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] 56 | for in ready.iter().take(cmp::min(ready.len(), workers as usize)) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/day7/mod.rs:58:56 [INFO] [stderr] | [INFO] [stderr] 58 | let finished_at = done_at.entry(done_time).or_insert(vec![]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/day7/mod.rs:68:32 [INFO] [stderr] | [INFO] [stderr] 68 | fn char_to_offset_time(letter: &char, offset: &i32, timer: &i32) -> i32 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [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/day7/mod.rs:68:47 [INFO] [stderr] | [INFO] [stderr] 68 | fn char_to_offset_time(letter: &char, offset: &i32, timer: &i32) -> i32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/day7/mod.rs:68:60 [INFO] [stderr] | [INFO] [stderr] 68 | fn char_to_offset_time(letter: &char, offset: &i32, timer: &i32) -> i32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `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: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/day7/mod.rs:71:23 [INFO] [stderr] | [INFO] [stderr] 71 | let result_time = (b[0] - 64) as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(b[0] - 64)` [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: length comparison to zero [INFO] [stderr] --> src/day7/mod.rs:82:12 [INFO] [stderr] | [INFO] [stderr] 82 | if options.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `options.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: single-character string constant used as pattern [INFO] [stderr] --> src/day7/mod.rs:103:42 [INFO] [stderr] | [INFO] [stderr] 103 | let v: Vec<&str> = raw.split(" ").collect(); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [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: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/day8/mod.rs:28:29 [INFO] [stderr] | [INFO] [stderr] 28 | self.metadata.iter().fold(0, |acc, x| acc + x) + self [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: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/day8/mod.rs:31:36 [INFO] [stderr] | [INFO] [stderr] 31 | .map(|x| x.check_sum()) [INFO] [stderr] | ____________________________________^ [INFO] [stderr] 32 | | .fold(0, |acc, x| acc + x) [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: length comparison to zero [INFO] [stderr] --> src/day8/mod.rs:36:12 [INFO] [stderr] | [INFO] [stderr] 36 | if self.children.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.children.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: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/day8/mod.rs:37:33 [INFO] [stderr] | [INFO] [stderr] 37 | self.metadata.iter().fold(0, |acc, x| acc + x) [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: single-character string constant used as pattern [INFO] [stderr] --> src/day8/mod.rs:86:16 [INFO] [stderr] | [INFO] [stderr] 86 | .split(" ") [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [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: an inclusive range would be more readable [INFO] [stderr] --> src/day9/mod.rs:32:17 [INFO] [stderr] | [INFO] [stderr] 32 | for play in 1..last_marble + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: use: `1..=last_marble` [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] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `aoc2018`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/day1/mod.rs:5:26 [INFO] [stderr] | [INFO] [stderr] 5 | return adjusts.iter().fold(0, |acc, x| acc + x); [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day1/mod.rs:17:22 [INFO] [stderr] | [INFO] [stderr] 17 | stops.insert(current.clone(), true); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `current` [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: Negation by multiplying with -1 [INFO] [stderr] --> src/day10/mod.rs:41:9 [INFO] [stderr] | [INFO] [stderr] 41 | self.minx * -1 [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::neg_multiply)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_multiply [INFO] [stderr] [INFO] [stderr] warning: Negation by multiplying with -1 [INFO] [stderr] --> src/day10/mod.rs:45:9 [INFO] [stderr] | [INFO] [stderr] 45 | self.miny * -1 [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_multiply [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/day11/mod.rs:56:14 [INFO] [stderr] | [INFO] [stderr] 56 | for x in 0..size + 1 { [INFO] [stderr] | ^^^^^^^^^^^ help: use: `0..=size` [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/day11/mod.rs:58:18 [INFO] [stderr] | [INFO] [stderr] 58 | for y in 0..size + 1 { [INFO] [stderr] | ^^^^^^^^^^^ help: use: `0..=size` [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/day12/mod.rs:37:14 [INFO] [stderr] | [INFO] [stderr] 37 | for i in 1..gens + 1 { [INFO] [stderr] | ^^^^^^^^^^^ help: use: `1..=gens` [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: equality checks against true are unnecessary [INFO] [stderr] --> src/day12/mod.rs:38:12 [INFO] [stderr] | [INFO] [stderr] 38 | if pots[pots.len() - 3] == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `pots[pots.len() - 3]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/day12/mod.rs:68:21 [INFO] [stderr] | [INFO] [stderr] 68 | .filter(|x| x.len() > 0) [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!x.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day12/mod.rs:84:57 [INFO] [stderr] | [INFO] [stderr] 84 | fn process_generation(pots: &mut VecDeque, rules: &Vec>) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Vec]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day13/mod.rs:140:36 [INFO] [stderr] | [INFO] [stderr] 140 | fn get_spot(x: i32, y: i32, track: &Vec>) -> char { [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day13/mod.rs:164:62 [INFO] [stderr] | [INFO] [stderr] 164 | carts.push(CartData::new(x as i32, y as i32, space.clone(), 0)); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `space` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day15/mod.rs:35:33 [INFO] [stderr] | [INFO] [stderr] 35 | fn is_blocked(&self, field: &Vec>, units_map: &HashMap) -> bool { [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/day15/mod.rs:35:19 [INFO] [stderr] | [INFO] [stderr] 35 | fn is_blocked(&self, field: &Vec>, units_map: &HashMap) -> bool { [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/day15/mod.rs:72:37 [INFO] [stderr] | [INFO] [stderr] 72 | fn adjacent_space(&self, point: &Point) -> bool { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Point` [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/day15/mod.rs:76:37 [INFO] [stderr] | [INFO] [stderr] 76 | fn update_loc(&mut self, point: &Point) { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Point` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day15/mod.rs:102:24 [INFO] [stderr] | [INFO] [stderr] 102 | fn pretty_print(field: &Vec>, units_map: &HashMap) { [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day15/mod.rs:114:44 [INFO] [stderr] | [INFO] [stderr] 114 | side_info.push(u.race.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try removing the `clone` call: `u.race` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day15/mod.rs:115:49 [INFO] [stderr] | [INFO] [stderr] 115 | side_info.push_str(&u.hp.clone().to_string()); [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `u.hp` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day15/mod.rs:143:14 [INFO] [stderr] | [INFO] [stderr] 143 | targets: &Vec, [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[Unit]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/day15/mod.rs:144:12 [INFO] [stderr] | [INFO] [stderr] 144 | field: &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: length comparison to zero [INFO] [stderr] --> src/day15/mod.rs:156:11 [INFO] [stderr] | [INFO] [stderr] 156 | while todo.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!todo.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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day15/mod.rs:163:25 [INFO] [stderr] | [INFO] [stderr] 163 | valids.push(current.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `current` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day15/mod.rs:178:26 [INFO] [stderr] | [INFO] [stderr] 178 | paths.insert(child.clone(), current.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `child` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day15/mod.rs:178:41 [INFO] [stderr] | [INFO] [stderr] 178 | paths.insert(child.clone(), current.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `current` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day15/mod.rs:181:24 [INFO] [stderr] | [INFO] [stderr] 181 | visited.insert(current.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `current` [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: length comparison to zero [INFO] [stderr] --> src/day15/mod.rs:183:8 [INFO] [stderr] | [INFO] [stderr] 183 | if valids.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `valids.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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day15/mod.rs:188:17 [INFO] [stderr] | [INFO] [stderr] 188 | best_step = (*paths.get(&valids[0]).unwrap()).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `(*paths.get(&valids[0]).unwrap())` [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/day15/mod.rs:188:19 [INFO] [stderr] | [INFO] [stderr] 188 | best_step = (*paths.get(&valids[0]).unwrap()).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&paths[&valids[0]]` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day15/mod.rs:189:29 [INFO] [stderr] | [INFO] [stderr] 189 | let mut previous_step = best_step.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `best_step` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day15/mod.rs:191:25 [INFO] [stderr] | [INFO] [stderr] 191 | previous_step = best_step.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `best_step` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day15/mod.rs:192:21 [INFO] [stderr] | [INFO] [stderr] 192 | best_step = (*paths.get(&best_step).unwrap()).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `(*paths.get(&best_step).unwrap())` [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/day15/mod.rs:192:23 [INFO] [stderr] | [INFO] [stderr] 192 | best_step = (*paths.get(&best_step).unwrap()).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&paths[&best_step]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/day15/mod.rs:197:21 [INFO] [stderr] | [INFO] [stderr] 197 | best_step = valids[0].clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `valids[0]` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day15/mod.rs:200:19 [INFO] [stderr] | [INFO] [stderr] 200 | let old_loc = unit.loc.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `unit.loc` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day15/mod.rs:215:25 [INFO] [stderr] | [INFO] [stderr] 215 | unit_map.insert(unit.loc.clone(), unit.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `unit.loc` [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: length comparison to zero [INFO] [stderr] --> src/day15/mod.rs:242:16 [INFO] [stderr] | [INFO] [stderr] 242 | if targets.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `targets.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/day15/mod.rs:258:16 [INFO] [stderr] | [INFO] [stderr] 258 | if valid_targets.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `valid_targets.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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/day15/mod.rs:269:16 [INFO] [stderr] | [INFO] [stderr] 269 | if unit_map.get(&best_target).unwrap().race == 'D' { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&unit_map[&best_target]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/day15/mod.rs:275:24 [INFO] [stderr] | [INFO] [stderr] 275 | winning_race = unit_iter.next().unwrap().race.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `unit_iter.next().unwrap().race` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day16/mod.rs:153:29 [INFO] [stderr] | [INFO] [stderr] 153 | found_key = key.clone(); [INFO] [stderr] | ^^^^^^^^^^^ help: try dereferencing it: `*key` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day16/mod.rs:159:20 [INFO] [stderr] | [INFO] [stderr] 159 | let inst = found_val.iter().next().unwrap().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*found_val.iter().next().unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day16/mod.rs:192:24 [INFO] [stderr] | [INFO] [stderr] 192 | let mut regs = sample.before.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `sample.before` [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/day16/mod.rs:201:73 [INFO] [stderr] | [INFO] [stderr] 201 | fn process_instruction(regs: &mut [usize; 4], inst: &[usize; 4], itype: &OpCode) { [INFO] [stderr] | ^^^^^^^ help: consider passing by value instead: `OpCode` [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/day16/mod.rs:262:47 [INFO] [stderr] | [INFO] [stderr] 262 | process_instruction(&mut regs, &inst, spec.get(&inst[0]).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&spec[&inst[0]]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/day17/mod.rs:52:11 [INFO] [stderr] | [INFO] [stderr] 52 | while sources.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!sources.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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day17/mod.rs:72:23 [INFO] [stderr] | [INFO] [stderr] 72 | let mut current = source.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try dereferencing it: `*source` [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: an inclusive range would be more readable [INFO] [stderr] --> src/day17/mod.rs:127:22 [INFO] [stderr] | [INFO] [stderr] 127 | for x in left.x + 1..right.x + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: use: `left.x + 1..=right.x` [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/day17/mod.rs:140:22 [INFO] [stderr] | [INFO] [stderr] 140 | for x in left.x..right.x + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: use: `left.x..=right.x` [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/day17/mod.rs:187:18 [INFO] [stderr] | [INFO] [stderr] 187 | for y in ystart..ystop + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use: `ystart..=ystop` [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/day17/mod.rs:193:18 [INFO] [stderr] | [INFO] [stderr] 193 | for x in xstart..xstop + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use: `xstart..=xstop` [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 creates an owned instance just for comparison [INFO] [stderr] --> src/day2/mod.rs:27:26 [INFO] [stderr] | [INFO] [stderr] 27 | if result != "".to_string() { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `""` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_owned)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/day2/mod.rs:35:22 [INFO] [stderr] | [INFO] [stderr] 35 | fn check_match(left: &String, right: &String) -> String { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/day2/mod.rs:35:38 [INFO] [stderr] | [INFO] [stderr] 35 | fn check_match(left: &String, right: &String) -> String { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: taken reference of right operand [INFO] [stderr] --> src/day3/mod.rs:69:36 [INFO] [stderr] | [INFO] [stderr] 69 | field.iter().fold(0, |a, b| if b > &1 { a + 1 } else { a }) [INFO] [stderr] | ^^^^-- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/day3/mod.rs:107:56 [INFO] [stderr] | [INFO] [stderr] 107 | } else if left.lry < right.y || right.lry < left.y { [INFO] [stderr] | ________________________________________________________^ [INFO] [stderr] 108 | | false [INFO] [stderr] 109 | | } else { [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/day3/mod.rs:105:49 [INFO] [stderr] | [INFO] [stderr] 105 | if left.lrx < right.x || right.lrx < left.x { [INFO] [stderr] | _________________________________________________^ [INFO] [stderr] 106 | | false [INFO] [stderr] 107 | | } else if left.lry < right.y || right.lry < left.y { [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/day3/mod.rs:107:12 [INFO] [stderr] | [INFO] [stderr] 107 | } else if left.lry < right.y || right.lry < left.y { [INFO] [stderr] | ____________^ [INFO] [stderr] 108 | | false [INFO] [stderr] 109 | | } else { [INFO] [stderr] 110 | | true [INFO] [stderr] 111 | | } [INFO] [stderr] | |_____^ help: you can reduce it to: `!(left.lry < right.y || right.lry < left.y)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/day4/mod.rs:109:35 [INFO] [stderr] | [INFO] [stderr] 109 | if claim.data.starts_with("#") { [INFO] [stderr] | ^^^ help: try using a char instead: `'#'` [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: use of `or_insert` followed by a function call [INFO] [stderr] --> src/day4/mod.rs:115:54 [INFO] [stderr] | [INFO] [stderr] 115 | let watch = watches.entry(guard.clone()).or_insert(Vec::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(Vec::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: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/day4/mod.rs:140:34 [INFO] [stderr] | [INFO] [stderr] 140 | let total = totals.iter().fold(0, |acc, x| acc + x); [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/day5/mod.rs:23:45 [INFO] [stderr] | [INFO] [stderr] 23 | pub fn collapse_polymers_string(polystring: &String) -> String { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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/day5/mod.rs:24:5 [INFO] [stderr] | [INFO] [stderr] 24 | / polystring [INFO] [stderr] 25 | | .chars() [INFO] [stderr] 26 | | .fold(Vec::new(), |mut remaining, newchar| { [INFO] [stderr] 27 | | if remaining.len() == 0 { [INFO] [stderr] ... | [INFO] [stderr] 40 | | }).iter() [INFO] [stderr] 41 | | .map(|c| *c) [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] 24 | polystring [INFO] [stderr] 25 | .chars() [INFO] [stderr] 26 | .fold(Vec::new(), |mut remaining, newchar| { [INFO] [stderr] 27 | if remaining.len() == 0 { [INFO] [stderr] 28 | remaining.push(newchar); [INFO] [stderr] 29 | } else { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/day5/mod.rs:27:16 [INFO] [stderr] | [INFO] [stderr] 27 | if remaining.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `remaining.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: using `clone` on a `Copy` type [INFO] [stderr] --> src/day6/mod.rs:68:37 [INFO] [stderr] | [INFO] [stderr] 68 | infinite.insert(distances[0].1.clone(), true); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `distances[0].1` [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/day6/mod.rs:84:25 [INFO] [stderr] | [INFO] [stderr] 84 | }).map(|x| (x, *result.get(&x).unwrap())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&result[&x]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/day7/mod.rs:29:27 [INFO] [stderr] | [INFO] [stderr] 29 | for letter in done_at.get(&timer).unwrap() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&done_at[&timer]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/day7/mod.rs:40:12 [INFO] [stderr] | [INFO] [stderr] 40 | if options.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `options.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/day7/mod.rs:41:16 [INFO] [stderr] | [INFO] [stderr] 41 | if in_work.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!in_work.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/day7/mod.rs:52:12 [INFO] [stderr] | [INFO] [stderr] 52 | if ready.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `ready.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 `index` is only used to index `ready`. [INFO] [stderr] --> src/day7/mod.rs:56:22 [INFO] [stderr] | [INFO] [stderr] 56 | for index in 0..cmp::min(ready.len(), workers 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] 56 | for in ready.iter().take(cmp::min(ready.len(), workers as usize)) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/day7/mod.rs:58:56 [INFO] [stderr] | [INFO] [stderr] 58 | let finished_at = done_at.entry(done_time).or_insert(vec![]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/day7/mod.rs:68:32 [INFO] [stderr] | [INFO] [stderr] 68 | fn char_to_offset_time(letter: &char, offset: &i32, timer: &i32) -> i32 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [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/day7/mod.rs:68:47 [INFO] [stderr] | [INFO] [stderr] 68 | fn char_to_offset_time(letter: &char, offset: &i32, timer: &i32) -> i32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/day7/mod.rs:68:60 [INFO] [stderr] | [INFO] [stderr] 68 | fn char_to_offset_time(letter: &char, offset: &i32, timer: &i32) -> i32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `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: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/day7/mod.rs:71:23 [INFO] [stderr] | [INFO] [stderr] 71 | let result_time = (b[0] - 64) as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(b[0] - 64)` [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: length comparison to zero [INFO] [stderr] --> src/day7/mod.rs:82:12 [INFO] [stderr] | [INFO] [stderr] 82 | if options.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `options.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: single-character string constant used as pattern [INFO] [stderr] --> src/day7/mod.rs:103:42 [INFO] [stderr] | [INFO] [stderr] 103 | let v: Vec<&str> = raw.split(" ").collect(); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [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: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/day8/mod.rs:28:29 [INFO] [stderr] | [INFO] [stderr] 28 | self.metadata.iter().fold(0, |acc, x| acc + x) + self [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: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/day8/mod.rs:31:36 [INFO] [stderr] | [INFO] [stderr] 31 | .map(|x| x.check_sum()) [INFO] [stderr] | ____________________________________^ [INFO] [stderr] 32 | | .fold(0, |acc, x| acc + x) [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: length comparison to zero [INFO] [stderr] --> src/day8/mod.rs:36:12 [INFO] [stderr] | [INFO] [stderr] 36 | if self.children.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.children.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: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/day8/mod.rs:37:33 [INFO] [stderr] | [INFO] [stderr] 37 | self.metadata.iter().fold(0, |acc, x| acc + x) [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: single-character string constant used as pattern [INFO] [stderr] --> src/day8/mod.rs:86:16 [INFO] [stderr] | [INFO] [stderr] 86 | .split(" ") [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [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: an inclusive range would be more readable [INFO] [stderr] --> src/day9/mod.rs:32:17 [INFO] [stderr] | [INFO] [stderr] 32 | for play in 1..last_marble + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: use: `1..=last_marble` [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] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `aoc2018`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "0fc6d145ec60deea253a4e0920fe3538aa50177a91b263fc1b3b93e8d6b05a36"` [INFO] running `"docker" "rm" "-f" "0fc6d145ec60deea253a4e0920fe3538aa50177a91b263fc1b3b93e8d6b05a36"` [INFO] [stdout] 0fc6d145ec60deea253a4e0920fe3538aa50177a91b263fc1b3b93e8d6b05a36