[INFO] cloning repository https://github.com/tmathis720/kryst
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/tmathis720/kryst" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftmathis720%2Fkryst", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftmathis720%2Fkryst'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] fe34526b26986edd3860aa0b39b1e483dcdfb3fa
[INFO] checking tmathis720/kryst against master#e1613686e0efc80a1a18b1263625450a8de3fb04 for pr-154492
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftmathis720%2Fkryst" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/tmathis720/kryst
[INFO] removed 0 missing examples
[INFO] finished tweaking git repo https://github.com/tmathis720/kryst
[INFO] tweaked toml for git repo https://github.com/tmathis720/kryst written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/tmathis720/kryst on toolchain e1613686e0efc80a1a18b1263625450a8de3fb04
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+e1613686e0efc80a1a18b1263625450a8de3fb04" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/tmathis720/kryst 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" "+e1613686e0efc80a1a18b1263625450a8de3fb04" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded mpi-sys v0.2.2
[INFO] [stderr]   Downloaded build-probe-mpi v0.1.4
[INFO] [stderr]   Downloaded rand_distr v0.6.0
[INFO] [stderr]   Downloaded prettyplease v0.2.34
[INFO] [stderr]   Downloaded mpi v0.8.0
[INFO] [stderr]   Downloaded safe_arch v1.0.0
[INFO] [stderr]   Downloaded sprs v0.11.4
[INFO] [stderr]   Downloaded wide v1.2.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+e1613686e0efc80a1a18b1263625450a8de3fb04" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 98d5bbb934239a9bf1bb83fd57f5f9ad690ee3dd52057bb91e70ae4402ded981
[INFO] running `Command { std: "docker" "start" "-a" "98d5bbb934239a9bf1bb83fd57f5f9ad690ee3dd52057bb91e70ae4402ded981", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "98d5bbb934239a9bf1bb83fd57f5f9ad690ee3dd52057bb91e70ae4402ded981", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "98d5bbb934239a9bf1bb83fd57f5f9ad690ee3dd52057bb91e70ae4402ded981", kill_on_drop: false }`
[INFO] [stdout] 98d5bbb934239a9bf1bb83fd57f5f9ad690ee3dd52057bb91e70ae4402ded981
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+e1613686e0efc80a1a18b1263625450a8de3fb04" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 8258141a914b7f945bd8bda5b24741ae7683c0d8b6782dcdf99740546296dfad
[INFO] running `Command { std: "docker" "start" "-a" "8258141a914b7f945bd8bda5b24741ae7683c0d8b6782dcdf99740546296dfad", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v2.0.103
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking raw-cpuid v11.5.0
[INFO] [stderr]     Checking getrandom v0.3.3
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]     Checking rand_core v0.10.0
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]     Checking linux-raw-sys v0.12.1
[INFO] [stderr]     Checking cpufeatures v0.3.0
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]     Checking anstyle v1.0.11
[INFO] [stderr]     Checking chacha20 v0.10.0
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking regex-automata v0.4.9
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]     Checking winnow v1.0.0
[INFO] [stderr]     Checking rand v0.10.0
[INFO] [stderr]     Checking toml_parser v1.1.0+spec-1.1.0
[INFO] [stderr]     Checking num-complex v0.4.6
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking rand_distr v0.5.1
[INFO] [stderr]     Checking pulp v0.22.2
[INFO] [stderr]     Checking nano-gemm-c32 v0.2.1
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]     Checking nano-gemm-c64 v0.2.1
[INFO] [stderr]     Checking tempfile v3.27.0
[INFO] [stderr]    Compiling alloca v0.4.0
[INFO] [stderr]     Checking regex v1.11.1
[INFO] [stderr]     Checking serde_spanned v1.1.0
[INFO] [stderr]     Checking toml_datetime v1.1.0+spec-1.1.0
[INFO] [stderr]     Checking half v2.6.0
[INFO] [stderr]     Checking toml_writer v1.1.0+spec-1.1.0
[INFO] [stderr]    Compiling iai-callgrind-runner v0.16.1
[INFO] [stderr]     Checking clap_lex v0.7.5
[INFO] [stderr]     Checking toml v1.1.0+spec-1.1.0
[INFO] [stderr]     Checking ciborium-ll v0.2.2
[INFO] [stderr]     Checking clap_builder v4.5.48
[INFO] [stderr]     Checking rand_distr v0.6.0
[INFO] [stderr]     Checking itertools v0.13.0
[INFO] [stderr]     Checking wait-timeout v0.2.1
[INFO] [stderr]     Checking bit-vec v0.8.0
[INFO] [stderr]    Compiling proc-macro-error2 v2.0.1
[INFO] [stderr]    Compiling iai-callgrind v0.16.1
[INFO] [stderr]     Checking anstyle-query v1.1.3
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]    Compiling interpol v0.2.1
[INFO] [stderr]     Checking anstream v0.6.19
[INFO] [stderr]     Checking clap v4.5.48
[INFO] [stderr]     Checking rusty-fork v0.3.0
[INFO] [stderr]     Checking bit-set v0.8.0
[INFO] [stderr]    Compiling private-gemm-x86 v0.1.20
[INFO] [stderr]     Checking env_filter v0.1.3
[INFO] [stderr]     Checking rand_xorshift v0.4.0
[INFO] [stderr]     Checking gemm-common v0.19.0
[INFO] [stderr]     Checking qd v0.8.0
[INFO] [stderr]     Checking page_size v0.6.0
[INFO] [stderr]     Checking unarray v0.1.4
[INFO] [stderr]     Checking criterion-plot v0.8.2
[INFO] [stderr]     Checking faer-traits v0.24.0
[INFO] [stderr]     Checking proptest v1.7.0
[INFO] [stderr]     Checking gemm-f32 v0.19.0
[INFO] [stderr]     Checking gemm-f64 v0.19.0
[INFO] [stderr]     Checking gemm-c32 v0.19.0
[INFO] [stderr]     Checking gemm-c64 v0.19.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v2.0.12
[INFO] [stderr]    Compiling equator-macro v0.4.2
[INFO] [stderr]    Compiling equator-macro v0.2.1
[INFO] [stderr]     Checking equator v0.2.2
[INFO] [stderr]    Compiling derive_more-impl v2.0.1
[INFO] [stderr]     Checking gemm v0.19.0
[INFO] [stderr]     Checking equator v0.4.2
[INFO] [stderr]     Checking env_logger v0.11.8
[INFO] [stderr]     Checking spindle v0.2.6
[INFO] [stderr]    Compiling thiserror v2.0.12
[INFO] [stderr]    Compiling pest v2.8.0
[INFO] [stderr]     Checking approx v0.5.1
[INFO] [stderr]    Compiling derive_more v2.0.1
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]    Compiling serde_json v1.0.140
[INFO] [stderr]    Compiling pest_meta v2.8.0
[INFO] [stderr]     Checking bincode v1.3.3
[INFO] [stderr]     Checking ciborium v0.2.2
[INFO] [stderr]     Checking nano-gemm v0.2.2
[INFO] [stderr]    Compiling pest_generator v2.8.0
[INFO] [stderr]     Checking tinytemplate v1.2.1
[INFO] [stderr]    Compiling iai-callgrind-macros v0.6.1
[INFO] [stderr]     Checking criterion v0.8.2
[INFO] [stderr]    Compiling pest_derive v2.8.0
[INFO] [stderr]     Checking py_literal v0.4.0
[INFO] [stderr]     Checking npyz v0.8.4
[INFO] [stderr]     Checking faer v0.24.0
[INFO] [stderr]     Checking kryst v4.0.3 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `DistCsrCapabilityKey` and `resolve_distcsr_capability`
[INFO] [stdout]    --> src/context/ksp_context/mod.rs:112:29
[INFO] [stdout]     |
[INFO] [stdout] 112 |     DistCsrCapabilityEntry, DistCsrCapabilityKey, build_dist_route_decision_report,
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 113 |     resolve_distcsr_capability,
[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: `Comm`
[INFO] [stdout]  --> src/matrix/parcsr/mat.rs:7:23
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::parallel::{Comm, UniverseComm};
[INFO] [stdout]   |                       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DistCsrCapabilityKey` and `resolve_distcsr_capability`
[INFO] [stdout]    --> src/context/ksp_context/mod.rs:112:29
[INFO] [stdout]     |
[INFO] [stdout] 112 |     DistCsrCapabilityEntry, DistCsrCapabilityKey, build_dist_route_decision_report,
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 113 |     resolve_distcsr_capability,
[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: `super::*`
[INFO] [stdout]    --> src/matrix/parcsr/halo.rs:159:9
[INFO] [stdout]     |
[INFO] [stdout] 159 |     use super::*;
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `NoComm` and `UniverseComm`
[INFO] [stdout]    --> src/matrix/parcsr/halo.rs:160:27
[INFO] [stdout]     |
[INFO] [stdout] 160 |     use crate::parallel::{NoComm, UniverseComm};
[INFO] [stdout]     |                           ^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Comm`
[INFO] [stdout]  --> src/matrix/parcsr/mat.rs:7:23
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::parallel::{Comm, UniverseComm};
[INFO] [stdout]   |                       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]    --> src/matrix/parcsr/mat.rs:206:9
[INFO] [stdout]     |
[INFO] [stdout] 206 |     use std::sync::Arc;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::error::KError`
[INFO] [stdout]    --> src/preconditioner/block_jacobi.rs:489:9
[INFO] [stdout]     |
[INFO] [stdout] 489 |     use crate::error::KError;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::preconditioner::PcSide`
[INFO] [stdout]    --> src/preconditioner/block_jacobi.rs:492:9
[INFO] [stdout]     |
[INFO] [stdout] 492 |     use crate::preconditioner::PcSide;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::algebra::prelude::*`
[INFO] [stdout]  --> src/preconditioner/tests/mod.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::algebra::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `faer::Mat`
[INFO] [stdout]    --> src/utils/permutation.rs:209:9
[INFO] [stdout]     |
[INFO] [stdout] 209 |     use faer::Mat;
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `preconditioner::approxinv::ApproxInv`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:111:15
[INFO] [stdout]     |
[INFO] [stdout] 111 | impl<M, V, T> ApproxInv<M, V, T>
[INFO] [stdout]     |               ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `preconditioner::approxinv::ApproxInv`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:174:62
[INFO] [stdout]     |
[INFO] [stdout] 174 | impl<M: 'static + Sync, V: Sync, T> Preconditioner<M, V> for ApproxInv<M, V, T>
[INFO] [stdout]     |                                                              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `preconditioner::approxinv::ApproxInv`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:366:74
[INFO] [stdout]     |
[INFO] [stdout] 366 | impl<M: 'static + Send + Sync> crate::preconditioner::Preconditioner for ApproxInv<M, Vec<f64>, f64>
[INFO] [stdout]     |                                                                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `preconditioner::approxinv::tests::approxinv_apply_vector`: legacy ApproxInv is deprecated; use preconditioner::approxinv_csr (FsaiCsr/SpaiCsr) or PcType::ApproxInverse
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:711:5
[INFO] [stdout]     |
[INFO] [stdout] 711 | /     fn approxinv_apply_vector() {
[INFO] [stdout] 712 | |         // 2x2 matrix
[INFO] [stdout] 713 | |         let a = DenseMat {
[INFO] [stdout] 714 | |             data: vec![vec![4.0, 1.0], vec![2.0, 3.0]],
[INFO] [stdout] ...   |
[INFO] [stdout] 736 | |         assert_relative_eq!(y[1], y_expected[(1, 0)], epsilon = 2.5e-1);
[INFO] [stdout] 737 | |     }
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `preconditioner::approxinv::tests::approxinv_exact_inverse`: legacy ApproxInv is deprecated; use preconditioner::approxinv_csr (FsaiCsr/SpaiCsr) or PcType::ApproxInverse
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:689:5
[INFO] [stdout]     |
[INFO] [stdout] 689 | /     fn approxinv_exact_inverse() {
[INFO] [stdout] 690 | |         // 3x3 diagonal matrix
[INFO] [stdout] 691 | |         let a = DenseMat {
[INFO] [stdout] 692 | |             data: vec![
[INFO] [stdout] ...   |
[INFO] [stdout] 707 | |         assert_relative_eq!(inv[2][0].1, 0.25, epsilon = 1e-12);
[INFO] [stdout] 708 | |     }
[INFO] [stdout]     | |_____^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `preconditioner::approxinv::tests::approxinv_identity`: legacy ApproxInv is deprecated; use preconditioner::approxinv_csr (FsaiCsr/SpaiCsr) or PcType::ApproxInverse
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:740:5
[INFO] [stdout]     |
[INFO] [stdout] 740 | /     fn approxinv_identity() {
[INFO] [stdout] 741 | |         // Identity matrix
[INFO] [stdout] 742 | |         let a = eye::<f64>(4);
[INFO] [stdout] 743 | |         let pattern = SparsityPattern::Manual(vec![vec![0], vec![1], vec![2], vec![3]]);
[INFO] [stdout] ...   |
[INFO] [stdout] 755 | |         assert_relative_eq!(x[3], y[3], epsilon = 1e-12);
[INFO] [stdout] 756 | |     }
[INFO] [stdout]     | |_____^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `preconditioner::approxinv::tests::debug_faer_lu_inverse_rows`: legacy ApproxInv is deprecated; use preconditioner::approxinv_csr (FsaiCsr/SpaiCsr) or PcType::ApproxInverse
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:805:5
[INFO] [stdout]     |
[INFO] [stdout] 805 | /     fn debug_faer_lu_inverse_rows() {
[INFO] [stdout] 806 | |         // Test faer LU for inverting a 2x2 matrix row-wise
[INFO] [stdout] 807 | |         use faer::linalg::solvers::FullPivLu;
[INFO] [stdout] 808 | |         use faer::{Mat, MatMut};
[INFO] [stdout] ...   |
[INFO] [stdout] 828 | |         println!("faer LU inverse rows: {:?}", inv);
[INFO] [stdout] 829 | |     }
[INFO] [stdout]     | |_____^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `matrix::parcsr::builder::partition_rows_size`: Use DistCsrOp::partition_rows_balanced; legacy parcsr partition helpers are compatibility-only and planned for removal after 2026-12-31
[INFO] [stdout]   --> src/matrix/parcsr/builder.rs:54:20
[INFO] [stdout]    |
[INFO] [stdout] 54 |         let part = partition_rows_size(8, 4);
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `matrix::parcsr::builder::partition_rows_size`: Use DistCsrOp::partition_rows_balanced; legacy parcsr partition helpers are compatibility-only and planned for removal after 2026-12-31
[INFO] [stdout]   --> src/matrix/parcsr/builder.rs:61:20
[INFO] [stdout]    |
[INFO] [stdout] 61 |         let part = partition_rows_size(10, 3);
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `matrix::parcsr::builder::partition_rows_size`: Use DistCsrOp::partition_rows_balanced; legacy parcsr partition helpers are compatibility-only and planned for removal after 2026-12-31
[INFO] [stdout]   --> src/matrix/parcsr/builder.rs:68:20
[INFO] [stdout]    |
[INFO] [stdout] 68 |         let part = partition_rows_size(0, 4);
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `preconditioner::approxinv::ApproxInv`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:111:15
[INFO] [stdout]     |
[INFO] [stdout] 111 | impl<M, V, T> ApproxInv<M, V, T>
[INFO] [stdout]     |               ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `preconditioner::approxinv::ApproxInv`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:174:62
[INFO] [stdout]     |
[INFO] [stdout] 174 | impl<M: 'static + Sync, V: Sync, T> Preconditioner<M, V> for ApproxInv<M, V, T>
[INFO] [stdout]     |                                                              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `preconditioner::approxinv::ApproxInv`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:366:74
[INFO] [stdout]     |
[INFO] [stdout] 366 | impl<M: 'static + Send + Sync> crate::preconditioner::Preconditioner for ApproxInv<M, Vec<f64>, f64>
[INFO] [stdout]     |                                                                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `preconditioner::approxinv::ApproxInv`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:699:24
[INFO] [stdout]     |
[INFO] [stdout] 699 |         let mut spai = ApproxInv::<DenseMat<f64>, Vec<f64>, f64>::new(
[INFO] [stdout]     |                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `preconditioner::approxinv::ApproxInv`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:717:24
[INFO] [stdout]     |
[INFO] [stdout] 717 |         let mut spai = ApproxInv::<DenseMat<f64>, Vec<f64>, f64>::new(
[INFO] [stdout]     |                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `preconditioner::approxinv::ApproxInv`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:744:24
[INFO] [stdout]     |
[INFO] [stdout] 744 |         let mut spai = ApproxInv::<DenseMat<f64>, Vec<f64>, f64>::new(
[INFO] [stdout]     |                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `matrix::parcsr::mat::ParCsrMatrix::a_diag`: Legacy diag/off storage is compatibility-only; use canonical_dist_op()/DistCsrOp accessors. Planned removal after 2026-12-31
[INFO] [stdout]    --> src/matrix/dist_csr.rs:361:42
[INFO] [stdout]     |
[INFO] [stdout] 361 |             let (diag_cols, diag_vals) = par.a_diag.row(i);
[INFO] [stdout]     |                                          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `matrix::parcsr::mat::ParCsrMatrix::a_off`: Legacy diag/off storage is compatibility-only; use canonical_dist_op()/DistCsrOp accessors. Planned removal after 2026-12-31
[INFO] [stdout]    --> src/matrix/dist_csr.rs:362:40
[INFO] [stdout]     |
[INFO] [stdout] 362 |             let (off_cols, off_vals) = par.a_off.row(i);
[INFO] [stdout]     |                                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `matrix::parcsr::mat::ParCsrMatrix::colmap_owned`: Legacy column maps are compatibility-only; use canonical_dist_op()/DistCsrOp row_partition/layout metadata. Planned removal after 2026-12-31
[INFO] [stdout]    --> src/matrix/dist_csr.rs:366:29
[INFO] [stdout]     |
[INFO] [stdout] 366 |                   let gcol = *par
[INFO] [stdout]     |  _____________________________^
[INFO] [stdout] 367 | |                     .colmap_owned
[INFO] [stdout]     | |_________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `matrix::parcsr::mat::ParCsrMatrix::colmap_ghost`: Legacy column maps are compatibility-only; use canonical_dist_op()/DistCsrOp row_partition/layout metadata. Planned removal after 2026-12-31
[INFO] [stdout]    --> src/matrix/dist_csr.rs:373:29
[INFO] [stdout]     |
[INFO] [stdout] 373 |                   let gcol = *par
[INFO] [stdout]     |  _____________________________^
[INFO] [stdout] 374 | |                     .colmap_ghost
[INFO] [stdout]     | |_________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `matrix::parcsr::mat::ParCsrMatrix::a_diag`: Legacy diag/off storage is compatibility-only; use canonical_dist_op()/DistCsrOp accessors. Planned removal after 2026-12-31
[INFO] [stdout]    --> src/matrix/parcsr/mat.rs:121:13
[INFO] [stdout]     |
[INFO] [stdout] 121 |             a_diag,
[INFO] [stdout]     |             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `matrix::parcsr::mat::ParCsrMatrix::a_off`: Legacy diag/off storage is compatibility-only; use canonical_dist_op()/DistCsrOp accessors. Planned removal after 2026-12-31
[INFO] [stdout]    --> src/matrix/parcsr/mat.rs:122:13
[INFO] [stdout]     |
[INFO] [stdout] 122 |             a_off,
[INFO] [stdout]     |             ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `matrix::parcsr::mat::ParCsrMatrix::colmap_owned`: Legacy column maps are compatibility-only; use canonical_dist_op()/DistCsrOp row_partition/layout metadata. Planned removal after 2026-12-31
[INFO] [stdout]    --> src/matrix/parcsr/mat.rs:123:13
[INFO] [stdout]     |
[INFO] [stdout] 123 |             colmap_owned,
[INFO] [stdout]     |             ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `matrix::parcsr::mat::ParCsrMatrix::colmap_ghost`: Legacy column maps are compatibility-only; use canonical_dist_op()/DistCsrOp row_partition/layout metadata. Planned removal after 2026-12-31
[INFO] [stdout]    --> src/matrix/parcsr/mat.rs:124:13
[INFO] [stdout]     |
[INFO] [stdout] 124 |             colmap_ghost,
[INFO] [stdout]     |             ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `matrix::parcsr::mat::ParCsrMatrix::halo`: Legacy halo internals are compatibility-only; use canonical_dist_op()/DistCsrOp exchange paths. Planned removal after 2026-12-31
[INFO] [stdout]    --> src/matrix/parcsr/mat.rs:125:13
[INFO] [stdout]     |
[INFO] [stdout] 125 |             halo,
[INFO] [stdout]     |             ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `matrix::parcsr::mat::ParCsrMatrix::halo`: Legacy halo internals are compatibility-only; use canonical_dist_op()/DistCsrOp exchange paths. Planned removal after 2026-12-31
[INFO] [stdout]    --> src/matrix/parcsr/mat.rs:154:10
[INFO] [stdout]     |
[INFO] [stdout] 154 |         &self.halo
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `matrix::parcsr::mat::ParCsrMatrix::a_diag`: Legacy diag/off storage is compatibility-only; use canonical_dist_op()/DistCsrOp accessors. Planned removal after 2026-12-31
[INFO] [stdout]    --> src/matrix/parcsr/mat.rs:162:10
[INFO] [stdout]     |
[INFO] [stdout] 162 |         &self.a_diag
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `matrix::parcsr::mat::ParCsrMatrix::a_off`: Legacy diag/off storage is compatibility-only; use canonical_dist_op()/DistCsrOp accessors. Planned removal after 2026-12-31
[INFO] [stdout]    --> src/matrix/parcsr/mat.rs:170:10
[INFO] [stdout]     |
[INFO] [stdout] 170 |         &self.a_off
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]     --> src/preconditioner/amg.rs:4286:9
[INFO] [stdout]      |
[INFO] [stdout] 4282 | /             return Err(KError::Unsupported(
[INFO] [stdout] 4283 | |                 "AMG superlu_dist route requires feature superlu_dist".into(),
[INFO] [stdout] 4284 | |             ));
[INFO] [stdout]      | |______________- any code following this expression is unreachable
[INFO] [stdout] 4285 |           }
[INFO] [stdout] 4286 | /         if let (Some(stats), Some(t0)) = (stats.as_mut(), t_local) {
[INFO] [stdout] 4287 | |             stats.local_apply = toc(t0);
[INFO] [stdout] 4288 | |         }
[INFO] [stdout]      | |_________^ unreachable statement
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::pattern`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:136:13
[INFO] [stdout]     |
[INFO] [stdout] 136 |             pattern,
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::tol`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:137:13
[INFO] [stdout]     |
[INFO] [stdout] 137 |             tol,
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::max_iter`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:138:13
[INFO] [stdout]     |
[INFO] [stdout] 138 |             max_iter,
[INFO] [stdout]     |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::nbsteps`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:139:13
[INFO] [stdout]     |
[INFO] [stdout] 139 |             nbsteps,
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::max_size`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:140:13
[INFO] [stdout]     |
[INFO] [stdout] 140 |             max_size,
[INFO] [stdout]     |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::max_new`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:141:13
[INFO] [stdout]     |
[INFO] [stdout] 141 |             max_new,
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::block_size`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:142:13
[INFO] [stdout]     |
[INFO] [stdout] 142 |             block_size,
[INFO] [stdout]     |             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::cache_size`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:143:13
[INFO] [stdout]     |
[INFO] [stdout] 143 |             cache_size,
[INFO] [stdout]     |             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::verbose`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:144:13
[INFO] [stdout]     |
[INFO] [stdout] 144 |             verbose,
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::sp`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:145:13
[INFO] [stdout]     |
[INFO] [stdout] 145 |             sp,
[INFO] [stdout]     |             ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::inv_rows`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:146:13
[INFO] [stdout]     |
[INFO] [stdout] 146 |             inv_rows: Vec::new(),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::a`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:147:13
[INFO] [stdout]     |
[INFO] [stdout] 147 |             a: None,
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::csr`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:148:13
[INFO] [stdout]     |
[INFO] [stdout] 148 |             csr: None,
[INFO] [stdout]     |             ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::last_sid`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:149:13
[INFO] [stdout]     |
[INFO] [stdout] 149 |             last_sid: None,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::last_vid`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:150:13
[INFO] [stdout]     |
[INFO] [stdout] 150 |             last_vid: None,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::drop_tol`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:151:13
[INFO] [stdout]     |
[INFO] [stdout] 151 |             drop_tol: 1e-12,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::_phantom`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:158:13
[INFO] [stdout]     |
[INFO] [stdout] 158 |             _phantom: PhantomData,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::pattern`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:186:24
[INFO] [stdout]     |
[INFO] [stdout] 186 |         let n = match &self.pattern {
[INFO] [stdout]     |                        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::pattern`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:203:46
[INFO] [stdout]     |
[INFO] [stdout] 203 |             let pattern: Vec<usize> = match &self.pattern {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::tol`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:281:38
[INFO] [stdout]     |
[INFO] [stdout] 281 |                     if pivot.abs() < self.tol {
[INFO] [stdout]     |                                      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::tol`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:299:38
[INFO] [stdout]     |
[INFO] [stdout] 299 |                     if pivot.abs() < self.tol {
[INFO] [stdout]     |                                      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::inv_rows`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:318:9
[INFO] [stdout]     |
[INFO] [stdout] 318 |         self.inv_rows = vec![vec![]; n];
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::tol`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:321:39
[INFO] [stdout]     |
[INFO] [stdout] 321 |                 if cols[j][i].abs() > self.tol {
[INFO] [stdout]     |                                       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::inv_rows`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:322:21
[INFO] [stdout]     |
[INFO] [stdout] 322 |                     self.inv_rows[i].push((j, cols[j][i]));
[INFO] [stdout]     |                     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::inv_rows`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:344:35
[INFO] [stdout]     |
[INFO] [stdout] 344 |                 for &(j, mij) in &self.inv_rows[i] {
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::drop_tol`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:372:38
[INFO] [stdout]     |
[INFO] [stdout] 372 |         let csr = csr_from_linop(op, self.drop_tol)?;
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::last_sid`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:377:12
[INFO] [stdout]     |
[INFO] [stdout] 377 |         if self.last_sid.is_none() || self.last_sid != Some(sid) || self.last_vid != Some(vid) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::last_sid`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:377:39
[INFO] [stdout]     |
[INFO] [stdout] 377 |         if self.last_sid.is_none() || self.last_sid != Some(sid) || self.last_vid != Some(vid) {
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::last_vid`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:377:69
[INFO] [stdout]     |
[INFO] [stdout] 377 |         if self.last_sid.is_none() || self.last_sid != Some(sid) || self.last_vid != Some(vid) {
[INFO] [stdout]     |                                                                     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::pattern`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:383:37
[INFO] [stdout]     |
[INFO] [stdout] 383 |             let n_expected = match &self.pattern {
[INFO] [stdout]     |                                     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::pattern`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:389:54
[INFO] [stdout]     |
[INFO] [stdout] 389 |                 if let SparsityPattern::Manual(_) = &self.pattern {
[INFO] [stdout]     |                                                      ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::pattern`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:399:54
[INFO] [stdout]     |
[INFO] [stdout] 399 |                 let pattern_idx: Vec<usize> = match &self.pattern {
[INFO] [stdout]     |                                                      ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::inv_rows`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:443:13
[INFO] [stdout]     |
[INFO] [stdout] 443 |             self.inv_rows = vec![vec![]; n];
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::tol`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:446:43
[INFO] [stdout]     |
[INFO] [stdout] 446 |                     if cols[j][i].abs() > self.tol {
[INFO] [stdout]     |                                           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::inv_rows`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:447:25
[INFO] [stdout]     |
[INFO] [stdout] 447 |                         self.inv_rows[i].push((j, cols[j][i]));
[INFO] [stdout]     |                         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::csr`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:453:13
[INFO] [stdout]     |
[INFO] [stdout] 453 |             self.csr = Some(csr);
[INFO] [stdout]     |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::last_sid`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:454:13
[INFO] [stdout]     |
[INFO] [stdout] 454 |             self.last_sid = Some(sid);
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::last_vid`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:455:13
[INFO] [stdout]     |
[INFO] [stdout] 455 |             self.last_vid = Some(vid);
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::inv_rows`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:483:35
[INFO] [stdout]     |
[INFO] [stdout] 483 |                 for &(j, val) in &self.inv_rows[i] {
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `matrix::parcsr::mat::ParCsrMatrix::a_diag`: Legacy diag/off storage is compatibility-only; use canonical_dist_op()/DistCsrOp accessors. Planned removal after 2026-12-31
[INFO] [stdout]    --> src/matrix/dist_csr.rs:361:42
[INFO] [stdout]     |
[INFO] [stdout] 361 |             let (diag_cols, diag_vals) = par.a_diag.row(i);
[INFO] [stdout]     |                                          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `matrix::parcsr::mat::ParCsrMatrix::a_off`: Legacy diag/off storage is compatibility-only; use canonical_dist_op()/DistCsrOp accessors. Planned removal after 2026-12-31
[INFO] [stdout]    --> src/matrix/dist_csr.rs:362:40
[INFO] [stdout]     |
[INFO] [stdout] 362 |             let (off_cols, off_vals) = par.a_off.row(i);
[INFO] [stdout]     |                                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `matrix::parcsr::mat::ParCsrMatrix::colmap_owned`: Legacy column maps are compatibility-only; use canonical_dist_op()/DistCsrOp row_partition/layout metadata. Planned removal after 2026-12-31
[INFO] [stdout]    --> src/matrix/dist_csr.rs:366:29
[INFO] [stdout]     |
[INFO] [stdout] 366 |                   let gcol = *par
[INFO] [stdout]     |  _____________________________^
[INFO] [stdout] 367 | |                     .colmap_owned
[INFO] [stdout]     | |_________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `matrix::parcsr::mat::ParCsrMatrix::colmap_ghost`: Legacy column maps are compatibility-only; use canonical_dist_op()/DistCsrOp row_partition/layout metadata. Planned removal after 2026-12-31
[INFO] [stdout]    --> src/matrix/dist_csr.rs:373:29
[INFO] [stdout]     |
[INFO] [stdout] 373 |                   let gcol = *par
[INFO] [stdout]     |  _____________________________^
[INFO] [stdout] 374 | |                     .colmap_ghost
[INFO] [stdout]     | |_________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `matrix::parcsr::mat::ParCsrMatrix::a_diag`: Legacy diag/off storage is compatibility-only; use canonical_dist_op()/DistCsrOp accessors. Planned removal after 2026-12-31
[INFO] [stdout]    --> src/matrix/parcsr/mat.rs:121:13
[INFO] [stdout]     |
[INFO] [stdout] 121 |             a_diag,
[INFO] [stdout]     |             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `matrix::parcsr::mat::ParCsrMatrix::a_off`: Legacy diag/off storage is compatibility-only; use canonical_dist_op()/DistCsrOp accessors. Planned removal after 2026-12-31
[INFO] [stdout]    --> src/matrix/parcsr/mat.rs:122:13
[INFO] [stdout]     |
[INFO] [stdout] 122 |             a_off,
[INFO] [stdout]     |             ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `matrix::parcsr::mat::ParCsrMatrix::colmap_owned`: Legacy column maps are compatibility-only; use canonical_dist_op()/DistCsrOp row_partition/layout metadata. Planned removal after 2026-12-31
[INFO] [stdout]    --> src/matrix/parcsr/mat.rs:123:13
[INFO] [stdout]     |
[INFO] [stdout] 123 |             colmap_owned,
[INFO] [stdout]     |             ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `matrix::parcsr::mat::ParCsrMatrix::colmap_ghost`: Legacy column maps are compatibility-only; use canonical_dist_op()/DistCsrOp row_partition/layout metadata. Planned removal after 2026-12-31
[INFO] [stdout]    --> src/matrix/parcsr/mat.rs:124:13
[INFO] [stdout]     |
[INFO] [stdout] 124 |             colmap_ghost,
[INFO] [stdout]     |             ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `matrix::parcsr::mat::ParCsrMatrix::halo`: Legacy halo internals are compatibility-only; use canonical_dist_op()/DistCsrOp exchange paths. Planned removal after 2026-12-31
[INFO] [stdout]    --> src/matrix/parcsr/mat.rs:125:13
[INFO] [stdout]     |
[INFO] [stdout] 125 |             halo,
[INFO] [stdout]     |             ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `matrix::parcsr::mat::ParCsrMatrix::halo`: Legacy halo internals are compatibility-only; use canonical_dist_op()/DistCsrOp exchange paths. Planned removal after 2026-12-31
[INFO] [stdout]    --> src/matrix/parcsr/mat.rs:154:10
[INFO] [stdout]     |
[INFO] [stdout] 154 |         &self.halo
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `matrix::parcsr::mat::ParCsrMatrix::a_diag`: Legacy diag/off storage is compatibility-only; use canonical_dist_op()/DistCsrOp accessors. Planned removal after 2026-12-31
[INFO] [stdout]    --> src/matrix/parcsr/mat.rs:162:10
[INFO] [stdout]     |
[INFO] [stdout] 162 |         &self.a_diag
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `matrix::parcsr::mat::ParCsrMatrix::a_off`: Legacy diag/off storage is compatibility-only; use canonical_dist_op()/DistCsrOp accessors. Planned removal after 2026-12-31
[INFO] [stdout]    --> src/matrix/parcsr/mat.rs:170:10
[INFO] [stdout]     |
[INFO] [stdout] 170 |         &self.a_off
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `matrix::parcsr::mat::ParCsrMatrix::a_diag`: Legacy diag/off storage is compatibility-only; use canonical_dist_op()/DistCsrOp accessors. Planned removal after 2026-12-31
[INFO] [stdout]    --> src/matrix/parcsr/mat.rs:226:13
[INFO] [stdout]     |
[INFO] [stdout] 226 |             a_diag,
[INFO] [stdout]     |             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `matrix::parcsr::mat::ParCsrMatrix::a_off`: Legacy diag/off storage is compatibility-only; use canonical_dist_op()/DistCsrOp accessors. Planned removal after 2026-12-31
[INFO] [stdout]    --> src/matrix/parcsr/mat.rs:227:13
[INFO] [stdout]     |
[INFO] [stdout] 227 |             a_off,
[INFO] [stdout]     |             ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `matrix::parcsr::mat::ParCsrMatrix::colmap_owned`: Legacy column maps are compatibility-only; use canonical_dist_op()/DistCsrOp row_partition/layout metadata. Planned removal after 2026-12-31
[INFO] [stdout]    --> src/matrix/parcsr/mat.rs:228:13
[INFO] [stdout]     |
[INFO] [stdout] 228 |             colmap_owned: vec![0, 1],
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `matrix::parcsr::mat::ParCsrMatrix::colmap_ghost`: Legacy column maps are compatibility-only; use canonical_dist_op()/DistCsrOp row_partition/layout metadata. Planned removal after 2026-12-31
[INFO] [stdout]    --> src/matrix/parcsr/mat.rs:229:13
[INFO] [stdout]     |
[INFO] [stdout] 229 |             colmap_ghost: Vec::new(),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `matrix::parcsr::mat::ParCsrMatrix::halo`: Legacy halo internals are compatibility-only; use canonical_dist_op()/DistCsrOp exchange paths. Planned removal after 2026-12-31
[INFO] [stdout]    --> src/matrix/parcsr/mat.rs:230:13
[INFO] [stdout]     |
[INFO] [stdout] 230 |             halo,
[INFO] [stdout]     |             ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]    --> src/preconditioner/jacobi.rs:160:9
[INFO] [stdout]     |
[INFO] [stdout] 158 |             return Ok(());
[INFO] [stdout]     |             ------------- any code following this expression is unreachable
[INFO] [stdout] 159 |         }
[INFO] [stdout] 160 |         Err(KError::InvalidInput("Jacobi needs Dense or CSR".into()))
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]     --> src/preconditioner/amg.rs:4286:9
[INFO] [stdout]      |
[INFO] [stdout] 4282 | /             return Err(KError::Unsupported(
[INFO] [stdout] 4283 | |                 "AMG superlu_dist route requires feature superlu_dist".into(),
[INFO] [stdout] 4284 | |             ));
[INFO] [stdout]      | |______________- any code following this expression is unreachable
[INFO] [stdout] 4285 |           }
[INFO] [stdout] 4286 | /         if let (Some(stats), Some(t0)) = (stats.as_mut(), t_local) {
[INFO] [stdout] 4287 | |             stats.local_apply = toc(t0);
[INFO] [stdout] 4288 | |         }
[INFO] [stdout]      | |_________^ unreachable statement
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::pattern`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:136:13
[INFO] [stdout]     |
[INFO] [stdout] 136 |             pattern,
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::tol`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:137:13
[INFO] [stdout]     |
[INFO] [stdout] 137 |             tol,
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::max_iter`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:138:13
[INFO] [stdout]     |
[INFO] [stdout] 138 |             max_iter,
[INFO] [stdout]     |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::nbsteps`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:139:13
[INFO] [stdout]     |
[INFO] [stdout] 139 |             nbsteps,
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::max_size`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:140:13
[INFO] [stdout]     |
[INFO] [stdout] 140 |             max_size,
[INFO] [stdout]     |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::max_new`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:141:13
[INFO] [stdout]     |
[INFO] [stdout] 141 |             max_new,
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::block_size`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:142:13
[INFO] [stdout]     |
[INFO] [stdout] 142 |             block_size,
[INFO] [stdout]     |             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::cache_size`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:143:13
[INFO] [stdout]     |
[INFO] [stdout] 143 |             cache_size,
[INFO] [stdout]     |             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::verbose`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:144:13
[INFO] [stdout]     |
[INFO] [stdout] 144 |             verbose,
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::sp`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:145:13
[INFO] [stdout]     |
[INFO] [stdout] 145 |             sp,
[INFO] [stdout]     |             ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::inv_rows`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:146:13
[INFO] [stdout]     |
[INFO] [stdout] 146 |             inv_rows: Vec::new(),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::a`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:147:13
[INFO] [stdout]     |
[INFO] [stdout] 147 |             a: None,
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::csr`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:148:13
[INFO] [stdout]     |
[INFO] [stdout] 148 |             csr: None,
[INFO] [stdout]     |             ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::last_sid`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:149:13
[INFO] [stdout]     |
[INFO] [stdout] 149 |             last_sid: None,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::last_vid`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:150:13
[INFO] [stdout]     |
[INFO] [stdout] 150 |             last_vid: None,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::drop_tol`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:151:13
[INFO] [stdout]     |
[INFO] [stdout] 151 |             drop_tol: 1e-12,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::_phantom`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:158:13
[INFO] [stdout]     |
[INFO] [stdout] 158 |             _phantom: PhantomData,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::pattern`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:186:24
[INFO] [stdout]     |
[INFO] [stdout] 186 |         let n = match &self.pattern {
[INFO] [stdout]     |                        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::pattern`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:203:46
[INFO] [stdout]     |
[INFO] [stdout] 203 |             let pattern: Vec<usize> = match &self.pattern {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::tol`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:281:38
[INFO] [stdout]     |
[INFO] [stdout] 281 |                     if pivot.abs() < self.tol {
[INFO] [stdout]     |                                      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::tol`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:299:38
[INFO] [stdout]     |
[INFO] [stdout] 299 |                     if pivot.abs() < self.tol {
[INFO] [stdout]     |                                      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::inv_rows`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:318:9
[INFO] [stdout]     |
[INFO] [stdout] 318 |         self.inv_rows = vec![vec![]; n];
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::tol`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:321:39
[INFO] [stdout]     |
[INFO] [stdout] 321 |                 if cols[j][i].abs() > self.tol {
[INFO] [stdout]     |                                       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::inv_rows`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:322:21
[INFO] [stdout]     |
[INFO] [stdout] 322 |                     self.inv_rows[i].push((j, cols[j][i]));
[INFO] [stdout]     |                     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::inv_rows`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:344:35
[INFO] [stdout]     |
[INFO] [stdout] 344 |                 for &(j, mij) in &self.inv_rows[i] {
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::drop_tol`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:372:38
[INFO] [stdout]     |
[INFO] [stdout] 372 |         let csr = csr_from_linop(op, self.drop_tol)?;
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::last_sid`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:377:12
[INFO] [stdout]     |
[INFO] [stdout] 377 |         if self.last_sid.is_none() || self.last_sid != Some(sid) || self.last_vid != Some(vid) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::last_sid`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:377:39
[INFO] [stdout]     |
[INFO] [stdout] 377 |         if self.last_sid.is_none() || self.last_sid != Some(sid) || self.last_vid != Some(vid) {
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::last_vid`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:377:69
[INFO] [stdout]     |
[INFO] [stdout] 377 |         if self.last_sid.is_none() || self.last_sid != Some(sid) || self.last_vid != Some(vid) {
[INFO] [stdout]     |                                                                     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::pattern`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:383:37
[INFO] [stdout]     |
[INFO] [stdout] 383 |             let n_expected = match &self.pattern {
[INFO] [stdout]     |                                     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::pattern`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:389:54
[INFO] [stdout]     |
[INFO] [stdout] 389 |                 if let SparsityPattern::Manual(_) = &self.pattern {
[INFO] [stdout]     |                                                      ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::pattern`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:399:54
[INFO] [stdout]     |
[INFO] [stdout] 399 |                 let pattern_idx: Vec<usize> = match &self.pattern {
[INFO] [stdout]     |                                                      ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::inv_rows`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:443:13
[INFO] [stdout]     |
[INFO] [stdout] 443 |             self.inv_rows = vec![vec![]; n];
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::tol`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:446:43
[INFO] [stdout]     |
[INFO] [stdout] 446 |                     if cols[j][i].abs() > self.tol {
[INFO] [stdout]     |                                           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::inv_rows`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:447:25
[INFO] [stdout]     |
[INFO] [stdout] 447 |                         self.inv_rows[i].push((j, cols[j][i]));
[INFO] [stdout]     |                         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::csr`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:453:13
[INFO] [stdout]     |
[INFO] [stdout] 453 |             self.csr = Some(csr);
[INFO] [stdout]     |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::last_sid`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:454:13
[INFO] [stdout]     |
[INFO] [stdout] 454 |             self.last_sid = Some(sid);
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::last_vid`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:455:13
[INFO] [stdout]     |
[INFO] [stdout] 455 |             self.last_vid = Some(vid);
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::inv_rows`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:483:35
[INFO] [stdout]     |
[INFO] [stdout] 483 |                 for &(j, val) in &self.inv_rows[i] {
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `preconditioner::approxinv::ApproxInv::<M, V, T>::new`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:699:67
[INFO] [stdout]     |
[INFO] [stdout] 699 |         let mut spai = ApproxInv::<DenseMat<f64>, Vec<f64>, f64>::new(
[INFO] [stdout]     |                                                                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `preconditioner::approxinv::ApproxInv::inv_rows`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:704:20
[INFO] [stdout]     |
[INFO] [stdout] 704 |         let inv = &spai.inv_rows;
[INFO] [stdout]     |                    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `preconditioner::approxinv::ApproxInv::<M, V, T>::new`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:717:67
[INFO] [stdout]     |
[INFO] [stdout] 717 |         let mut spai = ApproxInv::<DenseMat<f64>, Vec<f64>, f64>::new(
[INFO] [stdout]     |                                                                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `preconditioner::approxinv::ApproxInv::<M, V, T>::new`: legacy ApproxInv is deprecated; migrate to approxinv_csr::SpaiCsr/FsaiCsr
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:744:67
[INFO] [stdout]     |
[INFO] [stdout] 744 |         let mut spai = ApproxInv::<DenseMat<f64>, Vec<f64>, f64>::new(
[INFO] [stdout]     |                                                                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `sum_h2` is never read
[INFO] [stdout]    --> src/context/ksp_context/workspace.rs:634:13
[INFO] [stdout]     |
[INFO] [stdout] 634 |             sum_h2 = R::zero();
[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: value assigned to `sum_h2` is never read
[INFO] [stdout]    --> src/context/ksp_context/workspace.rs:637:17
[INFO] [stdout]     |
[INFO] [stdout] 637 |                 sum_h2 += hij * hij;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `rows` is never read
[INFO] [stdout]   --> src/matrix/op_bridge.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 |         rows = y.len();
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `cols` is never read
[INFO] [stdout]   --> src/matrix/op_bridge.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 |         cols = x.len();
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/parallel/mod.rs:411:13
[INFO] [stdout]     |
[INFO] [stdout] 411 |             _ => false,
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/parallel/mod.rs:411:13
[INFO] [stdout]     |
[INFO] [stdout] 403 |             (UniverseComm::NoComm(_), UniverseComm::NoComm(_)) => true,
[INFO] [stdout]     |             -------------------------------------------------- matches some of the same values
[INFO] [stdout] 404 |             (UniverseComm::NoComm(_), _) | (_, UniverseComm::NoComm(_)) => false,
[INFO] [stdout]     |             ----------------------------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 408 |             (UniverseComm::Rayon(a), UniverseComm::Rayon(b)) => a.congruent(b),
[INFO] [stdout]     |             ------------------------------------------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 411 |             _ => false,
[INFO] [stdout]     |             ^ collectively making this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]    --> src/preconditioner/jacobi.rs:160:9
[INFO] [stdout]     |
[INFO] [stdout] 158 |             return Ok(());
[INFO] [stdout]     |             ------------- any code following this expression is unreachable
[INFO] [stdout] 159 |         }
[INFO] [stdout] 160 |         Err(KError::InvalidInput("Jacobi needs Dense or CSR".into()))
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `side`
[INFO] [stdout]     --> src/preconditioner/amg.rs:4034:9
[INFO] [stdout]      |
[INFO] [stdout] 4034 |         side: PcSide,
[INFO] [stdout]      |         ^^^^ help: if this is intentional, prefix it with an underscore: `_side`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/preconditioner/amg.rs:4264:9
[INFO] [stdout]      |
[INFO] [stdout] 4264 |         mut stats: Option<&mut DistApplyStats>,
[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: `t_local`
[INFO] [stdout]     --> src/preconditioner/amg.rs:4274:13
[INFO] [stdout]      |
[INFO] [stdout] 4274 |         let t_local = stats.as_ref().map(|_| tic());
[INFO] [stdout]      |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_t_local`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `err`
[INFO] [stdout]     --> src/preconditioner/amg.rs:8378:13
[INFO] [stdout]      |
[INFO] [stdout] 8378 |         Err(err) if allow_safeguard && !cfg.require_spd => Ok(diag_inv_from_csr_safeguarded(a)),
[INFO] [stdout]      |             ^^^ help: if this is intentional, prefix it with an underscore: `_err`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `conditioned` is never read
[INFO] [stdout]     --> src/preconditioner/ilu.rs:2467:31
[INFO] [stdout]      |
[INFO] [stdout] 2467 |         let mut conditioned = None;
[INFO] [stdout]      |                               ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `conditioned` is never read
[INFO] [stdout]    --> src/preconditioner/ilutp.rs:440:31
[INFO] [stdout]     |
[INFO] [stdout] 440 |         let mut conditioned = None;
[INFO] [stdout]     |                               ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reason` is never read
[INFO] [stdout]    --> src/solver/block/gmres.rs:142:30
[INFO] [stdout]     |
[INFO] [stdout] 142 |             let mut reason = ConvergedReason::Continued;
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `refreshed`
[INFO] [stdout]     --> src/solver/cg.rs:1100:68
[INFO] [stdout]      |
[INFO] [stdout] 1100 |             let (mut rho_new, mut delta_new, _rsq_new, _znorm_new, refreshed) = if refresh_due {
[INFO] [stdout]      |                                                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_refreshed`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `red_engine`
[INFO] [stdout]     --> src/solver/gmres.rs:1391:13
[INFO] [stdout]      |
[INFO] [stdout] 1391 |         let red_engine = ws
[INFO] [stdout]      |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_red_engine`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SparseMatrix`
[INFO] [stdout]  --> src/preconditioner/amg/tests/nodal_nns.rs:5:40
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::matrix::sparse::{CsrMatrix, SparseMatrix};
[INFO] [stdout]   |                                        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Preconditioner`
[INFO] [stdout]  --> src/preconditioner/tests/block_jacobi.rs:5:37
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::preconditioner::{PcSide, Preconditioner};
[INFO] [stdout]   |                                     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `pc_side` is never read
[INFO] [stdout]   --> src/solver/tfqmr.rs:71:13
[INFO] [stdout]    |
[INFO] [stdout] 71 |             pc_side = PcSide::Left;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `stats` is never read
[INFO] [stdout]    --> src/solver/pca_gmres.rs:445:17
[INFO] [stdout]     |
[INFO] [stdout] 445 |                 stats = sstats;
[INFO] [stdout]     |                 ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `label`
[INFO] [stdout]    --> src/utils/conditioning.rs:428:25
[INFO] [stdout]     |
[INFO] [stdout] 428 | pub fn log_conditioning(label: &str, opts: &ConditioningOptions) {
[INFO] [stdout]     |                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_label`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `opts`
[INFO] [stdout]    --> src/utils/conditioning.rs:428:38
[INFO] [stdout]     |
[INFO] [stdout] 428 | pub fn log_conditioning(label: &str, opts: &ConditioningOptions) {
[INFO] [stdout]     |                                      ^^^^ help: if this is intentional, prefix it with an underscore: `_opts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> src/utils/permutation.rs:79:9
[INFO] [stdout]    |
[INFO] [stdout] 79 |     let n = a.nrows();
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `PcChainPlan` is more private than the item `KspContext::pc_chain_plan`
[INFO] [stdout]    --> src/context/ksp_context/mod.rs:309:5
[INFO] [stdout]     |
[INFO] [stdout] 309 |     pub(crate) pc_chain_plan: Option<PcChainPlan>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `KspContext::pc_chain_plan` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `PcChainPlan` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/context/ksp_context/mod.rs:273:1
[INFO] [stdout]     |
[INFO] [stdout] 273 | struct PcChainPlan {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `sum_h2` is never read
[INFO] [stdout]    --> src/context/ksp_context/workspace.rs:634:13
[INFO] [stdout]     |
[INFO] [stdout] 634 |             sum_h2 = R::zero();
[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: value assigned to `sum_h2` is never read
[INFO] [stdout]    --> src/context/ksp_context/workspace.rs:637:17
[INFO] [stdout]     |
[INFO] [stdout] 637 |                 sum_h2 += hij * hij;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `pc_opts` is never read
[INFO] [stdout]    --> src/context/ksp_context/mod.rs:435:5
[INFO] [stdout]     |
[INFO] [stdout] 433 | struct PendingMpiPc {
[INFO] [stdout]     |        ------------ field in this struct
[INFO] [stdout] 434 |     mpi_opts: MpiPcOptions,
[INFO] [stdout] 435 |     pc_opts: PcOptions,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `PendingMpiPc` has derived impls for the traits `Debug` and `Clone`, but these are 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: field `probe_key` is never read
[INFO] [stdout]    --> src/context/ksp_context/mod.rs:454:5
[INFO] [stdout]     |
[INFO] [stdout] 453 | struct DistRoutePreflightState {
[INFO] [stdout]     |        ----------------------- field in this struct
[INFO] [stdout] 454 |     probe_key: String,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DistRoutePreflightState` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]     --> src/context/ksp_context/mod.rs:3460:8
[INFO] [stdout]      |
[INFO] [stdout]  473 | impl KspContext {
[INFO] [stdout]      | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 3460 |     fn set_dist_route_selected(&mut self, route: impl Into<String>) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3465 |     fn set_dist_route_capability_entry(&mut self, entry: DistCsrCapabilityEntry) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3470 |     fn set_dist_route_decision_report(&mut self, report: DistRouteDecisionReport) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3475 |     fn push_dist_route_fallback(&mut self, reason: DistRouteFallbackReason) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3486 |     fn set_dist_route_fallback_reason(&mut self, reason: impl Into<String>) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3491 |     fn refresh_and_validate_dist_route_report(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3537 |     fn maybe_reuse_dist_preflight(&mut self, probe_key: &str) -> Option<DistRoutePreflightState> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3547 |     fn store_dist_preflight(&mut self, state: DistRoutePreflightState) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DistCsrCapabilityKey` is never constructed
[INFO] [stdout]  --> src/context/ksp_context/distcsr_capability.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct DistCsrCapabilityKey {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `resolve_distcsr_capability` is never used
[INFO] [stdout]   --> src/context/ksp_context/distcsr_capability.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub fn resolve_distcsr_capability(key: DistCsrCapabilityKey) -> DistCsrCapabilityEntry {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_dist_route_decision_report` is never used
[INFO] [stdout]    --> src/context/ksp_context/distcsr_capability.rs:110:8
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub fn build_dist_route_decision_report(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `microbench` is never used
[INFO] [stdout]    --> src/matrix/spmv/plan.rs:333:4
[INFO] [stdout]     |
[INFO] [stdout] 333 | fn microbench<F: FnMut()>(nsamples: usize, mut f: F) -> f64 {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pack_scalar_s_to_rr` is never used
[INFO] [stdout]   --> src/parallel/reduce.rs:34:15
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub(crate) fn pack_scalar_s_to_rr(v: S) -> [R; 1] {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unpack_rr_to_scalar_s` is never used
[INFO] [stdout]   --> src/parallel/reduce.rs:40:15
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub(crate) fn unpack_rr_to_scalar_s(rr: [R; 1]) -> S {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pack_scalar_s` is never used
[INFO] [stdout]   --> src/parallel/repro.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn pack_scalar_s(value: S) -> [R; 1] {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unpack_scalar_s` is never used
[INFO] [stdout]   --> src/parallel/repro.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn unpack_scalar_s(parts: [R; 1]) -> S {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `layout` is never read
[INFO] [stdout]   --> src/preconditioner/bddc/mod.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 69 | struct BddcSymbolic {
[INFO] [stdout]    |        ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 72 |     layout: Option<DistLayout>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BddcSymbolic` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `extract_dense_operator` is never used
[INFO] [stdout]    --> src/preconditioner/bddc/mod.rs:211:8
[INFO] [stdout]     |
[INFO] [stdout]  97 | impl BddcPc {
[INFO] [stdout]     | ----------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 211 |     fn extract_dense_operator(op: &dyn LinOp<S = S>, n: usize) -> Result<Vec<Vec<S>>, KError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `complex_setup_fallback_reason` is never read
[INFO] [stdout]    --> src/preconditioner/approxinv_csr.rs:136:5
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub struct SpaiCsr {
[INFO] [stdout]     |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 136 |     complex_setup_fallback_reason: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `inner_pc` is never read
[INFO] [stdout]   --> src/preconditioner/asm/mod.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct AsmPc {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 44 |     inner_pc: AsmInnerPc,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DistCoarsePolicy` is never used
[INFO] [stdout]   --> src/preconditioner/dist/coarse.rs:20:10
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub enum DistCoarsePolicy {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Meta` is never used
[INFO] [stdout]   --> src/preconditioner/ilu_csr/csr_builder.rs:86:10
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub enum Meta<R> {
[INFO] [stdout]    |          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `RowBuilder` is never used
[INFO] [stdout]   --> src/preconditioner/ilu_csr/csr_builder.rs:96:11
[INFO] [stdout]    |
[INFO] [stdout] 96 | pub trait RowBuilder<S: KrystScalar> {
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Ilu0Row` is never constructed
[INFO] [stdout]    --> src/preconditioner/ilu_csr/csr_builder.rs:111:12
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub struct Ilu0Row<'a, S> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/preconditioner/ilu_csr/csr_builder.rs:117:12
[INFO] [stdout]     |
[INFO] [stdout] 116 | impl<'a, S: KrystScalar> Ilu0Row<'a, S> {
[INFO] [stdout]     | --------------------------------------- associated function in this implementation
[INFO] [stdout] 117 |     pub fn new(cols: &'a [usize], vals: &'a mut [S]) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IlukRow` is never constructed
[INFO] [stdout]    --> src/preconditioner/ilu_csr/csr_builder.rs:137:12
[INFO] [stdout]     |
[INFO] [stdout] 137 | pub struct IlukRow<S: KrystScalar, const CAP: usize> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `upsert` are never used
[INFO] [stdout]    --> src/preconditioner/ilu_csr/csr_builder.rs:146:12
[INFO] [stdout]     |
[INFO] [stdout] 145 | impl<S: KrystScalar, const CAP: usize> IlukRow<S, CAP> {
[INFO] [stdout]     | ------------------------------------------------------ associated items in this implementation
[INFO] [stdout] 146 |     pub fn new(max_level: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     fn upsert(&mut self, col: usize, lev: u32, val: S) {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HeapElem` is never constructed
[INFO] [stdout]    --> src/preconditioner/ilu_csr/csr_builder.rs:232:8
[INFO] [stdout]     |
[INFO] [stdout] 232 | struct HeapElem<S: KrystScalar> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IlutRow` is never constructed
[INFO] [stdout]    --> src/preconditioner/ilu_csr/csr_builder.rs:259:12
[INFO] [stdout]     |
[INFO] [stdout] 259 | pub struct IlutRow<S: KrystScalar> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/preconditioner/ilu_csr/csr_builder.rs:266:12
[INFO] [stdout]     |
[INFO] [stdout] 265 | impl<S: KrystScalar> IlutRow<S> {
[INFO] [stdout]     | ------------------------------- associated function in this implementation
[INFO] [stdout] 266 |     pub fn new(p: usize, drop_tol: S::Real) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PosMap` is never constructed
[INFO] [stdout]  --> src/preconditioner/ilu_csr/pos_map.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct PosMap {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `clear`, `get`, and `set` are never used
[INFO] [stdout]   --> src/preconditioner/ilu_csr/pos_map.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl PosMap {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 16 |     /// Create a new `PosMap` with capacity for `n` columns.
[INFO] [stdout] 17 |     pub fn new(n: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn clear(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn get(&self, j: usize) -> Option<usize> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn set(&mut self, j: usize, idx: usize) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `add_to` is never used
[INFO] [stdout]   --> src/preconditioner/ilu_csr/row_work.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl RowWork {
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn add_to(&mut self, j: usize, delta: Real) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `NativeWithDegradedFallback` is never constructed
[INFO] [stdout]   --> src/utils/diagnostics.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | enum PcComplexSupport {
[INFO] [stdout]    |      ---------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 17 |     NativeWithDegradedFallback,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PcComplexSupport` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `effective_mode_with_comm` is never used
[INFO] [stdout]   --> src/utils/reduction.rs:77:4
[INFO] [stdout]    |
[INFO] [stdout] 77 | fn effective_mode_with_comm(opt: &ReductOptions, comm_repro: bool) -> ReproMode {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `convert_pair` is never used
[INFO] [stdout]    --> src/utils/reduction.rs:357:4
[INFO] [stdout]     |
[INFO] [stdout] 357 | fn convert_pair(buf: &[R]) -> (R, R) {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `deterministic_reduce_vec` is never used
[INFO] [stdout]    --> src/utils/reduction.rs:362:4
[INFO] [stdout]     |
[INFO] [stdout] 362 | fn deterministic_reduce_vec<C>(comm: &C, data: &[R], mode: ReproMode) -> Vec<R>
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `L` should have a snake case name
[INFO] [stdout]     --> src/preconditioner/amg.rs:7920:9
[INFO] [stdout]      |
[INFO] [stdout] 7920 |     let L = levels.len() - 1;
[INFO] [stdout]      |         ^ help: convert the identifier to snake case: `l`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `neighbor_distribution_over_C_of` should have a snake case name
[INFO] [stdout]    --> src/preconditioner/amg/prolong.rs:473:4
[INFO] [stdout]     |
[INFO] [stdout] 473 | fn neighbor_distribution_over_C_of(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `neighbor_distribution_over_c_of`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `criterion::black_box`: use `std::hint::black_box()` instead
[INFO] [stdout]  --> benches/apply_no_alloc.rs:7:28
[INFO] [stdout]   |
[INFO] [stdout] 7 | use criterion::{Criterion, black_box, criterion_group, criterion_main};
[INFO] [stdout]   |                            ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `criterion::black_box`: use `std::hint::black_box()` instead
[INFO] [stdout]   --> benches/apply_no_alloc.rs:30:36
[INFO] [stdout]    |
[INFO] [stdout] 30 |             pc.apply(PcSide::Left, black_box(&x), black_box(&mut y))
[INFO] [stdout]    |                                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `criterion::black_box`: use `std::hint::black_box()` instead
[INFO] [stdout]   --> benches/apply_no_alloc.rs:30:51
[INFO] [stdout]    |
[INFO] [stdout] 30 |             pc.apply(PcSide::Left, black_box(&x), black_box(&mut y))
[INFO] [stdout]    |                                                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `rows` is never read
[INFO] [stdout]   --> src/matrix/op_bridge.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 |         rows = y.len();
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `cols` is never read
[INFO] [stdout]   --> src/matrix/op_bridge.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 |         cols = x.len();
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> benches/infra/datasets.rs:86:9
[INFO] [stdout]    |
[INFO] [stdout] 86 |     let mut r_row_ptr = counts.clone();
[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 `SolveStats` that must be used
[INFO] [stdout]   --> tests/workspace_tests.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 40 | /     solver
[INFO] [stdout] 41 | |         .solve_f64(
[INFO] [stdout] 42 | |             &a,
[INFO] [stdout] 43 | |             None,
[INFO] [stdout] ...  |
[INFO] [stdout] 51 | |         .unwrap();
[INFO] [stdout]    | |_________________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 40 |     let _ = solver
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `poisson2d_prolong_restrict` is never used
[INFO] [stdout]   --> benches/infra/datasets.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn poisson2d_prolong_restrict(n: usize) -> (CsrMatrix<f64>, CsrMatrix<f64>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rap_triplet_poisson2d` is never used
[INFO] [stdout]    --> benches/infra/datasets.rs:104:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub fn rap_triplet_poisson2d(n: usize) -> (CsrMatrix<f64>, CsrMatrix<f64>, CsrMatrix<f64>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_powerlaw_like` is never used
[INFO] [stdout]    --> benches/infra/datasets.rs:112:8
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub fn random_powerlaw_like(n: usize, avg_deg: usize, seed: u64) -> CsrMatrix<f64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `blocky_csr` is never used
[INFO] [stdout]    --> benches/infra/datasets.rs:151:8
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub fn blocky_csr(
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> benches/infra/datasets.rs:86:9
[INFO] [stdout]    |
[INFO] [stdout] 86 |     let mut r_row_ptr = counts.clone();
[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: function `poisson2d_prolong_restrict` is never used
[INFO] [stdout]   --> benches/infra/datasets.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn poisson2d_prolong_restrict(n: usize) -> (CsrMatrix<f64>, CsrMatrix<f64>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rap_triplet_poisson2d` is never used
[INFO] [stdout]    --> benches/infra/datasets.rs:104:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub fn rap_triplet_poisson2d(n: usize) -> (CsrMatrix<f64>, CsrMatrix<f64>, CsrMatrix<f64>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_powerlaw_like` is never used
[INFO] [stdout]    --> benches/infra/datasets.rs:112:8
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub fn random_powerlaw_like(n: usize, avg_deg: usize, seed: u64) -> CsrMatrix<f64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `blocky_csr` is never used
[INFO] [stdout]    --> benches/infra/datasets.rs:151:8
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub fn blocky_csr(
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `SolveStats` that must be used
[INFO] [stdout]   --> tests/cg_initial_guess.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 62 | /     solver
[INFO] [stdout] 63 | |         .solve_with_comm(
[INFO] [stdout] 64 | |             &as_s_op(&op),
[INFO] [stdout] 65 | |             None,
[INFO] [stdout] ...  |
[INFO] [stdout] 73 | |         .unwrap();
[INFO] [stdout]    | |_________________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 62 |     let _ = solver
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `SolveStats` that must be used
[INFO] [stdout]   --> tests/cg_initial_guess.rs:83:5
[INFO] [stdout]    |
[INFO] [stdout] 83 | /     solver2
[INFO] [stdout] 84 | |         .solve_with_comm(
[INFO] [stdout] 85 | |             &as_s_op(&op2),
[INFO] [stdout] 86 | |             None,
[INFO] [stdout] ...  |
[INFO] [stdout] 94 | |         .unwrap();
[INFO] [stdout]    | |_________________^
[INFO] [stdout]    |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 83 |     let _ = solver2
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `criterion::black_box`: use `std::hint::black_box()` instead
[INFO] [stdout]  --> benches/submatrix.rs:1:39
[INFO] [stdout]   |
[INFO] [stdout] 1 | use criterion::{BatchSize, Criterion, black_box, criterion_group, criterion_main};
[INFO] [stdout]   |                                       ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `criterion::black_box`: use `std::hint::black_box()` instead
[INFO] [stdout]   --> benches/submatrix.rs:19:17
[INFO] [stdout]    |
[INFO] [stdout] 19 |                 black_box(out)
[INFO] [stdout]    |                 ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> benches/infra/datasets.rs:86:9
[INFO] [stdout]    |
[INFO] [stdout] 86 |     let mut r_row_ptr = counts.clone();
[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: function `poisson2d_csr` is never used
[INFO] [stdout]  --> benches/infra/datasets.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn poisson2d_csr(n: usize) -> CsrMatrix<f64> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `poisson2d_prolong_restrict` is never used
[INFO] [stdout]   --> benches/infra/datasets.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn poisson2d_prolong_restrict(n: usize) -> (CsrMatrix<f64>, CsrMatrix<f64>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rap_triplet_poisson2d` is never used
[INFO] [stdout]    --> benches/infra/datasets.rs:104:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub fn rap_triplet_poisson2d(n: usize) -> (CsrMatrix<f64>, CsrMatrix<f64>, CsrMatrix<f64>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_powerlaw_like` is never used
[INFO] [stdout]    --> benches/infra/datasets.rs:112:8
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub fn random_powerlaw_like(n: usize, avg_deg: usize, seed: u64) -> CsrMatrix<f64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/parallel/mod.rs:411:13
[INFO] [stdout]     |
[INFO] [stdout] 411 |             _ => false,
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/parallel/mod.rs:411:13
[INFO] [stdout]     |
[INFO] [stdout] 403 |             (UniverseComm::NoComm(_), UniverseComm::NoComm(_)) => true,
[INFO] [stdout]     |             -------------------------------------------------- matches some of the same values
[INFO] [stdout] 404 |             (UniverseComm::NoComm(_), _) | (_, UniverseComm::NoComm(_)) => false,
[INFO] [stdout]     |             ----------------------------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 408 |             (UniverseComm::Rayon(a), UniverseComm::Rayon(b)) => a.congruent(b),
[INFO] [stdout]     |             ------------------------------------------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 411 |             _ => false,
[INFO] [stdout]     |             ^ collectively making this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `SolveStats` that must be used
[INFO] [stdout]   --> tests/cg_norm_types.rs:50:9
[INFO] [stdout]    |
[INFO] [stdout] 50 | /         solver
[INFO] [stdout] 51 | |             .solve_with_comm(
[INFO] [stdout] 52 | |                 &op,
[INFO] [stdout] 53 | |                 Some(&mut pc_bridge),
[INFO] [stdout] ...  |
[INFO] [stdout] 61 | |             .unwrap();
[INFO] [stdout]    | |_____________________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 50 |         let _ = solver
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `SolveStats` that must be used
[INFO] [stdout]   --> tests/pcg_norm_types.rs:47:9
[INFO] [stdout]    |
[INFO] [stdout] 47 | /         solver
[INFO] [stdout] 48 | |             .solve_with_comm(
[INFO] [stdout] 49 | |                 &a,
[INFO] [stdout] 50 | |                 Some(&mut pc),
[INFO] [stdout] ...  |
[INFO] [stdout] 58 | |             .unwrap();
[INFO] [stdout]    | |_____________________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 47 |         let _ = solver
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `side`
[INFO] [stdout]     --> src/preconditioner/amg.rs:4034:9
[INFO] [stdout]      |
[INFO] [stdout] 4034 |         side: PcSide,
[INFO] [stdout]      |         ^^^^ help: if this is intentional, prefix it with an underscore: `_side`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/preconditioner/amg.rs:4264:9
[INFO] [stdout]      |
[INFO] [stdout] 4264 |         mut stats: Option<&mut DistApplyStats>,
[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: `t_local`
[INFO] [stdout]     --> src/preconditioner/amg.rs:4274:13
[INFO] [stdout]      |
[INFO] [stdout] 4274 |         let t_local = stats.as_ref().map(|_| tic());
[INFO] [stdout]      |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_t_local`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Comm`
[INFO] [stdout]  --> tests/reduction_async.rs:3:23
[INFO] [stdout]   |
[INFO] [stdout] 3 | use kryst::parallel::{Comm, NoComm};
[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::env`
[INFO] [stdout]  --> tests/reduction_async.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::env;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> benches/infra/datasets.rs:86:9
[INFO] [stdout]    |
[INFO] [stdout] 86 |     let mut r_row_ptr = counts.clone();
[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: `err`
[INFO] [stdout]     --> src/preconditioner/amg.rs:8378:13
[INFO] [stdout]      |
[INFO] [stdout] 8378 |         Err(err) if allow_safeguard && !cfg.require_spd => Ok(diag_inv_from_csr_safeguarded(a)),
[INFO] [stdout]      |             ^^^ help: if this is intentional, prefix it with an underscore: `_err`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `poisson2d_prolong_restrict` is never used
[INFO] [stdout]   --> benches/infra/datasets.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn poisson2d_prolong_restrict(n: usize) -> (CsrMatrix<f64>, CsrMatrix<f64>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rap_triplet_poisson2d` is never used
[INFO] [stdout]    --> benches/infra/datasets.rs:104:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub fn rap_triplet_poisson2d(n: usize) -> (CsrMatrix<f64>, CsrMatrix<f64>, CsrMatrix<f64>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_powerlaw_like` is never used
[INFO] [stdout]    --> benches/infra/datasets.rs:112:8
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub fn random_powerlaw_like(n: usize, avg_deg: usize, seed: u64) -> CsrMatrix<f64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `blocky_csr` is never used
[INFO] [stdout]    --> benches/infra/datasets.rs:151:8
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub fn blocky_csr(
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `criterion::black_box`: use `std::hint::black_box()` instead
[INFO] [stdout]  --> benches/tri_solve.rs:1:28
[INFO] [stdout]   |
[INFO] [stdout] 1 | use criterion::{Criterion, black_box, criterion_group, criterion_main};
[INFO] [stdout]   |                            ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `criterion::black_box`: use `std::hint::black_box()` instead
[INFO] [stdout]    --> benches/tri_solve.rs:102:13
[INFO] [stdout]     |
[INFO] [stdout] 102 |             black_box(&x);
[INFO] [stdout]     |             ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `criterion::black_box`: use `std::hint::black_box()` instead
[INFO] [stdout]    --> benches/tri_solve.rs:109:13
[INFO] [stdout]     |
[INFO] [stdout] 109 |             black_box(&x);
[INFO] [stdout]     |             ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]      --> src/preconditioner/amg.rs:10224:13
[INFO] [stdout]       |
[INFO] [stdout] 10224 |         let mut level = AMGLevel {
[INFO] [stdout]       |             ----^^^^^
[INFO] [stdout]       |             |
[INFO] [stdout]       |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]      --> src/preconditioner/amg.rs:10270:13
[INFO] [stdout]       |
[INFO] [stdout] 10270 |         let mut level = AMGLevel {
[INFO] [stdout]       |             ----^^^^^
[INFO] [stdout]       |             |
[INFO] [stdout]       |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> benches/infra/datasets.rs:86:9
[INFO] [stdout]    |
[INFO] [stdout] 86 |     let mut r_row_ptr = counts.clone();
[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: function `poisson2d_prolong_restrict` is never used
[INFO] [stdout]   --> benches/infra/datasets.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn poisson2d_prolong_restrict(n: usize) -> (CsrMatrix<f64>, CsrMatrix<f64>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rap_triplet_poisson2d` is never used
[INFO] [stdout]    --> benches/infra/datasets.rs:104:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub fn rap_triplet_poisson2d(n: usize) -> (CsrMatrix<f64>, CsrMatrix<f64>, CsrMatrix<f64>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_powerlaw_like` is never used
[INFO] [stdout]    --> benches/infra/datasets.rs:112:8
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub fn random_powerlaw_like(n: usize, avg_deg: usize, seed: u64) -> CsrMatrix<f64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `blocky_csr` is never used
[INFO] [stdout]    --> benches/infra/datasets.rs:151:8
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub fn blocky_csr(
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]      --> src/preconditioner/amg.rs:11087:13
[INFO] [stdout]       |
[INFO] [stdout] 11087 |         let mut r = CsrMatrix::from_csr(p.n, p.m, rr.clone(), rc.clone(), vec![0.0; p.vals.len()]);
[INFO] [stdout]       |             ----^
[INFO] [stdout]       |             |
[INFO] [stdout]       |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]      --> src/preconditioner/amg.rs:11090:13
[INFO] [stdout]       |
[INFO] [stdout] 11090 |         let mut updated_rc = r.col_idx().to_vec();
[INFO] [stdout]       |             ----^^^^^^^^^^
[INFO] [stdout]       |             |
[INFO] [stdout]       |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> benches/infra/datasets.rs:86:9
[INFO] [stdout]    |
[INFO] [stdout] 86 |     let mut r_row_ptr = counts.clone();
[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: function `poisson2d_csr` is never used
[INFO] [stdout]  --> benches/infra/datasets.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn poisson2d_csr(n: usize) -> CsrMatrix<f64> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `poisson2d_prolong_restrict` is never used
[INFO] [stdout]   --> benches/infra/datasets.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn poisson2d_prolong_restrict(n: usize) -> (CsrMatrix<f64>, CsrMatrix<f64>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rap_triplet_poisson2d` is never used
[INFO] [stdout]    --> benches/infra/datasets.rs:104:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub fn rap_triplet_poisson2d(n: usize) -> (CsrMatrix<f64>, CsrMatrix<f64>, CsrMatrix<f64>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `blocky_csr` is never used
[INFO] [stdout]    --> benches/infra/datasets.rs:151:8
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub fn blocky_csr(
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `kryst::algebra::prelude::*`
[INFO] [stdout]  --> tests/panel_factorization.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use kryst::algebra::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> benches/infra/datasets.rs:86:9
[INFO] [stdout]    |
[INFO] [stdout] 86 |     let mut r_row_ptr = counts.clone();
[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: function `poisson2d_prolong_restrict` is never used
[INFO] [stdout]   --> benches/infra/datasets.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn poisson2d_prolong_restrict(n: usize) -> (CsrMatrix<f64>, CsrMatrix<f64>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rap_triplet_poisson2d` is never used
[INFO] [stdout]    --> benches/infra/datasets.rs:104:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub fn rap_triplet_poisson2d(n: usize) -> (CsrMatrix<f64>, CsrMatrix<f64>, CsrMatrix<f64>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_powerlaw_like` is never used
[INFO] [stdout]    --> benches/infra/datasets.rs:112:8
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub fn random_powerlaw_like(n: usize, avg_deg: usize, seed: u64) -> CsrMatrix<f64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `blocky_csr` is never used
[INFO] [stdout]    --> benches/infra/datasets.rs:151:8
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub fn blocky_csr(
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `SolveStats` that must be used
[INFO] [stdout]   --> tests/cg_true_residual_monitor.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | /     solver
[INFO] [stdout] 30 | |         .solve_f64(
[INFO] [stdout] 31 | |             &a,
[INFO] [stdout] 32 | |             None,
[INFO] [stdout] ...  |
[INFO] [stdout] 40 | |         .unwrap();
[INFO] [stdout]    | |_________________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 29 |     let _ = solver
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `kryst::matrix::parcsr::ParCsrMatrix::from_legacy_parts`: Legacy diag/off constructor is compatibility-only; use DistCsrOp::from_local_rows and canonical distributed APIs. Planned removal after 2026-12-31
[INFO] [stdout]    --> tests/dist_csr.rs:104:29
[INFO] [stdout]     |
[INFO] [stdout] 104 |     let par = ParCsrMatrix::from_legacy_parts(
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> benches/infra/datasets.rs:86:9
[INFO] [stdout]    |
[INFO] [stdout] 86 |     let mut r_row_ptr = counts.clone();
[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: function `poisson2d_prolong_restrict` is never used
[INFO] [stdout]   --> benches/infra/datasets.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn poisson2d_prolong_restrict(n: usize) -> (CsrMatrix<f64>, CsrMatrix<f64>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rap_triplet_poisson2d` is never used
[INFO] [stdout]    --> benches/infra/datasets.rs:104:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub fn rap_triplet_poisson2d(n: usize) -> (CsrMatrix<f64>, CsrMatrix<f64>, CsrMatrix<f64>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_powerlaw_like` is never used
[INFO] [stdout]    --> benches/infra/datasets.rs:112:8
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub fn random_powerlaw_like(n: usize, avg_deg: usize, seed: u64) -> CsrMatrix<f64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `blocky_csr` is never used
[INFO] [stdout]    --> benches/infra/datasets.rs:151:8
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub fn blocky_csr(
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `black_box`
[INFO] [stdout]  --> benches/direct_vs_faer.rs:1:28
[INFO] [stdout]   |
[INFO] [stdout] 1 | use criterion::{Criterion, black_box, criterion_group, criterion_main};
[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: `faer::linalg::solvers::SolveCore`
[INFO] [stdout]  --> benches/direct_vs_faer.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use faer::linalg::solvers::SolveCore;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `kryst::preconditioner::PcSide`
[INFO] [stdout]  --> benches/direct_vs_faer.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use kryst::preconditioner::PcSide;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `kryst::solver::legacy::LinearSolver`
[INFO] [stdout]  --> benches/direct_vs_faer.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use kryst::solver::legacy::LinearSolver;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `criterion::black_box`: use `std::hint::black_box()` instead
[INFO] [stdout]  --> benches/direct_vs_faer.rs:1:28
[INFO] [stdout]   |
[INFO] [stdout] 1 | use criterion::{Criterion, black_box, criterion_group, criterion_main};
[INFO] [stdout]   |                            ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> benches/direct_vs_faer.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 |     let mut x = vec![0.0; n];
[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: `c`
[INFO] [stdout]  --> benches/direct_vs_faer.rs:9:21
[INFO] [stdout]   |
[INFO] [stdout] 9 | fn bench_lu_vs_faer(c: &mut Criterion) {
[INFO] [stdout]   |                     ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `comm`
[INFO] [stdout]   --> benches/direct_vs_faer.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 |     let comm = kryst::parallel::UniverseComm::NoComm(kryst::parallel::NoComm);
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_comm`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `a`
[INFO] [stdout]   --> benches/direct_vs_faer.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 |     let a = Mat::from_fn(n, n, |i, j| data[j * n + i]);
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `b`
[INFO] [stdout]   --> benches/direct_vs_faer.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 |     let b: Vec<f64> = (0..n).map(|i| (i as f64).cos()).collect();
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]   --> benches/direct_vs_faer.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 |     let mut x = vec![0.0; n];
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `conditioned` is never read
[INFO] [stdout]     --> src/preconditioner/ilu.rs:2467:31
[INFO] [stdout]      |
[INFO] [stdout] 2467 |         let mut conditioned = None;
[INFO] [stdout]      |                               ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `SolveStats` that must be used
[INFO] [stdout]   --> tests/reproducibility_regression.rs:60:5
[INFO] [stdout]    |
[INFO] [stdout] 60 |     ksp.solve(&rhs, &mut x).unwrap();
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 60 |     let _ = ksp.solve(&rhs, &mut x).unwrap();
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `rz` is never read
[INFO] [stdout]     --> src/preconditioner/ilu.rs:2977:17
[INFO] [stdout]      |
[INFO] [stdout] 2977 |                 rz = r_norm;
[INFO] [stdout]      |                 ^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `SolveStats` that must be used
[INFO] [stdout]   --> tests/fgmres_flexible.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | /     solver
[INFO] [stdout] 43 | |         .solve_f64(
[INFO] [stdout] 44 | |             &a,
[INFO] [stdout] 45 | |             Some(&mut pc),
[INFO] [stdout] ...  |
[INFO] [stdout] 53 | |         .unwrap();
[INFO] [stdout]    | |_________________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 42 |     let _ = solver
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `criterion::black_box`: use `std::hint::black_box()` instead
[INFO] [stdout]  --> benches/cg.rs:1:28
[INFO] [stdout]   |
[INFO] [stdout] 1 | use criterion::{Criterion, black_box, criterion_group, criterion_main};
[INFO] [stdout]   |                            ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `criterion::black_box`: use `std::hint::black_box()` instead
[INFO] [stdout]   --> benches/cg.rs:65:17
[INFO] [stdout]    |
[INFO] [stdout] 65 |                 black_box(stats);
[INFO] [stdout]    |                 ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `SolveStats` that must be used
[INFO] [stdout]   --> benches/cg.rs:65:17
[INFO] [stdout]    |
[INFO] [stdout] 65 |                 black_box(stats);
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 65 |                 let _ = black_box(stats);
[INFO] [stdout]    |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `criterion::black_box`: use `std::hint::black_box()` instead
[INFO] [stdout]  --> benches/rap.rs:1:39
[INFO] [stdout]   |
[INFO] [stdout] 1 | use criterion::{BatchSize, Criterion, black_box, criterion_group, criterion_main};
[INFO] [stdout]   |                                       ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `criterion::black_box`: use `std::hint::black_box()` instead
[INFO] [stdout]   --> benches/rap.rs:41:17
[INFO] [stdout]    |
[INFO] [stdout] 41 |                 black_box(ch)
[INFO] [stdout]    |                 ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `criterion::black_box`: use `std::hint::black_box()` instead
[INFO] [stdout]   --> benches/rap.rs:51:17
[INFO] [stdout]    |
[INFO] [stdout] 51 |                 black_box(ch)
[INFO] [stdout]    |                 ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `criterion::black_box`: use `std::hint::black_box()` instead
[INFO] [stdout]    --> benches/rap.rs:167:17
[INFO] [stdout]     |
[INFO] [stdout] 167 |             |_| black_box(rap_btree(&r, &a, &p).unwrap()),
[INFO] [stdout]     |                 ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `criterion::black_box`: use `std::hint::black_box()` instead
[INFO] [stdout]    --> benches/rap.rs:174:17
[INFO] [stdout]     |
[INFO] [stdout] 174 |             |_| black_box(rap_opt(&r, &a, &p).unwrap()),
[INFO] [stdout]     |                 ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> benches/infra/datasets.rs:86:9
[INFO] [stdout]    |
[INFO] [stdout] 86 |     let mut r_row_ptr = counts.clone();
[INFO] [stdout]    |         ----^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> benches/rap.rs:94:9
[INFO] [stdout]    |
[INFO] [stdout] 94 |     let mut r_rp = counts.clone();
[INFO] [stdout]    |         ----^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> benches/rap.rs:143:17
[INFO] [stdout]     |
[INFO] [stdout] 143 |             let mut r_rp = counts.clone();
[INFO] [stdout]     |                 ----^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `blocky_csr` is never used
[INFO] [stdout]    --> benches/infra/datasets.rs:151:8
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub fn blocky_csr(
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `conditioned` is never read
[INFO] [stdout]    --> src/preconditioner/ilutp.rs:440:31
[INFO] [stdout]     |
[INFO] [stdout] 440 |         let mut conditioned = None;
[INFO] [stdout]     |                               ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `SolveStats` that must be used
[INFO] [stdout]   --> tests/pcg_true_residual_monitor.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | /     solver
[INFO] [stdout] 30 | |         .solve_with_comm(
[INFO] [stdout] 31 | |             &a,
[INFO] [stdout] 32 | |             None,
[INFO] [stdout] ...  |
[INFO] [stdout] 40 | |         .unwrap();
[INFO] [stdout]    | |_________________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 29 |     let _ = solver
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Instant`
[INFO] [stdout]  --> tests/panel_microbench.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::time::Instant;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `truth_reference` is never read
[INFO] [stdout]    --> examples/optimized_solver_demo.rs:683:82
[INFO] [stdout]     |
[INFO] [stdout] 683 |     let mut truth_reference: Option<TruthReference<DirectReferenceComparison>> = None;
[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 import: `kryst::matrix::sparse::SparseMatrix`
[INFO] [stdout]   --> examples/superlu_dist_demo.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | use kryst::matrix::sparse::SparseMatrix;
[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: `Comm`
[INFO] [stdout]   --> examples/superlu_dist_demo.rs:38:23
[INFO] [stdout]    |
[INFO] [stdout] 38 | use kryst::parallel::{Comm, UniverseComm};
[INFO] [stdout]    |                       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `kryst::preconditioner::PcSide`
[INFO] [stdout]   --> examples/superlu_dist_demo.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 40 | use kryst::preconditioner::PcSide;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `kryst::solver::legacy::LinearSolver`
[INFO] [stdout]   --> examples/superlu_dist_demo.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 44 | use kryst::solver::legacy::LinearSolver;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `kryst::utils::matrix_market::read_matrix_market`
[INFO] [stdout]   --> examples/superlu_dist_demo.rs:51:5
[INFO] [stdout]    |
[INFO] [stdout] 51 | use kryst::utils::matrix_market::read_matrix_market;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Instant`
[INFO] [stdout]   --> examples/superlu_dist_demo.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 56 | use std::time::Instant;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SparseMatrix`
[INFO] [stdout]  --> tests/spmv_kernels.rs:8:25
[INFO] [stdout]   |
[INFO] [stdout] 8 |     sparse::{CsrMatrix, SparseMatrix},
[INFO] [stdout]   |                         ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MatrixInfo` is never constructed
[INFO] [stdout]    --> examples/superlu_dist_demo.rs:143:8
[INFO] [stdout]     |
[INFO] [stdout] 143 | struct MatrixInfo {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_available_matrices` is never used
[INFO] [stdout]    --> examples/superlu_dist_demo.rs:172:4
[INFO] [stdout]     |
[INFO] [stdout] 172 | fn get_available_matrices() -> Vec<MatrixInfo> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rationale` is never read
[INFO] [stdout]    --> examples/optimized_solver_demo.rs:135:5
[INFO] [stdout]     |
[INFO] [stdout] 131 | struct SelectionDecision {
[INFO] [stdout]     |        ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 135 |     rationale: Vec<String>,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reason` is never read
[INFO] [stdout]    --> src/solver/block/gmres.rs:142:30
[INFO] [stdout]     |
[INFO] [stdout] 142 |             let mut reason = ConvergedReason::Continued;
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `refreshed`
[INFO] [stdout]     --> src/solver/cg.rs:1100:68
[INFO] [stdout]      |
[INFO] [stdout] 1100 |             let (mut rho_new, mut delta_new, _rsq_new, _znorm_new, refreshed) = if refresh_due {
[INFO] [stdout]      |                                                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_refreshed`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `red_engine`
[INFO] [stdout]     --> src/solver/gmres.rs:1391:13
[INFO] [stdout]      |
[INFO] [stdout] 1391 |         let red_engine = ws
[INFO] [stdout]      |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_red_engine`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `pc_side` is never read
[INFO] [stdout]   --> src/solver/tfqmr.rs:71:13
[INFO] [stdout]    |
[INFO] [stdout] 71 |             pc_side = PcSide::Left;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `stats` is never read
[INFO] [stdout]    --> src/solver/pca_gmres.rs:445:17
[INFO] [stdout]     |
[INFO] [stdout] 445 |                 stats = sstats;
[INFO] [stdout]     |                 ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `left_mon`
[INFO] [stdout]    --> src/solver/tests/gmres_left_right.rs:129:13
[INFO] [stdout]     |
[INFO] [stdout] 129 |         let left_mon = *left_hist.last().expect("left monitor value");
[INFO] [stdout]     |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_left_mon`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `label`
[INFO] [stdout]    --> src/utils/conditioning.rs:428:25
[INFO] [stdout]     |
[INFO] [stdout] 428 | pub fn log_conditioning(label: &str, opts: &ConditioningOptions) {
[INFO] [stdout]     |                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_label`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `opts`
[INFO] [stdout]    --> src/utils/conditioning.rs:428:38
[INFO] [stdout]     |
[INFO] [stdout] 428 | pub fn log_conditioning(label: &str, opts: &ConditioningOptions) {
[INFO] [stdout]     |                                      ^^^^ help: if this is intentional, prefix it with an underscore: `_opts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> src/utils/permutation.rs:79:9
[INFO] [stdout]    |
[INFO] [stdout] 79 |     let n = a.nrows();
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `PcChainPlan` is more private than the item `ksp_context::KspContext::pc_chain_plan`
[INFO] [stdout]    --> src/context/ksp_context/mod.rs:309:5
[INFO] [stdout]     |
[INFO] [stdout] 309 |     pub(crate) pc_chain_plan: Option<PcChainPlan>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `ksp_context::KspContext::pc_chain_plan` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `PcChainPlan` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/context/ksp_context/mod.rs:273:1
[INFO] [stdout]     |
[INFO] [stdout] 273 | struct PcChainPlan {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `pc_opts` is never read
[INFO] [stdout]    --> src/context/ksp_context/mod.rs:435:5
[INFO] [stdout]     |
[INFO] [stdout] 433 | struct PendingMpiPc {
[INFO] [stdout]     |        ------------ field in this struct
[INFO] [stdout] 434 |     mpi_opts: MpiPcOptions,
[INFO] [stdout] 435 |     pc_opts: PcOptions,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `PendingMpiPc` has derived impls for the traits `Debug` and `Clone`, but these are 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: field `probe_key` is never read
[INFO] [stdout]    --> src/context/ksp_context/mod.rs:454:5
[INFO] [stdout]     |
[INFO] [stdout] 453 | struct DistRoutePreflightState {
[INFO] [stdout]     |        ----------------------- field in this struct
[INFO] [stdout] 454 |     probe_key: String,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DistRoutePreflightState` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]     --> src/context/ksp_context/mod.rs:3460:8
[INFO] [stdout]      |
[INFO] [stdout]  473 | impl KspContext {
[INFO] [stdout]      | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 3460 |     fn set_dist_route_selected(&mut self, route: impl Into<String>) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3465 |     fn set_dist_route_capability_entry(&mut self, entry: DistCsrCapabilityEntry) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3470 |     fn set_dist_route_decision_report(&mut self, report: DistRouteDecisionReport) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3475 |     fn push_dist_route_fallback(&mut self, reason: DistRouteFallbackReason) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3486 |     fn set_dist_route_fallback_reason(&mut self, reason: impl Into<String>) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3491 |     fn refresh_and_validate_dist_route_report(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3537 |     fn maybe_reuse_dist_preflight(&mut self, probe_key: &str) -> Option<DistRoutePreflightState> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3547 |     fn store_dist_preflight(&mut self, state: DistRoutePreflightState) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `microbench` is never used
[INFO] [stdout]    --> src/matrix/spmv/plan.rs:333:4
[INFO] [stdout]     |
[INFO] [stdout] 333 | fn microbench<F: FnMut()>(nsamples: usize, mut f: F) -> f64 {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pack_scalar_s_to_rr` is never used
[INFO] [stdout]   --> src/parallel/reduce.rs:34:15
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub(crate) fn pack_scalar_s_to_rr(v: S) -> [R; 1] {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unpack_rr_to_scalar_s` is never used
[INFO] [stdout]   --> src/parallel/reduce.rs:40:15
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub(crate) fn unpack_rr_to_scalar_s(rr: [R; 1]) -> S {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pack_scalar_s` is never used
[INFO] [stdout]   --> src/parallel/repro.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn pack_scalar_s(value: S) -> [R; 1] {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unpack_scalar_s` is never used
[INFO] [stdout]   --> src/parallel/repro.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn unpack_scalar_s(parts: [R; 1]) -> S {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `layout` is never read
[INFO] [stdout]   --> src/preconditioner/bddc/mod.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 69 | struct BddcSymbolic {
[INFO] [stdout]    |        ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 72 |     layout: Option<DistLayout>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BddcSymbolic` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `extract_dense_operator` is never used
[INFO] [stdout]    --> src/preconditioner/bddc/mod.rs:211:8
[INFO] [stdout]     |
[INFO] [stdout]  97 | impl BddcPc {
[INFO] [stdout]     | ----------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 211 |     fn extract_dense_operator(op: &dyn LinOp<S = S>, n: usize) -> Result<Vec<Vec<S>>, KError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `COMPLEX_SUPPORT` is never used
[INFO] [stdout]    --> src/preconditioner/approxinv.rs:637:15
[INFO] [stdout]     |
[INFO] [stdout] 637 |     pub const COMPLEX_SUPPORT: &str = "native_complex";
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `complex_setup_fallback_reason` is never read
[INFO] [stdout]    --> src/preconditioner/approxinv_csr.rs:136:5
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub struct SpaiCsr {
[INFO] [stdout]     |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 136 |     complex_setup_fallback_reason: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `inner_pc` is never read
[INFO] [stdout]   --> src/preconditioner/asm/mod.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct AsmPc {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 44 |     inner_pc: AsmInnerPc,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TestDiagMatrix` is never constructed
[INFO] [stdout]    --> src/preconditioner/block_jacobi.rs:494:12
[INFO] [stdout]     |
[INFO] [stdout] 494 |     struct TestDiagMatrix {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/preconditioner/block_jacobi.rs:500:12
[INFO] [stdout]     |
[INFO] [stdout] 499 |     impl TestDiagMatrix {
[INFO] [stdout]     |     ------------------- associated function in this implementation
[INFO] [stdout] 500 |         fn new(diag: Vec<S>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DistCoarsePolicy` is never used
[INFO] [stdout]   --> src/preconditioner/dist/coarse.rs:20:10
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub enum DistCoarsePolicy {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Meta` is never used
[INFO] [stdout]   --> src/preconditioner/ilu_csr/csr_builder.rs:86:10
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub enum Meta<R> {
[INFO] [stdout]    |          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `RowBuilder` is never used
[INFO] [stdout]   --> src/preconditioner/ilu_csr/csr_builder.rs:96:11
[INFO] [stdout]    |
[INFO] [stdout] 96 | pub trait RowBuilder<S: KrystScalar> {
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Ilu0Row` is never constructed
[INFO] [stdout]    --> src/preconditioner/ilu_csr/csr_builder.rs:111:12
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub struct Ilu0Row<'a, S> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/preconditioner/ilu_csr/csr_builder.rs:117:12
[INFO] [stdout]     |
[INFO] [stdout] 116 | impl<'a, S: KrystScalar> Ilu0Row<'a, S> {
[INFO] [stdout]     | --------------------------------------- associated function in this implementation
[INFO] [stdout] 117 |     pub fn new(cols: &'a [usize], vals: &'a mut [S]) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IlukRow` is never constructed
[INFO] [stdout]    --> src/preconditioner/ilu_csr/csr_builder.rs:137:12
[INFO] [stdout]     |
[INFO] [stdout] 137 | pub struct IlukRow<S: KrystScalar, const CAP: usize> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `upsert` are never used
[INFO] [stdout]    --> src/preconditioner/ilu_csr/csr_builder.rs:146:12
[INFO] [stdout]     |
[INFO] [stdout] 145 | impl<S: KrystScalar, const CAP: usize> IlukRow<S, CAP> {
[INFO] [stdout]     | ------------------------------------------------------ associated items in this implementation
[INFO] [stdout] 146 |     pub fn new(max_level: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     fn upsert(&mut self, col: usize, lev: u32, val: S) {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HeapElem` is never constructed
[INFO] [stdout]    --> src/preconditioner/ilu_csr/csr_builder.rs:232:8
[INFO] [stdout]     |
[INFO] [stdout] 232 | struct HeapElem<S: KrystScalar> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IlutRow` is never constructed
[INFO] [stdout]    --> src/preconditioner/ilu_csr/csr_builder.rs:259:12
[INFO] [stdout]     |
[INFO] [stdout] 259 | pub struct IlutRow<S: KrystScalar> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/preconditioner/ilu_csr/csr_builder.rs:266:12
[INFO] [stdout]     |
[INFO] [stdout] 265 | impl<S: KrystScalar> IlutRow<S> {
[INFO] [stdout]     | ------------------------------- associated function in this implementation
[INFO] [stdout] 266 |     pub fn new(p: usize, drop_tol: S::Real) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `add_to` is never used
[INFO] [stdout]   --> src/preconditioner/ilu_csr/row_work.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl RowWork {
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn add_to(&mut self, j: usize, delta: Real) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `NativeWithDegradedFallback` is never constructed
[INFO] [stdout]   --> src/utils/diagnostics.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | enum PcComplexSupport {
[INFO] [stdout]    |      ---------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 17 |     NativeWithDegradedFallback,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PcComplexSupport` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `effective_mode_with_comm` is never used
[INFO] [stdout]   --> src/utils/reduction.rs:77:4
[INFO] [stdout]    |
[INFO] [stdout] 77 | fn effective_mode_with_comm(opt: &ReductOptions, comm_repro: bool) -> ReproMode {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `convert_pair` is never used
[INFO] [stdout]    --> src/utils/reduction.rs:357:4
[INFO] [stdout]     |
[INFO] [stdout] 357 | fn convert_pair(buf: &[R]) -> (R, R) {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `deterministic_reduce_vec` is never used
[INFO] [stdout]    --> src/utils/reduction.rs:362:4
[INFO] [stdout]     |
[INFO] [stdout] 362 | fn deterministic_reduce_vec<C>(comm: &C, data: &[R], mode: ReproMode) -> Vec<R>
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `L` should have a snake case name
[INFO] [stdout]     --> src/preconditioner/amg.rs:7920:9
[INFO] [stdout]      |
[INFO] [stdout] 7920 |     let L = levels.len() - 1;
[INFO] [stdout]      |         ^ help: convert the identifier to snake case: `l`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `neighbor_distribution_over_C_of` should have a snake case name
[INFO] [stdout]    --> src/preconditioner/amg/prolong.rs:473:4
[INFO] [stdout]     |
[INFO] [stdout] 473 | fn neighbor_distribution_over_C_of(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `neighbor_distribution_over_c_of`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 27s
[INFO] running `Command { std: "docker" "inspect" "8258141a914b7f945bd8bda5b24741ae7683c0d8b6782dcdf99740546296dfad", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8258141a914b7f945bd8bda5b24741ae7683c0d8b6782dcdf99740546296dfad", kill_on_drop: false }`
[INFO] [stdout] 8258141a914b7f945bd8bda5b24741ae7683c0d8b6782dcdf99740546296dfad
