[INFO] cloning repository https://github.com/euwbah/rusty-brain
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/euwbah/rusty-brain" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Feuwbah%2Frusty-brain", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Feuwbah%2Frusty-brain'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 7030e519ebd1fdbee7d82273bc214cf32d29ee50
[INFO] checking euwbah/rusty-brain against try#dcc22e5232dd0dbe95a4b3ab84c8d24a0880771e for pr-153721
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Feuwbah%2Frusty-brain" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/euwbah/rusty-brain
[INFO] finished tweaking git repo https://github.com/euwbah/rusty-brain
[INFO] tweaked toml for git repo https://github.com/euwbah/rusty-brain written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/euwbah/rusty-brain on toolchain dcc22e5232dd0dbe95a4b3ab84c8d24a0880771e
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dcc22e5232dd0dbe95a4b3ab84c8d24a0880771e" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/euwbah/rusty-brain 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" "+dcc22e5232dd0dbe95a4b3ab84c8d24a0880771e" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: Cargo.toml: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024`
[INFO] [stderr] warning: `neural-network` (manifest) generated 1 warning
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3e793bdf10248eb2ddbd6b0faebed8155c11b4589982e2893733958d93e8d540" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] d391b65f87a6c83680f136005b8b9fb4ff052e145e3317256c587b58d04e9f63
[INFO] running `Command { std: "docker" "start" "d391b65f87a6c83680f136005b8b9fb4ff052e145e3317256c587b58d04e9f63", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d391b65f87a6c83680f136005b8b9fb4ff052e145e3317256c587b58d04e9f63" "/opt/rustwide/cargo-home/bin/cargo" "+dcc22e5232dd0dbe95a4b3ab84c8d24a0880771e" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d391b65f87a6c83680f136005b8b9fb4ff052e145e3317256c587b58d04e9f63", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d391b65f87a6c83680f136005b8b9fb4ff052e145e3317256c587b58d04e9f63" "/opt/rustwide/cargo-home/bin/cargo" "+dcc22e5232dd0dbe95a4b3ab84c8d24a0880771e" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: Cargo.toml: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024`
[INFO] [stderr] warning: `neural-network` (manifest) generated 1 warning
[INFO] [stderr]    Compiling num-traits v0.2.6
[INFO] [stderr]    Compiling num-complex v0.2.1
[INFO] [stderr]    Compiling matrixmultiply v0.1.15
[INFO] [stderr]     Checking rawpointer v0.1.0
[INFO] [stderr]    Compiling ndarray v0.12.0
[INFO] [stderr]     Checking either v1.5.0
[INFO] [stderr]     Checking rand v0.5.5
[INFO] [stderr]     Checking itertools v0.7.8
[INFO] [stderr]     Checking neural-network v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `ndarray::ArrayBase`
[INFO] [stdout]  --> src/layers.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use ndarray::ArrayBase;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ndarray::Axis`
[INFO] [stdout]  --> src/layers.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use ndarray::Axis;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ndarray::ArrayBase`
[INFO] [stdout]  --> src/layers.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use ndarray::ArrayBase;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ndarray::Axis`
[INFO] [stdout]  --> src/layers.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use ndarray::Axis;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/layers.rs:150:13
[INFO] [stdout]     |
[INFO] [stdout] 150 |         let mut expected_ground_truths: Vec<f64> = vals.to_vec();
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/layers.rs:150:13
[INFO] [stdout]     |
[INFO] [stdout] 150 |         let mut expected_ground_truths: Vec<f64> = vals.to_vec();
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `step_size`
[INFO] [stdout]    --> src/node.rs:175:34
[INFO] [stdout]     |
[INFO] [stdout] 175 |     fn update_weights(&mut self, step_size: f64) {
[INFO] [stdout]     |                                  ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_step_size`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input_node_name`
[INFO] [stdout]    --> src/node.rs:287:39
[INFO] [stdout]     |
[INFO] [stdout] 287 |     fn calc_derivative_against(&self, input_node_name: &str) -> f64 {
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_input_node_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `step_size`
[INFO] [stdout]    --> src/node.rs:175:34
[INFO] [stdout]     |
[INFO] [stdout] 175 |     fn update_weights(&mut self, step_size: f64) {
[INFO] [stdout]     |                                  ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_step_size`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input_node_name`
[INFO] [stdout]    --> src/node.rs:287:39
[INFO] [stdout]     |
[INFO] [stdout] 287 |     fn calc_derivative_against(&self, input_node_name: &str) -> f64 {
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_input_node_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input_node`
[INFO] [stdout]    --> src/node.rs:303:34
[INFO] [stdout]     |
[INFO] [stdout] 303 |     fn add_input_node(&mut self, input_node: AM<dyn Node + Send>) {
[INFO] [stdout]     |                                  ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_input_node`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input_node`
[INFO] [stdout]    --> src/node.rs:307:39
[INFO] [stdout]     |
[INFO] [stdout] 307 |     fn add_input_node_init(&mut self, input_node: AM<dyn Node + Send>, weight: f64) {
[INFO] [stdout]     |                                       ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_input_node`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `weight`
[INFO] [stdout]    --> src/node.rs:307:72
[INFO] [stdout]     |
[INFO] [stdout] 307 |     fn add_input_node_init(&mut self, input_node: AM<dyn Node + Send>, weight: f64) {
[INFO] [stdout]     |                                                                        ^^^^^^ help: if this is intentional, prefix it with an underscore: `_weight`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input_node_name`
[INFO] [stdout]    --> src/node.rs:366:39
[INFO] [stdout]     |
[INFO] [stdout] 366 |     fn calc_derivative_against(&self, input_node_name: &str) -> f64 {
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_input_node_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input_node`
[INFO] [stdout]    --> src/node.rs:382:34
[INFO] [stdout]     |
[INFO] [stdout] 382 |     fn add_input_node(&mut self, input_node: AM<dyn Node + Send>) {
[INFO] [stdout]     |                                  ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_input_node`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input_node`
[INFO] [stdout]    --> src/node.rs:386:39
[INFO] [stdout]     |
[INFO] [stdout] 386 |     fn add_input_node_init(&mut self, input_node: AM<dyn Node + Send>, weight: f64) {
[INFO] [stdout]     |                                       ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_input_node`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `weight`
[INFO] [stdout]    --> src/node.rs:386:72
[INFO] [stdout]     |
[INFO] [stdout] 386 |     fn add_input_node_init(&mut self, input_node: AM<dyn Node + Send>, weight: f64) {
[INFO] [stdout]     |                                                                        ^^^^^^ help: if this is intentional, prefix it with an underscore: `_weight`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input_node`
[INFO] [stdout]    --> src/node.rs:303:34
[INFO] [stdout]     |
[INFO] [stdout] 303 |     fn add_input_node(&mut self, input_node: AM<dyn Node + Send>) {
[INFO] [stdout]     |                                  ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_input_node`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input_node`
[INFO] [stdout]    --> src/node.rs:307:39
[INFO] [stdout]     |
[INFO] [stdout] 307 |     fn add_input_node_init(&mut self, input_node: AM<dyn Node + Send>, weight: f64) {
[INFO] [stdout]     |                                       ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_input_node`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `weight`
[INFO] [stdout]    --> src/node.rs:307:72
[INFO] [stdout]     |
[INFO] [stdout] 307 |     fn add_input_node_init(&mut self, input_node: AM<dyn Node + Send>, weight: f64) {
[INFO] [stdout]     |                                                                        ^^^^^^ help: if this is intentional, prefix it with an underscore: `_weight`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> src/node.rs:451:31
[INFO] [stdout]     |
[INFO] [stdout] 451 |             .fold(0.0, |acc, (name, node_weight)| {
[INFO] [stdout]     |                               ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input_node_name`
[INFO] [stdout]    --> src/node.rs:366:39
[INFO] [stdout]     |
[INFO] [stdout] 366 |     fn calc_derivative_against(&self, input_node_name: &str) -> f64 {
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_input_node_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input_node`
[INFO] [stdout]    --> src/node.rs:382:34
[INFO] [stdout]     |
[INFO] [stdout] 382 |     fn add_input_node(&mut self, input_node: AM<dyn Node + Send>) {
[INFO] [stdout]     |                                  ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_input_node`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input_node`
[INFO] [stdout]    --> src/node.rs:386:39
[INFO] [stdout]     |
[INFO] [stdout] 386 |     fn add_input_node_init(&mut self, input_node: AM<dyn Node + Send>, weight: f64) {
[INFO] [stdout]     |                                       ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_input_node`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `weight`
[INFO] [stdout]    --> src/node.rs:386:72
[INFO] [stdout]     |
[INFO] [stdout] 386 |     fn add_input_node_init(&mut self, input_node: AM<dyn Node + Send>, weight: f64) {
[INFO] [stdout]     |                                                                        ^^^^^^ help: if this is intentional, prefix it with an underscore: `_weight`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/node.rs:513:17
[INFO] [stdout]     |
[INFO] [stdout] 513 |             let mut nw = inputs.get(k).unwrap();
[INFO] [stdout]     |                 ----^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> src/node.rs:451:31
[INFO] [stdout]     |
[INFO] [stdout] 451 |             .fold(0.0, |acc, (name, node_weight)| {
[INFO] [stdout]     |                               ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/node.rs:513:17
[INFO] [stdout]     |
[INFO] [stdout] 513 |             let mut nw = inputs.get(k).unwrap();
[INFO] [stdout]     |                 ----^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `step_size`
[INFO] [stdout]    --> src/node.rs:625:34
[INFO] [stdout]     |
[INFO] [stdout] 625 |     fn update_weights(&mut self, step_size: f64) {
[INFO] [stdout]     |                                  ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_step_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `step_size`
[INFO] [stdout]    --> src/node.rs:625:34
[INFO] [stdout]     |
[INFO] [stdout] 625 |     fn update_weights(&mut self, step_size: f64) {
[INFO] [stdout]     |                                  ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_step_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 42 |     let mut i1 = InputNode::new("i1", 0.6);
[INFO] [stdout]    |         ----^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:43:9
[INFO] [stdout]    |
[INFO] [stdout] 43 |     let mut i2 = InputNode::new("i2", 1.0);
[INFO] [stdout]    |         ----^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:45:9
[INFO] [stdout]    |
[INFO] [stdout] 45 |     let mut input_layer = InputLayer::new(&vec![i1.clone(), i2.clone()], &training_vals);
[INFO] [stdout]    |         ----^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:47:9
[INFO] [stdout]    |
[INFO] [stdout] 47 |     let mut s1 = SumNode::new("s1");
[INFO] [stdout]    |         ----^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:52:9
[INFO] [stdout]    |
[INFO] [stdout] 52 |     let mut output_layer = OutputLayer::new(
[INFO] [stdout]    |         ----^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 42 |     let mut i1 = InputNode::new("i1", 0.6);
[INFO] [stdout]    |         ----^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:43:9
[INFO] [stdout]    |
[INFO] [stdout] 43 |     let mut i2 = InputNode::new("i2", 1.0);
[INFO] [stdout]    |         ----^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:45:9
[INFO] [stdout]    |
[INFO] [stdout] 45 |     let mut input_layer = InputLayer::new(&vec![i1.clone(), i2.clone()], &training_vals);
[INFO] [stdout]    |         ----^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:47:9
[INFO] [stdout]    |
[INFO] [stdout] 47 |     let mut s1 = SumNode::new("s1");
[INFO] [stdout]    |         ----^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:52:9
[INFO] [stdout]    |
[INFO] [stdout] 52 |     let mut output_layer = OutputLayer::new(
[INFO] [stdout]    |         ----^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `TrainingState` is more private than the item `node::Node::get_training_state`
[INFO] [stdout]    --> src/node.rs:88:5
[INFO] [stdout]     |
[INFO] [stdout]  88 |     fn get_training_state(&self) -> &TrainingState;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `node::Node::get_training_state` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `TrainingState` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/node.rs:220:1
[INFO] [stdout]     |
[INFO] [stdout] 220 | struct TrainingState {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `TrainingState` is more private than the item `node::Node::get_training_state_mut`
[INFO] [stdout]    --> src/node.rs:90:5
[INFO] [stdout]     |
[INFO] [stdout]  90 |     fn get_training_state_mut(&mut self) -> &mut TrainingState;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `node::Node::get_training_state_mut` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `TrainingState` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/node.rs:220:1
[INFO] [stdout]     |
[INFO] [stdout] 220 | struct TrainingState {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `TrainingState` is more private than the item `node::Node::get_training_state`
[INFO] [stdout]    --> src/node.rs:88:5
[INFO] [stdout]     |
[INFO] [stdout]  88 |     fn get_training_state(&self) -> &TrainingState;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `node::Node::get_training_state` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `TrainingState` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/node.rs:220:1
[INFO] [stdout]     |
[INFO] [stdout] 220 | struct TrainingState {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `TrainingState` is more private than the item `<node::InputNode as node::Node>::get_training_state`
[INFO] [stdout]    --> src/node.rs:279:5
[INFO] [stdout]     |
[INFO] [stdout] 279 |     fn get_training_state(&self) -> &TrainingState {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `<node::InputNode as node::Node>::get_training_state` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `TrainingState` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/node.rs:220:1
[INFO] [stdout]     |
[INFO] [stdout] 220 | struct TrainingState {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `TrainingState` is more private than the item `node::Node::get_training_state_mut`
[INFO] [stdout]    --> src/node.rs:90:5
[INFO] [stdout]     |
[INFO] [stdout]  90 |     fn get_training_state_mut(&mut self) -> &mut TrainingState;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `node::Node::get_training_state_mut` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `TrainingState` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/node.rs:220:1
[INFO] [stdout]     |
[INFO] [stdout] 220 | struct TrainingState {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `TrainingState` is more private than the item `<node::InputNode as node::Node>::get_training_state_mut`
[INFO] [stdout]    --> src/node.rs:283:5
[INFO] [stdout]     |
[INFO] [stdout] 283 |     fn get_training_state_mut(&mut self) -> &mut TrainingState {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `<node::InputNode as node::Node>::get_training_state_mut` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `TrainingState` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/node.rs:220:1
[INFO] [stdout]     |
[INFO] [stdout] 220 | struct TrainingState {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `TrainingState` is more private than the item `<node::InputNode as node::Node>::get_training_state`
[INFO] [stdout]    --> src/node.rs:279:5
[INFO] [stdout]     |
[INFO] [stdout] 279 |     fn get_training_state(&self) -> &TrainingState {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `<node::InputNode as node::Node>::get_training_state` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `TrainingState` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/node.rs:220:1
[INFO] [stdout]     |
[INFO] [stdout] 220 | struct TrainingState {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `TrainingState` is more private than the item `<ConstantNode as node::Node>::get_training_state`
[INFO] [stdout]    --> src/node.rs:358:5
[INFO] [stdout]     |
[INFO] [stdout] 358 |     fn get_training_state(&self) -> &TrainingState {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `<ConstantNode as node::Node>::get_training_state` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `TrainingState` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/node.rs:220:1
[INFO] [stdout]     |
[INFO] [stdout] 220 | struct TrainingState {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `TrainingState` is more private than the item `<node::InputNode as node::Node>::get_training_state_mut`
[INFO] [stdout]    --> src/node.rs:283:5
[INFO] [stdout]     |
[INFO] [stdout] 283 |     fn get_training_state_mut(&mut self) -> &mut TrainingState {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `<node::InputNode as node::Node>::get_training_state_mut` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `TrainingState` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/node.rs:220:1
[INFO] [stdout]     |
[INFO] [stdout] 220 | struct TrainingState {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `TrainingState` is more private than the item `<ConstantNode as node::Node>::get_training_state_mut`
[INFO] [stdout]    --> src/node.rs:362:5
[INFO] [stdout]     |
[INFO] [stdout] 362 |     fn get_training_state_mut(&mut self) -> &mut TrainingState {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `<ConstantNode as node::Node>::get_training_state_mut` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `TrainingState` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/node.rs:220:1
[INFO] [stdout]     |
[INFO] [stdout] 220 | struct TrainingState {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `TrainingState` is more private than the item `<ConstantNode as node::Node>::get_training_state`
[INFO] [stdout]    --> src/node.rs:358:5
[INFO] [stdout]     |
[INFO] [stdout] 358 |     fn get_training_state(&self) -> &TrainingState {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `<ConstantNode as node::Node>::get_training_state` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `TrainingState` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/node.rs:220:1
[INFO] [stdout]     |
[INFO] [stdout] 220 | struct TrainingState {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `TrainingState` is more private than the item `<node::SumNode as node::Node>::get_training_state`
[INFO] [stdout]    --> src/node.rs:464:5
[INFO] [stdout]     |
[INFO] [stdout] 464 |     fn get_training_state(&self) -> &TrainingState {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `<node::SumNode as node::Node>::get_training_state` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `TrainingState` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/node.rs:220:1
[INFO] [stdout]     |
[INFO] [stdout] 220 | struct TrainingState {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `TrainingState` is more private than the item `<ConstantNode as node::Node>::get_training_state_mut`
[INFO] [stdout]    --> src/node.rs:362:5
[INFO] [stdout]     |
[INFO] [stdout] 362 |     fn get_training_state_mut(&mut self) -> &mut TrainingState {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `<ConstantNode as node::Node>::get_training_state_mut` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `TrainingState` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/node.rs:220:1
[INFO] [stdout]     |
[INFO] [stdout] 220 | struct TrainingState {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `TrainingState` is more private than the item `<node::SumNode as node::Node>::get_training_state_mut`
[INFO] [stdout]    --> src/node.rs:468:5
[INFO] [stdout]     |
[INFO] [stdout] 468 |     fn get_training_state_mut(&mut self) -> &mut TrainingState {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `<node::SumNode as node::Node>::get_training_state_mut` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `TrainingState` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/node.rs:220:1
[INFO] [stdout]     |
[INFO] [stdout] 220 | struct TrainingState {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `TrainingState` is more private than the item `<SigmoidNode as node::Node>::get_training_state`
[INFO] [stdout]    --> src/node.rs:596:5
[INFO] [stdout]     |
[INFO] [stdout] 596 |     fn get_training_state(&self) -> &TrainingState {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `<SigmoidNode as node::Node>::get_training_state` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `TrainingState` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/node.rs:220:1
[INFO] [stdout]     |
[INFO] [stdout] 220 | struct TrainingState {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `TrainingState` is more private than the item `<SigmoidNode as node::Node>::get_training_state_mut`
[INFO] [stdout]    --> src/node.rs:600:5
[INFO] [stdout]     |
[INFO] [stdout] 600 |     fn get_training_state_mut(&mut self) -> &mut TrainingState {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `<SigmoidNode as node::Node>::get_training_state_mut` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `TrainingState` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/node.rs:220:1
[INFO] [stdout]     |
[INFO] [stdout] 220 | struct TrainingState {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `TrainingState` is more private than the item `<node::SumNode as node::Node>::get_training_state`
[INFO] [stdout]    --> src/node.rs:464:5
[INFO] [stdout]     |
[INFO] [stdout] 464 |     fn get_training_state(&self) -> &TrainingState {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `<node::SumNode as node::Node>::get_training_state` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `TrainingState` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/node.rs:220:1
[INFO] [stdout]     |
[INFO] [stdout] 220 | struct TrainingState {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `TrainingState` is more private than the item `<node::SumNode as node::Node>::get_training_state_mut`
[INFO] [stdout]    --> src/node.rs:468:5
[INFO] [stdout]     |
[INFO] [stdout] 468 |     fn get_training_state_mut(&mut self) -> &mut TrainingState {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `<node::SumNode as node::Node>::get_training_state_mut` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `TrainingState` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/node.rs:220:1
[INFO] [stdout]     |
[INFO] [stdout] 220 | struct TrainingState {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `node_name_to_index_map` is never read
[INFO] [stdout]   --> src/layers.rs:69:9
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub struct OutputLayer {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 68 |     pub output_nodes: Vec<AM<dyn Node>>,
[INFO] [stdout] 69 |     pub node_name_to_index_map: HashMap<String, usize>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `TrainingState` is more private than the item `<SigmoidNode as node::Node>::get_training_state`
[INFO] [stdout]    --> src/node.rs:596:5
[INFO] [stdout]     |
[INFO] [stdout] 596 |     fn get_training_state(&self) -> &TrainingState {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `<SigmoidNode as node::Node>::get_training_state` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `TrainingState` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/node.rs:220:1
[INFO] [stdout]     |
[INFO] [stdout] 220 | struct TrainingState {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_ground_truth` is never used
[INFO] [stdout]    --> src/layers.rs:162:12
[INFO] [stdout]     |
[INFO] [stdout]  75 | impl OutputLayer {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn get_ground_truth(&self, iter: usize, node_name: &str) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `TrainingState` is more private than the item `<SigmoidNode as node::Node>::get_training_state_mut`
[INFO] [stdout]    --> src/node.rs:600:5
[INFO] [stdout]     |
[INFO] [stdout] 600 |     fn get_training_state_mut(&mut self) -> &mut TrainingState {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `<SigmoidNode as node::Node>::get_training_state_mut` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `TrainingState` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/node.rs:220:1
[INFO] [stdout]     |
[INFO] [stdout] 220 | struct TrainingState {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `learning_rate` is never read
[INFO] [stdout]   --> src/network.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct NetworkConfigs {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub learning_rate: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `network_configs` is never read
[INFO] [stdout]   --> src/network.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct Network {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub network_configs: NetworkConfigs,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `node_name_to_index_map` is never read
[INFO] [stdout]   --> src/layers.rs:69:9
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub struct OutputLayer {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 68 |     pub output_nodes: Vec<AM<dyn Node>>,
[INFO] [stdout] 69 |     pub node_name_to_index_map: HashMap<String, usize>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_network_configs`, `calc_avg_training_loss`, `update_weights`, and `train_one_epoch` are never used
[INFO] [stdout]   --> src/network.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl Network {
[INFO] [stdout]    | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn set_network_configs(&mut self, network_configs: NetworkConfigs) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn calc_avg_training_loss(&self) {}
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn update_weights(&mut self) {}
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn train_one_epoch(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_ground_truth` is never used
[INFO] [stdout]    --> src/layers.rs:162:12
[INFO] [stdout]     |
[INFO] [stdout]  75 | impl OutputLayer {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn get_ground_truth(&self, iter: usize, node_name: &str) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `learning_rate` is never read
[INFO] [stdout]   --> src/network.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct NetworkConfigs {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub learning_rate: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `network_configs` is never read
[INFO] [stdout]   --> src/network.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct Network {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub network_configs: NetworkConfigs,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_network_configs`, `calc_avg_training_loss`, `update_weights`, and `train_one_epoch` are never used
[INFO] [stdout]   --> src/network.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl Network {
[INFO] [stdout]    | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn set_network_configs(&mut self, network_configs: NetworkConfigs) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn calc_avg_training_loss(&self) {}
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn update_weights(&mut self) {}
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn train_one_epoch(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `update_weights`, `input_nodes`, `input_node_weights`, and `add_input_node` are never used
[INFO] [stdout]    --> src/node.rs:175:8
[INFO] [stdout]     |
[INFO] [stdout]  65 | pub trait Node {
[INFO] [stdout]     |           ---- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 175 |     fn update_weights(&mut self, step_size: f64) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     fn input_nodes(&self) -> Vec<AM<dyn Node + Send>>;
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 181 |
[INFO] [stdout] 182 |     fn input_node_weights(&self) -> AM<HashMap<String, NodeWeight>>;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     fn add_input_node(&mut self, input_node: AM<dyn Node + Send>);
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `update_weights`, `input_nodes`, `input_node_weights`, and `add_input_node` are never used
[INFO] [stdout]    --> src/node.rs:175:8
[INFO] [stdout]     |
[INFO] [stdout]  65 | pub trait Node {
[INFO] [stdout]     |           ---- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 175 |     fn update_weights(&mut self, step_size: f64) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     fn input_nodes(&self) -> Vec<AM<dyn Node + Send>>;
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 181 |
[INFO] [stdout] 182 |     fn input_node_weights(&self) -> AM<HashMap<String, NodeWeight>>;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     fn add_input_node(&mut self, input_node: AM<dyn Node + Send>);
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect` is never used
[INFO] [stdout]    --> src/node.rs:208:8
[INFO] [stdout]     |
[INFO] [stdout] 208 | pub fn connect(a: AM<dyn Node + Send>, b: AM<dyn Node + Send>) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect` is never used
[INFO] [stdout]    --> src/node.rs:208:8
[INFO] [stdout]     |
[INFO] [stdout] 208 | pub fn connect(a: AM<dyn Node + Send>, b: AM<dyn Node + Send>) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `empty_hashmap` is never read
[INFO] [stdout]    --> src/node.rs:244:5
[INFO] [stdout]     |
[INFO] [stdout] 238 | pub struct InputNode {
[INFO] [stdout]     |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 244 |     empty_hashmap: AM<HashMap<String, NodeWeight>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConstantNode` is never constructed
[INFO] [stdout]    --> src/node.rs:319:12
[INFO] [stdout]     |
[INFO] [stdout] 319 | pub struct ConstantNode {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/node.rs:329:12
[INFO] [stdout]     |
[INFO] [stdout] 328 | impl ConstantNode {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] 329 |     pub fn new(name: &str, const_value: f64) -> AM<ConstantNode> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `empty_hashmap` is never read
[INFO] [stdout]    --> src/node.rs:244:5
[INFO] [stdout]     |
[INFO] [stdout] 238 | pub struct InputNode {
[INFO] [stdout]     |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 244 |     empty_hashmap: AM<HashMap<String, NodeWeight>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SigmoidNode` is never constructed
[INFO] [stdout]    --> src/node.rs:564:12
[INFO] [stdout]     |
[INFO] [stdout] 564 | pub struct SigmoidNode {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConstantNode` is never constructed
[INFO] [stdout]    --> src/node.rs:319:12
[INFO] [stdout]     |
[INFO] [stdout] 319 | pub struct ConstantNode {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/node.rs:329:12
[INFO] [stdout]     |
[INFO] [stdout] 328 | impl ConstantNode {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] 329 |     pub fn new(name: &str, const_value: f64) -> AM<ConstantNode> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SigmoidNode` is never constructed
[INFO] [stdout]    --> src/node.rs:564:12
[INFO] [stdout]     |
[INFO] [stdout] 564 | pub struct SigmoidNode {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 4.13s
[INFO] running `Command { std: "docker" "inspect" "d391b65f87a6c83680f136005b8b9fb4ff052e145e3317256c587b58d04e9f63", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d391b65f87a6c83680f136005b8b9fb4ff052e145e3317256c587b58d04e9f63", kill_on_drop: false }`
[INFO] [stdout] d391b65f87a6c83680f136005b8b9fb4ff052e145e3317256c587b58d04e9f63
