[INFO] cloning repository https://github.com/KartavyaDikshit/Thermite
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/KartavyaDikshit/Thermite" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKartavyaDikshit%2FThermite", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKartavyaDikshit%2FThermite'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 654cd9e9a6087c06b17a57a34f0ccc5edf74e54e
[INFO] checking KartavyaDikshit/Thermite against 5c543b0b8c73c7b72bc8284ced4fb22ead15734d for pr-160186
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKartavyaDikshit%2FThermite" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/KartavyaDikshit/Thermite
[INFO] finished tweaking git repo https://github.com/KartavyaDikshit/Thermite
[INFO] tweaked toml for git repo https://github.com/KartavyaDikshit/Thermite written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/KartavyaDikshit/Thermite on toolchain 5c543b0b8c73c7b72bc8284ced4fb22ead15734d
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+5c543b0b8c73c7b72bc8284ced4fb22ead15734d" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/KartavyaDikshit/Thermite 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" "+5c543b0b8c73c7b72bc8284ced4fb22ead15734d" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded range-alloc v0.1.5
[INFO] [stderr]   Downloaded sprs v0.11.4
[INFO] [stderr]   Downloaded openblas-src v0.10.16
[INFO] [stderr]   Downloaded alga v0.9.3
[INFO] [stderr]   Downloaded pollster v0.3.0
[INFO] [stderr]   Downloaded openblas-build v0.10.16
[INFO] [stderr]   Downloaded cblas-sys v0.1.4
[INFO] [stderr]   Downloaded intel-mkl-src v0.8.1
[INFO] [stderr]   Downloaded uuid v1.23.5
[INFO] [stderr]   Downloaded oci-spec v0.6.8
[INFO] [stderr]   Downloaded getset v0.1.7
[INFO] [stderr]   Downloaded directories v5.0.1
[INFO] [stderr]   Downloaded ocipkg v0.2.9
[INFO] [stderr]   Downloaded numpy v0.21.0
[INFO] [stderr]   Downloaded pyo3-build-config v0.21.2
[INFO] [stderr]   Downloaded intel-mkl-tool v0.8.1
[INFO] [stderr]   Downloaded accelerate-src v0.3.2
[INFO] [stderr]   Downloaded pyo3-macros v0.21.2
[INFO] [stderr]   Downloaded regex-automata v0.4.15
[INFO] [stderr]   Downloaded unindent v0.2.4
[INFO] [stderr]   Downloaded pyo3-macros-backend v0.21.2
[INFO] [stderr]   Downloaded pyo3-ffi v0.21.2
[INFO] [stderr]   Downloaded pyo3 v0.21.2
[INFO] [stderr]   Downloaded regex v1.10.6
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/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:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 53c613a7fce1caae1aeb8be41ac8b0bcc55953d585c3fedafff484c0aae6311b
[INFO] running `Command { std: "docker" "start" "53c613a7fce1caae1aeb8be41ac8b0bcc55953d585c3fedafff484c0aae6311b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "53c613a7fce1caae1aeb8be41ac8b0bcc55953d585c3fedafff484c0aae6311b", 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" "53c613a7fce1caae1aeb8be41ac8b0bcc55953d585c3fedafff484c0aae6311b" "/opt/rustwide/cargo-home/bin/cargo" "+5c543b0b8c73c7b72bc8284ced4fb22ead15734d" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "53c613a7fce1caae1aeb8be41ac8b0bcc55953d585c3fedafff484c0aae6311b", 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" "53c613a7fce1caae1aeb8be41ac8b0bcc55953d585c3fedafff484c0aae6311b" "/opt/rustwide/cargo-home/bin/cargo" "+5c543b0b8c73c7b72bc8284ced4fb22ead15734d" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling quote v1.0.46
[INFO] [stderr]    Compiling target-lexicon v0.12.16
[INFO] [stderr]    Compiling crossbeam-utils v0.8.22
[INFO] [stderr]    Compiling crossbeam-deque v0.8.7
[INFO] [stderr]    Compiling matrixmultiply v0.3.10
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling once_cell v1.19.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]     Checking rawpointer v0.2.1
[INFO] [stderr]     Checking either v1.16.0
[INFO] [stderr]    Compiling zerocopy v0.8.54
[INFO] [stderr]     Checking smallvec v1.15.2
[INFO] [stderr]    Compiling num-complex v0.2.4
[INFO] [stderr]    Compiling shlex v2.0.1
[INFO] [stderr]    Compiling memoffset v0.9.1
[INFO] [stderr]    Compiling cc v1.2.67
[INFO] [stderr]    Compiling heck v0.4.1
[INFO] [stderr]    Compiling portable-atomic v1.13.1
[INFO] [stderr]     Checking num_cpus v1.17.0
[INFO] [stderr]     Checking unindent v0.2.4
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking crossbeam-epoch v0.9.20
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking num-complex v0.4.6
[INFO] [stderr]     Checking approx v0.3.2
[INFO] [stderr]    Compiling pyo3-build-config v0.21.2
[INFO] [stderr]     Checking rayon-core v1.13.0
[INFO] [stderr]    Compiling syn v2.0.118
[INFO] [stderr]     Checking alga v0.9.3
[INFO] [stderr]     Checking ndarray v0.17.2
[INFO] [stderr]     Checking rayon v1.12.0
[INFO] [stderr]    Compiling thermite-core v0.2.0 (/opt/rustwide/workdir/crates/thermite-core)
[INFO] [stderr]    Compiling pyo3-ffi v0.21.2
[INFO] [stderr]    Compiling pyo3 v0.21.2
[INFO] [stderr]    Compiling pyo3-macros-backend v0.21.2
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand v0.8.7
[INFO] [stderr]     Checking sprs v0.11.4
[INFO] [stderr]    Compiling pyo3-macros v0.21.2
[INFO] [stderr]     Checking ndarray v0.15.6
[INFO] [stderr]     Checking bincode v1.3.3
[INFO] [stderr]     Checking thermite-gpu v0.2.0 (/opt/rustwide/workdir/crates/thermite-gpu)
[INFO] [stderr]     Checking numpy v0.21.0
[INFO] [stdout] warning: unused import: `Array2`
[INFO] [stdout]  --> crates/thermite-core/src/automl.rs:2:23
[INFO] [stdout]   |
[INFO] [stdout] 2 | use ndarray::{Array1, Array2, ArrayView1, ArrayView2};
[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: `std::collections::HashMap`
[INFO] [stdout]  --> crates/thermite-core/src/ensemble.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Axis`
[INFO] [stdout]  --> crates/thermite-core/src/time_series.rs:2:43
[INFO] [stdout]   |
[INFO] [stdout] 2 | use ndarray::{Array1, Array2, ArrayView1, Axis, s};
[INFO] [stdout]   |                                           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Array2`
[INFO] [stdout]  --> crates/thermite-core/src/automl.rs:2:23
[INFO] [stdout]   |
[INFO] [stdout] 2 | use ndarray::{Array1, Array2, ArrayView1, ArrayView2};
[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: `std::collections::HashMap`
[INFO] [stdout]  --> crates/thermite-core/src/ensemble.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Axis`
[INFO] [stdout]  --> crates/thermite-core/src/time_series.rs:2:43
[INFO] [stdout]   |
[INFO] [stdout] 2 | use ndarray::{Array1, Array2, ArrayView1, Axis, s};
[INFO] [stdout]   |                                           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::MAX`: replaced by the `MAX` associated constant on `f64`
[INFO] [stdout]    --> crates/thermite-core/src/ensemble.rs:930:36
[INFO] [stdout]     |
[INFO] [stdout] 930 |         self.mins = vec![std::f64::MAX; p];
[INFO] [stdout]     |                                    ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::MIN`: replaced by the `MIN` associated constant on `f64`
[INFO] [stdout]    --> crates/thermite-core/src/ensemble.rs:931:36
[INFO] [stdout]     |
[INFO] [stdout] 931 |         self.maxs = vec![std::f64::MIN; p];
[INFO] [stdout]     |                                    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::MAX`: replaced by the `MAX` associated constant on `f64`
[INFO] [stdout]     --> crates/thermite-core/src/ensemble.rs:1023:36
[INFO] [stdout]      |
[INFO] [stdout] 1023 |         self.mins = vec![std::f64::MAX; p];
[INFO] [stdout]      |                                    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::MIN`: replaced by the `MIN` associated constant on `f64`
[INFO] [stdout]     --> crates/thermite-core/src/ensemble.rs:1024:36
[INFO] [stdout]      |
[INFO] [stdout] 1024 |         self.maxs = vec![std::f64::MIN; p];
[INFO] [stdout]      |                                    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::MAX`: replaced by the `MAX` associated constant on `f64`
[INFO] [stdout]    --> crates/thermite-core/src/ensemble.rs:930:36
[INFO] [stdout]     |
[INFO] [stdout] 930 |         self.mins = vec![std::f64::MAX; p];
[INFO] [stdout]     |                                    ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::MIN`: replaced by the `MIN` associated constant on `f64`
[INFO] [stdout]    --> crates/thermite-core/src/ensemble.rs:931:36
[INFO] [stdout]     |
[INFO] [stdout] 931 |         self.maxs = vec![std::f64::MIN; p];
[INFO] [stdout]     |                                    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::MAX`: replaced by the `MAX` associated constant on `f64`
[INFO] [stdout]     --> crates/thermite-core/src/ensemble.rs:1023:36
[INFO] [stdout]      |
[INFO] [stdout] 1023 |         self.mins = vec![std::f64::MAX; p];
[INFO] [stdout]      |                                    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::MIN`: replaced by the `MIN` associated constant on `f64`
[INFO] [stdout]     --> crates/thermite-core/src/ensemble.rs:1024:36
[INFO] [stdout]      |
[INFO] [stdout] 1024 |         self.maxs = vec![std::f64::MIN; p];
[INFO] [stdout]      |                                    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/thermite-core/src/cluster.rs:883:21
[INFO] [stdout]     |
[INFO] [stdout] 883 |                 let mut row: Vec<f64> = (0..n).map(|k| AS[[i, k]]).collect();
[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: `n_features`
[INFO] [stdout]     --> crates/thermite-core/src/cluster.rs:1222:13
[INFO] [stdout]      |
[INFO] [stdout] 1222 |         let n_features = centers.ncols();
[INFO] [stdout]      |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_features`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n_features`
[INFO] [stdout]    --> crates/thermite-core/src/decomposition.rs:294:13
[INFO] [stdout]     |
[INFO] [stdout] 294 |         let n_features = D.ncols();
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_features`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `coeffs`
[INFO] [stdout]    --> crates/thermite-core/src/decomposition.rs:340:17
[INFO] [stdout]     |
[INFO] [stdout] 340 |             let coeffs = G.dot(&b.mapv(|v| if v.abs() < 1e-15 { 0.0 } else { 1.0 / v }));
[INFO] [stdout]     |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_coeffs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `alpha`
[INFO] [stdout]    --> crates/thermite-core/src/decomposition.rs:424:13
[INFO] [stdout]     |
[INFO] [stdout] 424 |         let alpha = self.alpha;
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_alpha`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> crates/thermite-core/src/ensemble.rs:1194:13
[INFO] [stdout]      |
[INFO] [stdout] 1194 |         let mut rng = SmallRng::seed_from_u64(seed);
[INFO] [stdout]      |             ----^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rng`
[INFO] [stdout]     --> crates/thermite-core/src/ensemble.rs:1194:13
[INFO] [stdout]      |
[INFO] [stdout] 1194 |         let mut rng = SmallRng::seed_from_u64(seed);
[INFO] [stdout]      |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rng`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `prev_loss` is never read
[INFO] [stdout]     --> crates/thermite-core/src/linear_model.rs:1871:13
[INFO] [stdout]      |
[INFO] [stdout] 1871 |             prev_loss = loss;
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout]      = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/thermite-core/src/cluster.rs:883:21
[INFO] [stdout]     |
[INFO] [stdout] 883 |                 let mut row: Vec<f64> = (0..n).map(|k| AS[[i, k]]).collect();
[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: `n_features`
[INFO] [stdout]     --> crates/thermite-core/src/cluster.rs:1222:13
[INFO] [stdout]      |
[INFO] [stdout] 1222 |         let n_features = centers.ncols();
[INFO] [stdout]      |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_features`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n_features`
[INFO] [stdout]    --> crates/thermite-core/src/decomposition.rs:294:13
[INFO] [stdout]     |
[INFO] [stdout] 294 |         let n_features = D.ncols();
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_features`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `coeffs`
[INFO] [stdout]    --> crates/thermite-core/src/decomposition.rs:340:17
[INFO] [stdout]     |
[INFO] [stdout] 340 |             let coeffs = G.dot(&b.mapv(|v| if v.abs() < 1e-15 { 0.0 } else { 1.0 / v }));
[INFO] [stdout]     |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_coeffs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `label`
[INFO] [stdout]   --> crates/thermite-core/src/model_selection.rs:55:14
[INFO] [stdout]    |
[INFO] [stdout] 55 |         for (label, indices) in &label_to_indices {
[INFO] [stdout]    |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_label`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `alpha`
[INFO] [stdout]    --> crates/thermite-core/src/decomposition.rs:424:13
[INFO] [stdout]     |
[INFO] [stdout] 424 |         let alpha = self.alpha;
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_alpha`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> crates/thermite-core/src/ensemble.rs:1194:13
[INFO] [stdout]      |
[INFO] [stdout] 1194 |         let mut rng = SmallRng::seed_from_u64(seed);
[INFO] [stdout]      |             ----^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rng`
[INFO] [stdout]     --> crates/thermite-core/src/ensemble.rs:1194:13
[INFO] [stdout]      |
[INFO] [stdout] 1194 |         let mut rng = SmallRng::seed_from_u64(seed);
[INFO] [stdout]      |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rng`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `maj_class`
[INFO] [stdout]     --> crates/thermite-core/src/tree.rs:1576:21
[INFO] [stdout]      |
[INFO] [stdout] 1576 |                 let maj_class = 0;
[INFO] [stdout]      |                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_maj_class`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `prev_loss` is never read
[INFO] [stdout]     --> crates/thermite-core/src/linear_model.rs:1871:13
[INFO] [stdout]      |
[INFO] [stdout] 1871 |             prev_loss = loss;
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout]      = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `next_out`
[INFO] [stdout]    --> crates/thermite-core/src/neural_network.rs:270:21
[INFO] [stdout]     |
[INFO] [stdout] 270 |                 let next_out = self.biases[l - 1].len();
[INFO] [stdout]     |                     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_next_out`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `label`
[INFO] [stdout]   --> crates/thermite-core/src/model_selection.rs:55:14
[INFO] [stdout]    |
[INFO] [stdout] 55 |         for (label, indices) in &label_to_indices {
[INFO] [stdout]    |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_label`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `max_iter`
[INFO] [stdout]  --> crates/thermite-core/src/cross_decomposition.rs:3:52
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn power_svd(A: &Array2<f64>, n_components: usize, max_iter: usize) -> (Array2<f64>, Array1<f64>, Array2<f64>) {
[INFO] [stdout]   |                                                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_iter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/thermite-core/src/cross_decomposition.rs:115:13
[INFO] [stdout]     |
[INFO] [stdout] 115 |         let mut y_scores = Array2::<f64>::zeros((n, self.n_components));
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `n_samples` is never read
[INFO] [stdout]   --> crates/thermite-core/src/survival.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | struct SurvivalNode {
[INFO] [stdout]    |        ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     n_samples: usize,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SurvivalNode` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `X_eval` should have a snake case name
[INFO] [stdout]  --> crates/thermite-core/src/automl.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     X_eval: Vec<Array1<f64>>,
[INFO] [stdout]   |     ^^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_eval`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/automl.rs:23:27
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn fit(&mut self, X: &ArrayView2<f64>, y: &ArrayView1<f64>) -> Result<(), String> {
[INFO] [stdout]    |                           ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/automl.rs:30:27
[INFO] [stdout]    |
[INFO] [stdout] 30 |     pub fn predict(&self, X: &ArrayView2<f64>) -> Result<Array1<f64>, String> {
[INFO] [stdout]    |                           ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_candidates` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/automl.rs:55:32
[INFO] [stdout]    |
[INFO] [stdout] 55 |     pub fn suggest_next(&self, X_candidates: &ArrayView2<f64>) -> Result<usize, String> {
[INFO] [stdout]    |                                ^^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_candidates`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_candidates` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/automl.rs:69:32
[INFO] [stdout]    |
[INFO] [stdout] 69 |     pub fn mean_predict(&self, X_candidates: &ArrayView2<f64>) -> Result<Array1<f64>, String> {
[INFO] [stdout]    |                                ^^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_candidates`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_candidates` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/automl.rs:73:31
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub fn uncertainty(&self, X_candidates: &ArrayView2<f64>) -> Array1<f64> {
[INFO] [stdout]    |                               ^^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_candidates`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/model_selection.rs:390:23
[INFO] [stdout]     |
[INFO] [stdout] 390 |     fn fit(&mut self, X: &ArrayView2<f64>, y: &ArrayView1<f64>) -> Result<(), String>;
[INFO] [stdout]     |                       ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/model_selection.rs:391:23
[INFO] [stdout]     |
[INFO] [stdout] 391 |     fn predict(&self, X: &ArrayView2<f64>) -> Result<Array1<f64>, String>;
[INFO] [stdout]     |                       ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/model_selection.rs:411:5
[INFO] [stdout]     |
[INFO] [stdout] 411 |     X: &ArrayView2<f64>,
[INFO] [stdout]     |     ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_train` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/model_selection.rs:420:17
[INFO] [stdout]     |
[INFO] [stdout] 420 |             let X_train = X.select(Axis(0), &split.train_indices);
[INFO] [stdout]     |                 ^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_train`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_test` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/model_selection.rs:423:17
[INFO] [stdout]     |
[INFO] [stdout] 423 |             let X_test = X.select(Axis(0), &split.test_indices);
[INFO] [stdout]     |                 ^^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_test`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/model_selection.rs:450:9
[INFO] [stdout]     |
[INFO] [stdout] 450 |         X: &ArrayView2<f64>,
[INFO] [stdout]     |         ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/impute.rs:18:37
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn fit_transform(&mut self, X: &ArrayView2<f64>) -> Result<Array2<f64>, String> {
[INFO] [stdout]    |                                     ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_imp` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/impute.rs:22:17
[INFO] [stdout]    |
[INFO] [stdout] 22 |         let mut X_imp = Array2::<f64>::zeros((n, p));
[INFO] [stdout]    |                 ^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_imp`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_train` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/impute.rs:67:25
[INFO] [stdout]    |
[INFO] [stdout] 67 |                 let mut X_train = Array2::<f64>::zeros((n_train, p - 1));
[INFO] [stdout]    |                         ^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_train`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_test` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/impute.rs:70:25
[INFO] [stdout]    |
[INFO] [stdout] 70 |                 let mut X_test = Array2::<f64>::zeros((num_missing, p - 1));
[INFO] [stdout]    |                         ^^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_test`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]  --> crates/thermite-core/src/manifold.rs:3:23
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn pairwise_distances(X: &ArrayView2<f64>) -> Array2<f64> {
[INFO] [stdout]   |                       ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `D` should have a snake case name
[INFO] [stdout]  --> crates/thermite-core/src/manifold.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 |     let mut D = Array2::<f64>::zeros((n, n));
[INFO] [stdout]   |             ^ help: convert the identifier to snake case: `d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `A` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/manifold.rs:21:16
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn power_eigen(A: &Array2<f64>, n_components: usize) -> (Array2<f64>, Array1<f64>) {
[INFO] [stdout]    |                ^ help: convert the identifier to snake case: `a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `A` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/manifold.rs:50:17
[INFO] [stdout]    |
[INFO] [stdout] 50 | fn solve_linear(A: &Array2<f64>, b: &Array1<f64>) -> Array1<f64> {
[INFO] [stdout]    |                 ^ help: convert the identifier to snake case: `a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Ac` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/manifold.rs:52:13
[INFO] [stdout]    |
[INFO] [stdout] 52 |     let mut Ac = A.to_owned();
[INFO] [stdout]    |             ^^ help: convert the identifier to snake case: `ac`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `X_fit_` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/manifold.rs:78:9
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub X_fit_: Option<Array2<f64>>,
[INFO] [stdout]    |         ^^^^^^ help: convert the identifier to snake case: `x_fit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/manifold.rs:92:13
[INFO] [stdout]    |
[INFO] [stdout] 92 |         let X = Array2::from_shape_vec((n_samples, n_features), x.to_vec()).unwrap();
[INFO] [stdout]    |             ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `D` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/manifold.rs:93:13
[INFO] [stdout]    |
[INFO] [stdout] 93 |         let D = pairwise_distances(&X.view());
[INFO] [stdout]    |             ^ help: convert the identifier to snake case: `d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `G` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:104:17
[INFO] [stdout]     |
[INFO] [stdout] 104 |         let mut G = knn.clone();
[INFO] [stdout]     |                 ^ help: convert the identifier to snake case: `g`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `J` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:116:17
[INFO] [stdout]     |
[INFO] [stdout] 116 |         let mut J = Array2::<f64>::eye(n_samples);
[INFO] [stdout]     |                 ^ help: convert the identifier to snake case: `j`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `G_sq` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:119:13
[INFO] [stdout]     |
[INFO] [stdout] 119 |         let G_sq = G.mapv(|v| v * v);
[INFO] [stdout]     |             ^^^^ help: convert the identifier to snake case: `g_sq`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `B` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:120:17
[INFO] [stdout]     |
[INFO] [stdout] 120 |         let mut B = J.dot(&G_sq).dot(&J);
[INFO] [stdout]     |                 ^ help: convert the identifier to snake case: `b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_fit` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:128:14
[INFO] [stdout]     |
[INFO] [stdout] 128 |         let (X_fit, components, eigenvalues) = self.compute_embedding(x, n_samples, n_features)?;
[INFO] [stdout]     |              ^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_fit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_fit` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:136:13
[INFO] [stdout]     |
[INFO] [stdout] 136 |         let X_fit = self.X_fit_.as_ref().ok_or("Model not fitted")?;
[INFO] [stdout]     |             ^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_fit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_new` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:142:13
[INFO] [stdout]     |
[INFO] [stdout] 142 |         let X_new = Array2::from_shape_vec((n_samples, n_features), x.to_vec()).unwrap();
[INFO] [stdout]     |             ^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_new`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `D_new` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:143:17
[INFO] [stdout]     |
[INFO] [stdout] 143 |         let mut D_new = Array2::<f64>::zeros((n_samples, n_fit));
[INFO] [stdout]     |                 ^^^^^ help: convert the identifier to snake case: `d_new`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_fit` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:170:14
[INFO] [stdout]     |
[INFO] [stdout] 170 |         let (X_fit, components, eigenvalues) = self.compute_embedding(x, n_samples, n_features)?;
[INFO] [stdout]     |              ^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_fit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `X_fit_` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:190:9
[INFO] [stdout]     |
[INFO] [stdout] 190 |     pub X_fit_: Option<Array2<f64>>,
[INFO] [stdout]     |         ^^^^^^ help: convert the identifier to snake case: `x_fit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:203:13
[INFO] [stdout]     |
[INFO] [stdout] 203 |         let X = Array2::from_shape_vec((n_samples, n_features), x.to_vec()).unwrap();
[INFO] [stdout]     |             ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `D` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:204:13
[INFO] [stdout]     |
[INFO] [stdout] 204 |         let D = pairwise_distances(&X.view());
[INFO] [stdout]     |             ^ help: convert the identifier to snake case: `d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `W` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:206:17
[INFO] [stdout]     |
[INFO] [stdout] 206 |         let mut W = Array2::<f64>::zeros((n_samples, n_samples));
[INFO] [stdout]     |                 ^ help: convert the identifier to snake case (notice the capitalization): `w`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Z` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:211:21
[INFO] [stdout]     |
[INFO] [stdout] 211 |             let mut Z = Array2::<f64>::zeros((knn, knn));
[INFO] [stdout]     |                     ^ help: convert the identifier to snake case (notice the capitalization): `z`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `M` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:232:17
[INFO] [stdout]     |
[INFO] [stdout] 232 |         let mut M = Array2::<f64>::eye(n_samples);
[INFO] [stdout]     |                 ^ help: convert the identifier to snake case: `m`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_fit` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:247:14
[INFO] [stdout]     |
[INFO] [stdout] 247 |         let (X_fit, components) = self.compute_embedding(x, n_samples, n_features)?;
[INFO] [stdout]     |              ^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_fit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_fit` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:254:13
[INFO] [stdout]     |
[INFO] [stdout] 254 |         let X_fit = self.X_fit_.as_ref().ok_or("Model not fitted")?;
[INFO] [stdout]     |             ^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_fit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_new` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:259:13
[INFO] [stdout]     |
[INFO] [stdout] 259 |         let X_new = Array2::from_shape_vec((n_samples, n_features), x.to_vec()).unwrap();
[INFO] [stdout]     |             ^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_new`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `D_new` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:260:17
[INFO] [stdout]     |
[INFO] [stdout] 260 |         let mut D_new = Array2::<f64>::zeros((n_samples, n_fit));
[INFO] [stdout]     |                 ^^^^^ help: convert the identifier to snake case: `d_new`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_fit` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:286:14
[INFO] [stdout]     |
[INFO] [stdout] 286 |         let (X_fit, components) = self.compute_embedding(x, n_samples, n_features)?;
[INFO] [stdout]     |              ^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_fit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:315:13
[INFO] [stdout]     |
[INFO] [stdout] 315 |         let X = Array2::from_shape_vec((n_samples, n_features), x.to_vec()).unwrap();
[INFO] [stdout]     |             ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `D` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:316:13
[INFO] [stdout]     |
[INFO] [stdout] 316 |         let D = pairwise_distances(&X.view());
[INFO] [stdout]     |             ^ help: convert the identifier to snake case: `d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `P` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:318:17
[INFO] [stdout]     |
[INFO] [stdout] 318 |         let mut P = Array2::<f64>::zeros((n_samples, n_samples));
[INFO] [stdout]     |                 ^ help: convert the identifier to snake case: `p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Y` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:347:17
[INFO] [stdout]     |
[INFO] [stdout] 347 |         let mut Y = Array2::<f64>::zeros((n_samples, self.n_components));
[INFO] [stdout]     |                 ^ help: convert the identifier to snake case (notice the capitalization): `y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Y_inc` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:352:17
[INFO] [stdout]     |
[INFO] [stdout] 352 |         let mut Y_inc = Array2::<f64>::zeros((n_samples, self.n_components));
[INFO] [stdout]     |                 ^^^^^ help: convert the identifier to snake case (notice the capitalization): `y_inc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Y_gain` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:353:17
[INFO] [stdout]     |
[INFO] [stdout] 353 |         let mut Y_gain = Array2::<f64>::from_elem((n_samples, self.n_components), 1.0);
[INFO] [stdout]     |                 ^^^^^^ help: convert the identifier to snake case (notice the capitalization): `y_gain`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Q` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:356:21
[INFO] [stdout]     |
[INFO] [stdout] 356 |             let mut Q = Array2::<f64>::zeros((n_samples, n_samples));
[INFO] [stdout]     |                     ^ help: convert the identifier to snake case: `q`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:418:13
[INFO] [stdout]     |
[INFO] [stdout] 418 |         let X = Array2::from_shape_vec((n_samples, n_features), x.to_vec()).unwrap();
[INFO] [stdout]     |             ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `D` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:419:13
[INFO] [stdout]     |
[INFO] [stdout] 419 |         let D = pairwise_distances(&X.view());
[INFO] [stdout]     |             ^ help: convert the identifier to snake case: `d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/neural_network.rs:95:9
[INFO] [stdout]    |
[INFO] [stdout] 95 |         X: &ArrayView2<f64>,
[INFO] [stdout]    |         ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `dW` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/neural_network.rs:253:17
[INFO] [stdout]     |
[INFO] [stdout] 253 |             let dW = matmul(&a_prev_t, &delta, in_size, n_samples, out_size, self.device);
[INFO] [stdout]     |                 ^^ help: convert the identifier to snake case: `d_w`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/neural_network.rs:318:27
[INFO] [stdout]     |
[INFO] [stdout] 318 |     pub fn fit(&mut self, X: &ArrayView2<f64>, y: &ArrayView1<f64>) -> Result<(), String> {
[INFO] [stdout]     |                           ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/neural_network.rs:349:23
[INFO] [stdout]     |
[INFO] [stdout] 349 |     fn forward(&self, X: &ArrayView2<f64>) -> Result<(Vec<f32>, usize), String> {
[INFO] [stdout]     |                       ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/neural_network.rs:392:33
[INFO] [stdout]     |
[INFO] [stdout] 392 |     pub fn predict_proba(&self, X: &ArrayView2<f64>) -> Result<Array2<f64>, String> {
[INFO] [stdout]     |                                 ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/neural_network.rs:416:27
[INFO] [stdout]     |
[INFO] [stdout] 416 |     pub fn predict(&self, X: &ArrayView2<f64>) -> Result<Array1<f64>, String> {
[INFO] [stdout]     |                           ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/feature_selection.rs:22:27
[INFO] [stdout]    |
[INFO] [stdout] 22 |     pub fn fit(&mut self, X: &ArrayView2<f64>, y: &ArrayView1<f64>) -> Result<(), String> {
[INFO] [stdout]    |                           ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/feature_selection.rs:70:29
[INFO] [stdout]    |
[INFO] [stdout] 70 |     pub fn transform(&self, X: &ArrayView2<f64>) -> Result<Array2<f64>, String> {
[INFO] [stdout]    |                             ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_new` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/feature_selection.rs:74:17
[INFO] [stdout]    |
[INFO] [stdout] 74 |         let mut X_new = Array2::<f64>::zeros((X.nrows(), selected_count));
[INFO] [stdout]    |                 ^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_new`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/feature_selection.rs:117:27
[INFO] [stdout]     |
[INFO] [stdout] 117 |     pub fn fit(&mut self, X: &ArrayView2<f64>, y: &ArrayView1<f64>) -> Result<(), String> {
[INFO] [stdout]     |                           ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/feature_selection.rs:160:29
[INFO] [stdout]     |
[INFO] [stdout] 160 |     pub fn transform(&self, X: &ArrayView2<f64>) -> Result<Array2<f64>, String> {
[INFO] [stdout]     |                             ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_new` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/feature_selection.rs:164:17
[INFO] [stdout]     |
[INFO] [stdout] 164 |         let mut X_new = Array2::<f64>::zeros((X.nrows(), selected_count));
[INFO] [stdout]     |                 ^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_new`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/time_series.rs:29:17
[INFO] [stdout]    |
[INFO] [stdout] 29 |         let mut X = Array2::<f64>::zeros((n_train, self.lags + 1));
[INFO] [stdout]    |                 ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/survival.rs:67:23
[INFO] [stdout]    |
[INFO] [stdout] 67 |     fn fit(&mut self, X: &ArrayView2<f64>, times: &ArrayView1<f64>, events: &ArrayView1<f64>) {
[INFO] [stdout]    |                       ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/survival.rs:72:19
[INFO] [stdout]    |
[INFO] [stdout] 72 |     fn build_tree(X: &ArrayView2<f64>, times: &ArrayView1<f64>, events: &ArrayView1<f64>, indices: &[usize], min_samples_leaf: usize...
[INFO] [stdout]    |                   ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/survival.rs:201:27
[INFO] [stdout]     |
[INFO] [stdout] 201 |     pub fn fit(&mut self, X: &ArrayView2<f64>, times: &ArrayView1<f64>, events: &ArrayView1<f64>) -> Result<(), String> {
[INFO] [stdout]     |                           ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `boot_X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/survival.rs:210:17
[INFO] [stdout]     |
[INFO] [stdout] 210 |             let boot_X = Array2::from_shape_fn((n_samples, X.ncols()), |(i, j)| X[[bootstrap[i], j]]);
[INFO] [stdout]     |                 ^^^^^^ help: convert the identifier to snake case (notice the capitalization): `boot_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/survival.rs:220:45
[INFO] [stdout]     |
[INFO] [stdout] 220 |     pub fn predict_survival_function(&self, X: &ArrayView2<f64>, times_to_predict: &ArrayView1<f64>) -> Result<Array2<f64>, String> {
[INFO] [stdout]     |                                             ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `R` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/recommender.rs:25:27
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub fn fit(&mut self, R: &ArrayView2<f64>) -> Result<(), String> {
[INFO] [stdout]    |                           ^ help: convert the identifier to snake case: `r`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `A` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/recommender.rs:38:25
[INFO] [stdout]    |
[INFO] [stdout] 38 |                 let mut A = Array2::<f64>::zeros((self.factors, self.factors));
[INFO] [stdout]    |                         ^ help: convert the identifier to snake case: `a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `A_copy` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/recommender.rs:55:25
[INFO] [stdout]    |
[INFO] [stdout] 55 |                 let mut A_copy = A.clone();
[INFO] [stdout]    |                         ^^^^^^ help: convert the identifier to snake case: `a_copy`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `A` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/recommender.rs:83:25
[INFO] [stdout]    |
[INFO] [stdout] 83 |                 let mut A = Array2::<f64>::zeros((self.factors, self.factors));
[INFO] [stdout]    |                         ^ help: convert the identifier to snake case: `a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `A_copy` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/recommender.rs:100:25
[INFO] [stdout]     |
[INFO] [stdout] 100 |                 let mut A_copy = A.clone();
[INFO] [stdout]     |                         ^^^^^^ help: convert the identifier to snake case: `a_copy`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `A` should have a snake case name
[INFO] [stdout]  --> crates/thermite-core/src/cross_decomposition.rs:3:14
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn power_svd(A: &Array2<f64>, n_components: usize, max_iter: usize) -> (Array2<f64>, Array1<f64>, Array2<f64>) {
[INFO] [stdout]   |              ^ help: convert the identifier to snake case: `a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `U` should have a snake case name
[INFO] [stdout]  --> crates/thermite-core/src/cross_decomposition.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 |     let mut U = Array2::<f64>::zeros((m, k));
[INFO] [stdout]   |             ^ help: convert the identifier to snake case (notice the capitalization): `u`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `S` should have a snake case name
[INFO] [stdout]  --> crates/thermite-core/src/cross_decomposition.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 |     let mut S = Array1::<f64>::zeros(k);
[INFO] [stdout]   |             ^ help: convert the identifier to snake case (notice the capitalization): `s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Vt` should have a snake case name
[INFO] [stdout]  --> crates/thermite-core/src/cross_decomposition.rs:9:13
[INFO] [stdout]   |
[INFO] [stdout] 9 |     let mut Vt = Array2::<f64>::zeros((k, n));
[INFO] [stdout]   |             ^^ help: convert the identifier to snake case (notice the capitalization): `vt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/cross_decomposition.rs:98:27
[INFO] [stdout]    |
[INFO] [stdout] 98 |     pub fn fit(&mut self, X: &ArrayView2<f64>, y: &ArrayView2<f64>) -> Result<(), String> {
[INFO] [stdout]    |                           ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_centered` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/cross_decomposition.rs:103:17
[INFO] [stdout]     |
[INFO] [stdout] 103 |         let mut X_centered = X.to_owned();
[INFO] [stdout]     |                 ^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_centered`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Xk` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/cross_decomposition.rs:117:17
[INFO] [stdout]     |
[INFO] [stdout] 117 |         let mut Xk = X_centered.clone();
[INFO] [stdout]     |                 ^^ help: convert the identifier to snake case (notice the capitalization): `xk`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Yk` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/cross_decomposition.rs:118:17
[INFO] [stdout]     |
[INFO] [stdout] 118 |         let mut Yk = y_centered.clone();
[INFO] [stdout]     |                 ^^ help: convert the identifier to snake case (notice the capitalization): `yk`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/cross_decomposition.rs:199:27
[INFO] [stdout]     |
[INFO] [stdout] 199 |     pub fn predict(&self, X: &ArrayView2<f64>) -> Result<Array2<f64>, String> {
[INFO] [stdout]     |                           ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/cross_decomposition.rs:245:27
[INFO] [stdout]     |
[INFO] [stdout] 245 |     pub fn fit(&mut self, X: &ArrayView2<f64>, y: &ArrayView2<f64>) -> Result<(), String> {
[INFO] [stdout]     |                           ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Xc` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/cross_decomposition.rs:251:17
[INFO] [stdout]     |
[INFO] [stdout] 251 |         let mut Xc = X.to_owned();
[INFO] [stdout]     |                 ^^ help: convert the identifier to snake case (notice the capitalization): `xc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Yc` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/cross_decomposition.rs:252:17
[INFO] [stdout]     |
[INFO] [stdout] 252 |         let mut Yc = y.to_owned();
[INFO] [stdout]     |                 ^^ help: convert the identifier to snake case (notice the capitalization): `yc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `C` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/cross_decomposition.rs:256:13
[INFO] [stdout]     |
[INFO] [stdout] 256 |         let C = Xc.t().dot(&Yc);
[INFO] [stdout]     |             ^ help: convert the identifier to snake case (notice the capitalization): `c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `U` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/cross_decomposition.rs:258:14
[INFO] [stdout]     |
[INFO] [stdout] 258 |         let (U, _S, Vt) = power_svd(&C, k, self.max_iter);
[INFO] [stdout]     |              ^ help: convert the identifier to snake case (notice the capitalization): `u`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `_S` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/cross_decomposition.rs:258:17
[INFO] [stdout]     |
[INFO] [stdout] 258 |         let (U, _S, Vt) = power_svd(&C, k, self.max_iter);
[INFO] [stdout]     |                 ^^ help: convert the identifier to snake case (notice the capitalization): `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Vt` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/cross_decomposition.rs:258:21
[INFO] [stdout]     |
[INFO] [stdout] 258 |         let (U, _S, Vt) = power_svd(&C, k, self.max_iter);
[INFO] [stdout]     |                     ^^ help: convert the identifier to snake case (notice the capitalization): `vt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/cross_decomposition.rs:275:27
[INFO] [stdout]     |
[INFO] [stdout] 275 |     pub fn predict(&self, X: &ArrayView2<f64>) -> Result<Array2<f64>, String> {
[INFO] [stdout]     |                           ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking thermite-binding v0.2.0 (/opt/rustwide/workdir/crates/thermite-binding)
[INFO] [stdout] warning: unused variable: `maj_class`
[INFO] [stdout]     --> crates/thermite-core/src/tree.rs:1576:21
[INFO] [stdout]      |
[INFO] [stdout] 1576 |                 let maj_class = 0;
[INFO] [stdout]      |                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_maj_class`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `next_out`
[INFO] [stdout]    --> crates/thermite-core/src/neural_network.rs:270:21
[INFO] [stdout]     |
[INFO] [stdout] 270 |                 let next_out = self.biases[l - 1].len();
[INFO] [stdout]     |                     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_next_out`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `max_iter`
[INFO] [stdout]  --> crates/thermite-core/src/cross_decomposition.rs:3:52
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn power_svd(A: &Array2<f64>, n_components: usize, max_iter: usize) -> (Array2<f64>, Array1<f64>, Array2<f64>) {
[INFO] [stdout]   |                                                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_iter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/thermite-core/src/cross_decomposition.rs:115:13
[INFO] [stdout]     |
[INFO] [stdout] 115 |         let mut y_scores = Array2::<f64>::zeros((n, self.n_components));
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `n_samples` is never read
[INFO] [stdout]   --> crates/thermite-core/src/survival.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | struct SurvivalNode {
[INFO] [stdout]    |        ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     n_samples: usize,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SurvivalNode` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `X_eval` should have a snake case name
[INFO] [stdout]  --> crates/thermite-core/src/automl.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     X_eval: Vec<Array1<f64>>,
[INFO] [stdout]   |     ^^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_eval`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/automl.rs:23:27
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn fit(&mut self, X: &ArrayView2<f64>, y: &ArrayView1<f64>) -> Result<(), String> {
[INFO] [stdout]    |                           ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/automl.rs:30:27
[INFO] [stdout]    |
[INFO] [stdout] 30 |     pub fn predict(&self, X: &ArrayView2<f64>) -> Result<Array1<f64>, String> {
[INFO] [stdout]    |                           ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_candidates` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/automl.rs:55:32
[INFO] [stdout]    |
[INFO] [stdout] 55 |     pub fn suggest_next(&self, X_candidates: &ArrayView2<f64>) -> Result<usize, String> {
[INFO] [stdout]    |                                ^^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_candidates`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_candidates` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/automl.rs:69:32
[INFO] [stdout]    |
[INFO] [stdout] 69 |     pub fn mean_predict(&self, X_candidates: &ArrayView2<f64>) -> Result<Array1<f64>, String> {
[INFO] [stdout]    |                                ^^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_candidates`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_candidates` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/automl.rs:73:31
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub fn uncertainty(&self, X_candidates: &ArrayView2<f64>) -> Array1<f64> {
[INFO] [stdout]    |                               ^^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_candidates`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/model_selection.rs:390:23
[INFO] [stdout]     |
[INFO] [stdout] 390 |     fn fit(&mut self, X: &ArrayView2<f64>, y: &ArrayView1<f64>) -> Result<(), String>;
[INFO] [stdout]     |                       ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/model_selection.rs:391:23
[INFO] [stdout]     |
[INFO] [stdout] 391 |     fn predict(&self, X: &ArrayView2<f64>) -> Result<Array1<f64>, String>;
[INFO] [stdout]     |                       ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/model_selection.rs:411:5
[INFO] [stdout]     |
[INFO] [stdout] 411 |     X: &ArrayView2<f64>,
[INFO] [stdout]     |     ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_train` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/model_selection.rs:420:17
[INFO] [stdout]     |
[INFO] [stdout] 420 |             let X_train = X.select(Axis(0), &split.train_indices);
[INFO] [stdout]     |                 ^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_train`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_test` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/model_selection.rs:423:17
[INFO] [stdout]     |
[INFO] [stdout] 423 |             let X_test = X.select(Axis(0), &split.test_indices);
[INFO] [stdout]     |                 ^^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_test`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/model_selection.rs:450:9
[INFO] [stdout]     |
[INFO] [stdout] 450 |         X: &ArrayView2<f64>,
[INFO] [stdout]     |         ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/impute.rs:18:37
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn fit_transform(&mut self, X: &ArrayView2<f64>) -> Result<Array2<f64>, String> {
[INFO] [stdout]    |                                     ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_imp` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/impute.rs:22:17
[INFO] [stdout]    |
[INFO] [stdout] 22 |         let mut X_imp = Array2::<f64>::zeros((n, p));
[INFO] [stdout]    |                 ^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_imp`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_train` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/impute.rs:67:25
[INFO] [stdout]    |
[INFO] [stdout] 67 |                 let mut X_train = Array2::<f64>::zeros((n_train, p - 1));
[INFO] [stdout]    |                         ^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_train`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_test` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/impute.rs:70:25
[INFO] [stdout]    |
[INFO] [stdout] 70 |                 let mut X_test = Array2::<f64>::zeros((num_missing, p - 1));
[INFO] [stdout]    |                         ^^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_test`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]  --> crates/thermite-core/src/manifold.rs:3:23
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn pairwise_distances(X: &ArrayView2<f64>) -> Array2<f64> {
[INFO] [stdout]   |                       ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `D` should have a snake case name
[INFO] [stdout]  --> crates/thermite-core/src/manifold.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 |     let mut D = Array2::<f64>::zeros((n, n));
[INFO] [stdout]   |             ^ help: convert the identifier to snake case: `d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `A` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/manifold.rs:21:16
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn power_eigen(A: &Array2<f64>, n_components: usize) -> (Array2<f64>, Array1<f64>) {
[INFO] [stdout]    |                ^ help: convert the identifier to snake case: `a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `A` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/manifold.rs:50:17
[INFO] [stdout]    |
[INFO] [stdout] 50 | fn solve_linear(A: &Array2<f64>, b: &Array1<f64>) -> Array1<f64> {
[INFO] [stdout]    |                 ^ help: convert the identifier to snake case: `a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Ac` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/manifold.rs:52:13
[INFO] [stdout]    |
[INFO] [stdout] 52 |     let mut Ac = A.to_owned();
[INFO] [stdout]    |             ^^ help: convert the identifier to snake case: `ac`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `X_fit_` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/manifold.rs:78:9
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub X_fit_: Option<Array2<f64>>,
[INFO] [stdout]    |         ^^^^^^ help: convert the identifier to snake case: `x_fit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/manifold.rs:92:13
[INFO] [stdout]    |
[INFO] [stdout] 92 |         let X = Array2::from_shape_vec((n_samples, n_features), x.to_vec()).unwrap();
[INFO] [stdout]    |             ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `D` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/manifold.rs:93:13
[INFO] [stdout]    |
[INFO] [stdout] 93 |         let D = pairwise_distances(&X.view());
[INFO] [stdout]    |             ^ help: convert the identifier to snake case: `d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `G` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:104:17
[INFO] [stdout]     |
[INFO] [stdout] 104 |         let mut G = knn.clone();
[INFO] [stdout]     |                 ^ help: convert the identifier to snake case: `g`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `J` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:116:17
[INFO] [stdout]     |
[INFO] [stdout] 116 |         let mut J = Array2::<f64>::eye(n_samples);
[INFO] [stdout]     |                 ^ help: convert the identifier to snake case: `j`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `G_sq` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:119:13
[INFO] [stdout]     |
[INFO] [stdout] 119 |         let G_sq = G.mapv(|v| v * v);
[INFO] [stdout]     |             ^^^^ help: convert the identifier to snake case: `g_sq`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `B` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:120:17
[INFO] [stdout]     |
[INFO] [stdout] 120 |         let mut B = J.dot(&G_sq).dot(&J);
[INFO] [stdout]     |                 ^ help: convert the identifier to snake case: `b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_fit` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:128:14
[INFO] [stdout]     |
[INFO] [stdout] 128 |         let (X_fit, components, eigenvalues) = self.compute_embedding(x, n_samples, n_features)?;
[INFO] [stdout]     |              ^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_fit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_fit` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:136:13
[INFO] [stdout]     |
[INFO] [stdout] 136 |         let X_fit = self.X_fit_.as_ref().ok_or("Model not fitted")?;
[INFO] [stdout]     |             ^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_fit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_new` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:142:13
[INFO] [stdout]     |
[INFO] [stdout] 142 |         let X_new = Array2::from_shape_vec((n_samples, n_features), x.to_vec()).unwrap();
[INFO] [stdout]     |             ^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_new`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `D_new` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:143:17
[INFO] [stdout]     |
[INFO] [stdout] 143 |         let mut D_new = Array2::<f64>::zeros((n_samples, n_fit));
[INFO] [stdout]     |                 ^^^^^ help: convert the identifier to snake case: `d_new`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_fit` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:170:14
[INFO] [stdout]     |
[INFO] [stdout] 170 |         let (X_fit, components, eigenvalues) = self.compute_embedding(x, n_samples, n_features)?;
[INFO] [stdout]     |              ^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_fit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `X_fit_` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:190:9
[INFO] [stdout]     |
[INFO] [stdout] 190 |     pub X_fit_: Option<Array2<f64>>,
[INFO] [stdout]     |         ^^^^^^ help: convert the identifier to snake case: `x_fit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:203:13
[INFO] [stdout]     |
[INFO] [stdout] 203 |         let X = Array2::from_shape_vec((n_samples, n_features), x.to_vec()).unwrap();
[INFO] [stdout]     |             ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `D` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:204:13
[INFO] [stdout]     |
[INFO] [stdout] 204 |         let D = pairwise_distances(&X.view());
[INFO] [stdout]     |             ^ help: convert the identifier to snake case: `d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `W` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:206:17
[INFO] [stdout]     |
[INFO] [stdout] 206 |         let mut W = Array2::<f64>::zeros((n_samples, n_samples));
[INFO] [stdout]     |                 ^ help: convert the identifier to snake case (notice the capitalization): `w`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Z` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:211:21
[INFO] [stdout]     |
[INFO] [stdout] 211 |             let mut Z = Array2::<f64>::zeros((knn, knn));
[INFO] [stdout]     |                     ^ help: convert the identifier to snake case (notice the capitalization): `z`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `M` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:232:17
[INFO] [stdout]     |
[INFO] [stdout] 232 |         let mut M = Array2::<f64>::eye(n_samples);
[INFO] [stdout]     |                 ^ help: convert the identifier to snake case: `m`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_fit` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:247:14
[INFO] [stdout]     |
[INFO] [stdout] 247 |         let (X_fit, components) = self.compute_embedding(x, n_samples, n_features)?;
[INFO] [stdout]     |              ^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_fit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_fit` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:254:13
[INFO] [stdout]     |
[INFO] [stdout] 254 |         let X_fit = self.X_fit_.as_ref().ok_or("Model not fitted")?;
[INFO] [stdout]     |             ^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_fit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_new` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:259:13
[INFO] [stdout]     |
[INFO] [stdout] 259 |         let X_new = Array2::from_shape_vec((n_samples, n_features), x.to_vec()).unwrap();
[INFO] [stdout]     |             ^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_new`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `D_new` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:260:17
[INFO] [stdout]     |
[INFO] [stdout] 260 |         let mut D_new = Array2::<f64>::zeros((n_samples, n_fit));
[INFO] [stdout]     |                 ^^^^^ help: convert the identifier to snake case: `d_new`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_fit` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:286:14
[INFO] [stdout]     |
[INFO] [stdout] 286 |         let (X_fit, components) = self.compute_embedding(x, n_samples, n_features)?;
[INFO] [stdout]     |              ^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_fit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:315:13
[INFO] [stdout]     |
[INFO] [stdout] 315 |         let X = Array2::from_shape_vec((n_samples, n_features), x.to_vec()).unwrap();
[INFO] [stdout]     |             ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `D` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:316:13
[INFO] [stdout]     |
[INFO] [stdout] 316 |         let D = pairwise_distances(&X.view());
[INFO] [stdout]     |             ^ help: convert the identifier to snake case: `d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `P` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:318:17
[INFO] [stdout]     |
[INFO] [stdout] 318 |         let mut P = Array2::<f64>::zeros((n_samples, n_samples));
[INFO] [stdout]     |                 ^ help: convert the identifier to snake case: `p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Y` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:347:17
[INFO] [stdout]     |
[INFO] [stdout] 347 |         let mut Y = Array2::<f64>::zeros((n_samples, self.n_components));
[INFO] [stdout]     |                 ^ help: convert the identifier to snake case (notice the capitalization): `y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Y_inc` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:352:17
[INFO] [stdout]     |
[INFO] [stdout] 352 |         let mut Y_inc = Array2::<f64>::zeros((n_samples, self.n_components));
[INFO] [stdout]     |                 ^^^^^ help: convert the identifier to snake case (notice the capitalization): `y_inc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Y_gain` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:353:17
[INFO] [stdout]     |
[INFO] [stdout] 353 |         let mut Y_gain = Array2::<f64>::from_elem((n_samples, self.n_components), 1.0);
[INFO] [stdout]     |                 ^^^^^^ help: convert the identifier to snake case (notice the capitalization): `y_gain`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Q` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:356:21
[INFO] [stdout]     |
[INFO] [stdout] 356 |             let mut Q = Array2::<f64>::zeros((n_samples, n_samples));
[INFO] [stdout]     |                     ^ help: convert the identifier to snake case: `q`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:418:13
[INFO] [stdout]     |
[INFO] [stdout] 418 |         let X = Array2::from_shape_vec((n_samples, n_features), x.to_vec()).unwrap();
[INFO] [stdout]     |             ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `D` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/manifold.rs:419:13
[INFO] [stdout]     |
[INFO] [stdout] 419 |         let D = pairwise_distances(&X.view());
[INFO] [stdout]     |             ^ help: convert the identifier to snake case: `d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/neural_network.rs:95:9
[INFO] [stdout]    |
[INFO] [stdout] 95 |         X: &ArrayView2<f64>,
[INFO] [stdout]    |         ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `dW` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/neural_network.rs:253:17
[INFO] [stdout]     |
[INFO] [stdout] 253 |             let dW = matmul(&a_prev_t, &delta, in_size, n_samples, out_size, self.device);
[INFO] [stdout]     |                 ^^ help: convert the identifier to snake case: `d_w`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/neural_network.rs:318:27
[INFO] [stdout]     |
[INFO] [stdout] 318 |     pub fn fit(&mut self, X: &ArrayView2<f64>, y: &ArrayView1<f64>) -> Result<(), String> {
[INFO] [stdout]     |                           ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/neural_network.rs:349:23
[INFO] [stdout]     |
[INFO] [stdout] 349 |     fn forward(&self, X: &ArrayView2<f64>) -> Result<(Vec<f32>, usize), String> {
[INFO] [stdout]     |                       ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/neural_network.rs:392:33
[INFO] [stdout]     |
[INFO] [stdout] 392 |     pub fn predict_proba(&self, X: &ArrayView2<f64>) -> Result<Array2<f64>, String> {
[INFO] [stdout]     |                                 ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/neural_network.rs:416:27
[INFO] [stdout]     |
[INFO] [stdout] 416 |     pub fn predict(&self, X: &ArrayView2<f64>) -> Result<Array1<f64>, String> {
[INFO] [stdout]     |                           ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/neural_network.rs:462:13
[INFO] [stdout]     |
[INFO] [stdout] 462 |         let X = Array2::from_shape_vec((8, 2), vec![
[INFO] [stdout]     |             ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/neural_network.rs:492:13
[INFO] [stdout]     |
[INFO] [stdout] 492 |         let X = Array2::from_shape_vec((6, 2), vec![
[INFO] [stdout]     |             ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/neural_network.rs:520:13
[INFO] [stdout]     |
[INFO] [stdout] 520 |         let X = Array2::from_shape_vec((3, 2), vec![0.0, 0.0, 1.0, 0.0, 0.0, 1.0]).unwrap();
[INFO] [stdout]     |             ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/neural_network.rs:536:13
[INFO] [stdout]     |
[INFO] [stdout] 536 |         let X = Array2::from_shape_vec((4, 2), vec![
[INFO] [stdout]     |             ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/feature_selection.rs:22:27
[INFO] [stdout]    |
[INFO] [stdout] 22 |     pub fn fit(&mut self, X: &ArrayView2<f64>, y: &ArrayView1<f64>) -> Result<(), String> {
[INFO] [stdout]    |                           ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/feature_selection.rs:70:29
[INFO] [stdout]    |
[INFO] [stdout] 70 |     pub fn transform(&self, X: &ArrayView2<f64>) -> Result<Array2<f64>, String> {
[INFO] [stdout]    |                             ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_new` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/feature_selection.rs:74:17
[INFO] [stdout]    |
[INFO] [stdout] 74 |         let mut X_new = Array2::<f64>::zeros((X.nrows(), selected_count));
[INFO] [stdout]    |                 ^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_new`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/feature_selection.rs:117:27
[INFO] [stdout]     |
[INFO] [stdout] 117 |     pub fn fit(&mut self, X: &ArrayView2<f64>, y: &ArrayView1<f64>) -> Result<(), String> {
[INFO] [stdout]     |                           ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/feature_selection.rs:160:29
[INFO] [stdout]     |
[INFO] [stdout] 160 |     pub fn transform(&self, X: &ArrayView2<f64>) -> Result<Array2<f64>, String> {
[INFO] [stdout]     |                             ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_new` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/feature_selection.rs:164:17
[INFO] [stdout]     |
[INFO] [stdout] 164 |         let mut X_new = Array2::<f64>::zeros((X.nrows(), selected_count));
[INFO] [stdout]     |                 ^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_new`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/feature_selection.rs:186:13
[INFO] [stdout]     |
[INFO] [stdout] 186 |         let X = Array2::from_shape_vec((10, 3), vec![
[INFO] [stdout]     |             ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Xr` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/feature_selection.rs:200:13
[INFO] [stdout]     |
[INFO] [stdout] 200 |         let Xr = rfe.transform(&X.view()).unwrap();
[INFO] [stdout]     |             ^^ help: convert the identifier to snake case (notice the capitalization): `xr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/feature_selection.rs:208:13
[INFO] [stdout]     |
[INFO] [stdout] 208 |         let X = Array2::from_shape_vec((5, 3), vec![
[INFO] [stdout]     |             ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Xr` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/feature_selection.rs:217:13
[INFO] [stdout]     |
[INFO] [stdout] 217 |         let Xr = rfe.transform(&X.view()).unwrap();
[INFO] [stdout]     |             ^^ help: convert the identifier to snake case (notice the capitalization): `xr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/feature_selection.rs:237:13
[INFO] [stdout]     |
[INFO] [stdout] 237 |         let X = Array2::from_shape_vec((10, 3), vec![
[INFO] [stdout]     |             ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Xs` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/feature_selection.rs:251:13
[INFO] [stdout]     |
[INFO] [stdout] 251 |         let Xs = sfs.transform(&X.view()).unwrap();
[INFO] [stdout]     |             ^^ help: convert the identifier to snake case (notice the capitalization): `xs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/feature_selection.rs:272:13
[INFO] [stdout]     |
[INFO] [stdout] 272 |         let X = Array2::from_shape_vec((5, 2), vec![1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0]).unwrap();
[INFO] [stdout]     |             ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/time_series.rs:29:17
[INFO] [stdout]    |
[INFO] [stdout] 29 |         let mut X = Array2::<f64>::zeros((n_train, self.lags + 1));
[INFO] [stdout]    |                 ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/survival.rs:67:23
[INFO] [stdout]    |
[INFO] [stdout] 67 |     fn fit(&mut self, X: &ArrayView2<f64>, times: &ArrayView1<f64>, events: &ArrayView1<f64>) {
[INFO] [stdout]    |                       ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/survival.rs:72:19
[INFO] [stdout]    |
[INFO] [stdout] 72 |     fn build_tree(X: &ArrayView2<f64>, times: &ArrayView1<f64>, events: &ArrayView1<f64>, indices: &[usize], min_samples_leaf: usize...
[INFO] [stdout]    |                   ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/survival.rs:201:27
[INFO] [stdout]     |
[INFO] [stdout] 201 |     pub fn fit(&mut self, X: &ArrayView2<f64>, times: &ArrayView1<f64>, events: &ArrayView1<f64>) -> Result<(), String> {
[INFO] [stdout]     |                           ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `boot_X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/survival.rs:210:17
[INFO] [stdout]     |
[INFO] [stdout] 210 |             let boot_X = Array2::from_shape_fn((n_samples, X.ncols()), |(i, j)| X[[bootstrap[i], j]]);
[INFO] [stdout]     |                 ^^^^^^ help: convert the identifier to snake case (notice the capitalization): `boot_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/survival.rs:220:45
[INFO] [stdout]     |
[INFO] [stdout] 220 |     pub fn predict_survival_function(&self, X: &ArrayView2<f64>, times_to_predict: &ArrayView1<f64>) -> Result<Array2<f64>, String> {
[INFO] [stdout]     |                                             ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `R` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/recommender.rs:25:27
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub fn fit(&mut self, R: &ArrayView2<f64>) -> Result<(), String> {
[INFO] [stdout]    |                           ^ help: convert the identifier to snake case: `r`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `A` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/recommender.rs:38:25
[INFO] [stdout]    |
[INFO] [stdout] 38 |                 let mut A = Array2::<f64>::zeros((self.factors, self.factors));
[INFO] [stdout]    |                         ^ help: convert the identifier to snake case: `a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `A_copy` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/recommender.rs:55:25
[INFO] [stdout]    |
[INFO] [stdout] 55 |                 let mut A_copy = A.clone();
[INFO] [stdout]    |                         ^^^^^^ help: convert the identifier to snake case: `a_copy`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `A` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/recommender.rs:83:25
[INFO] [stdout]    |
[INFO] [stdout] 83 |                 let mut A = Array2::<f64>::zeros((self.factors, self.factors));
[INFO] [stdout]    |                         ^ help: convert the identifier to snake case: `a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `A_copy` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/recommender.rs:100:25
[INFO] [stdout]     |
[INFO] [stdout] 100 |                 let mut A_copy = A.clone();
[INFO] [stdout]     |                         ^^^^^^ help: convert the identifier to snake case: `a_copy`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `A` should have a snake case name
[INFO] [stdout]  --> crates/thermite-core/src/cross_decomposition.rs:3:14
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn power_svd(A: &Array2<f64>, n_components: usize, max_iter: usize) -> (Array2<f64>, Array1<f64>, Array2<f64>) {
[INFO] [stdout]   |              ^ help: convert the identifier to snake case: `a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `U` should have a snake case name
[INFO] [stdout]  --> crates/thermite-core/src/cross_decomposition.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 |     let mut U = Array2::<f64>::zeros((m, k));
[INFO] [stdout]   |             ^ help: convert the identifier to snake case (notice the capitalization): `u`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `S` should have a snake case name
[INFO] [stdout]  --> crates/thermite-core/src/cross_decomposition.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 |     let mut S = Array1::<f64>::zeros(k);
[INFO] [stdout]   |             ^ help: convert the identifier to snake case (notice the capitalization): `s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Vt` should have a snake case name
[INFO] [stdout]  --> crates/thermite-core/src/cross_decomposition.rs:9:13
[INFO] [stdout]   |
[INFO] [stdout] 9 |     let mut Vt = Array2::<f64>::zeros((k, n));
[INFO] [stdout]   |             ^^ help: convert the identifier to snake case (notice the capitalization): `vt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]   --> crates/thermite-core/src/cross_decomposition.rs:98:27
[INFO] [stdout]    |
[INFO] [stdout] 98 |     pub fn fit(&mut self, X: &ArrayView2<f64>, y: &ArrayView2<f64>) -> Result<(), String> {
[INFO] [stdout]    |                           ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X_centered` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/cross_decomposition.rs:103:17
[INFO] [stdout]     |
[INFO] [stdout] 103 |         let mut X_centered = X.to_owned();
[INFO] [stdout]     |                 ^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `x_centered`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Xk` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/cross_decomposition.rs:117:17
[INFO] [stdout]     |
[INFO] [stdout] 117 |         let mut Xk = X_centered.clone();
[INFO] [stdout]     |                 ^^ help: convert the identifier to snake case (notice the capitalization): `xk`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Yk` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/cross_decomposition.rs:118:17
[INFO] [stdout]     |
[INFO] [stdout] 118 |         let mut Yk = y_centered.clone();
[INFO] [stdout]     |                 ^^ help: convert the identifier to snake case (notice the capitalization): `yk`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/cross_decomposition.rs:199:27
[INFO] [stdout]     |
[INFO] [stdout] 199 |     pub fn predict(&self, X: &ArrayView2<f64>) -> Result<Array2<f64>, String> {
[INFO] [stdout]     |                           ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/cross_decomposition.rs:245:27
[INFO] [stdout]     |
[INFO] [stdout] 245 |     pub fn fit(&mut self, X: &ArrayView2<f64>, y: &ArrayView2<f64>) -> Result<(), String> {
[INFO] [stdout]     |                           ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Xc` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/cross_decomposition.rs:251:17
[INFO] [stdout]     |
[INFO] [stdout] 251 |         let mut Xc = X.to_owned();
[INFO] [stdout]     |                 ^^ help: convert the identifier to snake case (notice the capitalization): `xc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Yc` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/cross_decomposition.rs:252:17
[INFO] [stdout]     |
[INFO] [stdout] 252 |         let mut Yc = y.to_owned();
[INFO] [stdout]     |                 ^^ help: convert the identifier to snake case (notice the capitalization): `yc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `C` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/cross_decomposition.rs:256:13
[INFO] [stdout]     |
[INFO] [stdout] 256 |         let C = Xc.t().dot(&Yc);
[INFO] [stdout]     |             ^ help: convert the identifier to snake case (notice the capitalization): `c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `U` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/cross_decomposition.rs:258:14
[INFO] [stdout]     |
[INFO] [stdout] 258 |         let (U, _S, Vt) = power_svd(&C, k, self.max_iter);
[INFO] [stdout]     |              ^ help: convert the identifier to snake case (notice the capitalization): `u`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `_S` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/cross_decomposition.rs:258:17
[INFO] [stdout]     |
[INFO] [stdout] 258 |         let (U, _S, Vt) = power_svd(&C, k, self.max_iter);
[INFO] [stdout]     |                 ^^ help: convert the identifier to snake case (notice the capitalization): `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Vt` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/cross_decomposition.rs:258:21
[INFO] [stdout]     |
[INFO] [stdout] 258 |         let (U, _S, Vt) = power_svd(&C, k, self.max_iter);
[INFO] [stdout]     |                     ^^ help: convert the identifier to snake case (notice the capitalization): `vt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/cross_decomposition.rs:275:27
[INFO] [stdout]     |
[INFO] [stdout] 275 |     pub fn predict(&self, X: &ArrayView2<f64>) -> Result<Array2<f64>, String> {
[INFO] [stdout]     |                           ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/cross_decomposition.rs:292:13
[INFO] [stdout]     |
[INFO] [stdout] 292 |         let X = Array2::from_shape_vec((10, 3), vec![
[INFO] [stdout]     |             ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/cross_decomposition.rs:334:13
[INFO] [stdout]     |
[INFO] [stdout] 334 | ...   let X = Array2::from_shape_vec((5, 3), vec![1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0])...
[INFO] [stdout]     |           ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `X` should have a snake case name
[INFO] [stdout]    --> crates/thermite-core/src/cross_decomposition.rs:342:13
[INFO] [stdout]     |
[INFO] [stdout] 342 |         let X = Array2::from_shape_vec((10, 3), vec![
[INFO] [stdout]     |             ^ help: convert the identifier to snake case (notice the capitalization): `x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> crates/thermite-binding/src/lib.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 | use serde::{Serialize, Deserialize};
[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: `PyUntypedArrayMethods`
[INFO] [stdout]  --> crates/thermite-binding/src/cluster_bind.rs:2:69
[INFO] [stdout]   |
[INFO] [stdout] 2 | use numpy::{PyArray1, PyArray2, PyReadonlyArray1, PyReadonlyArray2, PyUntypedArrayMethods};
[INFO] [stdout]   |                                                                     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PyBytes` and `PyList`
[INFO] [stdout]  --> crates/thermite-binding/src/multi_output_bind.rs:2:19
[INFO] [stdout]   |
[INFO] [stdout] 2 | use pyo3::types::{PyBytes, PyList};
[INFO] [stdout]   |                   ^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PyArray2`
[INFO] [stdout]  --> crates/thermite-binding/src/model_selection_bind.rs:4:36
[INFO] [stdout]   |
[INFO] [stdout] 4 | use numpy::{IntoPyArray, PyArray1, PyArray2, PyReadonlyArray1, PyReadonlyArray2};
[INFO] [stdout]   |                                    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> crates/thermite-binding/src/lib.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 | use serde::{Serialize, Deserialize};
[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: `PyUntypedArrayMethods`
[INFO] [stdout]  --> crates/thermite-binding/src/cluster_bind.rs:2:69
[INFO] [stdout]   |
[INFO] [stdout] 2 | use numpy::{PyArray1, PyArray2, PyReadonlyArray1, PyReadonlyArray2, PyUntypedArrayMethods};
[INFO] [stdout]   |                                                                     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PyBytes` and `PyList`
[INFO] [stdout]  --> crates/thermite-binding/src/multi_output_bind.rs:2:19
[INFO] [stdout]   |
[INFO] [stdout] 2 | use pyo3::types::{PyBytes, PyList};
[INFO] [stdout]   |                   ^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PyArray2`
[INFO] [stdout]  --> crates/thermite-binding/src/model_selection_bind.rs:4:36
[INFO] [stdout]   |
[INFO] [stdout] 4 | use numpy::{IntoPyArray, PyArray1, PyArray2, PyReadonlyArray1, PyReadonlyArray2};
[INFO] [stdout]   |                                    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `return_distance`
[INFO] [stdout]   --> crates/thermite-binding/src/neighbors_bind.rs:44:9
[INFO] [stdout]    |
[INFO] [stdout] 44 |         return_distance: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_return_distance`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `return_distance`
[INFO] [stdout]    --> crates/thermite-binding/src/neighbors_bind.rs:114:9
[INFO] [stdout]     |
[INFO] [stdout] 114 |         return_distance: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_return_distance`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `return_distance`
[INFO] [stdout]   --> crates/thermite-binding/src/neighbors_bind.rs:44:9
[INFO] [stdout]    |
[INFO] [stdout] 44 |         return_distance: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_return_distance`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `return_distance`
[INFO] [stdout]    --> crates/thermite-binding/src/neighbors_bind.rs:114:9
[INFO] [stdout]     |
[INFO] [stdout] 114 |         return_distance: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_return_distance`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `py`
[INFO] [stdout]   --> crates/thermite-binding/src/model_selection_bind.rs:93:9
[INFO] [stdout]    |
[INFO] [stdout] 93 |         py: Python<'_>,
[INFO] [stdout]    |         ^^ help: if this is intentional, prefix it with an underscore: `_py`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `py`
[INFO] [stdout]   --> crates/thermite-binding/src/model_selection_bind.rs:93:9
[INFO] [stdout]    |
[INFO] [stdout] 93 |         py: Python<'_>,
[INFO] [stdout]    |         ^^ help: if this is intentional, prefix it with an underscore: `_py`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: unused dependency `bincode`
[INFO] [stderr]   --> crates/thermite-core/Cargo.toml:17:1
[INFO] [stderr]    |
[INFO] [stderr] 17 | bincode = "1.3"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `bincode`
[INFO] [stderr] warning: `thermite-core` (manifest) generated 1 warning
[INFO] [stderr] warning: unused dependency `ndarray`
[INFO] [stderr]   --> crates/thermite-gpu/Cargo.toml:12:1
[INFO] [stderr]    |
[INFO] [stderr] 12 | ndarray = { workspace = true }
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `ndarray`
[INFO] [stderr] warning: `thermite-gpu` (manifest) generated 1 warning
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 38.88s
[INFO] running `Command { std: "docker" "inspect" "53c613a7fce1caae1aeb8be41ac8b0bcc55953d585c3fedafff484c0aae6311b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "53c613a7fce1caae1aeb8be41ac8b0bcc55953d585c3fedafff484c0aae6311b", kill_on_drop: false }`
[INFO] [stdout] 53c613a7fce1caae1aeb8be41ac8b0bcc55953d585c3fedafff484c0aae6311b
