[INFO] cloning repository https://github.com/skarlman/Codingame-SpringChallenge-2021 [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/skarlman/Codingame-SpringChallenge-2021" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fskarlman%2FCodingame-SpringChallenge-2021", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fskarlman%2FCodingame-SpringChallenge-2021'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 314f6fc5dc7cfe9bfccb2d4dd69af384c9624bb1 [INFO] testing skarlman/Codingame-SpringChallenge-2021 against beta-2022-04-10 for beta-1.61-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fskarlman%2FCodingame-SpringChallenge-2021" "/workspace/builds/worker-11/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-11/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/skarlman/Codingame-SpringChallenge-2021 on toolchain beta-2022-04-10 [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+beta-2022-04-10" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/skarlman/Codingame-SpringChallenge-2021 [INFO] finished tweaking git repo https://github.com/skarlman/Codingame-SpringChallenge-2021 [INFO] tweaked toml for git repo https://github.com/skarlman/Codingame-SpringChallenge-2021 written to /workspace/builds/worker-11/source/Cargo.toml [INFO] crate git repo https://github.com/skarlman/Codingame-SpringChallenge-2021 already has a lockfile, it will not be regenerated [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+beta-2022-04-10" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-11/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-11/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:b0c94ce3c1162fcb8e57cac5b65ec2f72eabb1eebea4fcc35e269e823f681646" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2022-04-10" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 97ab6d964461b54016bc90bb08900289779ee98d092ede20a1a754611d7eb4dd [INFO] running `Command { std: "docker" "start" "-a" "97ab6d964461b54016bc90bb08900289779ee98d092ede20a1a754611d7eb4dd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "97ab6d964461b54016bc90bb08900289779ee98d092ede20a1a754611d7eb4dd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "97ab6d964461b54016bc90bb08900289779ee98d092ede20a1a754611d7eb4dd", kill_on_drop: false }` [INFO] [stdout] 97ab6d964461b54016bc90bb08900289779ee98d092ede20a1a754611d7eb4dd [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-11/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-11/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=warn" "-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:b0c94ce3c1162fcb8e57cac5b65ec2f72eabb1eebea4fcc35e269e823f681646" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2022-04-10" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] f2d53dd8910f53171e428eed82367019ae8b9ba072647ad02cbfdac8e01d05d2 [INFO] running `Command { std: "docker" "start" "-a" "f2d53dd8910f53171e428eed82367019ae8b9ba072647ad02cbfdac8e01d05d2", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.94 [INFO] [stderr] Compiling getrandom v0.2.2 [INFO] [stderr] Compiling rand_core v0.6.2 [INFO] [stderr] Compiling rand_chacha v0.3.0 [INFO] [stderr] Compiling rand v0.8.3 [INFO] [stderr] Compiling rustbot v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `std::panic::resume_unwind` [INFO] [stdout] --> src/main.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::panic::resume_unwind; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Duration` [INFO] [stdout] --> src/main.rs:7:17 [INFO] [stdout] | [INFO] [stdout] 7 | use std::time::{Duration, Instant}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::arch::x86_64::_mm_sha1rnds4_epu32` [INFO] [stdout] --> src/main.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use std::arch::x86_64::_mm_sha1rnds4_epu32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/main.rs:422:12 [INFO] [stdout] | [INFO] [stdout] 422 | if (current_sun_balance[player] < 4 || possible_choices.len() == 0) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 422 - if (current_sun_balance[player] < 4 || possible_choices.len() == 0) { [INFO] [stdout] 422 + if current_sun_balance[player] < 4 || possible_choices.len() == 0 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/main.rs:516:36 [INFO] [stdout] | [INFO] [stdout] 516 | shadow_cost += (match board.get(&cell_index).unwrap().richness { [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 520 | }); [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 516 ~ shadow_cost += match board.get(&cell_index).unwrap().richness { [INFO] [stdout] 517 | 2 => nutrients + 2, [INFO] [stdout] 518 | 3 => nutrients + 4, [INFO] [stdout] 519 | _ => nutrients [INFO] [stdout] 520 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/main.rs:65:17 [INFO] [stdout] | [INFO] [stdout] 64 | panic!("Wrong action input"); [INFO] [stdout] | ---------------------------- any code following this expression is unreachable [INFO] [stdout] 65 | Action::Wait [INFO] [stdout] | ^^^^^^^^^^^^ unreachable expression [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/main.rs:32:9 [INFO] [stdout] | [INFO] [stdout] 32 | for i in 0..number_of_trees as usize { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/main.rs:105:9 [INFO] [stdout] | [INFO] [stdout] 105 | for i in 0..number_of_possible_actions as usize { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/main.rs:161:9 [INFO] [stdout] | [INFO] [stdout] 161 | for i in 0..number_of_cells as usize { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `neigh_0` [INFO] [stdout] --> src/main.rs:168:13 [INFO] [stdout] | [INFO] [stdout] 168 | let neigh_0 = parse_input!(inputs[2], i32); // the index of the neighbouring cell for each direction [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_0` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `neigh_1` [INFO] [stdout] --> src/main.rs:169:13 [INFO] [stdout] | [INFO] [stdout] 169 | let neigh_1 = parse_input!(inputs[3], i32); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `neigh_2` [INFO] [stdout] --> src/main.rs:170:13 [INFO] [stdout] | [INFO] [stdout] 170 | let neigh_2 = parse_input!(inputs[4], i32); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `neigh_3` [INFO] [stdout] --> src/main.rs:171:13 [INFO] [stdout] | [INFO] [stdout] 171 | let neigh_3 = parse_input!(inputs[5], i32); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_3` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `neigh_4` [INFO] [stdout] --> src/main.rs:172:13 [INFO] [stdout] | [INFO] [stdout] 172 | let neigh_4 = parse_input!(inputs[6], i32); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_4` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `neigh_5` [INFO] [stdout] --> src/main.rs:173:13 [INFO] [stdout] | [INFO] [stdout] 173 | let neigh_5 = parse_input!(inputs[7], i32); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_5` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `previous_action` [INFO] [stdout] --> src/main.rs:189:13 [INFO] [stdout] | [INFO] [stdout] 189 | let mut previous_action = Action::Null; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_previous_action` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `is_new_day` is assigned to, but never used [INFO] [stdout] --> src/main.rs:192:13 [INFO] [stdout] | [INFO] [stdout] 192 | let mut is_new_day = false; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_is_new_day` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `is_new_day` is never read [INFO] [stdout] --> src/main.rs:200:13 [INFO] [stdout] | [INFO] [stdout] 200 | is_new_day = true; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_assignments)]` on by default [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ak` [INFO] [stdout] --> src/main.rs:332:23 [INFO] [stdout] | [INFO] [stdout] 332 | .max_by(|(ak, (a_count, a_score)), (bk, (b_count, b_score))| a_score.partial_cmp(&b_score).unwrap()) [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_ak` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `a_count` [INFO] [stdout] --> src/main.rs:332:28 [INFO] [stdout] | [INFO] [stdout] 332 | .max_by(|(ak, (a_count, a_score)), (bk, (b_count, b_score))| a_score.partial_cmp(&b_score).unwrap()) [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_a_count` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bk` [INFO] [stdout] --> src/main.rs:332:49 [INFO] [stdout] | [INFO] [stdout] 332 | .max_by(|(ak, (a_count, a_score)), (bk, (b_count, b_score))| a_score.partial_cmp(&b_score).unwrap()) [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_bk` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `b_count` [INFO] [stdout] --> src/main.rs:332:54 [INFO] [stdout] | [INFO] [stdout] 332 | .max_by(|(ak, (a_count, a_score)), (bk, (b_count, b_score))| a_score.partial_cmp(&b_score).unwrap()) [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_b_count` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `i` is assigned to, but never used [INFO] [stdout] --> src/main.rs:242:17 [INFO] [stdout] | [INFO] [stdout] 242 | let mut i = 0; [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_i` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `k` [INFO] [stdout] --> src/main.rs:497:26 [INFO] [stdout] | [INFO] [stdout] 497 | for (k, t) in trees { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_k` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `expected_actions` [INFO] [stdout] --> src/main.rs:338:298 [INFO] [stdout] | [INFO] [stdout] 338 | ...g: &mut ThreadRng, expected_actions: &ActionList) -> ([i32; 2], [i32; 2], i32, Action, GameContext, [[i32; 4]; 2], [bool; 2]) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_expected_actions` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `x` [INFO] [stdout] --> src/main.rs:532:109 [INFO] [stdout] | [INFO] [stdout] 532 | let n:i32 = board[target_id].neighbors_ids.iter().filter(|id| !trees.contains_key(id)).map(|x| 1).sum(); [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_x` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `origin_id` [INFO] [stdout] --> src/main.rs:531:37 [INFO] [stdout] | [INFO] [stdout] 531 | Action::Seed(target_id, origin_id) => { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_origin_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `visited` [INFO] [stdout] --> src/main.rs:588:17 [INFO] [stdout] | [INFO] [stdout] 588 | let mut visited: HashSet = HashSet::new(); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_visited` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `id` [INFO] [stdout] --> src/main.rs:639:23 [INFO] [stdout] | [INFO] [stdout] 639 | .filter(|(id, tree)| (tree.is_mine && player == 0 || !tree.is_mine && player == 1) && !tree.is_dormant && tree.size == 3) [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `id` [INFO] [stdout] --> src/main.rs:640:20 [INFO] [stdout] | [INFO] [stdout] 640 | .map(|(id, tree)| Action::Complete(tree.cell_index)) [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `id` [INFO] [stdout] --> src/main.rs:667:23 [INFO] [stdout] | [INFO] [stdout] 667 | ... .filter(|(id, tree)| (tree.is_mine && player == 0 || !tree.is_mine && player == 1) && !tree.is_dormant && tree.size < 3 && tree_cos... [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `id` [INFO] [stdout] --> src/main.rs:710:27 [INFO] [stdout] | [INFO] [stdout] 710 | .filter(|(id, tree)| (tree.is_mine && player == 0 || !tree.is_mine && player == 1) && tree.size > 0) [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `id` [INFO] [stdout] --> src/main.rs:711:24 [INFO] [stdout] | [INFO] [stdout] 711 | .map(|(id, tree)| get_sun_points_from_tree(&tree, &board, &trees, sun_direction)).sum(); [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:189:9 [INFO] [stdout] | [INFO] [stdout] 189 | let mut previous_action = Action::Null; [INFO] [stdout] | ----^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:222:45 [INFO] [stdout] | [INFO] [stdout] 222 | fn playout_moves(context: &GameContext, mut forest: &mut Forest, board: &Area, expected_actions: &ActionList) -> (String, f64, i32, i... [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: cannot borrow `results` as mutable because it is also borrowed as immutable [INFO] [stdout] --> src/main.rs:318:17 [INFO] [stdout] | [INFO] [stdout] 317 | let (cur_counts, cur_score) = results.get(&action_str).unwrap(); [INFO] [stdout] | ------------------------ immutable borrow occurs here [INFO] [stdout] 318 | results.insert(action_str, (cur_counts + 1, (score as f64 + cur_score * (*cur_counts as f64)) / (cur_counts + 1) as f64)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^----------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | | [INFO] [stdout] | | immutable borrow later used here [INFO] [stdout] | mutable borrow occurs here [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(mutable_borrow_reservation_conflict)]` on by default [INFO] [stdout] = warning: this borrowing pattern was not meant to be accepted, and may become a hard error in the future [INFO] [stdout] = note: for more information, see issue #59159 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:588:13 [INFO] [stdout] | [INFO] [stdout] 588 | let mut visited: HashSet = HashSet::new(); [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:649:13 [INFO] [stdout] | [INFO] [stdout] 649 | let mut tree_costs = [0 + my_trees_counts[0], 1 + my_trees_counts[1], 3 + my_trees_counts[2], 7 + my_trees_counts[3]]; [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field is never read: `op_is_waiting` [INFO] [stdout] --> src/main.rs:122:5 [INFO] [stdout] | [INFO] [stdout] 122 | op_is_waiting: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] note: `GameContext` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] --> src/main.rs:114:16 [INFO] [stdout] | [INFO] [stdout] 114 | #[derive(Copy, Clone)] [INFO] [stdout] | ^^^^^ [INFO] [stdout] = note: this warning originates in the derive macro `Clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field is never read: `index` [INFO] [stdout] --> src/main.rs:148:5 [INFO] [stdout] | [INFO] [stdout] 148 | index: i32, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 40 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 4.34s [INFO] running `Command { std: "docker" "inspect" "f2d53dd8910f53171e428eed82367019ae8b9ba072647ad02cbfdac8e01d05d2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f2d53dd8910f53171e428eed82367019ae8b9ba072647ad02cbfdac8e01d05d2", kill_on_drop: false }` [INFO] [stdout] f2d53dd8910f53171e428eed82367019ae8b9ba072647ad02cbfdac8e01d05d2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-11/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-11/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=warn" "-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:b0c94ce3c1162fcb8e57cac5b65ec2f72eabb1eebea4fcc35e269e823f681646" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2022-04-10" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 34ff2eddf208d8310c5aee0735cd072cf35669f7fc3d92698895c9c7ab49211c [INFO] running `Command { std: "docker" "start" "-a" "34ff2eddf208d8310c5aee0735cd072cf35669f7fc3d92698895c9c7ab49211c", kill_on_drop: false }` [INFO] [stderr] Compiling rustbot v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `std::panic::resume_unwind` [INFO] [stdout] --> src/main.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::panic::resume_unwind; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Duration` [INFO] [stdout] --> src/main.rs:7:17 [INFO] [stdout] | [INFO] [stdout] 7 | use std::time::{Duration, Instant}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::arch::x86_64::_mm_sha1rnds4_epu32` [INFO] [stdout] --> src/main.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use std::arch::x86_64::_mm_sha1rnds4_epu32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/main.rs:422:12 [INFO] [stdout] | [INFO] [stdout] 422 | if (current_sun_balance[player] < 4 || possible_choices.len() == 0) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 422 - if (current_sun_balance[player] < 4 || possible_choices.len() == 0) { [INFO] [stdout] 422 + if current_sun_balance[player] < 4 || possible_choices.len() == 0 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/main.rs:516:36 [INFO] [stdout] | [INFO] [stdout] 516 | shadow_cost += (match board.get(&cell_index).unwrap().richness { [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 520 | }); [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 516 ~ shadow_cost += match board.get(&cell_index).unwrap().richness { [INFO] [stdout] 517 | 2 => nutrients + 2, [INFO] [stdout] 518 | 3 => nutrients + 4, [INFO] [stdout] 519 | _ => nutrients [INFO] [stdout] 520 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/main.rs:65:17 [INFO] [stdout] | [INFO] [stdout] 64 | panic!("Wrong action input"); [INFO] [stdout] | ---------------------------- any code following this expression is unreachable [INFO] [stdout] 65 | Action::Wait [INFO] [stdout] | ^^^^^^^^^^^^ unreachable expression [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/main.rs:32:9 [INFO] [stdout] | [INFO] [stdout] 32 | for i in 0..number_of_trees as usize { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/main.rs:105:9 [INFO] [stdout] | [INFO] [stdout] 105 | for i in 0..number_of_possible_actions as usize { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/main.rs:161:9 [INFO] [stdout] | [INFO] [stdout] 161 | for i in 0..number_of_cells as usize { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `neigh_0` [INFO] [stdout] --> src/main.rs:168:13 [INFO] [stdout] | [INFO] [stdout] 168 | let neigh_0 = parse_input!(inputs[2], i32); // the index of the neighbouring cell for each direction [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_0` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `neigh_1` [INFO] [stdout] --> src/main.rs:169:13 [INFO] [stdout] | [INFO] [stdout] 169 | let neigh_1 = parse_input!(inputs[3], i32); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `neigh_2` [INFO] [stdout] --> src/main.rs:170:13 [INFO] [stdout] | [INFO] [stdout] 170 | let neigh_2 = parse_input!(inputs[4], i32); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `neigh_3` [INFO] [stdout] --> src/main.rs:171:13 [INFO] [stdout] | [INFO] [stdout] 171 | let neigh_3 = parse_input!(inputs[5], i32); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_3` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `neigh_4` [INFO] [stdout] --> src/main.rs:172:13 [INFO] [stdout] | [INFO] [stdout] 172 | let neigh_4 = parse_input!(inputs[6], i32); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_4` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `neigh_5` [INFO] [stdout] --> src/main.rs:173:13 [INFO] [stdout] | [INFO] [stdout] 173 | let neigh_5 = parse_input!(inputs[7], i32); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_5` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `previous_action` [INFO] [stdout] --> src/main.rs:189:13 [INFO] [stdout] | [INFO] [stdout] 189 | let mut previous_action = Action::Null; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_previous_action` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `is_new_day` is assigned to, but never used [INFO] [stdout] --> src/main.rs:192:13 [INFO] [stdout] | [INFO] [stdout] 192 | let mut is_new_day = false; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_is_new_day` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `is_new_day` is never read [INFO] [stdout] --> src/main.rs:200:13 [INFO] [stdout] | [INFO] [stdout] 200 | is_new_day = true; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_assignments)]` on by default [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ak` [INFO] [stdout] --> src/main.rs:332:23 [INFO] [stdout] | [INFO] [stdout] 332 | .max_by(|(ak, (a_count, a_score)), (bk, (b_count, b_score))| a_score.partial_cmp(&b_score).unwrap()) [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_ak` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `a_count` [INFO] [stdout] --> src/main.rs:332:28 [INFO] [stdout] | [INFO] [stdout] 332 | .max_by(|(ak, (a_count, a_score)), (bk, (b_count, b_score))| a_score.partial_cmp(&b_score).unwrap()) [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_a_count` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bk` [INFO] [stdout] --> src/main.rs:332:49 [INFO] [stdout] | [INFO] [stdout] 332 | .max_by(|(ak, (a_count, a_score)), (bk, (b_count, b_score))| a_score.partial_cmp(&b_score).unwrap()) [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_bk` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `b_count` [INFO] [stdout] --> src/main.rs:332:54 [INFO] [stdout] | [INFO] [stdout] 332 | .max_by(|(ak, (a_count, a_score)), (bk, (b_count, b_score))| a_score.partial_cmp(&b_score).unwrap()) [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_b_count` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `i` is assigned to, but never used [INFO] [stdout] --> src/main.rs:242:17 [INFO] [stdout] | [INFO] [stdout] 242 | let mut i = 0; [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_i` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `k` [INFO] [stdout] --> src/main.rs:497:26 [INFO] [stdout] | [INFO] [stdout] 497 | for (k, t) in trees { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_k` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `expected_actions` [INFO] [stdout] --> src/main.rs:338:298 [INFO] [stdout] | [INFO] [stdout] 338 | ...g: &mut ThreadRng, expected_actions: &ActionList) -> ([i32; 2], [i32; 2], i32, Action, GameContext, [[i32; 4]; 2], [bool; 2]) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_expected_actions` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `x` [INFO] [stdout] --> src/main.rs:532:109 [INFO] [stdout] | [INFO] [stdout] 532 | let n:i32 = board[target_id].neighbors_ids.iter().filter(|id| !trees.contains_key(id)).map(|x| 1).sum(); [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_x` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `origin_id` [INFO] [stdout] --> src/main.rs:531:37 [INFO] [stdout] | [INFO] [stdout] 531 | Action::Seed(target_id, origin_id) => { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_origin_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `visited` [INFO] [stdout] --> src/main.rs:588:17 [INFO] [stdout] | [INFO] [stdout] 588 | let mut visited: HashSet = HashSet::new(); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_visited` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `id` [INFO] [stdout] --> src/main.rs:639:23 [INFO] [stdout] | [INFO] [stdout] 639 | .filter(|(id, tree)| (tree.is_mine && player == 0 || !tree.is_mine && player == 1) && !tree.is_dormant && tree.size == 3) [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `id` [INFO] [stdout] --> src/main.rs:640:20 [INFO] [stdout] | [INFO] [stdout] 640 | .map(|(id, tree)| Action::Complete(tree.cell_index)) [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `id` [INFO] [stdout] --> src/main.rs:667:23 [INFO] [stdout] | [INFO] [stdout] 667 | ... .filter(|(id, tree)| (tree.is_mine && player == 0 || !tree.is_mine && player == 1) && !tree.is_dormant && tree.size < 3 && tree_cos... [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `id` [INFO] [stdout] --> src/main.rs:710:27 [INFO] [stdout] | [INFO] [stdout] 710 | .filter(|(id, tree)| (tree.is_mine && player == 0 || !tree.is_mine && player == 1) && tree.size > 0) [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `id` [INFO] [stdout] --> src/main.rs:711:24 [INFO] [stdout] | [INFO] [stdout] 711 | .map(|(id, tree)| get_sun_points_from_tree(&tree, &board, &trees, sun_direction)).sum(); [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:189:9 [INFO] [stdout] | [INFO] [stdout] 189 | let mut previous_action = Action::Null; [INFO] [stdout] | ----^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:222:45 [INFO] [stdout] | [INFO] [stdout] 222 | fn playout_moves(context: &GameContext, mut forest: &mut Forest, board: &Area, expected_actions: &ActionList) -> (String, f64, i32, i... [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: cannot borrow `results` as mutable because it is also borrowed as immutable [INFO] [stdout] --> src/main.rs:318:17 [INFO] [stdout] | [INFO] [stdout] 317 | let (cur_counts, cur_score) = results.get(&action_str).unwrap(); [INFO] [stdout] | ------------------------ immutable borrow occurs here [INFO] [stdout] 318 | results.insert(action_str, (cur_counts + 1, (score as f64 + cur_score * (*cur_counts as f64)) / (cur_counts + 1) as f64)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^----------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | | [INFO] [stdout] | | immutable borrow later used here [INFO] [stdout] | mutable borrow occurs here [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(mutable_borrow_reservation_conflict)]` on by default [INFO] [stdout] = warning: this borrowing pattern was not meant to be accepted, and may become a hard error in the future [INFO] [stdout] = note: for more information, see issue #59159 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:588:13 [INFO] [stdout] | [INFO] [stdout] 588 | let mut visited: HashSet = HashSet::new(); [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:649:13 [INFO] [stdout] | [INFO] [stdout] 649 | let mut tree_costs = [0 + my_trees_counts[0], 1 + my_trees_counts[1], 3 + my_trees_counts[2], 7 + my_trees_counts[3]]; [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field is never read: `op_is_waiting` [INFO] [stdout] --> src/main.rs:122:5 [INFO] [stdout] | [INFO] [stdout] 122 | op_is_waiting: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] note: `GameContext` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] --> src/main.rs:114:16 [INFO] [stdout] | [INFO] [stdout] 114 | #[derive(Copy, Clone)] [INFO] [stdout] | ^^^^^ [INFO] [stdout] = note: this warning originates in the derive macro `Clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field is never read: `index` [INFO] [stdout] --> src/main.rs:148:5 [INFO] [stdout] | [INFO] [stdout] 148 | index: i32, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 40 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished test [unoptimized + debuginfo] target(s) in 0.51s [INFO] [stderr] Executable unittests src/main.rs (/opt/rustwide/target/debug/deps/rustbot-a0555ff8c0b57919) [INFO] running `Command { std: "docker" "inspect" "34ff2eddf208d8310c5aee0735cd072cf35669f7fc3d92698895c9c7ab49211c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "34ff2eddf208d8310c5aee0735cd072cf35669f7fc3d92698895c9c7ab49211c", kill_on_drop: false }` [INFO] [stdout] 34ff2eddf208d8310c5aee0735cd072cf35669f7fc3d92698895c9c7ab49211c [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-11/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-11/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=warn" "-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:b0c94ce3c1162fcb8e57cac5b65ec2f72eabb1eebea4fcc35e269e823f681646" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2022-04-10" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 49f0f83ebccf7e3c2ea5248292159edcabea507ea45aa06f721f37fe76275b76 [INFO] running `Command { std: "docker" "start" "-a" "49f0f83ebccf7e3c2ea5248292159edcabea507ea45aa06f721f37fe76275b76", kill_on_drop: false }` [INFO] [stderr] warning: unused import: `std::panic::resume_unwind` [INFO] [stderr] --> src/main.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use std::panic::resume_unwind; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `Duration` [INFO] [stderr] --> src/main.rs:7:17 [INFO] [stderr] | [INFO] [stderr] 7 | use std::time::{Duration, Instant}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::arch::x86_64::_mm_sha1rnds4_epu32` [INFO] [stderr] --> src/main.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use std::arch::x86_64::_mm_sha1rnds4_epu32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:422:12 [INFO] [stderr] | [INFO] [stderr] 422 | if (current_sun_balance[player] < 4 || possible_choices.len() == 0) { [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_parens)]` on by default [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 422 - if (current_sun_balance[player] < 4 || possible_choices.len() == 0) { [INFO] [stderr] 422 + if current_sun_balance[player] < 4 || possible_choices.len() == 0 { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/main.rs:516:36 [INFO] [stderr] | [INFO] [stderr] 516 | shadow_cost += (match board.get(&cell_index).unwrap().richness { [INFO] [stderr] | ^ [INFO] [stderr] ... [INFO] [stderr] 520 | }); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 516 ~ shadow_cost += match board.get(&cell_index).unwrap().richness { [INFO] [stderr] 517 | 2 => nutrients + 2, [INFO] [stderr] 518 | 3 => nutrients + 4, [INFO] [stderr] 519 | _ => nutrients [INFO] [stderr] 520 ~ }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unreachable expression [INFO] [stderr] --> src/main.rs:65:17 [INFO] [stderr] | [INFO] [stderr] 64 | panic!("Wrong action input"); [INFO] [stderr] | ---------------------------- any code following this expression is unreachable [INFO] [stderr] 65 | Action::Wait [INFO] [stderr] | ^^^^^^^^^^^^ unreachable expression [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unreachable_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/main.rs:32:9 [INFO] [stderr] | [INFO] [stderr] 32 | for i in 0..number_of_trees as usize { [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/main.rs:105:9 [INFO] [stderr] | [INFO] [stderr] 105 | for i in 0..number_of_possible_actions as usize { [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/main.rs:161:9 [INFO] [stderr] | [INFO] [stderr] 161 | for i in 0..number_of_cells as usize { [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `neigh_0` [INFO] [stderr] --> src/main.rs:168:13 [INFO] [stderr] | [INFO] [stderr] 168 | let neigh_0 = parse_input!(inputs[2], i32); // the index of the neighbouring cell for each direction [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_0` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `neigh_1` [INFO] [stderr] --> src/main.rs:169:13 [INFO] [stderr] | [INFO] [stderr] 169 | let neigh_1 = parse_input!(inputs[3], i32); [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_1` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `neigh_2` [INFO] [stderr] --> src/main.rs:170:13 [INFO] [stderr] | [INFO] [stderr] 170 | let neigh_2 = parse_input!(inputs[4], i32); [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_2` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `neigh_3` [INFO] [stderr] --> src/main.rs:171:13 [INFO] [stderr] | [INFO] [stderr] 171 | let neigh_3 = parse_input!(inputs[5], i32); [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_3` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `neigh_4` [INFO] [stderr] --> src/main.rs:172:13 [INFO] [stderr] | [INFO] [stderr] 172 | let neigh_4 = parse_input!(inputs[6], i32); [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_4` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `neigh_5` [INFO] [stderr] --> src/main.rs:173:13 [INFO] [stderr] | [INFO] [stderr] 173 | let neigh_5 = parse_input!(inputs[7], i32); [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_5` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `previous_action` [INFO] [stderr] --> src/main.rs:189:13 [INFO] [stderr] | [INFO] [stderr] 189 | let mut previous_action = Action::Null; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_previous_action` [INFO] [stderr] [INFO] [stderr] warning: variable `is_new_day` is assigned to, but never used [INFO] [stderr] --> src/main.rs:192:13 [INFO] [stderr] | [INFO] [stderr] 192 | let mut is_new_day = false; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_is_new_day` instead [INFO] [stderr] [INFO] [stderr] warning: value assigned to `is_new_day` is never read [INFO] [stderr] --> src/main.rs:200:13 [INFO] [stderr] | [INFO] [stderr] 200 | is_new_day = true; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_assignments)]` on by default [INFO] [stderr] = help: maybe it is overwritten before being read? [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ak` [INFO] [stderr] --> src/main.rs:332:23 [INFO] [stderr] | [INFO] [stderr] 332 | .max_by(|(ak, (a_count, a_score)), (bk, (b_count, b_score))| a_score.partial_cmp(&b_score).unwrap()) [INFO] [stderr] | ^^ help: if this is intentional, prefix it with an underscore: `_ak` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `a_count` [INFO] [stderr] --> src/main.rs:332:28 [INFO] [stderr] | [INFO] [stderr] 332 | .max_by(|(ak, (a_count, a_score)), (bk, (b_count, b_score))| a_score.partial_cmp(&b_score).unwrap()) [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_a_count` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `bk` [INFO] [stderr] --> src/main.rs:332:49 [INFO] [stderr] | [INFO] [stderr] 332 | .max_by(|(ak, (a_count, a_score)), (bk, (b_count, b_score))| a_score.partial_cmp(&b_score).unwrap()) [INFO] [stderr] | ^^ help: if this is intentional, prefix it with an underscore: `_bk` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `b_count` [INFO] [stderr] --> src/main.rs:332:54 [INFO] [stderr] | [INFO] [stderr] 332 | .max_by(|(ak, (a_count, a_score)), (bk, (b_count, b_score))| a_score.partial_cmp(&b_score).unwrap()) [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_b_count` [INFO] [stderr] [INFO] [stderr] warning: variable `i` is assigned to, but never used [INFO] [stderr] --> src/main.rs:242:17 [INFO] [stderr] | [INFO] [stderr] 242 | let mut i = 0; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_i` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `k` [INFO] [stderr] --> src/main.rs:497:26 [INFO] [stderr] | [INFO] [stderr] 497 | for (k, t) in trees { [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_k` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `expected_actions` [INFO] [stderr] --> src/main.rs:338:298 [INFO] [stderr] | [INFO] [stderr] 338 | ...g: &mut ThreadRng, expected_actions: &ActionList) -> ([i32; 2], [i32; 2], i32, Action, GameContext, [[i32; 4]; 2], [bool; 2]) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_expected_actions` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `x` [INFO] [stderr] --> src/main.rs:532:109 [INFO] [stderr] | [INFO] [stderr] 532 | let n:i32 = board[target_id].neighbors_ids.iter().filter(|id| !trees.contains_key(id)).map(|x| 1).sum(); [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_x` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `origin_id` [INFO] [stderr] --> src/main.rs:531:37 [INFO] [stderr] | [INFO] [stderr] 531 | Action::Seed(target_id, origin_id) => { [INFO] [stderr] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_origin_id` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `visited` [INFO] [stderr] --> src/main.rs:588:17 [INFO] [stderr] | [INFO] [stderr] 588 | let mut visited: HashSet = HashSet::new(); [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_visited` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `id` [INFO] [stderr] --> src/main.rs:639:23 [INFO] [stderr] | [INFO] [stderr] 639 | .filter(|(id, tree)| (tree.is_mine && player == 0 || !tree.is_mine && player == 1) && !tree.is_dormant && tree.size == 3) [INFO] [stderr] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `id` [INFO] [stderr] --> src/main.rs:640:20 [INFO] [stderr] | [INFO] [stderr] 640 | .map(|(id, tree)| Action::Complete(tree.cell_index)) [INFO] [stderr] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `id` [INFO] [stderr] --> src/main.rs:667:23 [INFO] [stderr] | [INFO] [stderr] 667 | ... .filter(|(id, tree)| (tree.is_mine && player == 0 || !tree.is_mine && player == 1) && !tree.is_dormant && tree.size < 3 && tree_cos... [INFO] [stderr] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `id` [INFO] [stderr] --> src/main.rs:710:27 [INFO] [stderr] | [INFO] [stderr] 710 | .filter(|(id, tree)| (tree.is_mine && player == 0 || !tree.is_mine && player == 1) && tree.size > 0) [INFO] [stderr] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `id` [INFO] [stderr] --> src/main.rs:711:24 [INFO] [stderr] | [INFO] [stderr] 711 | .map(|(id, tree)| get_sun_points_from_tree(&tree, &board, &trees, sun_direction)).sum(); [INFO] [stderr] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:189:9 [INFO] [stderr] | [INFO] [stderr] 189 | let mut previous_action = Action::Null; [INFO] [stderr] | ----^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:222:45 [INFO] [stderr] | [INFO] [stderr] 222 | fn playout_moves(context: &GameContext, mut forest: &mut Forest, board: &Area, expected_actions: &ActionList) -> (String, f64, i32, i... [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: cannot borrow `results` as mutable because it is also borrowed as immutable [INFO] [stderr] --> src/main.rs:318:17 [INFO] [stderr] | [INFO] [stderr] 317 | let (cur_counts, cur_score) = results.get(&action_str).unwrap(); [INFO] [stderr] | ------------------------ immutable borrow occurs here [INFO] [stderr] 318 | results.insert(action_str, (cur_counts + 1, (score as f64 + cur_score * (*cur_counts as f64)) / (cur_counts + 1) as f64)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^----------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | | [INFO] [stderr] | | immutable borrow later used here [INFO] [stderr] | mutable borrow occurs here [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(mutable_borrow_reservation_conflict)]` on by default [INFO] [stderr] = warning: this borrowing pattern was not meant to be accepted, and may become a hard error in the future [INFO] [stderr] = note: for more information, see issue #59159 [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:588:13 [INFO] [stderr] | [INFO] [stderr] 588 | let mut visited: HashSet = HashSet::new(); [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:649:13 [INFO] [stderr] | [INFO] [stderr] 649 | let mut tree_costs = [0 + my_trees_counts[0], 1 + my_trees_counts[1], 3 + my_trees_counts[2], 7 + my_trees_counts[3]]; [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: field is never read: `op_is_waiting` [INFO] [stderr] --> src/main.rs:122:5 [INFO] [stderr] | [INFO] [stderr] 122 | op_is_waiting: bool, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] note: `GameContext` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stderr] --> src/main.rs:114:16 [INFO] [stderr] | [INFO] [stderr] 114 | #[derive(Copy, Clone)] [INFO] [stderr] | ^^^^^ [INFO] [stderr] = note: this warning originates in the derive macro `Clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: field is never read: `index` [INFO] [stderr] --> src/main.rs:148:5 [INFO] [stderr] | [INFO] [stderr] 148 | index: i32, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `rustbot` (bin "rustbot" test) generated 40 warnings [INFO] [stderr] Finished test [unoptimized + debuginfo] target(s) in 0.01s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/rustbot-a0555ff8c0b57919) [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "49f0f83ebccf7e3c2ea5248292159edcabea507ea45aa06f721f37fe76275b76", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "49f0f83ebccf7e3c2ea5248292159edcabea507ea45aa06f721f37fe76275b76", kill_on_drop: false }` [INFO] [stdout] 49f0f83ebccf7e3c2ea5248292159edcabea507ea45aa06f721f37fe76275b76