[INFO] cloning repository https://github.com/vbo/nnrs [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/vbo/nnrs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvbo%2Fnnrs", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvbo%2Fnnrs'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] d2321ff9ded9e103826e2f6523d21cf5b8912a3b [INFO] checking vbo/nnrs against master#1f12b9b0fdbe735968ac002792a720f0ba4faca6 for crater-rollup-uwu [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvbo%2Fnnrs" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/vbo/nnrs on toolchain 1f12b9b0fdbe735968ac002792a720f0ba4faca6 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1f12b9b0fdbe735968ac002792a720f0ba4faca6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/vbo/nnrs [INFO] finished tweaking git repo https://github.com/vbo/nnrs [INFO] tweaked toml for git repo https://github.com/vbo/nnrs written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] crate git repo https://github.com/vbo/nnrs 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" "+1f12b9b0fdbe735968ac002792a720f0ba4faca6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2021 [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Updating crates.io index [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded serde_derive_internals v0.23.1 [INFO] [stderr] Downloaded proc-macro2 v0.3.7 [INFO] [stderr] Downloaded quote v0.5.2 [INFO] [stderr] Downloaded syn v0.13.1 [INFO] [stderr] Downloaded byteorder v1.2.2 [INFO] [stderr] Downloaded yaml-rust v0.3.5 [INFO] [stderr] Downloaded serde_json v1.0.16 [INFO] [stderr] Downloaded clap v2.31.2 [INFO] [stderr] Downloaded atty v0.2.9 [INFO] [stderr] Downloaded textwrap v0.9.0 [INFO] [stderr] Downloaded vec_map v0.8.0 [INFO] [stderr] Downloaded rand_derive v0.3.1 [INFO] [stderr] Downloaded serde_derive v1.0.43 [INFO] [stderr] Downloaded serde v1.0.43 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:923055f121b5182466d55868a8b05e67af8ba4a3a3f6bad814e953ca3cd3ac2a" "/opt/rustwide/cargo-home/bin/cargo" "+1f12b9b0fdbe735968ac002792a720f0ba4faca6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 757d8e3144939c16736076049c9eff3b07b91f4c36c91c79c3e8371a7fdc79ba [INFO] running `Command { std: "docker" "start" "-a" "757d8e3144939c16736076049c9eff3b07b91f4c36c91c79c3e8371a7fdc79ba", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "757d8e3144939c16736076049c9eff3b07b91f4c36c91c79c3e8371a7fdc79ba", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "757d8e3144939c16736076049c9eff3b07b91f4c36c91c79c3e8371a7fdc79ba", kill_on_drop: false }` [INFO] [stdout] 757d8e3144939c16736076049c9eff3b07b91f4c36c91c79c3e8371a7fdc79ba [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:923055f121b5182466d55868a8b05e67af8ba4a3a3f6bad814e953ca3cd3ac2a" "/opt/rustwide/cargo-home/bin/cargo" "+1f12b9b0fdbe735968ac002792a720f0ba4faca6" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 15a336bca62f6c089edb714a1ce0639500cb807d102d6f4ed564afc0fdbd32c0 [INFO] running `Command { std: "docker" "start" "-a" "15a336bca62f6c089edb714a1ce0639500cb807d102d6f4ed564afc0fdbd32c0", kill_on_drop: false }` [INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2021 [INFO] [stderr] Compiling proc-macro2 v0.3.7 [INFO] [stderr] Checking libc v0.2.40 [INFO] [stderr] Compiling unicode-xid v0.0.4 [INFO] [stderr] Checking unicode-width v0.1.4 [INFO] [stderr] Compiling quote v0.3.15 [INFO] [stderr] Compiling matrixmultiply v0.1.14 [INFO] [stderr] Checking dtoa v0.4.2 [INFO] [stderr] Checking vec_map v0.8.0 [INFO] [stderr] Checking rawpointer v0.1.0 [INFO] [stderr] Checking strsim v0.7.0 [INFO] [stderr] Checking yaml-rust v0.3.5 [INFO] [stderr] Checking itoa v0.4.1 [INFO] [stderr] Checking bitflags v1.0.1 [INFO] [stderr] Checking serde v1.0.43 [INFO] [stderr] Checking byteorder v1.2.2 [INFO] [stderr] Compiling synom v0.11.3 [INFO] [stderr] Checking textwrap v0.9.0 [INFO] [stderr] Compiling syn v0.11.11 [INFO] [stderr] Compiling quote v0.5.2 [INFO] [stderr] Checking atty v0.2.9 [INFO] [stderr] Checking rand v0.4.2 [INFO] [stderr] Checking num_cpus v1.8.0 [INFO] [stderr] Checking clap v2.31.2 [INFO] [stderr] Compiling syn v0.13.1 [INFO] [stderr] Compiling rand_derive v0.3.1 [INFO] [stderr] Compiling serde_derive_internals v0.23.1 [INFO] [stderr] Compiling serde_derive v1.0.43 [INFO] [stderr] Checking serde_json v1.0.16 [INFO] [stderr] Checking nnrs v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `std::time` [INFO] [stdout] --> src/mnist.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::time; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `math` [INFO] [stdout] --> src/mnist.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | use math; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `math::Matrix` [INFO] [stdout] --> src/mnist.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | use math::Matrix; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `timing` [INFO] [stdout] --> src/mnist.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | use timing; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::mem` [INFO] [stdout] --> src/network.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::mem; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `timing::Timing` [INFO] [stdout] --> src/parallel_trainer.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use timing::Timing; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `serde_json` [INFO] [stdout] --> src/snake.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use serde_json; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `nightly` [INFO] [stdout] --> src/snake_nn.rs:566:7 [INFO] [stdout] | [INFO] [stdout] 566 | #[cfg(nightly)] [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: expected names are: `clippy`, `debug_assertions`, `doc`, `docsrs`, `doctest`, `feature`, `miri`, `overflow_checks`, `panic`, `proc_macro`, `relocation_model`, `rustfmt`, `sanitize`, `sanitizer_cfi_generalize_pointers`, `sanitizer_cfi_normalize_integers`, `target_abi`, `target_arch`, `target_endian`, `target_env`, `target_family`, `target_feature`, `target_has_atomic`, `target_has_atomic_equal_alignment`, `target_has_atomic_load_store`, `target_os`, `target_pointer_width`, `target_thread_local`, `target_vendor`, `test`, `ub_checks`, `unix`, and `windows` [INFO] [stdout] = help: consider using a Cargo feature instead [INFO] [stdout] = help: or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint: [INFO] [stdout] [lints.rust] [INFO] [stdout] unexpected_cfgs = { level = "warn", check-cfg = ['cfg(nightly)'] } [INFO] [stdout] = help: or consider adding `println!("cargo::rustc-check-cfg=cfg(nightly)");` to the top of the `build.rs` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Network` [INFO] [stdout] --> src/snake_nn.rs:4:15 [INFO] [stdout] | [INFO] [stdout] 4 | use network::{Network, NetworkParameters, NetworkPredictor}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `IndependentSample` and `Range` [INFO] [stdout] --> src/snake_nn.rs:7:27 [INFO] [stdout] | [INFO] [stdout] 7 | use rand::distributions::{IndependentSample, Range}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::mpsc` [INFO] [stdout] --> src/snake_nn.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | use std::sync::mpsc; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Receiver` and `Sender` [INFO] [stdout] --> src/snake_nn.rs:19:23 [INFO] [stdout] | [INFO] [stdout] 19 | use std::sync::mpsc::{Receiver, Sender}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `timing::duration_as_total_nanos` [INFO] [stdout] --> src/snake_nn.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | use timing::duration_as_total_nanos; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/snake_nn.rs:340:8 [INFO] [stdout] | [INFO] [stdout] 340 | if (rng.gen_range(0.0, 1.0) <= random_move_prob) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 340 - if (rng.gen_range(0.0, 1.0) <= random_move_prob) { [INFO] [stdout] 340 + if rng.gen_range(0.0, 1.0) <= random_move_prob { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time` [INFO] [stdout] --> src/mnist.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::time; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `math` [INFO] [stdout] --> src/mnist.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | use math; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `math::Matrix` [INFO] [stdout] --> src/mnist.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | use math::Matrix; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `timing` [INFO] [stdout] --> src/mnist.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | use timing; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::mem` [INFO] [stdout] --> src/network.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::mem; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `timing::Timing` [INFO] [stdout] --> src/parallel_trainer.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use timing::Timing; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `serde_json` [INFO] [stdout] --> src/snake.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use serde_json; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `nightly` [INFO] [stdout] --> src/snake_nn.rs:566:7 [INFO] [stdout] | [INFO] [stdout] 566 | #[cfg(nightly)] [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: expected names are: `clippy`, `debug_assertions`, `doc`, `docsrs`, `doctest`, `feature`, `miri`, `overflow_checks`, `panic`, `proc_macro`, `relocation_model`, `rustfmt`, `sanitize`, `sanitizer_cfi_generalize_pointers`, `sanitizer_cfi_normalize_integers`, `target_abi`, `target_arch`, `target_endian`, `target_env`, `target_family`, `target_feature`, `target_has_atomic`, `target_has_atomic_equal_alignment`, `target_has_atomic_load_store`, `target_os`, `target_pointer_width`, `target_thread_local`, `target_vendor`, `test`, `ub_checks`, `unix`, and `windows` [INFO] [stdout] = help: consider using a Cargo feature instead [INFO] [stdout] = help: or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint: [INFO] [stdout] [lints.rust] [INFO] [stdout] unexpected_cfgs = { level = "warn", check-cfg = ['cfg(nightly)'] } [INFO] [stdout] = help: or consider adding `println!("cargo::rustc-check-cfg=cfg(nightly)");` to the top of the `build.rs` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Network` [INFO] [stdout] --> src/snake_nn.rs:4:15 [INFO] [stdout] | [INFO] [stdout] 4 | use network::{Network, NetworkParameters, NetworkPredictor}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `IndependentSample` and `Range` [INFO] [stdout] --> src/snake_nn.rs:7:27 [INFO] [stdout] | [INFO] [stdout] 7 | use rand::distributions::{IndependentSample, Range}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::mpsc` [INFO] [stdout] --> src/snake_nn.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | use std::sync::mpsc; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Receiver` and `Sender` [INFO] [stdout] --> src/snake_nn.rs:19:23 [INFO] [stdout] | [INFO] [stdout] 19 | use std::sync::mpsc::{Receiver, Sender}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `timing::duration_as_total_nanos` [INFO] [stdout] --> src/snake_nn.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | use timing::duration_as_total_nanos; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/snake_nn.rs:340:8 [INFO] [stdout] | [INFO] [stdout] 340 | if (rng.gen_range(0.0, 1.0) <= random_move_prob) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 340 - if (rng.gen_range(0.0, 1.0) <= random_move_prob) { [INFO] [stdout] 340 + if rng.gen_range(0.0, 1.0) <= random_move_prob { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::hash_map::Entry` [INFO] [stdout] --> src/timing.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::collections::hash_map::Entry; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::hash_map::Entry` [INFO] [stdout] --> src/timing.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::collections::hash_map::Entry; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: crate-level attribute should be in the root module [INFO] [stdout] --> src/snake_nn.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | #![feature(test)] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_attributes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep` [INFO] [stdout] --> src/snake_nn.rs:176:21 [INFO] [stdout] | [INFO] [stdout] 176 | thread::sleep_ms(SLEEP_INTERVAL_MS); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep` [INFO] [stdout] --> src/snake_nn.rs:212:25 [INFO] [stdout] | [INFO] [stdout] 212 | thread::sleep_ms(SLEEP_INTERVAL_MS); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: crate-level attribute should be in the root module [INFO] [stdout] --> src/snake_nn.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | #![feature(test)] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_attributes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep` [INFO] [stdout] --> src/snake_nn.rs:176:21 [INFO] [stdout] | [INFO] [stdout] 176 | thread::sleep_ms(SLEEP_INTERVAL_MS); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep` [INFO] [stdout] --> src/snake_nn.rs:212:25 [INFO] [stdout] | [INFO] [stdout] 212 | thread::sleep_ms(SLEEP_INTERVAL_MS); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rand::Rng` [INFO] [stdout] --> src/snake.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use rand::Rng; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rand::Rng` [INFO] [stdout] --> src/snake.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use rand::Rng; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `hits` [INFO] [stdout] --> src/mnist.rs:64:13 [INFO] [stdout] | [INFO] [stdout] 64 | let mut hits = 0usize; [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_hits` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `predictor` [INFO] [stdout] --> src/mnist.rs:98:30 [INFO] [stdout] | [INFO] [stdout] 98 | let (params, predictor, _) = parallel_trainer.borrow_network_parts(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_predictor` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `log_every_n` [INFO] [stdout] --> src/mnist.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 35 | log_every_n: usize, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_log_every_n` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/mnist.rs:64:9 [INFO] [stdout] | [INFO] [stdout] 64 | let mut hits = 0usize; [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/network.rs:55:13 [INFO] [stdout] | [INFO] [stdout] 55 | let mut nn: Self = serde_json::from_reader(&file).unwrap(); [INFO] [stdout] | ----^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `hits` [INFO] [stdout] --> src/mnist.rs:64:13 [INFO] [stdout] | [INFO] [stdout] 64 | let mut hits = 0usize; [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_hits` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `predictor` [INFO] [stdout] --> src/mnist.rs:98:30 [INFO] [stdout] | [INFO] [stdout] 98 | let (params, predictor, _) = parallel_trainer.borrow_network_parts(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_predictor` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `log_every_n` [INFO] [stdout] --> src/mnist.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 35 | log_every_n: usize, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_log_every_n` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/mnist.rs:64:9 [INFO] [stdout] | [INFO] [stdout] 64 | let mut hits = 0usize; [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/network.rs:55:13 [INFO] [stdout] | [INFO] [stdout] 55 | let mut nn: Self = serde_json::from_reader(&file).unwrap(); [INFO] [stdout] | ----^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `thread_no` [INFO] [stdout] --> src/parallel_trainer.rs:46:13 [INFO] [stdout] | [INFO] [stdout] 46 | for thread_no in 0..num_threads { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_thread_no` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/parallel_trainer.rs:37:14 [INFO] [stdout] | [INFO] [stdout] 37 | let (mut nn_parameters, mut nn_predictor, mut nn_trainer) = network.as_parts(); [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/parallel_trainer.rs:37:33 [INFO] [stdout] | [INFO] [stdout] 37 | let (mut nn_parameters, mut nn_predictor, mut nn_trainer) = network.as_parts(); [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/parallel_trainer.rs:37:51 [INFO] [stdout] | [INFO] [stdout] 37 | let (mut nn_parameters, mut nn_predictor, mut nn_trainer) = network.as_parts(); [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/parallel_trainer.rs:48:17 [INFO] [stdout] | [INFO] [stdout] 48 | let mut local_nn_predictor = nn_predictor.clone(); [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/parallel_trainer.rs:49:17 [INFO] [stdout] | [INFO] [stdout] 49 | let mut local_nn_trainer = Arc::new(Mutex::new(nn_trainer.clone())); [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/parallel_trainer.rs:94:21 [INFO] [stdout] | [INFO] [stdout] 94 | let mut output_nn_trainer = output_nn_trainer.lock().unwrap(); [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `outputs` [INFO] [stdout] --> src/parallel_trainer.rs:150:21 [INFO] [stdout] | [INFO] [stdout] 150 | let outputs = local_nn_predictor [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_outputs` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/parallel_trainer.rs:123:5 [INFO] [stdout] | [INFO] [stdout] 123 | mut job_receiver: Arc>>, [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/parallel_trainer.rs:124:5 [INFO] [stdout] | [INFO] [stdout] 124 | mut output_sender: Sender>>, [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/parallel_trainer.rs:126:5 [INFO] [stdout] | [INFO] [stdout] 126 | mut local_nn_trainer: Arc>, [INFO] [stdout] | ----^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `layer_order` [INFO] [stdout] --> src/network.rs:645:13 [INFO] [stdout] | [INFO] [stdout] 645 | let layer_order = nn.calc_layers_order(); [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_layer_order` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `thread_no` [INFO] [stdout] --> src/parallel_trainer.rs:46:13 [INFO] [stdout] | [INFO] [stdout] 46 | for thread_no in 0..num_threads { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_thread_no` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/parallel_trainer.rs:37:14 [INFO] [stdout] | [INFO] [stdout] 37 | let (mut nn_parameters, mut nn_predictor, mut nn_trainer) = network.as_parts(); [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/parallel_trainer.rs:37:33 [INFO] [stdout] | [INFO] [stdout] 37 | let (mut nn_parameters, mut nn_predictor, mut nn_trainer) = network.as_parts(); [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/parallel_trainer.rs:37:51 [INFO] [stdout] | [INFO] [stdout] 37 | let (mut nn_parameters, mut nn_predictor, mut nn_trainer) = network.as_parts(); [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/parallel_trainer.rs:48:17 [INFO] [stdout] | [INFO] [stdout] 48 | let mut local_nn_predictor = nn_predictor.clone(); [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/parallel_trainer.rs:49:17 [INFO] [stdout] | [INFO] [stdout] 49 | let mut local_nn_trainer = Arc::new(Mutex::new(nn_trainer.clone())); [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/parallel_trainer.rs:94:21 [INFO] [stdout] | [INFO] [stdout] 94 | let mut output_nn_trainer = output_nn_trainer.lock().unwrap(); [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `outputs` [INFO] [stdout] --> src/parallel_trainer.rs:150:21 [INFO] [stdout] | [INFO] [stdout] 150 | let outputs = local_nn_predictor [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_outputs` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/parallel_trainer.rs:123:5 [INFO] [stdout] | [INFO] [stdout] 123 | mut job_receiver: Arc>>, [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/parallel_trainer.rs:124:5 [INFO] [stdout] | [INFO] [stdout] 124 | mut output_sender: Sender>>, [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/parallel_trainer.rs:126:5 [INFO] [stdout] | [INFO] [stdout] 126 | mut local_nn_trainer: Arc>, [INFO] [stdout] | ----^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `iters` [INFO] [stdout] --> src/snake.rs:168:21 [INFO] [stdout] | [INFO] [stdout] 168 | let mut iters = 0; [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_iters` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/snake.rs:168:17 [INFO] [stdout] | [INFO] [stdout] 168 | let mut iters = 0; [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `epoch_no` [INFO] [stdout] --> src/snake_nn.rs:73:9 [INFO] [stdout] | [INFO] [stdout] 73 | for epoch_no in 0..num_epochs { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_epoch_no` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `predictor` [INFO] [stdout] --> src/snake_nn.rs:90:30 [INFO] [stdout] | [INFO] [stdout] 90 | let (params, predictor, _) = parallel_trainer.borrow_network_parts(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_predictor` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `predictor` [INFO] [stdout] --> src/snake_nn.rs:109:18 [INFO] [stdout] | [INFO] [stdout] 109 | let (params, predictor, _) = parallel_trainer.borrow_network_parts(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_predictor` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/snake_nn.rs:57:9 [INFO] [stdout] | [INFO] [stdout] 57 | let mut nn = network::Network::load_from_file(model_input_path); [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/snake_nn.rs:131:21 [INFO] [stdout] | [INFO] [stdout] 131 | let mut state = GameState { [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/snake_nn.rs:115:9 [INFO] [stdout] | [INFO] [stdout] 115 | let mut nn = network::Network::load_from_file(model_path); [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/snake_nn.rs:231:13 [INFO] [stdout] | [INFO] [stdout] 231 | let mut layer = nn.add_hidden_layer(shape[i]); [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `iters` [INFO] [stdout] --> src/snake.rs:168:21 [INFO] [stdout] | [INFO] [stdout] 168 | let mut iters = 0; [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_iters` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `max_gain` [INFO] [stdout] --> src/snake_nn.rs:357:13 [INFO] [stdout] | [INFO] [stdout] 357 | let (i, max_gain) = get_max_with_pos(snake_inputs_gains.as_slice()); [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_gain` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/snake.rs:168:17 [INFO] [stdout] | [INFO] [stdout] 168 | let mut iters = 0; [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `is_next_action_optimal` [INFO] [stdout] --> src/snake_nn.rs:503:13 [INFO] [stdout] | [INFO] [stdout] 503 | let is_next_action_optimal = session[i - 1].is_optimal; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_next_action_optimal` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/snake_nn.rs:530:9 [INFO] [stdout] | [INFO] [stdout] 530 | for i in 0..MAP_WIDTH * MAP_HEIGHT - 1 { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `epoch_no` [INFO] [stdout] --> src/snake_nn.rs:73:9 [INFO] [stdout] | [INFO] [stdout] 73 | for epoch_no in 0..num_epochs { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_epoch_no` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `predictor` [INFO] [stdout] --> src/snake_nn.rs:90:30 [INFO] [stdout] | [INFO] [stdout] 90 | let (params, predictor, _) = parallel_trainer.borrow_network_parts(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_predictor` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `predictor` [INFO] [stdout] --> src/snake_nn.rs:109:18 [INFO] [stdout] | [INFO] [stdout] 109 | let (params, predictor, _) = parallel_trainer.borrow_network_parts(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_predictor` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/snake_nn.rs:57:9 [INFO] [stdout] | [INFO] [stdout] 57 | let mut nn = network::Network::load_from_file(model_input_path); [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/snake_nn.rs:131:21 [INFO] [stdout] | [INFO] [stdout] 131 | let mut state = GameState { [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/snake_nn.rs:115:9 [INFO] [stdout] | [INFO] [stdout] 115 | let mut nn = network::Network::load_from_file(model_path); [INFO] [stdout] | ----^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `matches` [INFO] [stdout] --> src/main.rs:53:24 [INFO] [stdout] | [INFO] [stdout] 53 | fn execute_mnist_train(matches: &ArgMatches, submatches: &ArgMatches) { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_matches` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `matches` [INFO] [stdout] --> src/main.rs:68:22 [INFO] [stdout] | [INFO] [stdout] 68 | fn execute_snake_new(matches: &ArgMatches, submatches: &ArgMatches) { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_matches` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `matches` [INFO] [stdout] --> src/main.rs:73:24 [INFO] [stdout] | [INFO] [stdout] 73 | fn execute_snake_train(matches: &ArgMatches, submatches: &ArgMatches) { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_matches` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `matches` [INFO] [stdout] --> src/main.rs:93:22 [INFO] [stdout] | [INFO] [stdout] 93 | fn execute_snake_gen(matches: &ArgMatches, submatches: &ArgMatches) { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_matches` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/snake_nn.rs:231:13 [INFO] [stdout] | [INFO] [stdout] 231 | let mut layer = nn.add_hidden_layer(shape[i]); [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `matches` [INFO] [stdout] --> src/main.rs:101:23 [INFO] [stdout] | [INFO] [stdout] 101 | fn execute_snake_demo(matches: &ArgMatches, submatches: &ArgMatches) { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_matches` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `max_gain` [INFO] [stdout] --> src/snake_nn.rs:357:13 [INFO] [stdout] | [INFO] [stdout] 357 | let (i, max_gain) = get_max_with_pos(snake_inputs_gains.as_slice()); [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_gain` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new_same_dim`, `from_slice`, `dot_vec`, and `transpose` are never used [INFO] [stdout] --> src/math.rs:21:12 [INFO] [stdout] | [INFO] [stdout] 12 | impl Matrix { [INFO] [stdout] | ----------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 21 | pub fn new_same_dim(m: &Matrix) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 27 | pub fn from_slice(rows: usize, cols: usize, content: &[f64]) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 71 | pub fn dot_vec(&self, vec: &Vector, res: &mut Vector) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 155 | pub fn transpose(&self, res: &mut Matrix) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `from_slice`, `empty`, `init_rand`, `copy_from`, `add`, and `fill_rand` are never used [INFO] [stdout] --> src/math.rs:241:12 [INFO] [stdout] | [INFO] [stdout] 233 | impl Vector { [INFO] [stdout] | ----------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 241 | pub fn from_slice(content: &[f64]) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 248 | pub fn empty() -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 267 | pub fn init_rand(mut self) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 286 | pub fn copy_from(&mut self, v: &Vector) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 322 | pub fn add(&mut self, v: &Vector) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 335 | pub fn fill_rand(&mut self) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `NANOS_IN_SECOND` is never used [INFO] [stdout] --> src/mnist.rs:28:7 [INFO] [stdout] | [INFO] [stdout] 28 | const NANOS_IN_SECOND: u64 = 1_000_000_000; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_layer_mut` is never used [INFO] [stdout] --> src/network.rs:46:8 [INFO] [stdout] | [INFO] [stdout] 38 | impl NetworkParameters { [INFO] [stdout] | ---------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 46 | fn get_layer_mut(&mut self, id: LayerID) -> &mut Layer { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `calc_layers_order`, `predict`, `backward_propagation`, and `apply_batch` are never used [INFO] [stdout] --> src/network.rs:462:8 [INFO] [stdout] | [INFO] [stdout] 394 | impl Network { [INFO] [stdout] | ------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 462 | fn calc_layers_order(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 466 | pub fn predict(&mut self, input_data: &[f64]) -> &Vector { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 470 | pub fn backward_propagation(&mut self, true_outputs: &Vector) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 530 | pub fn apply_batch(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `shared_training_data`, `job_receiver`, `output_sender`, and `join_handles` are never read [INFO] [stdout] --> src/parallel_trainer.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 21 | pub struct ParallelTrainer { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 22 | shared_training_data: Arc, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 29 | job_receiver: Arc>>, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 30 | output_sender: Sender>>, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 31 | output_receiver: Receiver>>, [INFO] [stdout] 32 | join_handles: Vec>, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `teach_nn` is never used [INFO] [stdout] --> src/snake_nn.rs:384:4 [INFO] [stdout] | [INFO] [stdout] 384 | fn teach_nn( [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `elapsed` is never used [INFO] [stdout] --> src/timing.rs:46:12 [INFO] [stdout] | [INFO] [stdout] 15 | impl Timing { [INFO] [stdout] | ----------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 46 | pub fn elapsed(&self, name: &str) -> time::Duration { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `is_next_action_optimal` [INFO] [stdout] --> src/snake_nn.rs:503:13 [INFO] [stdout] | [INFO] [stdout] 503 | let is_next_action_optimal = session[i - 1].is_optimal; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_next_action_optimal` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/snake_nn.rs:530:9 [INFO] [stdout] | [INFO] [stdout] 530 | for i in 0..MAP_WIDTH * MAP_HEIGHT - 1 { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/parallel_trainer.rs:85:13 [INFO] [stdout] | [INFO] [stdout] 85 | / self.job_sender.send(TrainingJob { [INFO] [stdout] 86 | | examples_indices: chunk, [INFO] [stdout] 87 | | network_parameters: self.shared_nn_parameters.clone(), [INFO] [stdout] 88 | | }); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 85 | let _ = self.job_sender.send(TrainingJob { [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `matches` [INFO] [stdout] --> src/main.rs:53:24 [INFO] [stdout] | [INFO] [stdout] 53 | fn execute_mnist_train(matches: &ArgMatches, submatches: &ArgMatches) { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_matches` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/parallel_trainer.rs:160:9 [INFO] [stdout] | [INFO] [stdout] 160 | output_sender.send(local_nn_trainer.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 160 | let _ = output_sender.send(local_nn_trainer.clone()); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `matches` [INFO] [stdout] --> src/main.rs:68:22 [INFO] [stdout] | [INFO] [stdout] 68 | fn execute_snake_new(matches: &ArgMatches, submatches: &ArgMatches) { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_matches` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `matches` [INFO] [stdout] --> src/main.rs:73:24 [INFO] [stdout] | [INFO] [stdout] 73 | fn execute_snake_train(matches: &ArgMatches, submatches: &ArgMatches) { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_matches` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `matches` [INFO] [stdout] --> src/main.rs:93:22 [INFO] [stdout] | [INFO] [stdout] 93 | fn execute_snake_gen(matches: &ArgMatches, submatches: &ArgMatches) { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_matches` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/snake.rs:118:9 [INFO] [stdout] | [INFO] [stdout] 118 | writer.write("\n".as_bytes()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 118 | let _ = writer.write("\n".as_bytes()); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/snake.rs:120:5 [INFO] [stdout] | [INFO] [stdout] 120 | writer.flush(); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 120 | let _ = writer.flush(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `matches` [INFO] [stdout] --> src/main.rs:101:23 [INFO] [stdout] | [INFO] [stdout] 101 | fn execute_snake_demo(matches: &ArgMatches, submatches: &ArgMatches) { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_matches` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/snake.rs:131:5 [INFO] [stdout] | [INFO] [stdout] 131 | writer.write(character.as_bytes()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 131 | let _ = writer.write(character.as_bytes()); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/snake_nn.rs:140:21 [INFO] [stdout] | [INFO] [stdout] 140 | write!(training_data_file, "\n"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: this warning originates in the macro `write` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/snake_nn.rs:150:9 [INFO] [stdout] | [INFO] [stdout] 150 | jh.join(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 150 | let _ = jh.join(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `game_over:` in this pattern is redundant [INFO] [stdout] --> src/snake_nn.rs:203:17 [INFO] [stdout] | [INFO] [stdout] 203 | game_over: game_over, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `game_over` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_shorthand_field_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `game_over:` in this pattern is redundant [INFO] [stdout] --> src/snake_nn.rs:271:13 [INFO] [stdout] | [INFO] [stdout] 271 | game_over: game_over, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `game_over` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `game_over:` in this pattern is redundant [INFO] [stdout] --> src/snake_nn.rs:308:17 [INFO] [stdout] | [INFO] [stdout] 308 | game_over: game_over, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `game_over` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/timing.rs:75:9 [INFO] [stdout] | [INFO] [stdout] 75 | writeln!(f, "=== Timing ==="); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: this warning originates in the macro `writeln` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/timing.rs:77:13 [INFO] [stdout] | [INFO] [stdout] 77 | / writeln!( [INFO] [stdout] 78 | | f, [INFO] [stdout] 79 | | "{}: {}.{:04}s", [INFO] [stdout] 80 | | name, [INFO] [stdout] 81 | | timer.duration.as_secs(), [INFO] [stdout] 82 | | timer.duration.subsec_nanos() / 1000000 [INFO] [stdout] 83 | | ); [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: this warning originates in the macro `writeln` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new_same_dim` and `dot_vec` are never used [INFO] [stdout] --> src/math.rs:21:12 [INFO] [stdout] | [INFO] [stdout] 12 | impl Matrix { [INFO] [stdout] | ----------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 21 | pub fn new_same_dim(m: &Matrix) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 71 | pub fn dot_vec(&self, vec: &Vector, res: &mut Vector) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `empty`, `init_rand`, `copy_from`, `add`, and `fill_rand` are never used [INFO] [stdout] --> src/math.rs:248:12 [INFO] [stdout] | [INFO] [stdout] 233 | impl Vector { [INFO] [stdout] | ----------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 248 | pub fn empty() -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 267 | pub fn init_rand(mut self) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 286 | pub fn copy_from(&mut self, v: &Vector) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 322 | pub fn add(&mut self, v: &Vector) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 335 | pub fn fill_rand(&mut self) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `NANOS_IN_SECOND` is never used [INFO] [stdout] --> src/mnist.rs:28:7 [INFO] [stdout] | [INFO] [stdout] 28 | const NANOS_IN_SECOND: u64 = 1_000_000_000; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_layer_mut` is never used [INFO] [stdout] --> src/network.rs:46:8 [INFO] [stdout] | [INFO] [stdout] 38 | impl NetworkParameters { [INFO] [stdout] | ---------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 46 | fn get_layer_mut(&mut self, id: LayerID) -> &mut Layer { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `predict`, `backward_propagation`, and `apply_batch` are never used [INFO] [stdout] --> src/network.rs:466:12 [INFO] [stdout] | [INFO] [stdout] 394 | impl Network { [INFO] [stdout] | ------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 466 | pub fn predict(&mut self, input_data: &[f64]) -> &Vector { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 470 | pub fn backward_propagation(&mut self, true_outputs: &Vector) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 530 | pub fn apply_batch(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `shared_training_data`, `job_receiver`, `output_sender`, and `join_handles` are never read [INFO] [stdout] --> src/parallel_trainer.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 21 | pub struct ParallelTrainer { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 22 | shared_training_data: Arc, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 29 | job_receiver: Arc>>, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 30 | output_sender: Sender>>, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 31 | output_receiver: Receiver>>, [INFO] [stdout] 32 | join_handles: Vec>, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `teach_nn` is never used [INFO] [stdout] --> src/snake_nn.rs:384:4 [INFO] [stdout] | [INFO] [stdout] 384 | fn teach_nn( [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `elapsed` is never used [INFO] [stdout] --> src/timing.rs:46:12 [INFO] [stdout] | [INFO] [stdout] 15 | impl Timing { [INFO] [stdout] | ----------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 46 | pub fn elapsed(&self, name: &str) -> time::Duration { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/parallel_trainer.rs:85:13 [INFO] [stdout] | [INFO] [stdout] 85 | / self.job_sender.send(TrainingJob { [INFO] [stdout] 86 | | examples_indices: chunk, [INFO] [stdout] 87 | | network_parameters: self.shared_nn_parameters.clone(), [INFO] [stdout] 88 | | }); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 85 | let _ = self.job_sender.send(TrainingJob { [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/parallel_trainer.rs:160:9 [INFO] [stdout] | [INFO] [stdout] 160 | output_sender.send(local_nn_trainer.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 160 | let _ = output_sender.send(local_nn_trainer.clone()); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/snake.rs:118:9 [INFO] [stdout] | [INFO] [stdout] 118 | writer.write("\n".as_bytes()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 118 | let _ = writer.write("\n".as_bytes()); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/snake.rs:120:5 [INFO] [stdout] | [INFO] [stdout] 120 | writer.flush(); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 120 | let _ = writer.flush(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/snake.rs:131:5 [INFO] [stdout] | [INFO] [stdout] 131 | writer.write(character.as_bytes()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 131 | let _ = writer.write(character.as_bytes()); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/snake_nn.rs:140:21 [INFO] [stdout] | [INFO] [stdout] 140 | write!(training_data_file, "\n"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: this warning originates in the macro `write` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/snake_nn.rs:150:9 [INFO] [stdout] | [INFO] [stdout] 150 | jh.join(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 150 | let _ = jh.join(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `game_over:` in this pattern is redundant [INFO] [stdout] --> src/snake_nn.rs:203:17 [INFO] [stdout] | [INFO] [stdout] 203 | game_over: game_over, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `game_over` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_shorthand_field_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `game_over:` in this pattern is redundant [INFO] [stdout] --> src/snake_nn.rs:271:13 [INFO] [stdout] | [INFO] [stdout] 271 | game_over: game_over, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `game_over` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `game_over:` in this pattern is redundant [INFO] [stdout] --> src/snake_nn.rs:308:17 [INFO] [stdout] | [INFO] [stdout] 308 | game_over: game_over, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `game_over` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/timing.rs:75:9 [INFO] [stdout] | [INFO] [stdout] 75 | writeln!(f, "=== Timing ==="); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: this warning originates in the macro `writeln` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/timing.rs:77:13 [INFO] [stdout] | [INFO] [stdout] 77 | / writeln!( [INFO] [stdout] 78 | | f, [INFO] [stdout] 79 | | "{}: {}.{:04}s", [INFO] [stdout] 80 | | name, [INFO] [stdout] 81 | | timer.duration.as_secs(), [INFO] [stdout] 82 | | timer.duration.subsec_nanos() / 1000000 [INFO] [stdout] 83 | | ); [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: this warning originates in the macro `writeln` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 72 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 73 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.05s [INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: syn v0.13.1 [INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 2` [INFO] running `Command { std: "docker" "inspect" "15a336bca62f6c089edb714a1ce0639500cb807d102d6f4ed564afc0fdbd32c0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "15a336bca62f6c089edb714a1ce0639500cb807d102d6f4ed564afc0fdbd32c0", kill_on_drop: false }` [INFO] [stdout] 15a336bca62f6c089edb714a1ce0639500cb807d102d6f4ed564afc0fdbd32c0 [INFO] checking vbo/nnrs against try#f9935d29d867449445ee008640ccca1bf1ae0889+rustflags=-Dtail_expr_drop_order for crater-rollup-uwu [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvbo%2Fnnrs" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/vbo/nnrs on toolchain f9935d29d867449445ee008640ccca1bf1ae0889 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+f9935d29d867449445ee008640ccca1bf1ae0889" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/vbo/nnrs [INFO] finished tweaking git repo https://github.com/vbo/nnrs [INFO] tweaked toml for git repo https://github.com/vbo/nnrs written to /workspace/builds/worker-2-tc2/source/Cargo.toml [INFO] crate git repo https://github.com/vbo/nnrs 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" "+f9935d29d867449445ee008640ccca1bf1ae0889" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2021 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/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:923055f121b5182466d55868a8b05e67af8ba4a3a3f6bad814e953ca3cd3ac2a" "/opt/rustwide/cargo-home/bin/cargo" "+f9935d29d867449445ee008640ccca1bf1ae0889" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 9c7a710d11f024d2e3985947fdfca225fa6b15fa35d1026badb3d91304796bac [INFO] running `Command { std: "docker" "start" "-a" "9c7a710d11f024d2e3985947fdfca225fa6b15fa35d1026badb3d91304796bac", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "9c7a710d11f024d2e3985947fdfca225fa6b15fa35d1026badb3d91304796bac", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9c7a710d11f024d2e3985947fdfca225fa6b15fa35d1026badb3d91304796bac", kill_on_drop: false }` [INFO] [stdout] 9c7a710d11f024d2e3985947fdfca225fa6b15fa35d1026badb3d91304796bac [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/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 -Dtail_expr_drop_order" "-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:923055f121b5182466d55868a8b05e67af8ba4a3a3f6bad814e953ca3cd3ac2a" "/opt/rustwide/cargo-home/bin/cargo" "+f9935d29d867449445ee008640ccca1bf1ae0889" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 657ff5426fc1a2140feb1cc11919f160bfe954aaa87a99c2f6e42bc48a5e31e8 [INFO] running `Command { std: "docker" "start" "-a" "657ff5426fc1a2140feb1cc11919f160bfe954aaa87a99c2f6e42bc48a5e31e8", kill_on_drop: false }` [INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2021 [INFO] [stderr] Compiling proc-macro2 v0.3.7 [INFO] [stderr] Checking libc v0.2.40 [INFO] [stderr] Compiling unicode-xid v0.0.4 [INFO] [stderr] Compiling matrixmultiply v0.1.14 [INFO] [stderr] Checking unicode-width v0.1.4 [INFO] [stderr] Compiling quote v0.3.15 [INFO] [stderr] Checking strsim v0.7.0 [INFO] [stderr] Checking itoa v0.4.1 [INFO] [stderr] Checking bitflags v1.0.1 [INFO] [stderr] Checking dtoa v0.4.2 [INFO] [stderr] Checking vec_map v0.8.0 [INFO] [stderr] Checking serde v1.0.43 [INFO] [stderr] Checking rawpointer v0.1.0 [INFO] [stderr] Checking yaml-rust v0.3.5 [INFO] [stderr] Checking byteorder v1.2.2 [INFO] [stderr] Compiling synom v0.11.3 [INFO] [stderr] Checking textwrap v0.9.0 [INFO] [stderr] Compiling syn v0.11.11 [INFO] [stderr] Compiling quote v0.5.2 [INFO] [stderr] Checking atty v0.2.9 [INFO] [stderr] Checking rand v0.4.2 [INFO] [stderr] Checking num_cpus v1.8.0 [INFO] [stderr] Compiling syn v0.13.1 [INFO] [stderr] Checking clap v2.31.2 [INFO] [stderr] Compiling rand_derive v0.3.1 [INFO] [stderr] Compiling serde_derive_internals v0.23.1 [INFO] [stderr] Compiling serde_derive v1.0.43 [INFO] [stderr] Checking serde_json v1.0.16 [INFO] [stderr] Checking nnrs v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `std::time` [INFO] [stdout] --> src/mnist.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::time; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `math` [INFO] [stdout] --> src/mnist.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | use math; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `math::Matrix` [INFO] [stdout] --> src/mnist.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | use math::Matrix; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `timing` [INFO] [stdout] --> src/mnist.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | use timing; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time` [INFO] [stdout] --> src/mnist.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::time; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::mem` [INFO] [stdout] --> src/network.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::mem; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `math` [INFO] [stdout] --> src/mnist.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | use math; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `timing::Timing` [INFO] [stdout] --> src/parallel_trainer.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use timing::Timing; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `math::Matrix` [INFO] [stdout] --> src/mnist.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | use math::Matrix; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `serde_json` [INFO] [stdout] --> src/snake.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use serde_json; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `timing` [INFO] [stdout] --> src/mnist.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | use timing; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::mem` [INFO] [stdout] --> src/network.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::mem; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `timing::Timing` [INFO] [stdout] --> src/parallel_trainer.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use timing::Timing; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `serde_json` [INFO] [stdout] --> src/snake.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use serde_json; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `nightly` [INFO] [stdout] --> src/snake_nn.rs:566:7 [INFO] [stdout] | [INFO] [stdout] 566 | #[cfg(nightly)] [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: expected names are: `clippy`, `debug_assertions`, `doc`, `docsrs`, `doctest`, `feature`, `miri`, `overflow_checks`, `panic`, `proc_macro`, `relocation_model`, `rustfmt`, `sanitize`, `sanitizer_cfi_generalize_pointers`, `sanitizer_cfi_normalize_integers`, `target_abi`, `target_arch`, `target_endian`, `target_env`, `target_family`, `target_feature`, `target_has_atomic`, `target_has_atomic_equal_alignment`, `target_has_atomic_load_store`, `target_os`, `target_pointer_width`, `target_thread_local`, `target_vendor`, `test`, `ub_checks`, `unix`, and `windows` [INFO] [stdout] = help: consider using a Cargo feature instead [INFO] [stdout] = help: or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint: [INFO] [stdout] [lints.rust] [INFO] [stdout] unexpected_cfgs = { level = "warn", check-cfg = ['cfg(nightly)'] } [INFO] [stdout] = help: or consider adding `println!("cargo::rustc-check-cfg=cfg(nightly)");` to the top of the `build.rs` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `nightly` [INFO] [stdout] --> src/snake_nn.rs:566:7 [INFO] [stdout] | [INFO] [stdout] 566 | #[cfg(nightly)] [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: expected names are: `clippy`, `debug_assertions`, `doc`, `docsrs`, `doctest`, `feature`, `miri`, `overflow_checks`, `panic`, `proc_macro`, `relocation_model`, `rustfmt`, `sanitize`, `sanitizer_cfi_generalize_pointers`, `sanitizer_cfi_normalize_integers`, `target_abi`, `target_arch`, `target_endian`, `target_env`, `target_family`, `target_feature`, `target_has_atomic`, `target_has_atomic_equal_alignment`, `target_has_atomic_load_store`, `target_os`, `target_pointer_width`, `target_thread_local`, `target_vendor`, `test`, `ub_checks`, `unix`, and `windows` [INFO] [stdout] = help: consider using a Cargo feature instead [INFO] [stdout] = help: or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint: [INFO] [stdout] [lints.rust] [INFO] [stdout] unexpected_cfgs = { level = "warn", check-cfg = ['cfg(nightly)'] } [INFO] [stdout] = help: or consider adding `println!("cargo::rustc-check-cfg=cfg(nightly)");` to the top of the `build.rs` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Network` [INFO] [stdout] --> src/snake_nn.rs:4:15 [INFO] [stdout] | [INFO] [stdout] 4 | use network::{Network, NetworkParameters, NetworkPredictor}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `IndependentSample` and `Range` [INFO] [stdout] --> src/snake_nn.rs:7:27 [INFO] [stdout] | [INFO] [stdout] 7 | use rand::distributions::{IndependentSample, Range}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Network` [INFO] [stdout] --> src/snake_nn.rs:4:15 [INFO] [stdout] | [INFO] [stdout] 4 | use network::{Network, NetworkParameters, NetworkPredictor}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::mpsc` [INFO] [stdout] --> src/snake_nn.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | use std::sync::mpsc; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `IndependentSample` and `Range` [INFO] [stdout] --> src/snake_nn.rs:7:27 [INFO] [stdout] | [INFO] [stdout] 7 | use rand::distributions::{IndependentSample, Range}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Receiver` and `Sender` [INFO] [stdout] --> src/snake_nn.rs:19:23 [INFO] [stdout] | [INFO] [stdout] 19 | use std::sync::mpsc::{Receiver, Sender}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::mpsc` [INFO] [stdout] --> src/snake_nn.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | use std::sync::mpsc; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `timing::duration_as_total_nanos` [INFO] [stdout] --> src/snake_nn.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | use timing::duration_as_total_nanos; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Receiver` and `Sender` [INFO] [stdout] --> src/snake_nn.rs:19:23 [INFO] [stdout] | [INFO] [stdout] 19 | use std::sync::mpsc::{Receiver, Sender}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/snake_nn.rs:340:8 [INFO] [stdout] | [INFO] [stdout] 340 | if (rng.gen_range(0.0, 1.0) <= random_move_prob) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 340 - if (rng.gen_range(0.0, 1.0) <= random_move_prob) { [INFO] [stdout] 340 + if rng.gen_range(0.0, 1.0) <= random_move_prob { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `timing::duration_as_total_nanos` [INFO] [stdout] --> src/snake_nn.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | use timing::duration_as_total_nanos; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::hash_map::Entry` [INFO] [stdout] --> src/timing.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::collections::hash_map::Entry; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/snake_nn.rs:340:8 [INFO] [stdout] | [INFO] [stdout] 340 | if (rng.gen_range(0.0, 1.0) <= random_move_prob) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 340 - if (rng.gen_range(0.0, 1.0) <= random_move_prob) { [INFO] [stdout] 340 + if rng.gen_range(0.0, 1.0) <= random_move_prob { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::hash_map::Entry` [INFO] [stdout] --> src/timing.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::collections::hash_map::Entry; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: crate-level attribute should be in the root module [INFO] [stdout] --> src/snake_nn.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | #![feature(test)] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_attributes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: crate-level attribute should be in the root module [INFO] [stdout] --> src/snake_nn.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | #![feature(test)] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_attributes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep` [INFO] [stdout] --> src/snake_nn.rs:176:21 [INFO] [stdout] | [INFO] [stdout] 176 | thread::sleep_ms(SLEEP_INTERVAL_MS); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep` [INFO] [stdout] --> src/snake_nn.rs:212:25 [INFO] [stdout] | [INFO] [stdout] 212 | thread::sleep_ms(SLEEP_INTERVAL_MS); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep` [INFO] [stdout] --> src/snake_nn.rs:176:21 [INFO] [stdout] | [INFO] [stdout] 176 | thread::sleep_ms(SLEEP_INTERVAL_MS); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep` [INFO] [stdout] --> src/snake_nn.rs:212:25 [INFO] [stdout] | [INFO] [stdout] 212 | thread::sleep_ms(SLEEP_INTERVAL_MS); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rand::Rng` [INFO] [stdout] --> src/snake.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use rand::Rng; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rand::Rng` [INFO] [stdout] --> src/snake.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use rand::Rng; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `hits` [INFO] [stdout] --> src/mnist.rs:64:13 [INFO] [stdout] | [INFO] [stdout] 64 | let mut hits = 0usize; [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_hits` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `predictor` [INFO] [stdout] --> src/mnist.rs:98:30 [INFO] [stdout] | [INFO] [stdout] 98 | let (params, predictor, _) = parallel_trainer.borrow_network_parts(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_predictor` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `log_every_n` [INFO] [stdout] --> src/mnist.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 35 | log_every_n: usize, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_log_every_n` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/mnist.rs:64:9 [INFO] [stdout] | [INFO] [stdout] 64 | let mut hits = 0usize; [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: unused variable: `hits` [INFO] [stdout] --> src/mnist.rs:64:13 [INFO] [stdout] | [INFO] [stdout] 64 | let mut hits = 0usize; [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_hits` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `predictor` [INFO] [stdout] --> src/mnist.rs:98:30 [INFO] [stdout] | [INFO] [stdout] 98 | let (params, predictor, _) = parallel_trainer.borrow_network_parts(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_predictor` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `log_every_n` [INFO] [stdout] --> src/mnist.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 35 | log_every_n: usize, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_log_every_n` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/mnist.rs:64:9 [INFO] [stdout] | [INFO] [stdout] 64 | let mut hits = 0usize; [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/network.rs:55:13 [INFO] [stdout] | [INFO] [stdout] 55 | let mut nn: Self = serde_json::from_reader(&file).unwrap(); [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/network.rs:55:13 [INFO] [stdout] | [INFO] [stdout] 55 | let mut nn: Self = serde_json::from_reader(&file).unwrap(); [INFO] [stdout] | ----^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `thread_no` [INFO] [stdout] --> src/parallel_trainer.rs:46:13 [INFO] [stdout] | [INFO] [stdout] 46 | for thread_no in 0..num_threads { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_thread_no` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/parallel_trainer.rs:37:14 [INFO] [stdout] | [INFO] [stdout] 37 | let (mut nn_parameters, mut nn_predictor, mut nn_trainer) = network.as_parts(); [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/parallel_trainer.rs:37:33 [INFO] [stdout] | [INFO] [stdout] 37 | let (mut nn_parameters, mut nn_predictor, mut nn_trainer) = network.as_parts(); [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/parallel_trainer.rs:37:51 [INFO] [stdout] | [INFO] [stdout] 37 | let (mut nn_parameters, mut nn_predictor, mut nn_trainer) = network.as_parts(); [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/parallel_trainer.rs:48:17 [INFO] [stdout] | [INFO] [stdout] 48 | let mut local_nn_predictor = nn_predictor.clone(); [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/parallel_trainer.rs:49:17 [INFO] [stdout] | [INFO] [stdout] 49 | let mut local_nn_trainer = Arc::new(Mutex::new(nn_trainer.clone())); [INFO] [stdout] | ----^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `layer_order` [INFO] [stdout] --> src/network.rs:645:13 [INFO] [stdout] | [INFO] [stdout] 645 | let layer_order = nn.calc_layers_order(); [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_layer_order` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `thread_no` [INFO] [stdout] --> src/parallel_trainer.rs:46:13 [INFO] [stdout] | [INFO] [stdout] 46 | for thread_no in 0..num_threads { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_thread_no` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/parallel_trainer.rs:94:21 [INFO] [stdout] | [INFO] [stdout] 94 | let mut output_nn_trainer = output_nn_trainer.lock().unwrap(); [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `outputs` [INFO] [stdout] --> src/parallel_trainer.rs:150:21 [INFO] [stdout] | [INFO] [stdout] 150 | let outputs = local_nn_predictor [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_outputs` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/parallel_trainer.rs:37:14 [INFO] [stdout] | [INFO] [stdout] 37 | let (mut nn_parameters, mut nn_predictor, mut nn_trainer) = network.as_parts(); [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/parallel_trainer.rs:37:33 [INFO] [stdout] | [INFO] [stdout] 37 | let (mut nn_parameters, mut nn_predictor, mut nn_trainer) = network.as_parts(); [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/parallel_trainer.rs:37:51 [INFO] [stdout] | [INFO] [stdout] 37 | let (mut nn_parameters, mut nn_predictor, mut nn_trainer) = network.as_parts(); [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/parallel_trainer.rs:48:17 [INFO] [stdout] | [INFO] [stdout] 48 | let mut local_nn_predictor = nn_predictor.clone(); [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/parallel_trainer.rs:49:17 [INFO] [stdout] | [INFO] [stdout] 49 | let mut local_nn_trainer = Arc::new(Mutex::new(nn_trainer.clone())); [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/parallel_trainer.rs:123:5 [INFO] [stdout] | [INFO] [stdout] 123 | mut job_receiver: Arc>>, [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/parallel_trainer.rs:124:5 [INFO] [stdout] | [INFO] [stdout] 124 | mut output_sender: Sender>>, [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/parallel_trainer.rs:126:5 [INFO] [stdout] | [INFO] [stdout] 126 | mut local_nn_trainer: Arc>, [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/parallel_trainer.rs:94:21 [INFO] [stdout] | [INFO] [stdout] 94 | let mut output_nn_trainer = output_nn_trainer.lock().unwrap(); [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `outputs` [INFO] [stdout] --> src/parallel_trainer.rs:150:21 [INFO] [stdout] | [INFO] [stdout] 150 | let outputs = local_nn_predictor [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_outputs` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/parallel_trainer.rs:123:5 [INFO] [stdout] | [INFO] [stdout] 123 | mut job_receiver: Arc>>, [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/parallel_trainer.rs:124:5 [INFO] [stdout] | [INFO] [stdout] 124 | mut output_sender: Sender>>, [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/parallel_trainer.rs:126:5 [INFO] [stdout] | [INFO] [stdout] 126 | mut local_nn_trainer: Arc>, [INFO] [stdout] | ----^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `iters` [INFO] [stdout] --> src/snake.rs:168:21 [INFO] [stdout] | [INFO] [stdout] 168 | let mut iters = 0; [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_iters` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/snake.rs:168:17 [INFO] [stdout] | [INFO] [stdout] 168 | let mut iters = 0; [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `iters` [INFO] [stdout] --> src/snake.rs:168:21 [INFO] [stdout] | [INFO] [stdout] 168 | let mut iters = 0; [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_iters` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/snake.rs:168:17 [INFO] [stdout] | [INFO] [stdout] 168 | let mut iters = 0; [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `epoch_no` [INFO] [stdout] --> src/snake_nn.rs:73:9 [INFO] [stdout] | [INFO] [stdout] 73 | for epoch_no in 0..num_epochs { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_epoch_no` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `predictor` [INFO] [stdout] --> src/snake_nn.rs:90:30 [INFO] [stdout] | [INFO] [stdout] 90 | let (params, predictor, _) = parallel_trainer.borrow_network_parts(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_predictor` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `predictor` [INFO] [stdout] --> src/snake_nn.rs:109:18 [INFO] [stdout] | [INFO] [stdout] 109 | let (params, predictor, _) = parallel_trainer.borrow_network_parts(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_predictor` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `epoch_no` [INFO] [stdout] --> src/snake_nn.rs:73:9 [INFO] [stdout] | [INFO] [stdout] 73 | for epoch_no in 0..num_epochs { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_epoch_no` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `predictor` [INFO] [stdout] --> src/snake_nn.rs:90:30 [INFO] [stdout] | [INFO] [stdout] 90 | let (params, predictor, _) = parallel_trainer.borrow_network_parts(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_predictor` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `predictor` [INFO] [stdout] --> src/snake_nn.rs:109:18 [INFO] [stdout] | [INFO] [stdout] 109 | let (params, predictor, _) = parallel_trainer.borrow_network_parts(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_predictor` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/snake_nn.rs:57:9 [INFO] [stdout] | [INFO] [stdout] 57 | let mut nn = network::Network::load_from_file(model_input_path); [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/snake_nn.rs:57:9 [INFO] [stdout] | [INFO] [stdout] 57 | let mut nn = network::Network::load_from_file(model_input_path); [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/snake_nn.rs:131:21 [INFO] [stdout] | [INFO] [stdout] 131 | let mut state = GameState { [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/snake_nn.rs:115:9 [INFO] [stdout] | [INFO] [stdout] 115 | let mut nn = network::Network::load_from_file(model_path); [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/snake_nn.rs:131:21 [INFO] [stdout] | [INFO] [stdout] 131 | let mut state = GameState { [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/snake_nn.rs:115:9 [INFO] [stdout] | [INFO] [stdout] 115 | let mut nn = network::Network::load_from_file(model_path); [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/snake_nn.rs:231:13 [INFO] [stdout] | [INFO] [stdout] 231 | let mut layer = nn.add_hidden_layer(shape[i]); [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `max_gain` [INFO] [stdout] --> src/snake_nn.rs:357:13 [INFO] [stdout] | [INFO] [stdout] 357 | let (i, max_gain) = get_max_with_pos(snake_inputs_gains.as_slice()); [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_gain` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/snake_nn.rs:231:13 [INFO] [stdout] | [INFO] [stdout] 231 | let mut layer = nn.add_hidden_layer(shape[i]); [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `max_gain` [INFO] [stdout] --> src/snake_nn.rs:357:13 [INFO] [stdout] | [INFO] [stdout] 357 | let (i, max_gain) = get_max_with_pos(snake_inputs_gains.as_slice()); [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_gain` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `is_next_action_optimal` [INFO] [stdout] --> src/snake_nn.rs:503:13 [INFO] [stdout] | [INFO] [stdout] 503 | let is_next_action_optimal = session[i - 1].is_optimal; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_next_action_optimal` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `is_next_action_optimal` [INFO] [stdout] --> src/snake_nn.rs:503:13 [INFO] [stdout] | [INFO] [stdout] 503 | let is_next_action_optimal = session[i - 1].is_optimal; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_next_action_optimal` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/snake_nn.rs:530:9 [INFO] [stdout] | [INFO] [stdout] 530 | for i in 0..MAP_WIDTH * MAP_HEIGHT - 1 { [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/snake_nn.rs:530:9 [INFO] [stdout] | [INFO] [stdout] 530 | for i in 0..MAP_WIDTH * MAP_HEIGHT - 1 { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `matches` [INFO] [stdout] --> src/main.rs:53:24 [INFO] [stdout] | [INFO] [stdout] 53 | fn execute_mnist_train(matches: &ArgMatches, submatches: &ArgMatches) { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_matches` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `matches` [INFO] [stdout] --> src/main.rs:68:22 [INFO] [stdout] | [INFO] [stdout] 68 | fn execute_snake_new(matches: &ArgMatches, submatches: &ArgMatches) { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_matches` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `matches` [INFO] [stdout] --> src/main.rs:73:24 [INFO] [stdout] | [INFO] [stdout] 73 | fn execute_snake_train(matches: &ArgMatches, submatches: &ArgMatches) { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_matches` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `matches` [INFO] [stdout] --> src/main.rs:53:24 [INFO] [stdout] | [INFO] [stdout] 53 | fn execute_mnist_train(matches: &ArgMatches, submatches: &ArgMatches) { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_matches` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `matches` [INFO] [stdout] --> src/main.rs:93:22 [INFO] [stdout] | [INFO] [stdout] 93 | fn execute_snake_gen(matches: &ArgMatches, submatches: &ArgMatches) { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_matches` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `matches` [INFO] [stdout] --> src/main.rs:68:22 [INFO] [stdout] | [INFO] [stdout] 68 | fn execute_snake_new(matches: &ArgMatches, submatches: &ArgMatches) { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_matches` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `matches` [INFO] [stdout] --> src/main.rs:101:23 [INFO] [stdout] | [INFO] [stdout] 101 | fn execute_snake_demo(matches: &ArgMatches, submatches: &ArgMatches) { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_matches` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `matches` [INFO] [stdout] --> src/main.rs:73:24 [INFO] [stdout] | [INFO] [stdout] 73 | fn execute_snake_train(matches: &ArgMatches, submatches: &ArgMatches) { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_matches` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `matches` [INFO] [stdout] --> src/main.rs:93:22 [INFO] [stdout] | [INFO] [stdout] 93 | fn execute_snake_gen(matches: &ArgMatches, submatches: &ArgMatches) { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_matches` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `matches` [INFO] [stdout] --> src/main.rs:101:23 [INFO] [stdout] | [INFO] [stdout] 101 | fn execute_snake_demo(matches: &ArgMatches, submatches: &ArgMatches) { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_matches` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new_same_dim` and `dot_vec` are never used [INFO] [stdout] --> src/math.rs:21:12 [INFO] [stdout] | [INFO] [stdout] 12 | impl Matrix { [INFO] [stdout] | ----------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 21 | pub fn new_same_dim(m: &Matrix) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 71 | pub fn dot_vec(&self, vec: &Vector, res: &mut Vector) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `empty`, `init_rand`, `copy_from`, `add`, and `fill_rand` are never used [INFO] [stdout] --> src/math.rs:248:12 [INFO] [stdout] | [INFO] [stdout] 233 | impl Vector { [INFO] [stdout] | ----------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 248 | pub fn empty() -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 267 | pub fn init_rand(mut self) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 286 | pub fn copy_from(&mut self, v: &Vector) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 322 | pub fn add(&mut self, v: &Vector) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 335 | pub fn fill_rand(&mut self) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `NANOS_IN_SECOND` is never used [INFO] [stdout] --> src/mnist.rs:28:7 [INFO] [stdout] | [INFO] [stdout] 28 | const NANOS_IN_SECOND: u64 = 1_000_000_000; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_layer_mut` is never used [INFO] [stdout] --> src/network.rs:46:8 [INFO] [stdout] | [INFO] [stdout] 38 | impl NetworkParameters { [INFO] [stdout] | ---------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 46 | fn get_layer_mut(&mut self, id: LayerID) -> &mut Layer { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `predict`, `backward_propagation`, and `apply_batch` are never used [INFO] [stdout] --> src/network.rs:466:12 [INFO] [stdout] | [INFO] [stdout] 394 | impl Network { [INFO] [stdout] | ------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 466 | pub fn predict(&mut self, input_data: &[f64]) -> &Vector { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 470 | pub fn backward_propagation(&mut self, true_outputs: &Vector) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 530 | pub fn apply_batch(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `shared_training_data`, `job_receiver`, `output_sender`, and `join_handles` are never read [INFO] [stdout] --> src/parallel_trainer.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 21 | pub struct ParallelTrainer { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 22 | shared_training_data: Arc, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 29 | job_receiver: Arc>>, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 30 | output_sender: Sender>>, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 31 | output_receiver: Receiver>>, [INFO] [stdout] 32 | join_handles: Vec>, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `teach_nn` is never used [INFO] [stdout] --> src/snake_nn.rs:384:4 [INFO] [stdout] | [INFO] [stdout] 384 | fn teach_nn( [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `elapsed` is never used [INFO] [stdout] --> src/timing.rs:46:12 [INFO] [stdout] | [INFO] [stdout] 15 | impl Timing { [INFO] [stdout] | ----------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 46 | pub fn elapsed(&self, name: &str) -> time::Duration { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new_same_dim`, `from_slice`, `dot_vec`, and `transpose` are never used [INFO] [stdout] --> src/math.rs:21:12 [INFO] [stdout] | [INFO] [stdout] 12 | impl Matrix { [INFO] [stdout] | ----------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 21 | pub fn new_same_dim(m: &Matrix) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 27 | pub fn from_slice(rows: usize, cols: usize, content: &[f64]) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 71 | pub fn dot_vec(&self, vec: &Vector, res: &mut Vector) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 155 | pub fn transpose(&self, res: &mut Matrix) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `from_slice`, `empty`, `init_rand`, `copy_from`, `add`, and `fill_rand` are never used [INFO] [stdout] --> src/math.rs:241:12 [INFO] [stdout] | [INFO] [stdout] 233 | impl Vector { [INFO] [stdout] | ----------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 241 | pub fn from_slice(content: &[f64]) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 248 | pub fn empty() -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 267 | pub fn init_rand(mut self) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 286 | pub fn copy_from(&mut self, v: &Vector) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 322 | pub fn add(&mut self, v: &Vector) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 335 | pub fn fill_rand(&mut self) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `NANOS_IN_SECOND` is never used [INFO] [stdout] --> src/mnist.rs:28:7 [INFO] [stdout] | [INFO] [stdout] 28 | const NANOS_IN_SECOND: u64 = 1_000_000_000; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_layer_mut` is never used [INFO] [stdout] --> src/network.rs:46:8 [INFO] [stdout] | [INFO] [stdout] 38 | impl NetworkParameters { [INFO] [stdout] | ---------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 46 | fn get_layer_mut(&mut self, id: LayerID) -> &mut Layer { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> src/network.rs:379:21 [INFO] [stdout] | [INFO] [stdout] 379 | #[derive(Serialize, Deserialize, Clone)] [INFO] [stdout] | ^^^^^^^^^^^ these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] = note: requested on the command line with `-D tail-expr-drop-order` [INFO] [stdout] = note: this error originates in the macro `try` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `calc_layers_order`, `predict`, `backward_propagation`, and `apply_batch` are never used [INFO] [stdout] --> src/network.rs:462:8 [INFO] [stdout] | [INFO] [stdout] 394 | impl Network { [INFO] [stdout] | ------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 462 | fn calc_layers_order(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 466 | pub fn predict(&mut self, input_data: &[f64]) -> &Vector { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 470 | pub fn backward_propagation(&mut self, true_outputs: &Vector) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 530 | pub fn apply_batch(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `shared_training_data`, `job_receiver`, `output_sender`, and `join_handles` are never read [INFO] [stdout] --> src/parallel_trainer.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 21 | pub struct ParallelTrainer { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 22 | shared_training_data: Arc, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 29 | job_receiver: Arc>>, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 30 | output_sender: Sender>>, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 31 | output_receiver: Receiver>>, [INFO] [stdout] 32 | join_handles: Vec>, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `teach_nn` is never used [INFO] [stdout] --> src/snake_nn.rs:384:4 [INFO] [stdout] | [INFO] [stdout] 384 | fn teach_nn( [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `elapsed` is never used [INFO] [stdout] --> src/timing.rs:46:12 [INFO] [stdout] | [INFO] [stdout] 15 | impl Timing { [INFO] [stdout] | ----------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 46 | pub fn elapsed(&self, name: &str) -> time::Duration { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> src/parallel_trainer.rs:71:35 [INFO] [stdout] | [INFO] [stdout] 36 | pub fn new(dataset: D, network: Network) -> Self { [INFO] [stdout] | ---------- these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 37 | let (mut nn_parameters, mut nn_predictor, mut nn_trainer) = network.as_parts(); [INFO] [stdout] 38 | let (job_sender, job_receiver) = channel(); [INFO] [stdout] | ---------- ------------ these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | | [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 39 | let (output_sender, output_receiver) = channel(); [INFO] [stdout] | ------------- --------------- these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | | [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 40 | [INFO] [stdout] 41 | let shared_training_data = Arc::new(dataset); [INFO] [stdout] | -------------------- these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 42 | let job_receiver = Arc::new(Mutex::new(job_receiver)); [INFO] [stdout] | ------------ these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 43 | let mut join_handles = Vec::new(); [INFO] [stdout] | ------------ these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] ... [INFO] [stdout] 71 | shared_nn_parameters: Arc::new(nn_parameters), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> src/network.rs:379:21 [INFO] [stdout] | [INFO] [stdout] 379 | #[derive(Serialize, Deserialize, Clone)] [INFO] [stdout] | ^^^^^^^^^^^ these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] = note: requested on the command line with `-D tail-expr-drop-order` [INFO] [stdout] = note: this error originates in the macro `try` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/parallel_trainer.rs:85:13 [INFO] [stdout] | [INFO] [stdout] 85 | / self.job_sender.send(TrainingJob { [INFO] [stdout] 86 | | examples_indices: chunk, [INFO] [stdout] 87 | | network_parameters: self.shared_nn_parameters.clone(), [INFO] [stdout] 88 | | }); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 85 | let _ = self.job_sender.send(TrainingJob { [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/parallel_trainer.rs:160:9 [INFO] [stdout] | [INFO] [stdout] 160 | output_sender.send(local_nn_trainer.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 160 | let _ = output_sender.send(local_nn_trainer.clone()); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> src/snake.rs:21:53 [INFO] [stdout] | [INFO] [stdout] 21 | #[derive(Copy, Clone, Debug, Rand, Hash, Serialize, Deserialize)] [INFO] [stdout] | ^^^^^^^^^^^ these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] = note: this error originates in the macro `try` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> src/snake.rs:32:52 [INFO] [stdout] | [INFO] [stdout] 32 | #[derive(Copy, Clone, Debug, PartialEq, Serialize, Deserialize)] [INFO] [stdout] | ^^^^^^^^^^^ these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] = note: this error originates in the macro `try` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> src/parallel_trainer.rs:71:35 [INFO] [stdout] | [INFO] [stdout] 36 | pub fn new(dataset: D, network: Network) -> Self { [INFO] [stdout] | ---------- these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 37 | let (mut nn_parameters, mut nn_predictor, mut nn_trainer) = network.as_parts(); [INFO] [stdout] 38 | let (job_sender, job_receiver) = channel(); [INFO] [stdout] | ---------- ------------ these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | | [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 39 | let (output_sender, output_receiver) = channel(); [INFO] [stdout] | ------------- --------------- these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | | [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 40 | [INFO] [stdout] 41 | let shared_training_data = Arc::new(dataset); [INFO] [stdout] | -------------------- these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 42 | let job_receiver = Arc::new(Mutex::new(job_receiver)); [INFO] [stdout] | ------------ these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 43 | let mut join_handles = Vec::new(); [INFO] [stdout] | ------------ these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] ... [INFO] [stdout] 71 | shared_nn_parameters: Arc::new(nn_parameters), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/snake.rs:118:9 [INFO] [stdout] | [INFO] [stdout] 118 | writer.write("\n".as_bytes()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 118 | let _ = writer.write("\n".as_bytes()); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/snake.rs:120:5 [INFO] [stdout] | [INFO] [stdout] 120 | writer.flush(); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 120 | let _ = writer.flush(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/snake.rs:131:5 [INFO] [stdout] | [INFO] [stdout] 131 | writer.write(character.as_bytes()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 131 | let _ = writer.write(character.as_bytes()); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/snake_nn.rs:140:21 [INFO] [stdout] | [INFO] [stdout] 140 | write!(training_data_file, "\n"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: this warning originates in the macro `write` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/snake_nn.rs:150:9 [INFO] [stdout] | [INFO] [stdout] 150 | jh.join(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 150 | let _ = jh.join(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `game_over:` in this pattern is redundant [INFO] [stdout] --> src/snake_nn.rs:203:17 [INFO] [stdout] | [INFO] [stdout] 203 | game_over: game_over, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `game_over` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_shorthand_field_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `game_over:` in this pattern is redundant [INFO] [stdout] --> src/snake_nn.rs:271:13 [INFO] [stdout] | [INFO] [stdout] 271 | game_over: game_over, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `game_over` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `game_over:` in this pattern is redundant [INFO] [stdout] --> src/snake_nn.rs:308:17 [INFO] [stdout] | [INFO] [stdout] 308 | game_over: game_over, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `game_over` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/timing.rs:75:9 [INFO] [stdout] | [INFO] [stdout] 75 | writeln!(f, "=== Timing ==="); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: this warning originates in the macro `writeln` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/timing.rs:77:13 [INFO] [stdout] | [INFO] [stdout] 77 | / writeln!( [INFO] [stdout] 78 | | f, [INFO] [stdout] 79 | | "{}: {}.{:04}s", [INFO] [stdout] 80 | | name, [INFO] [stdout] 81 | | timer.duration.as_secs(), [INFO] [stdout] 82 | | timer.duration.subsec_nanos() / 1000000 [INFO] [stdout] 83 | | ); [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: this warning originates in the macro `writeln` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/parallel_trainer.rs:85:13 [INFO] [stdout] | [INFO] [stdout] 85 | / self.job_sender.send(TrainingJob { [INFO] [stdout] 86 | | examples_indices: chunk, [INFO] [stdout] 87 | | network_parameters: self.shared_nn_parameters.clone(), [INFO] [stdout] 88 | | }); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 85 | let _ = self.job_sender.send(TrainingJob { [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/parallel_trainer.rs:160:9 [INFO] [stdout] | [INFO] [stdout] 160 | output_sender.send(local_nn_trainer.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 160 | let _ = output_sender.send(local_nn_trainer.clone()); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> src/snake.rs:21:53 [INFO] [stdout] | [INFO] [stdout] 21 | #[derive(Copy, Clone, Debug, Rand, Hash, Serialize, Deserialize)] [INFO] [stdout] | ^^^^^^^^^^^ these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] = note: this error originates in the macro `try` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> src/snake.rs:32:52 [INFO] [stdout] | [INFO] [stdout] 32 | #[derive(Copy, Clone, Debug, PartialEq, Serialize, Deserialize)] [INFO] [stdout] | ^^^^^^^^^^^ these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] = note: this error originates in the macro `try` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/snake.rs:118:9 [INFO] [stdout] | [INFO] [stdout] 118 | writer.write("\n".as_bytes()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 118 | let _ = writer.write("\n".as_bytes()); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/snake.rs:120:5 [INFO] [stdout] | [INFO] [stdout] 120 | writer.flush(); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 120 | let _ = writer.flush(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/snake.rs:131:5 [INFO] [stdout] | [INFO] [stdout] 131 | writer.write(character.as_bytes()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 131 | let _ = writer.write(character.as_bytes()); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/snake_nn.rs:140:21 [INFO] [stdout] | [INFO] [stdout] 140 | write!(training_data_file, "\n"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: this warning originates in the macro `write` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/snake_nn.rs:150:9 [INFO] [stdout] | [INFO] [stdout] 150 | jh.join(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 150 | let _ = jh.join(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `game_over:` in this pattern is redundant [INFO] [stdout] --> src/snake_nn.rs:203:17 [INFO] [stdout] | [INFO] [stdout] 203 | game_over: game_over, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `game_over` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_shorthand_field_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `game_over:` in this pattern is redundant [INFO] [stdout] --> src/snake_nn.rs:271:13 [INFO] [stdout] | [INFO] [stdout] 271 | game_over: game_over, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `game_over` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `game_over:` in this pattern is redundant [INFO] [stdout] --> src/snake_nn.rs:308:17 [INFO] [stdout] | [INFO] [stdout] 308 | game_over: game_over, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `game_over` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/timing.rs:75:9 [INFO] [stdout] | [INFO] [stdout] 75 | writeln!(f, "=== Timing ==="); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: this warning originates in the macro `writeln` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/timing.rs:77:13 [INFO] [stdout] | [INFO] [stdout] 77 | / writeln!( [INFO] [stdout] 78 | | f, [INFO] [stdout] 79 | | "{}: {}.{:04}s", [INFO] [stdout] 80 | | name, [INFO] [stdout] 81 | | timer.duration.as_secs(), [INFO] [stdout] 82 | | timer.duration.subsec_nanos() / 1000000 [INFO] [stdout] 83 | | ); [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: this warning originates in the macro `writeln` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 4 previous errors; 73 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 4 previous errors; 72 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] error: could not compile `nnrs` (bin "nnrs" test) due to 5 previous errors; 73 warnings emitted [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: could not compile `nnrs` (bin "nnrs") due to 5 previous errors; 72 warnings emitted [INFO] running `Command { std: "docker" "inspect" "657ff5426fc1a2140feb1cc11919f160bfe954aaa87a99c2f6e42bc48a5e31e8", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "657ff5426fc1a2140feb1cc11919f160bfe954aaa87a99c2f6e42bc48a5e31e8", kill_on_drop: false }` [INFO] [stdout] 657ff5426fc1a2140feb1cc11919f160bfe954aaa87a99c2f6e42bc48a5e31e8