[INFO] cloning repository https://github.com/JameyCalbreze/AdventOfCode2023 [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/JameyCalbreze/AdventOfCode2023" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJameyCalbreze%2FAdventOfCode2023", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJameyCalbreze%2FAdventOfCode2023'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 812b7e1ec3a4284b452d9143836fe7c329580ddc [INFO] linting JameyCalbreze/AdventOfCode2023 against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJameyCalbreze%2FAdventOfCode2023" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/JameyCalbreze/AdventOfCode2023 [INFO] finished tweaking git repo https://github.com/JameyCalbreze/AdventOfCode2023 [INFO] tweaked toml for git repo https://github.com/JameyCalbreze/AdventOfCode2023 written to /workspace/builds/worker-7-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/JameyCalbreze/AdventOfCode2023 on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/JameyCalbreze/AdventOfCode2023 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] d54ce2df553eafb1c8d8db1b97bcae9bc4e22ddd0825626fd387698423d6da08 [INFO] running `Command { std: "docker" "start" "-a" "d54ce2df553eafb1c8d8db1b97bcae9bc4e22ddd0825626fd387698423d6da08", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "d54ce2df553eafb1c8d8db1b97bcae9bc4e22ddd0825626fd387698423d6da08", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "d54ce2df553eafb1c8d8db1b97bcae9bc4e22ddd0825626fd387698423d6da08", kill_on_drop: false }` [INFO] [stdout] d54ce2df553eafb1c8d8db1b97bcae9bc4e22ddd0825626fd387698423d6da08 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 3729f04fbc09cec8d13915bf3e859b4ae2a33799086d3b2d21f39cb303b7f19b [INFO] running `Command { std: "docker" "start" "-a" "3729f04fbc09cec8d13915bf3e859b4ae2a33799086d3b2d21f39cb303b7f19b", kill_on_drop: false }` [INFO] [stderr] Checking advent_of_code_2023 v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `HashMap` [INFO] [stdout] --> src/problems/p03.rs:1:24 [INFO] [stdout] | [INFO] [stdout] 1 | use std::collections::{HashMap, HashSet}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `core::time` [INFO] [stdout] --> src/problems/p06.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use core::time; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `io` and `string` [INFO] [stdout] --> src/main.rs:3:11 [INFO] [stdout] | [INFO] [stdout] 3 | use std::{io, string}; [INFO] [stdout] | ^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::Write` [INFO] [stdout] --> src/main.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::io::Write; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `HashMap` [INFO] [stdout] --> src/problems/p03.rs:1:24 [INFO] [stdout] | [INFO] [stdout] 1 | use std::collections::{HashMap, HashSet}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `core::time` [INFO] [stdout] --> src/problems/p06.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use core::time; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `io` and `string` [INFO] [stdout] --> src/main.rs:3:11 [INFO] [stdout] | [INFO] [stdout] 3 | use std::{io, string}; [INFO] [stdout] | ^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::Write` [INFO] [stdout] --> src/main.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::io::Write; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `pos` is never read [INFO] [stdout] --> src/problems/p04.rs:70:9 [INFO] [stdout] | [INFO] [stdout] 70 | pos += read_and_store_nums_until_terminator(&s[pos..], '\n', &mut winners); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `input` [INFO] [stdout] --> src/problems/p07.rs:15:13 [INFO] [stdout] | [INFO] [stdout] 15 | fn part_one(input: &Vec) { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_input` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `input` [INFO] [stdout] --> src/problems/p07.rs:19:13 [INFO] [stdout] | [INFO] [stdout] 19 | fn part_two(input: &Vec) { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_input` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `input` [INFO] [stdout] --> src/problems/p08.rs:9:13 [INFO] [stdout] | [INFO] [stdout] 9 | fn part_one(input: &Vec) { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_input` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `input` [INFO] [stdout] --> src/problems/p08.rs:13:13 [INFO] [stdout] | [INFO] [stdout] 13 | fn part_two(input: &Vec) { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_input` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `input` [INFO] [stdout] --> src/problems/p09.rs:9:13 [INFO] [stdout] | [INFO] [stdout] 9 | fn part_one(input: &Vec) { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_input` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `input` [INFO] [stdout] --> src/problems/p09.rs:13:13 [INFO] [stdout] | [INFO] [stdout] 13 | fn part_two(input: &Vec) { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_input` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `a` is never read [INFO] [stdout] --> src/main.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | a[5] = 15; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/main.rs:46:9 [INFO] [stdout] | [INFO] [stdout] 46 | for i in 0..number { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `c` is never read [INFO] [stdout] --> src/main.rs:44:24 [INFO] [stdout] | [INFO] [stdout] 44 | let mut c: usize = 1; // Then B = C [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `fibonacci` is never used [INFO] [stdout] --> src/main.rs:37:4 [INFO] [stdout] | [INFO] [stdout] 37 | fn fibonacci(number: usize) -> usize { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_solution` is never used [INFO] [stdout] --> src/problems/p08.rs:3:8 [INFO] [stdout] | [INFO] [stdout] 3 | pub fn get_solution() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `part_one` is never used [INFO] [stdout] --> src/problems/p08.rs:9:4 [INFO] [stdout] | [INFO] [stdout] 9 | fn part_one(input: &Vec) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `part_two` is never used [INFO] [stdout] --> src/problems/p08.rs:13:4 [INFO] [stdout] | [INFO] [stdout] 13 | fn part_two(input: &Vec) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_solution` is never used [INFO] [stdout] --> src/problems/p09.rs:3:8 [INFO] [stdout] | [INFO] [stdout] 3 | pub fn get_solution() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `part_one` is never used [INFO] [stdout] --> src/problems/p09.rs:9:4 [INFO] [stdout] | [INFO] [stdout] 9 | fn part_one(input: &Vec) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `part_two` is never used [INFO] [stdout] --> src/problems/p09.rs:13:4 [INFO] [stdout] | [INFO] [stdout] 13 | fn part_two(input: &Vec) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/problems/p01.rs:15:16 [INFO] [stdout] | [INFO] [stdout] 15 | if c >= '0' && c <= '9' { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use: `('0'..='9').contains(&c)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/problems/p01.rs:22:12 [INFO] [stdout] | [INFO] [stdout] 22 | if current_num.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!current_num.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/problems/p01.rs:24:25 [INFO] [stdout] | [INFO] [stdout] 24 | result.push(current_num.chars().nth(0).unwrap()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `current_num.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] = note: `#[warn(clippy::iter_nth_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `(usize, u32)` which implements the `Copy` trait [INFO] [stdout] --> src/problems/p01.rs:45:23 [INFO] [stdout] | [INFO] [stdout] 45 | let min_num = indexes.iter().min().unwrap().clone().1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `(*indexes.iter().min().unwrap())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `(usize, u32)` which implements the `Copy` trait [INFO] [stdout] --> src/problems/p01.rs:46:23 [INFO] [stdout] | [INFO] [stdout] 46 | let max_num = indexes.iter().max().unwrap().clone().1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `(*indexes.iter().max().unwrap())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `val` is used as a loop counter [INFO] [stdout] --> src/problems/p01.rs:61:5 [INFO] [stdout] | [INFO] [stdout] 61 | for num in numbers() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (val, num) in (1..).zip(numbers().into_iter())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/problems/p01.rs:62:9 [INFO] [stdout] | [INFO] [stdout] 62 | / match input.find(num) { [INFO] [stdout] 63 | | Some(i) => indexes.push((i, val)), [INFO] [stdout] 64 | | None => () [INFO] [stdout] 65 | | } [INFO] [stdout] | |_________^ help: try: `if let Some(i) = input.find(num) { indexes.push((i, val)) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/problems/p01.rs:66:9 [INFO] [stdout] | [INFO] [stdout] 66 | / match input.rfind(num) { [INFO] [stdout] 67 | | Some(i) => indexes.push((i,val)), [INFO] [stdout] 68 | | None => () [INFO] [stdout] 69 | | } [INFO] [stdout] | |_________^ help: try: `if let Some(i) = input.rfind(num) { indexes.push((i,val)) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `position` is used as a loop counter [INFO] [stdout] --> src/problems/p01.rs:74:5 [INFO] [stdout] | [INFO] [stdout] 74 | for c in input.chars() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (position, c) in input.chars().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/problems/p01.rs:75:12 [INFO] [stdout] | [INFO] [stdout] 75 | if c >= '1' && c <= '9' { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use: `('1'..='9').contains(&c)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/problems/p02.rs:20:41 [INFO] [stdout] | [INFO] [stdout] 20 | let games = create_games_from_input(&input); [INFO] [stdout] | ^^^^^^ help: change this to: `input` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u64` which implements the `Copy` trait [INFO] [stdout] --> src/problems/p02.rs:35:35 [INFO] [stdout] | [INFO] [stdout] 35 | let color_count = trick.get(color).unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*trick.get(color).unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u64` which implements the `Copy` trait [INFO] [stdout] --> src/problems/p02.rs:39:28 [INFO] [stdout] | [INFO] [stdout] 39 | if count.clone() < color_count { [INFO] [stdout] | ^^^^^^^^^^^^^ help: try dereferencing it: `*count` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `game_id` is used as a loop counter [INFO] [stdout] --> src/problems/p02.rs:107:9 [INFO] [stdout] | [INFO] [stdout] 107 | for game in games { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: consider using: `for (game_id, game) in (1..).zip(games.iter())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `input.get(0)` [INFO] [stdout] --> src/problems/p03.rs:14:40 [INFO] [stdout] | [INFO] [stdout] 14 | Grid::create_grid(input.len(), input.get(0).unwrap().len()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `input.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/problems/p03.rs:18:63 [INFO] [stdout] | [INFO] [stdout] 18 | for num_sym in get_numbers_from_string(line.as_str(), row.clone()) { [INFO] [stdout] | ^^^^^^^^^^^ help: try removing the `clone` call: `row` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/problems/p03.rs:27:59 [INFO] [stdout] | [INFO] [stdout] 27 | for sym in get_symbols_from_string(line.as_str(), row.clone()) { [INFO] [stdout] | ^^^^^^^^^^^ help: try removing the `clone` call: `row` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/problems/p03.rs:63:16 [INFO] [stdout] | [INFO] [stdout] 63 | if !(sym.sym == '*') { continue; } // We only care about stars [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `(sym.sym != '*')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/problems/p03.rs:66:16 [INFO] [stdout] | [INFO] [stdout] 66 | if !(nums.len() == 2) { continue; } // We only care about pairs [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `(nums.len() != 2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `input.get(0)` [INFO] [stdout] --> src/problems/p03.rs:47:40 [INFO] [stdout] | [INFO] [stdout] 47 | Grid::create_grid(input.len(), input.get(0).unwrap().len()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `input.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/problems/p03.rs:51:63 [INFO] [stdout] | [INFO] [stdout] 51 | for num_sym in get_numbers_from_string(line.as_str(), row.clone()) { [INFO] [stdout] | ^^^^^^^^^^^ help: try removing the `clone` call: `row` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/problems/p03.rs:62:59 [INFO] [stdout] | [INFO] [stdout] 62 | for sym in get_symbols_from_string(line.as_str(), row.clone()) { [INFO] [stdout] | ^^^^^^^^^^^ help: try removing the `clone` call: `row` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `pos` is never read [INFO] [stdout] --> src/problems/p04.rs:70:9 [INFO] [stdout] | [INFO] [stdout] 70 | pos += read_and_store_nums_until_terminator(&s[pos..], '\n', &mut winners); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> src/problems/p03.rs:154:9 [INFO] [stdout] | [INFO] [stdout] 154 | / match possible { [INFO] [stdout] 155 | | Some(num_sym) => Some(num_sym.clone()), [INFO] [stdout] 156 | | None => None [INFO] [stdout] 157 | | } [INFO] [stdout] | |_________^ help: try: `possible.as_ref().map(|num_sym| num_sym.clone())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] = note: `#[warn(clippy::manual_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: replacing an `Option` with `Some(..)` [INFO] [stdout] --> src/problems/p03.rs:193:21 [INFO] [stdout] | [INFO] [stdout] 193 | let _ = std::mem::replace(value, Some(num.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::replace()` instead: `value.replace(num.clone())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_some [INFO] [stdout] = note: `#[warn(clippy::mem_replace_option_with_some)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/problems/p03.rs:220:13 [INFO] [stdout] | [INFO] [stdout] 220 | / match self.get_num_at_coord(&c) { [INFO] [stdout] 221 | | Some(num) => { num_set.insert(num); }, [INFO] [stdout] 222 | | None => () [INFO] [stdout] 223 | | }; [INFO] [stdout] | |_____________^ help: try: `if let Some(num) = self.get_num_at_coord(&c) { num_set.insert(num); }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/problems/p03.rs:236:12 [INFO] [stdout] | [INFO] [stdout] 236 | if c >= '0' && c <= '9' { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use: `('0'..='9').contains(&c)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `column` is used as a loop counter [INFO] [stdout] --> src/problems/p03.rs:259:5 [INFO] [stdout] | [INFO] [stdout] 259 | for c in line.chars() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (column, c) in line.chars().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/problems/p03.rs:260:14 [INFO] [stdout] | [INFO] [stdout] 260 | if !((c >= '0' && c <= '9') || c == '.') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: use: `('0'..='9').contains(&c)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `char` which implements the `Copy` trait [INFO] [stdout] --> src/problems/p03.rs:266:22 [INFO] [stdout] | [INFO] [stdout] 266 | sym: c.clone() [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `input` [INFO] [stdout] --> src/problems/p07.rs:15:13 [INFO] [stdout] | [INFO] [stdout] 15 | fn part_one(input: &Vec) { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_input` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `input` [INFO] [stdout] --> src/problems/p07.rs:19:13 [INFO] [stdout] | [INFO] [stdout] 19 | fn part_two(input: &Vec) { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_input` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `input` [INFO] [stdout] --> src/problems/p08.rs:9:13 [INFO] [stdout] | [INFO] [stdout] 9 | fn part_one(input: &Vec) { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_input` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `input` [INFO] [stdout] --> src/problems/p08.rs:13:13 [INFO] [stdout] | [INFO] [stdout] 13 | fn part_two(input: &Vec) { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_input` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `input` [INFO] [stdout] --> src/problems/p09.rs:9:13 [INFO] [stdout] | [INFO] [stdout] 9 | fn part_one(input: &Vec) { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_input` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `input` [INFO] [stdout] --> src/problems/p09.rs:13:13 [INFO] [stdout] | [INFO] [stdout] 13 | fn part_two(input: &Vec) { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_input` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `a` is never read [INFO] [stdout] --> src/main.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | a[5] = 15; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/main.rs:46:9 [INFO] [stdout] | [INFO] [stdout] 46 | for i in 0..number { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `c` is never read [INFO] [stdout] --> src/main.rs:44:24 [INFO] [stdout] | [INFO] [stdout] 44 | let mut c: usize = 1; // Then B = C [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `fibonacci` is never used [INFO] [stdout] --> src/main.rs:37:4 [INFO] [stdout] | [INFO] [stdout] 37 | fn fibonacci(number: usize) -> usize { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_solution` is never used [INFO] [stdout] --> src/problems/p08.rs:3:8 [INFO] [stdout] | [INFO] [stdout] 3 | pub fn get_solution() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `part_one` is never used [INFO] [stdout] --> src/problems/p08.rs:9:4 [INFO] [stdout] | [INFO] [stdout] 9 | fn part_one(input: &Vec) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `part_two` is never used [INFO] [stdout] --> src/problems/p08.rs:13:4 [INFO] [stdout] | [INFO] [stdout] 13 | fn part_two(input: &Vec) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_solution` is never used [INFO] [stdout] --> src/problems/p09.rs:3:8 [INFO] [stdout] | [INFO] [stdout] 3 | pub fn get_solution() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> src/problems/p03.rs:350:5 [INFO] [stdout] | [INFO] [stdout] 350 | / let mut expected_output: Vec = Vec::new(); [INFO] [stdout] 351 | | expected_output.push(NumSym { [INFO] [stdout] 352 | | id_cord: Coordinate { [INFO] [stdout] 353 | | row: 0, [INFO] [stdout] ... | [INFO] [stdout] 357 | | value: 123 [INFO] [stdout] 358 | | }); [INFO] [stdout] | |_______^ help: consider using the `vec![]` macro: `let expected_output: Vec = vec![..];` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push [INFO] [stdout] = note: `#[warn(clippy::vec_init_then_push)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `part_one` is never used [INFO] [stdout] --> src/problems/p09.rs:9:4 [INFO] [stdout] | [INFO] [stdout] 9 | fn part_one(input: &Vec) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `part_two` is never used [INFO] [stdout] --> src/problems/p09.rs:13:4 [INFO] [stdout] | [INFO] [stdout] 13 | fn part_two(input: &Vec) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> src/problems/p03.rs:368:5 [INFO] [stdout] | [INFO] [stdout] 368 | / let mut expected_output: Vec = Vec::new(); [INFO] [stdout] 369 | | expected_output.push(NumSym { [INFO] [stdout] 370 | | id_cord: Coordinate { [INFO] [stdout] 371 | | row: 0, [INFO] [stdout] ... | [INFO] [stdout] 375 | | value: 123 [INFO] [stdout] 376 | | }); [INFO] [stdout] | |_______^ help: consider using the `vec![]` macro: `let expected_output: Vec = vec![..];` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/problems/p01.rs:15:16 [INFO] [stdout] | [INFO] [stdout] 15 | if c >= '0' && c <= '9' { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use: `('0'..='9').contains(&c)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/problems/p01.rs:22:12 [INFO] [stdout] | [INFO] [stdout] 22 | if current_num.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!current_num.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/problems/p01.rs:24:25 [INFO] [stdout] | [INFO] [stdout] 24 | result.push(current_num.chars().nth(0).unwrap()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `current_num.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] = note: `#[warn(clippy::iter_nth_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `(usize, u32)` which implements the `Copy` trait [INFO] [stdout] --> src/problems/p01.rs:45:23 [INFO] [stdout] | [INFO] [stdout] 45 | let min_num = indexes.iter().min().unwrap().clone().1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `(*indexes.iter().min().unwrap())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `(usize, u32)` which implements the `Copy` trait [INFO] [stdout] --> src/problems/p01.rs:46:23 [INFO] [stdout] | [INFO] [stdout] 46 | let max_num = indexes.iter().max().unwrap().clone().1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `(*indexes.iter().max().unwrap())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `next_pos` is used as a loop counter [INFO] [stdout] --> src/problems/p04.rs:39:9 [INFO] [stdout] | [INFO] [stdout] 39 | for _ in 0..num_matches { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (next_pos, _) in (cur_card + 1..).zip((0..num_matches))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `val` is used as a loop counter [INFO] [stdout] --> src/problems/p01.rs:61:5 [INFO] [stdout] | [INFO] [stdout] 61 | for num in numbers() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (val, num) in (1..).zip(numbers().into_iter())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/problems/p01.rs:62:9 [INFO] [stdout] | [INFO] [stdout] 62 | / match input.find(num) { [INFO] [stdout] 63 | | Some(i) => indexes.push((i, val)), [INFO] [stdout] 64 | | None => () [INFO] [stdout] 65 | | } [INFO] [stdout] | |_________^ help: try: `if let Some(i) = input.find(num) { indexes.push((i, val)) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/problems/p01.rs:66:9 [INFO] [stdout] | [INFO] [stdout] 66 | / match input.rfind(num) { [INFO] [stdout] 67 | | Some(i) => indexes.push((i,val)), [INFO] [stdout] 68 | | None => () [INFO] [stdout] 69 | | } [INFO] [stdout] | |_________^ help: try: `if let Some(i) = input.rfind(num) { indexes.push((i,val)) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `position` is used as a loop counter [INFO] [stdout] --> src/problems/p01.rs:74:5 [INFO] [stdout] | [INFO] [stdout] 74 | for c in input.chars() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (position, c) in input.chars().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/problems/p01.rs:75:12 [INFO] [stdout] | [INFO] [stdout] 75 | if c >= '1' && c <= '9' { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use: `('1'..='9').contains(&c)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/problems/p02.rs:20:41 [INFO] [stdout] | [INFO] [stdout] 20 | let games = create_games_from_input(&input); [INFO] [stdout] | ^^^^^^ help: change this to: `input` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u64` which implements the `Copy` trait [INFO] [stdout] --> src/problems/p04.rs:73:17 [INFO] [stdout] | [INFO] [stdout] 73 | id: id.get(0).unwrap().clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*id.get(0).unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `id.get(0)` [INFO] [stdout] --> src/problems/p04.rs:73:17 [INFO] [stdout] | [INFO] [stdout] 73 | id: id.get(0).unwrap().clone(), [INFO] [stdout] | ^^^^^^^^^ help: try: `id.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u64` which implements the `Copy` trait [INFO] [stdout] --> src/problems/p02.rs:35:35 [INFO] [stdout] | [INFO] [stdout] 35 | let color_count = trick.get(color).unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*trick.get(color).unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u64` which implements the `Copy` trait [INFO] [stdout] --> src/problems/p02.rs:39:28 [INFO] [stdout] | [INFO] [stdout] 39 | if count.clone() < color_count { [INFO] [stdout] | ^^^^^^^^^^^^^ help: try dereferencing it: `*count` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/problems/p06.rs:11:32 [INFO] [stdout] | [INFO] [stdout] 11 | fn problem_six_part_one(input: &Vec) -> i64 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 11 - fn problem_six_part_one(input: &Vec) -> i64 { [INFO] [stdout] 11 + fn problem_six_part_one(input: &[String]) -> i64 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `input.get(0)` [INFO] [stdout] --> src/problems/p06.rs:15:37 [INFO] [stdout] | [INFO] [stdout] 15 | let times: Vec = get_times(input.get(0).unwrap()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `input.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i64` which implements the `Copy` trait [INFO] [stdout] --> src/problems/p06.rs:23:20 [INFO] [stdout] | [INFO] [stdout] 23 | let time = times.get(race_num).unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*times.get(race_num).unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i64` which implements the `Copy` trait [INFO] [stdout] --> src/problems/p06.rs:24:24 [INFO] [stdout] | [INFO] [stdout] 24 | let distance = distances.get(race_num).unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*distances.get(race_num).unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/problems/p06.rs:29:9 [INFO] [stdout] | [INFO] [stdout] 29 | answer = answer * (max_time - min_time + 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `answer *= (max_time - min_time + 1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/problems/p06.rs:37:32 [INFO] [stdout] | [INFO] [stdout] 37 | fn problem_six_part_two(input: &Vec) -> i64 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 37 - fn problem_six_part_two(input: &Vec) -> i64 { [INFO] [stdout] 37 + fn problem_six_part_two(input: &[String]) -> i64 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `input.get(0)` [INFO] [stdout] --> src/problems/p06.rs:39:37 [INFO] [stdout] | [INFO] [stdout] 39 | let times: Vec = get_times(input.get(0).unwrap()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `input.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `game_id` is used as a loop counter [INFO] [stdout] --> src/problems/p02.rs:107:9 [INFO] [stdout] | [INFO] [stdout] 107 | for game in games { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: consider using: `for (game_id, game) in (1..).zip(games.iter())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i64` which implements the `Copy` trait [INFO] [stdout] --> src/problems/p06.rs:46:20 [INFO] [stdout] | [INFO] [stdout] 46 | let time = times.get(race_num).unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*times.get(race_num).unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i64` which implements the `Copy` trait [INFO] [stdout] --> src/problems/p06.rs:47:24 [INFO] [stdout] | [INFO] [stdout] 47 | let distance = distances.get(race_num).unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*distances.get(race_num).unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `input.get(0)` [INFO] [stdout] --> src/problems/p03.rs:14:40 [INFO] [stdout] | [INFO] [stdout] 14 | Grid::create_grid(input.len(), input.get(0).unwrap().len()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `input.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/problems/p03.rs:18:63 [INFO] [stdout] | [INFO] [stdout] 18 | for num_sym in get_numbers_from_string(line.as_str(), row.clone()) { [INFO] [stdout] | ^^^^^^^^^^^ help: try removing the `clone` call: `row` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/problems/p03.rs:27:59 [INFO] [stdout] | [INFO] [stdout] 27 | for sym in get_symbols_from_string(line.as_str(), row.clone()) { [INFO] [stdout] | ^^^^^^^^^^^ help: try removing the `clone` call: `row` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/problems/p03.rs:63:16 [INFO] [stdout] | [INFO] [stdout] 63 | if !(sym.sym == '*') { continue; } // We only care about stars [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `(sym.sym != '*')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/problems/p07.rs:15:20 [INFO] [stdout] | [INFO] [stdout] 15 | fn part_one(input: &Vec) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 15 - fn part_one(input: &Vec) { [INFO] [stdout] 15 + fn part_one(input: &[String]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/problems/p03.rs:66:16 [INFO] [stdout] | [INFO] [stdout] 66 | if !(nums.len() == 2) { continue; } // We only care about pairs [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `(nums.len() != 2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/problems/p07.rs:19:20 [INFO] [stdout] | [INFO] [stdout] 19 | fn part_two(input: &Vec) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 19 - fn part_two(input: &Vec) { [INFO] [stdout] 19 + fn part_two(input: &[String]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `input.get(0)` [INFO] [stdout] --> src/problems/p03.rs:47:40 [INFO] [stdout] | [INFO] [stdout] 47 | Grid::create_grid(input.len(), input.get(0).unwrap().len()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `input.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/problems/p08.rs:9:20 [INFO] [stdout] | [INFO] [stdout] 9 | fn part_one(input: &Vec) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 9 - fn part_one(input: &Vec) { [INFO] [stdout] 9 + fn part_one(input: &[String]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/problems/p08.rs:13:20 [INFO] [stdout] | [INFO] [stdout] 13 | fn part_two(input: &Vec) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 13 - fn part_two(input: &Vec) { [INFO] [stdout] 13 + fn part_two(input: &[String]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/problems/p03.rs:51:63 [INFO] [stdout] | [INFO] [stdout] 51 | for num_sym in get_numbers_from_string(line.as_str(), row.clone()) { [INFO] [stdout] | ^^^^^^^^^^^ help: try removing the `clone` call: `row` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/problems/p09.rs:9:20 [INFO] [stdout] | [INFO] [stdout] 9 | fn part_one(input: &Vec) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 9 - fn part_one(input: &Vec) { [INFO] [stdout] 9 + fn part_one(input: &[String]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/problems/p03.rs:62:59 [INFO] [stdout] | [INFO] [stdout] 62 | for sym in get_symbols_from_string(line.as_str(), row.clone()) { [INFO] [stdout] | ^^^^^^^^^^^ help: try removing the `clone` call: `row` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/problems/p09.rs:13:20 [INFO] [stdout] | [INFO] [stdout] 13 | fn part_two(input: &Vec) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 13 - fn part_two(input: &Vec) { [INFO] [stdout] 13 + fn part_two(input: &[String]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `self.rows.get(0)` [INFO] [stdout] --> src/problems/p13.rs:99:30 [INFO] [stdout] | [INFO] [stdout] 99 | let columns: usize = self.rows.get(0).unwrap().len(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `self.rows.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `cur_col` is used as a loop counter [INFO] [stdout] --> src/problems/p13.rs:111:13 [INFO] [stdout] | [INFO] [stdout] 111 | for c in row.chars() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (cur_col, c) in row.chars().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> src/problems/p03.rs:154:9 [INFO] [stdout] | [INFO] [stdout] 154 | / match possible { [INFO] [stdout] 155 | | Some(num_sym) => Some(num_sym.clone()), [INFO] [stdout] 156 | | None => None [INFO] [stdout] 157 | | } [INFO] [stdout] | |_________^ help: try: `possible.as_ref().map(|num_sym| num_sym.clone())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] = note: `#[warn(clippy::manual_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: replacing an `Option` with `Some(..)` [INFO] [stdout] --> src/problems/p03.rs:193:21 [INFO] [stdout] | [INFO] [stdout] 193 | let _ = std::mem::replace(value, Some(num.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::replace()` instead: `value.replace(num.clone())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_some [INFO] [stdout] = note: `#[warn(clippy::mem_replace_option_with_some)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/utils/mod.rs:42:12 [INFO] [stdout] | [INFO] [stdout] 42 | if c >= '0' && c <= '9' { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use: `('0'..='9').contains(&c)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/problems/p03.rs:220:13 [INFO] [stdout] | [INFO] [stdout] 220 | / match self.get_num_at_coord(&c) { [INFO] [stdout] 221 | | Some(num) => { num_set.insert(num); }, [INFO] [stdout] 222 | | None => () [INFO] [stdout] 223 | | }; [INFO] [stdout] | |_____________^ help: try: `if let Some(num) = self.get_num_at_coord(&c) { num_set.insert(num); }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/problems/p03.rs:236:12 [INFO] [stdout] | [INFO] [stdout] 236 | if c >= '0' && c <= '9' { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use: `('0'..='9').contains(&c)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `column` is used as a loop counter [INFO] [stdout] --> src/problems/p03.rs:259:5 [INFO] [stdout] | [INFO] [stdout] 259 | for c in line.chars() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (column, c) in line.chars().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/problems/p03.rs:260:14 [INFO] [stdout] | [INFO] [stdout] 260 | if !((c >= '0' && c <= '9') || c == '.') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: use: `('0'..='9').contains(&c)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `char` which implements the `Copy` trait [INFO] [stdout] --> src/problems/p03.rs:266:22 [INFO] [stdout] | [INFO] [stdout] 266 | sym: c.clone() [INFO] [stdout] | ^^^^^^^^^ help: try removing the `clone` call: `c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `next_pos` is used as a loop counter [INFO] [stdout] --> src/problems/p04.rs:39:9 [INFO] [stdout] | [INFO] [stdout] 39 | for _ in 0..num_matches { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (next_pos, _) in (cur_card + 1..).zip((0..num_matches))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u64` which implements the `Copy` trait [INFO] [stdout] --> src/problems/p04.rs:73:17 [INFO] [stdout] | [INFO] [stdout] 73 | id: id.get(0).unwrap().clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*id.get(0).unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `id.get(0)` [INFO] [stdout] --> src/problems/p04.rs:73:17 [INFO] [stdout] | [INFO] [stdout] 73 | id: id.get(0).unwrap().clone(), [INFO] [stdout] | ^^^^^^^^^ help: try: `id.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/problems/p06.rs:11:32 [INFO] [stdout] | [INFO] [stdout] 11 | fn problem_six_part_one(input: &Vec) -> i64 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 11 - fn problem_six_part_one(input: &Vec) -> i64 { [INFO] [stdout] 11 + fn problem_six_part_one(input: &[String]) -> i64 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `input.get(0)` [INFO] [stdout] --> src/problems/p06.rs:15:37 [INFO] [stdout] | [INFO] [stdout] 15 | let times: Vec = get_times(input.get(0).unwrap()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `input.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i64` which implements the `Copy` trait [INFO] [stdout] --> src/problems/p06.rs:23:20 [INFO] [stdout] | [INFO] [stdout] 23 | let time = times.get(race_num).unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*times.get(race_num).unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i64` which implements the `Copy` trait [INFO] [stdout] --> src/problems/p06.rs:24:24 [INFO] [stdout] | [INFO] [stdout] 24 | let distance = distances.get(race_num).unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*distances.get(race_num).unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/problems/p06.rs:29:9 [INFO] [stdout] | [INFO] [stdout] 29 | answer = answer * (max_time - min_time + 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `answer *= (max_time - min_time + 1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/problems/p06.rs:37:32 [INFO] [stdout] | [INFO] [stdout] 37 | fn problem_six_part_two(input: &Vec) -> i64 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 37 - fn problem_six_part_two(input: &Vec) -> i64 { [INFO] [stdout] 37 + fn problem_six_part_two(input: &[String]) -> i64 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `input.get(0)` [INFO] [stdout] --> src/problems/p06.rs:39:37 [INFO] [stdout] | [INFO] [stdout] 39 | let times: Vec = get_times(input.get(0).unwrap()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `input.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i64` which implements the `Copy` trait [INFO] [stdout] --> src/problems/p06.rs:46:20 [INFO] [stdout] | [INFO] [stdout] 46 | let time = times.get(race_num).unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*times.get(race_num).unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i64` which implements the `Copy` trait [INFO] [stdout] --> src/problems/p06.rs:47:24 [INFO] [stdout] | [INFO] [stdout] 47 | let distance = distances.get(race_num).unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*distances.get(race_num).unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/problems/p07.rs:15:20 [INFO] [stdout] | [INFO] [stdout] 15 | fn part_one(input: &Vec) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 15 - fn part_one(input: &Vec) { [INFO] [stdout] 15 + fn part_one(input: &[String]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/problems/p07.rs:19:20 [INFO] [stdout] | [INFO] [stdout] 19 | fn part_two(input: &Vec) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 19 - fn part_two(input: &Vec) { [INFO] [stdout] 19 + fn part_two(input: &[String]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/problems/p08.rs:9:20 [INFO] [stdout] | [INFO] [stdout] 9 | fn part_one(input: &Vec) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 9 - fn part_one(input: &Vec) { [INFO] [stdout] 9 + fn part_one(input: &[String]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/problems/p08.rs:13:20 [INFO] [stdout] | [INFO] [stdout] 13 | fn part_two(input: &Vec) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 13 - fn part_two(input: &Vec) { [INFO] [stdout] 13 + fn part_two(input: &[String]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/problems/p09.rs:9:20 [INFO] [stdout] | [INFO] [stdout] 9 | fn part_one(input: &Vec) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 9 - fn part_one(input: &Vec) { [INFO] [stdout] 9 + fn part_one(input: &[String]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/problems/p09.rs:13:20 [INFO] [stdout] | [INFO] [stdout] 13 | fn part_two(input: &Vec) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 13 - fn part_two(input: &Vec) { [INFO] [stdout] 13 + fn part_two(input: &[String]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `self.rows.get(0)` [INFO] [stdout] --> src/problems/p13.rs:99:30 [INFO] [stdout] | [INFO] [stdout] 99 | let columns: usize = self.rows.get(0).unwrap().len(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `self.rows.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `cur_col` is used as a loop counter [INFO] [stdout] --> src/problems/p13.rs:111:13 [INFO] [stdout] | [INFO] [stdout] 111 | for c in row.chars() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (cur_col, c) in row.chars().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/utils/mod.rs:42:12 [INFO] [stdout] | [INFO] [stdout] 42 | if c >= '0' && c <= '9' { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use: `('0'..='9').contains(&c)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.39s [INFO] running `Command { std: "docker" "inspect" "3729f04fbc09cec8d13915bf3e859b4ae2a33799086d3b2d21f39cb303b7f19b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3729f04fbc09cec8d13915bf3e859b4ae2a33799086d3b2d21f39cb303b7f19b", kill_on_drop: false }` [INFO] [stdout] 3729f04fbc09cec8d13915bf3e859b4ae2a33799086d3b2d21f39cb303b7f19b