[INFO] cloning repository https://github.com/AlexBethel/cse4066-final-project
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/AlexBethel/cse4066-final-project" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAlexBethel%2Fcse4066-final-project", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAlexBethel%2Fcse4066-final-project'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 494b9c553566e93b3d370f234942e7d92818c1d6
[INFO] checking AlexBethel/cse4066-final-project against master#36b21637e93b038453924d3c66821089e71d8baa for pr-143164
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAlexBethel%2Fcse4066-final-project" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/AlexBethel/cse4066-final-project
[INFO] finished tweaking git repo https://github.com/AlexBethel/cse4066-final-project
[INFO] tweaked toml for git repo https://github.com/AlexBethel/cse4066-final-project written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/AlexBethel/cse4066-final-project on toolchain 36b21637e93b038453924d3c66821089e71d8baa
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+36b21637e93b038453924d3c66821089e71d8baa" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/AlexBethel/cse4066-final-project 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" "+36b21637e93b038453924d3c66821089e71d8baa" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded fdeflate v0.3.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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:cf8efcab8866f2cf4285301c7418e2f4f2a9b088c91ba69c40d5b659f81557f7" "/opt/rustwide/cargo-home/bin/cargo" "+36b21637e93b038453924d3c66821089e71d8baa" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] c33acfa0cd9a75beeaa8db59226d4de96d36b81fdf75187f51edda0f6796018a
[INFO] running `Command { std: "docker" "start" "-a" "c33acfa0cd9a75beeaa8db59226d4de96d36b81fdf75187f51edda0f6796018a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c33acfa0cd9a75beeaa8db59226d4de96d36b81fdf75187f51edda0f6796018a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c33acfa0cd9a75beeaa8db59226d4de96d36b81fdf75187f51edda0f6796018a", kill_on_drop: false }`
[INFO] [stdout] c33acfa0cd9a75beeaa8db59226d4de96d36b81fdf75187f51edda0f6796018a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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:cf8efcab8866f2cf4285301c7418e2f4f2a9b088c91ba69c40d5b659f81557f7" "/opt/rustwide/cargo-home/bin/cargo" "+36b21637e93b038453924d3c66821089e71d8baa" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] d539b0772882b5cafd8f7bc8a0c511d6b0311db9329704e1d895088d8b8cfc2c
[INFO] running `Command { std: "docker" "start" "-a" "d539b0772882b5cafd8f7bc8a0c511d6b0311db9329704e1d895088d8b8cfc2c", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.70
[INFO] [stderr]    Compiling libc v0.2.150
[INFO] [stderr]    Compiling crc32fast v1.3.2
[INFO] [stderr]    Compiling serde v1.0.193
[INFO] [stderr]     Checking miniz_oxide v0.7.1
[INFO] [stderr]     Checking fdeflate v0.3.1
[INFO] [stderr]     Checking flate2 v1.0.28
[INFO] [stderr]    Compiling quote v1.0.33
[INFO] [stderr]     Checking png v0.17.10
[INFO] [stderr]    Compiling syn v2.0.39
[INFO] [stderr]     Checking getrandom v0.2.11
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]    Compiling serde_derive v1.0.193
[INFO] [stderr]     Checking bincode v1.3.3
[INFO] [stderr]     Checking project v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused variable: `inputs`
[INFO] [stdout]   --> src/layers/recompose.rs:34:60
[INFO] [stdout]    |
[INFO] [stdout] 34 |     fn backprop_input(&self, output_derivatives: &[Image], inputs: &[f64]) -> Vec<f64> {
[INFO] [stdout]    |                                                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_inputs`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_network` is never used
[INFO] [stdout]   --> src/main.rs:56:4
[INFO] [stdout]    |
[INFO] [stdout] 56 | fn generate_network() {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_ae_network` is never used
[INFO] [stdout]   --> src/main.rs:79:4
[INFO] [stdout]    |
[INFO] [stdout] 79 | fn generate_ae_network() {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `train_mnist` is never used
[INFO] [stdout]    --> src/main.rs:109:4
[INFO] [stdout]     |
[INFO] [stdout] 109 | fn train_mnist() {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dump_testing_data` is never used
[INFO] [stdout]    --> src/main.rs:228:4
[INFO] [stdout]     |
[INFO] [stdout] 228 | fn dump_testing_data() {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `black`, `from_graph_sampler`, and `divide` are never used
[INFO] [stdout]    --> src/image.rs:42:12
[INFO] [stdout]     |
[INFO] [stdout] 40  | impl Image {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout] 41  |     /// Create a new solid black image.
[INFO] [stdout] 42  |     pub fn black(xsize: usize, ysize: usize) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93  |     pub fn from_graph_sampler(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn divide(self, x_scaler: usize, y_scaler: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/layers/cnn.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl CnnLayer {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 21 |     pub fn new(kernel_diameter: usize, kernel_stride: usize, n_kernels: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `softmax_loss_gradient` is never used
[INFO] [stdout]   --> src/layers/softmax.rs:45:8
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub fn softmax_loss_gradient(outputs: &[f64], correct_output: usize) -> Vec<f64> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/layers/maxpool.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl MaxpoolLayer {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 13 |     pub fn new(diameter: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `derivative` is never used
[INFO] [stdout]   --> src/layers/fully_connected.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub trait Activation {
[INFO] [stdout]    |           ---------- method in this trait
[INFO] [stdout] 12 |     fn apply(&self, input: f64) -> f64;
[INFO] [stdout] 13 |     fn derivative(&self, input: f64) -> f64;
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/layers/fully_connected.rs:101:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl<F: Activation> FullyConnectedLayer<F> {
[INFO] [stdout]     | ------------------------------------------ associated function in this implementation
[INFO] [stdout] 101 |     pub fn new(n_inputs: usize, n_outputs: usize, activation: F) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/layers/recompose.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl RecomposeLayer {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 18 |     pub fn new(xsize: usize, ysize: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `loss` is never used
[INFO] [stdout]   --> src/layers/recompose.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub fn loss(output: &Image, expected: &Image) -> f64 {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `loss_gradient` is never used
[INFO] [stdout]   --> src/layers/recompose.rs:47:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub fn loss_gradient(output: &Image, expected: &Image) -> Image {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `backprop_self`, `backprop_input`, and `stack` are never used
[INFO] [stdout]   --> src/network.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 7  | pub trait NeuralNetwork {
[INFO] [stdout]    |           ------------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 15 |     fn backprop_self(
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     fn backprop_input(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     fn stack<O: NeuralNetwork<InputElem = Self::OutputElem>>(
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cartesian_product` is never used
[INFO] [stdout]   --> src/network.rs:80:8
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn cartesian_product<T, U>(left: T, right: U) -> impl Iterator<Item = (T::Item, U::Item)>
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ngon_flat` is never used
[INFO] [stdout]  --> src/polygon.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn ngon_flat(xsize: usize, ysize: usize, vertices: &[(f64, f64)]) -> Image {
[INFO] [stdout]   |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ngon_regular` is never used
[INFO] [stdout]   --> src/polygon.rs:30:8
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub fn ngon_regular(xsize: usize, ysize: usize, n_vertices: u32, angle_offset: f64) -> Image {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Edges` is never constructed
[INFO] [stdout]   --> src/polygon.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | struct Edges<'a> {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/polygon.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 47 | impl<'a> Edges<'a> {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 48 |     pub fn new(vertices: &'a [(f64, f64)]) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `RNG` is never used
[INFO] [stdout]  --> src/random.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | static mut RNG: Option<StdRng> = None;
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random` is never used
[INFO] [stdout]  --> src/random.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn random<T>() -> T
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]  --> src/random.rs:9:24
[INFO] [stdout]   |
[INFO] [stdout] 9 |     let rng = unsafe { &mut RNG }.get_or_insert_with(|| StdRng::from_seed([2; 32]));
[INFO] [stdout]   |                        ^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]   |
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]   = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]   = note: `#[warn(static_mut_refs)]` on by default
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]   |
[INFO] [stdout] 9 |     let rng = unsafe { &raw mut RNG }.get_or_insert_with(|| StdRng::from_seed([2; 32]));
[INFO] [stdout]   |                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `inputs`
[INFO] [stdout]   --> src/layers/recompose.rs:34:60
[INFO] [stdout]    |
[INFO] [stdout] 34 |     fn backprop_input(&self, output_derivatives: &[Image], inputs: &[f64]) -> Vec<f64> {
[INFO] [stdout]    |                                                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_inputs`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_network` is never used
[INFO] [stdout]   --> src/main.rs:56:4
[INFO] [stdout]    |
[INFO] [stdout] 56 | fn generate_network() {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_ae_network` is never used
[INFO] [stdout]   --> src/main.rs:79:4
[INFO] [stdout]    |
[INFO] [stdout] 79 | fn generate_ae_network() {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `train_mnist` is never used
[INFO] [stdout]    --> src/main.rs:109:4
[INFO] [stdout]     |
[INFO] [stdout] 109 | fn train_mnist() {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dump_testing_data` is never used
[INFO] [stdout]    --> src/main.rs:228:4
[INFO] [stdout]     |
[INFO] [stdout] 228 | fn dump_testing_data() {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `black`, `from_graph_sampler`, and `divide` are never used
[INFO] [stdout]    --> src/image.rs:42:12
[INFO] [stdout]     |
[INFO] [stdout] 40  | impl Image {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout] 41  |     /// Create a new solid black image.
[INFO] [stdout] 42  |     pub fn black(xsize: usize, ysize: usize) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93  |     pub fn from_graph_sampler(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn divide(self, x_scaler: usize, y_scaler: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/layers/cnn.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl CnnLayer {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 21 |     pub fn new(kernel_diameter: usize, kernel_stride: usize, n_kernels: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `softmax_loss_gradient` is never used
[INFO] [stdout]   --> src/layers/softmax.rs:45:8
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub fn softmax_loss_gradient(outputs: &[f64], correct_output: usize) -> Vec<f64> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/layers/maxpool.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl MaxpoolLayer {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 13 |     pub fn new(diameter: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `derivative` is never used
[INFO] [stdout]   --> src/layers/fully_connected.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub trait Activation {
[INFO] [stdout]    |           ---------- method in this trait
[INFO] [stdout] 12 |     fn apply(&self, input: f64) -> f64;
[INFO] [stdout] 13 |     fn derivative(&self, input: f64) -> f64;
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/layers/fully_connected.rs:101:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl<F: Activation> FullyConnectedLayer<F> {
[INFO] [stdout]     | ------------------------------------------ associated function in this implementation
[INFO] [stdout] 101 |     pub fn new(n_inputs: usize, n_outputs: usize, activation: F) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/layers/recompose.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl RecomposeLayer {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 18 |     pub fn new(xsize: usize, ysize: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `loss` is never used
[INFO] [stdout]   --> src/layers/recompose.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub fn loss(output: &Image, expected: &Image) -> f64 {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `loss_gradient` is never used
[INFO] [stdout]   --> src/layers/recompose.rs:47:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub fn loss_gradient(output: &Image, expected: &Image) -> Image {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `backprop_self`, `backprop_input`, and `stack` are never used
[INFO] [stdout]   --> src/network.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 7  | pub trait NeuralNetwork {
[INFO] [stdout]    |           ------------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 15 |     fn backprop_self(
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     fn backprop_input(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     fn stack<O: NeuralNetwork<InputElem = Self::OutputElem>>(
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cartesian_product` is never used
[INFO] [stdout]   --> src/network.rs:80:8
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn cartesian_product<T, U>(left: T, right: U) -> impl Iterator<Item = (T::Item, U::Item)>
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ngon_flat` is never used
[INFO] [stdout]  --> src/polygon.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn ngon_flat(xsize: usize, ysize: usize, vertices: &[(f64, f64)]) -> Image {
[INFO] [stdout]   |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ngon_regular` is never used
[INFO] [stdout]   --> src/polygon.rs:30:8
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub fn ngon_regular(xsize: usize, ysize: usize, n_vertices: u32, angle_offset: f64) -> Image {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Edges` is never constructed
[INFO] [stdout]   --> src/polygon.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | struct Edges<'a> {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/polygon.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 47 | impl<'a> Edges<'a> {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 48 |     pub fn new(vertices: &'a [(f64, f64)]) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `RNG` is never used
[INFO] [stdout]  --> src/random.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | static mut RNG: Option<StdRng> = None;
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random` is never used
[INFO] [stdout]  --> src/random.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn random<T>() -> T
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]  --> src/random.rs:9:24
[INFO] [stdout]   |
[INFO] [stdout] 9 |     let rng = unsafe { &mut RNG }.get_or_insert_with(|| StdRng::from_seed([2; 32]));
[INFO] [stdout]   |                        ^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]   |
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]   = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]   = note: `#[warn(static_mut_refs)]` on by default
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]   |
[INFO] [stdout] 9 |     let rng = unsafe { &raw mut RNG }.get_or_insert_with(|| StdRng::from_seed([2; 32]));
[INFO] [stdout]   |                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 11.40s
[INFO] running `Command { std: "docker" "inspect" "d539b0772882b5cafd8f7bc8a0c511d6b0311db9329704e1d895088d8b8cfc2c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d539b0772882b5cafd8f7bc8a0c511d6b0311db9329704e1d895088d8b8cfc2c", kill_on_drop: false }`
[INFO] [stdout] d539b0772882b5cafd8f7bc8a0c511d6b0311db9329704e1d895088d8b8cfc2c
