[INFO] cloning repository https://github.com/Kirachon/name_match_latest
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Kirachon/name_match_latest" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKirachon%2Fname_match_latest", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKirachon%2Fname_match_latest'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 40aaf7bbf8a5b7ccfb22209f9e527cf8831222a9
[INFO] checking Kirachon/name_match_latest against try#fa4dd1f19bfeb3fd235dc7f1406c42404436bef5 for pr-145108-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKirachon%2Fname_match_latest" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Kirachon/name_match_latest
[INFO] finished tweaking git repo https://github.com/Kirachon/name_match_latest
[INFO] tweaked toml for git repo https://github.com/Kirachon/name_match_latest written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Kirachon/name_match_latest on toolchain fa4dd1f19bfeb3fd235dc7f1406c42404436bef5
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+fa4dd1f19bfeb3fd235dc7f1406c42404436bef5" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Kirachon/name_match_latest 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" "+fa4dd1f19bfeb3fd235dc7f1406c42404436bef5" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+fa4dd1f19bfeb3fd235dc7f1406c42404436bef5" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 2071ed7e21430c71f1b355b71cf7a1b89ca958f246b9ba9d9f078eb64b581b8a
[INFO] running `Command { std: "docker" "start" "-a" "2071ed7e21430c71f1b355b71cf7a1b89ca958f246b9ba9d9f078eb64b581b8a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2071ed7e21430c71f1b355b71cf7a1b89ca958f246b9ba9d9f078eb64b581b8a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2071ed7e21430c71f1b355b71cf7a1b89ca958f246b9ba9d9f078eb64b581b8a", kill_on_drop: false }`
[INFO] [stdout] 2071ed7e21430c71f1b355b71cf7a1b89ca958f246b9ba9d9f078eb64b581b8a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-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:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+fa4dd1f19bfeb3fd235dc7f1406c42404436bef5" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 40f292fa052c2484f4dc9fd902b09506f1acf108de6d38baf9769c90ba9272ec
[INFO] running `Command { std: "docker" "start" "-a" "40f292fa052c2484f4dc9fd902b09506f1acf108de6d38baf9769c90ba9272ec", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.101
[INFO] [stderr]    Compiling serde_core v1.0.225
[INFO] [stderr]    Compiling serde v1.0.225
[INFO] [stderr]    Compiling find-msvc-tools v0.1.1
[INFO] [stderr]    Compiling indexmap v2.11.3
[INFO] [stderr]    Compiling winnow v0.7.13
[INFO] [stderr]    Compiling toml_datetime v0.7.1
[INFO] [stderr]    Compiling libc v0.2.175
[INFO] [stderr]     Checking event-listener v5.4.1
[INFO] [stderr]     Checking form_urlencoded v1.2.2
[INFO] [stderr]    Compiling wayland-sys v0.31.7
[INFO] [stderr]     Checking signal-hook-registry v1.4.6
[INFO] [stderr]    Compiling endi v1.1.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling async-io v2.6.0
[INFO] [stderr]    Compiling cc v1.2.37
[INFO] [stderr]     Checking event-listener-strategy v0.5.4
[INFO] [stderr]    Compiling memoffset v0.9.1
[INFO] [stderr]    Compiling log v0.4.28
[INFO] [stderr]     Checking async-channel v2.5.0
[INFO] [stderr]     Checking async-lock v3.4.1
[INFO] [stderr]    Compiling nix v0.30.1
[INFO] [stderr]     Checking blocking v1.6.2
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]     Checking parking_lot_core v0.9.11
[INFO] [stderr]     Checking quote v1.0.40
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]     Checking syn v2.0.106
[INFO] [stderr]     Checking parking_lot v0.12.4
[INFO] [stderr]     Checking async-broadcast v0.7.2
[INFO] [stderr]     Checking async-executor v1.13.3
[INFO] [stderr]    Compiling libm v0.2.15
[INFO] [stderr]    Compiling getrandom v0.2.16
[INFO] [stderr]     Checking ordered-stream v0.2.0
[INFO] [stderr]    Compiling khronos_api v3.1.0
[INFO] [stderr]    Compiling base64ct v1.8.0
[INFO] [stderr]    Compiling wayland-scanner v0.31.7
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling zerocopy v0.8.27
[INFO] [stderr]     Checking zlib-rs v0.5.2
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]    Compiling gl_generator v0.14.0
[INFO] [stderr]    Compiling pem-rfc7468 v0.7.0
[INFO] [stderr]     Checking memmap2 v0.9.8
[INFO] [stderr]     Checking accesskit v0.19.0
[INFO] [stderr]    Compiling der v0.7.10
[INFO] [stderr]    Compiling socket2 v0.6.0
[INFO] [stderr]    Compiling wayland-backend v0.3.11
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling mio v1.0.4
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]     Checking libz-rs-sys v0.5.2
[INFO] [stderr]     Checking regex-syntax v0.8.6
[INFO] [stderr]    Compiling toml_parser v1.0.2
[INFO] [stderr]     Checking flate2 v1.1.2
[INFO] [stderr]    Compiling tokio v1.47.1
[INFO] [stderr]    Compiling concurrent-queue v2.5.0
[INFO] [stderr]    Compiling iana-time-zone v0.1.64
[INFO] [stderr]    Compiling futures-intrusive v0.5.0
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling glutin_glx_sys v0.6.1
[INFO] [stderr]    Compiling glutin_egl_sys v0.7.1
[INFO] [stderr]    Compiling toml_edit v0.23.5
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling spki v0.7.3
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]    Compiling chrono v0.4.42
[INFO] [stderr]     Checking accesskit_consumer v0.28.0
[INFO] [stderr]    Compiling pkcs8 v0.10.2
[INFO] [stderr]    Compiling num-iter v0.1.45
[INFO] [stderr]     Checking regex-automata v0.4.10
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling crossbeam-queue v0.3.12
[INFO] [stderr]    Compiling signature v2.2.0
[INFO] [stderr]     Checking pxfm v0.1.23
[INFO] [stderr]    Compiling pkcs1 v0.7.5
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling proc-macro-crate v3.4.0
[INFO] [stderr]     Checking nohash-hasher v0.2.0
[INFO] [stderr]    Compiling uuid v1.18.1
[INFO] [stderr]     Checking epaint_default_fonts v0.32.3
[INFO] [stderr]    Compiling hkdf v0.12.4
[INFO] [stderr]    Compiling atoi v2.0.0
[INFO] [stderr]    Compiling sha1 v0.10.6
[INFO] [stderr]     Checking futures-channel v0.3.31
[INFO] [stderr]    Compiling md-5 v0.10.6
[INFO] [stderr]    Compiling glutin v0.32.3
[INFO] [stderr]     Checking anstream v0.6.20
[INFO] [stderr]    Compiling rustls v0.23.31
[INFO] [stderr]    Compiling num-bigint-dig v0.8.4
[INFO] [stderr]    Compiling glutin-winit v0.5.0
[INFO] [stderr]     Checking base64 v0.22.1
[INFO] [stderr]     Checking zopfli v0.8.2
[INFO] [stderr]     Checking moxcms v0.7.5
[INFO] [stderr]     Checking async-fs v2.2.0
[INFO] [stderr]    Compiling rfd v0.15.4
[INFO] [stderr]     Checking clap_builder v4.5.48
[INFO] [stderr]     Checking sharded-slab v0.1.7
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking csv-core v0.1.12
[INFO] [stderr]     Checking nom v8.0.0
[INFO] [stderr]     Checking urlencoding v2.1.3
[INFO] [stderr]     Checking zip v4.6.1
[INFO] [stderr]     Checking nu-ansi-term v0.50.1
[INFO] [stderr]     Checking sysinfo v0.37.0
[INFO] [stderr]     Checking rustls-webpki v0.103.6
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]     Checking rsa v0.9.8
[INFO] [stderr]     Checking regex v1.11.2
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]     Checking rust_xlsxwriter v0.90.1
[INFO] [stderr]    Compiling serde_derive v1.0.225
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.0
[INFO] [stderr]    Compiling zerovec-derive v0.11.1
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling enumflags2_derive v0.7.12
[INFO] [stderr]    Compiling tracing-attributes v0.1.30
[INFO] [stderr]    Compiling bytemuck_derive v1.10.1
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling serde_repr v0.1.20
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling thiserror-impl v2.0.16
[INFO] [stderr]    Compiling tokio-stream v0.1.17
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking bytemuck v1.23.2
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking yoke v0.8.0
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking tiny-skia-path v0.11.4
[INFO] [stderr]     Checking emath v0.32.3
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling enum-iterator-derive v1.5.0
[INFO] [stderr]     Checking zerovec v0.11.4
[INFO] [stderr]     Checking zerotrie v0.2.2
[INFO] [stderr]     Checking env_filter v0.1.3
[INFO] [stderr]    Compiling clap_derive v4.5.47
[INFO] [stderr]     Checking tiny-skia v0.11.4
[INFO] [stderr]    Compiling thiserror v2.0.16
[INFO] [stderr]     Checking ecolor v0.32.3
[INFO] [stderr]     Checking env_logger v0.11.8
[INFO] [stderr]     Checking tracing-subscriber v0.3.20
[INFO] [stderr]     Checking epaint v0.32.3
[INFO] [stderr]     Checking enum-iterator v2.3.0
[INFO] [stderr]     Checking tinystr v0.8.1
[INFO] [stderr]     Checking potential_utf v0.1.3
[INFO] [stderr]     Checking icu_collections v2.0.0
[INFO] [stderr]     Checking icu_locale_core v2.0.0
[INFO] [stderr]     Checking clap v4.5.48
[INFO] [stderr]     Checking bitflags v2.9.4
[INFO] [stderr]     Checking enumflags2 v0.7.12
[INFO] [stderr]     Checking zvariant_utils v3.2.1
[INFO] [stderr]     Checking quick-xml v0.36.2
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]     Checking csv v1.3.1
[INFO] [stderr]     Checking icu_provider v2.0.0
[INFO] [stderr]     Checking rustix v1.1.2
[INFO] [stderr]     Checking rustix v0.38.44
[INFO] [stderr]    Compiling zvariant_derive v5.7.0
[INFO] [stderr]     Checking xkbcommon-dl v0.4.2
[INFO] [stderr]     Checking icu_properties v2.0.1
[INFO] [stderr]     Checking icu_normalizer v2.0.0
[INFO] [stderr]     Checking png v0.18.0
[INFO] [stderr]     Checking egui v0.32.3
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking rphonetic v3.0.4
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking rayon v1.11.0
[INFO] [stderr]     Checking image v0.25.8
[INFO] [stderr]    Compiling zvariant v5.7.0
[INFO] [stderr]     Checking url v2.5.7
[INFO] [stderr]     Checking webbrowser v1.0.5
[INFO] [stderr]     Checking sqlx-core v0.8.6
[INFO] [stderr]     Checking polling v3.11.0
[INFO] [stderr]     Checking gethostname v1.0.2
[INFO] [stderr]     Checking x11rb v0.13.2
[INFO] [stderr]     Checking calloop v0.13.0
[INFO] [stderr]     Checking zbus_names v4.2.0
[INFO] [stderr]     Checking async-signal v0.2.13
[INFO] [stderr]     Checking async-net v2.0.0
[INFO] [stderr]     Checking wayland-client v0.31.11
[INFO] [stderr]     Checking wayland-csd-frame v0.3.0
[INFO] [stderr]     Checking async-process v2.5.0
[INFO] [stderr]     Checking zbus_xml v5.0.2
[INFO] [stderr]     Checking egui_glow v0.32.3
[INFO] [stderr]    Compiling zbus_macros v5.11.0
[INFO] [stderr]     Checking zbus-lockstep v0.5.1
[INFO] [stderr]    Compiling zbus-lockstep-macros v0.5.1
[INFO] [stderr]     Checking wayland-protocols v0.32.9
[INFO] [stderr]     Checking wayland-cursor v0.31.11
[INFO] [stderr]     Checking calloop-wayland-source v0.3.0
[INFO] [stderr]     Checking arboard v3.6.1
[INFO] [stderr]     Checking sqlx-mysql v0.8.6
[INFO] [stderr]     Checking zbus v5.11.0
[INFO] [stderr]    Compiling sqlx-macros-core v0.8.6
[INFO] [stderr]     Checking wayland-protocols-wlr v0.3.9
[INFO] [stderr]     Checking wayland-protocols-plasma v0.3.9
[INFO] [stderr]    Compiling sqlx-macros v0.8.6
[INFO] [stderr]     Checking sqlx v0.8.6
[INFO] [stderr]     Checking smithay-client-toolkit v0.19.2
[INFO] [stderr]     Checking atspi-common v0.9.0
[INFO] [stderr]     Checking ashpd v0.11.0
[INFO] [stderr]     Checking sctk-adwaita v0.10.1
[INFO] [stderr]     Checking smithay-clipboard v0.7.2
[INFO] [stderr]     Checking winit v0.30.12
[INFO] [stderr]     Checking atspi-proxies v0.9.0
[INFO] [stderr]     Checking accesskit_atspi_common v0.12.0
[INFO] [stderr]     Checking atspi-connection v0.9.0
[INFO] [stderr]     Checking atspi v0.25.0
[INFO] [stderr]     Checking accesskit_unix v0.15.0
[INFO] [stderr]     Checking accesskit_winit v0.27.0
[INFO] [stderr]     Checking egui-winit v0.32.3
[INFO] [stderr]     Checking eframe v0.32.3
[INFO] [stderr]     Checking name_matcher v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `GpuConfig`, `MatchOptions`, `ProgressConfig`, and `ProgressUpdate`
[INFO] [stdout]   --> src/matching/cascade.rs:18:21
[INFO] [stdout]    |
[INFO] [stdout] 18 |     ComputeBackend, GpuConfig, MatchOptions, MatchPair, ProgressConfig, ProgressUpdate,
[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: `chrono::Datelike`
[INFO] [stdout]     --> src/matching/mod.rs:2388:9
[INFO] [stdout]      |
[INFO] [stdout] 2388 |     use chrono::Datelike;
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HashSet`
[INFO] [stdout]     --> src/matching/mod.rs:2389:37
[INFO] [stdout]      |
[INFO] [stdout] 2389 |     use std::collections::{HashMap, HashSet};
[INFO] [stdout]      |                                     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `fetch_person_rows_chunk_where`
[INFO] [stdout]     --> src/matching/mod.rs:5617:5
[INFO] [stdout]      |
[INFO] [stdout] 5617 |     fetch_person_rows_chunk_where, fetch_person_rows_chunk_where_keyset, get_max_id,
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `StreamCheckpoint`, `load_checkpoint`, `remove_checkpoint`, and `save_checkpoint`
[INFO] [stdout]     --> src/matching/mod.rs:7436:9
[INFO] [stdout]      |
[INFO] [stdout] 7436 |         StreamCheckpoint, load_checkpoint, remove_checkpoint, save_checkpoint,
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `GpuConfig`, `MatchOptions`, `ProgressConfig`, and `ProgressUpdate`
[INFO] [stdout]   --> src/matching/cascade.rs:18:21
[INFO] [stdout]    |
[INFO] [stdout] 18 |     ComputeBackend, GpuConfig, MatchOptions, MatchPair, ProgressConfig, ProgressUpdate,
[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: `chrono::Datelike`
[INFO] [stdout]     --> src/matching/mod.rs:2388:9
[INFO] [stdout]      |
[INFO] [stdout] 2388 |     use chrono::Datelike;
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HashSet`
[INFO] [stdout]     --> src/matching/mod.rs:2389:37
[INFO] [stdout]      |
[INFO] [stdout] 2389 |     use std::collections::{HashMap, HashSet};
[INFO] [stdout]      |                                     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `fetch_person_rows_chunk_where`
[INFO] [stdout]     --> src/matching/mod.rs:5617:5
[INFO] [stdout]      |
[INFO] [stdout] 5617 |     fetch_person_rows_chunk_where, fetch_person_rows_chunk_where_keyset, get_max_id,
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `StreamCheckpoint`, `load_checkpoint`, `remove_checkpoint`, and `save_checkpoint`
[INFO] [stdout]     --> src/matching/mod.rs:7436:9
[INFO] [stdout]      |
[INFO] [stdout] 7436 |         StreamCheckpoint, load_checkpoint, remove_checkpoint, save_checkpoint,
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/matching/mod.rs:6077:13
[INFO] [stdout]      |
[INFO] [stdout] 6077 |         let mut hashed: Option<Vec<u64>> = None;
[INFO] [stdout]      |             ----^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/matching/mod.rs:6348:13
[INFO] [stdout]      |
[INFO] [stdout] 6348 |         let mut probe_hashes_opt: Option<Vec<u64>> = None;
[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/matching/mod.rs:6631:9
[INFO] [stdout]      |
[INFO] [stdout] 6631 |     let mut gpu_logged_once = false;
[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/matching/mod.rs:6657:13
[INFO] [stdout]      |
[INFO] [stdout] 6657 |         let mut hashed: Option<Vec<u64>> = None;
[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/matching/mod.rs:6932:13
[INFO] [stdout]      |
[INFO] [stdout] 6932 |         let mut probe_hashes_opt: Option<Vec<u64>> = None;
[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/matching/mod.rs:6077:13
[INFO] [stdout]      |
[INFO] [stdout] 6077 |         let mut hashed: Option<Vec<u64>> = None;
[INFO] [stdout]      |             ----^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/matching/mod.rs:6348:13
[INFO] [stdout]      |
[INFO] [stdout] 6348 |         let mut probe_hashes_opt: Option<Vec<u64>> = None;
[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/matching/mod.rs:8864:37
[INFO] [stdout]      |
[INFO] [stdout] 8864 | ...                   let mut pair = MatchPair {
[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/matching/mod.rs:8077:5
[INFO] [stdout]      |
[INFO] [stdout] 8077 |     mut on_match: F,
[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/matching/mod.rs:8514:21
[INFO] [stdout]      |
[INFO] [stdout] 8514 |                 let mut flush_pending_gpu = |pending: &mut Vec<(Vec<Person>, Vec<Person>)>,
[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/matching/mod.rs:9008:53
[INFO] [stdout]      |
[INFO] [stdout] 9008 | ...                   let mut pair = MatchPair {
[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/matching/mod.rs:6631:9
[INFO] [stdout]      |
[INFO] [stdout] 6631 |     let mut gpu_logged_once = false;
[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/matching/mod.rs:6657:13
[INFO] [stdout]      |
[INFO] [stdout] 6657 |         let mut hashed: Option<Vec<u64>> = None;
[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/matching/mod.rs:6932:13
[INFO] [stdout]      |
[INFO] [stdout] 6932 |         let mut probe_hashes_opt: Option<Vec<u64>> = None;
[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/matching/mod.rs:9756:37
[INFO] [stdout]      |
[INFO] [stdout] 9756 | ...                   let mut pair = MatchPair {
[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/matching/mod.rs:9158:5
[INFO] [stdout]      |
[INFO] [stdout] 9158 |     mut on_match: F,
[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/matching/mod.rs:9546:21
[INFO] [stdout]      |
[INFO] [stdout] 9546 |                 let mut flush_pending_gpu = |pending: &mut Vec<(Vec<Person>, Vec<Person>)>,
[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/matching/mod.rs:9887:53
[INFO] [stdout]      |
[INFO] [stdout] 9887 | ...                   let mut pair = MatchPair {
[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/matching/mod.rs:10235:13
[INFO] [stdout]       |
[INFO] [stdout] 10235 |         let mut flush_pending_gpu = |pending: &mut Vec<(Vec<Person>, Vec<Person>)>,
[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/matching/mod.rs:8864:37
[INFO] [stdout]      |
[INFO] [stdout] 8864 | ...                   let mut pair = MatchPair {
[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/matching/mod.rs:8077:5
[INFO] [stdout]      |
[INFO] [stdout] 8077 |     mut on_match: F,
[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/matching/mod.rs:8514:21
[INFO] [stdout]      |
[INFO] [stdout] 8514 |                 let mut flush_pending_gpu = |pending: &mut Vec<(Vec<Person>, Vec<Person>)>,
[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/matching/mod.rs:9008:53
[INFO] [stdout]      |
[INFO] [stdout] 9008 | ...                   let mut pair = MatchPair {
[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/matching/mod.rs:10682:13
[INFO] [stdout]       |
[INFO] [stdout] 10682 |         let mut flush_pending_gpu = |pending: &mut Vec<(Vec<Person>, Vec<Person>)>,
[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/matching/mod.rs:9756:37
[INFO] [stdout]      |
[INFO] [stdout] 9756 | ...                   let mut pair = MatchPair {
[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/matching/mod.rs:9158:5
[INFO] [stdout]      |
[INFO] [stdout] 9158 |     mut on_match: F,
[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/matching/mod.rs:9546:21
[INFO] [stdout]      |
[INFO] [stdout] 9546 |                 let mut flush_pending_gpu = |pending: &mut Vec<(Vec<Person>, Vec<Person>)>,
[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/matching/mod.rs:9887:53
[INFO] [stdout]      |
[INFO] [stdout] 9887 | ...                   let mut pair = MatchPair {
[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/matching/mod.rs:10235:13
[INFO] [stdout]       |
[INFO] [stdout] 10235 |         let mut flush_pending_gpu = |pending: &mut Vec<(Vec<Person>, Vec<Person>)>,
[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/matching/mod.rs:10682:13
[INFO] [stdout]       |
[INFO] [stdout] 10682 |         let mut flush_pending_gpu = |pending: &mut Vec<(Vec<Person>, Vec<Person>)>,
[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/matching/advanced_matcher.rs:263:37
[INFO] [stdout]     |
[INFO] [stdout] 263 | ...                   let mut pair = MatchPair {
[INFO] [stdout]     |                           ----^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `gpu_device_id`
[INFO] [stdout]    --> src/matching/cascade.rs:271:5
[INFO] [stdout]     |
[INFO] [stdout] 271 |     gpu_device_id: Option<usize>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_gpu_device_id`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idx`
[INFO] [stdout]    --> src/matching/cascade.rs:599:10
[INFO] [stdout]     |
[INFO] [stdout] 599 |     for (idx, level_num) in levels_to_run.iter().enumerate() {
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag`
[INFO] [stdout]    --> src/matching/mod.rs:296:21
[INFO] [stdout]     |
[INFO] [stdout] 296 |     let log_snap = |tag: &str| {
[INFO] [stdout]     |                     ^^^ help: if this is intentional, prefix it with an underscore: `_tag`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `total_count` is assigned to, but never used
[INFO] [stdout]    --> src/matching/mod.rs:411:9
[INFO] [stdout]     |
[INFO] [stdout] 411 |     let mut total_count = 0;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_total_count` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `total_count` is never read
[INFO] [stdout]    --> src/matching/mod.rs:419:9
[INFO] [stdout]     |
[INFO] [stdout] 419 |         total_count += 1;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag`
[INFO] [stdout]    --> src/matching/mod.rs:544:21
[INFO] [stdout]     |
[INFO] [stdout] 544 |     let log_snap = |tag: &str| {
[INFO] [stdout]     |                     ^^^ help: if this is intentional, prefix it with an underscore: `_tag`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `allow_birthdate_swap`
[INFO] [stdout]    --> src/matching/mod.rs:803:9
[INFO] [stdout]     |
[INFO] [stdout] 803 |     let allow_birthdate_swap = crate::matching::birthdate_matcher::allow_birthdate_swap();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_allow_birthdate_swap`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/matching/advanced_matcher.rs:263:37
[INFO] [stdout]     |
[INFO] [stdout] 263 | ...                   let mut pair = MatchPair {
[INFO] [stdout]     |                           ----^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `gpu_device_id`
[INFO] [stdout]    --> src/matching/cascade.rs:271:5
[INFO] [stdout]     |
[INFO] [stdout] 271 |     gpu_device_id: Option<usize>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_gpu_device_id`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `inner_processed` is assigned to, but never used
[INFO] [stdout]     --> src/matching/mod.rs:6036:9
[INFO] [stdout]      |
[INFO] [stdout] 6036 |     let mut inner_processed: usize = 0;
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: consider using `_inner_processed` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `inner_processed` is never read
[INFO] [stdout]     --> src/matching/mod.rs:6181:9
[INFO] [stdout]      |
[INFO] [stdout] 6181 |         inner_processed += rows.len();
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idx`
[INFO] [stdout]    --> src/matching/cascade.rs:599:10
[INFO] [stdout]     |
[INFO] [stdout] 599 |     for (idx, level_num) in levels_to_run.iter().enumerate() {
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `inner_processed` is assigned to, but never used
[INFO] [stdout]     --> src/matching/mod.rs:6617:9
[INFO] [stdout]      |
[INFO] [stdout] 6617 |     let mut inner_processed: usize = 0;
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: consider using `_inner_processed` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `gpu_logged_once`
[INFO] [stdout]     --> src/matching/mod.rs:6631:9
[INFO] [stdout]      |
[INFO] [stdout] 6631 |     let mut gpu_logged_once = false;
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_gpu_logged_once`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `inner_processed` is never read
[INFO] [stdout]     --> src/matching/mod.rs:6759:9
[INFO] [stdout]      |
[INFO] [stdout] 6759 |         inner_processed += rows.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 `outer_watermark` is never read
[INFO] [stdout]     --> src/matching/mod.rs:7515:36
[INFO] [stdout]      |
[INFO] [stdout] 7515 |     let mut outer_watermark: i64 = 0;
[INFO] [stdout]      |                                    ^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `outer_watermark` is never read
[INFO] [stdout]     --> src/matching/mod.rs:7522:17
[INFO] [stdout]      |
[INFO] [stdout] 7522 |                 outer_watermark = cp.watermark_id.unwrap_or(0);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag`
[INFO] [stdout]    --> src/matching/mod.rs:296:21
[INFO] [stdout]     |
[INFO] [stdout] 296 |     let log_snap = |tag: &str| {
[INFO] [stdout]     |                     ^^^ help: if this is intentional, prefix it with an underscore: `_tag`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `total_count` is assigned to, but never used
[INFO] [stdout]    --> src/matching/mod.rs:411:9
[INFO] [stdout]     |
[INFO] [stdout] 411 |     let mut total_count = 0;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_total_count` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `total_count` is never read
[INFO] [stdout]    --> src/matching/mod.rs:419:9
[INFO] [stdout]     |
[INFO] [stdout] 419 |         total_count += 1;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag`
[INFO] [stdout]    --> src/matching/mod.rs:544:21
[INFO] [stdout]     |
[INFO] [stdout] 544 |     let log_snap = |tag: &str| {
[INFO] [stdout]     |                     ^^^ help: if this is intentional, prefix it with an underscore: `_tag`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `allow_birthdate_swap`
[INFO] [stdout]    --> src/matching/mod.rs:803:9
[INFO] [stdout]     |
[INFO] [stdout] 803 |     let allow_birthdate_swap = crate::matching::birthdate_matcher::allow_birthdate_swap();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_allow_birthdate_swap`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `allow_birthdate_swap`
[INFO] [stdout]      --> src/matching/mod.rs:10108:5
[INFO] [stdout]       |
[INFO] [stdout] 10108 |     allow_birthdate_swap: bool,
[INFO] [stdout]       |     ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_allow_birthdate_swap`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `allow_birthdate_swap`
[INFO] [stdout]      --> src/matching/mod.rs:10989:9
[INFO] [stdout]       |
[INFO] [stdout] 10989 |     let allow_birthdate_swap = crate::matching::birthdate_matcher::allow_birthdate_swap();
[INFO] [stdout]       |         ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_allow_birthdate_swap`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `inner_processed` is assigned to, but never used
[INFO] [stdout]     --> src/matching/mod.rs:6036:9
[INFO] [stdout]      |
[INFO] [stdout] 6036 |     let mut inner_processed: usize = 0;
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: consider using `_inner_processed` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `inner_processed` is never read
[INFO] [stdout]     --> src/matching/mod.rs:6181:9
[INFO] [stdout]      |
[INFO] [stdout] 6181 |         inner_processed += rows.len();
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `inner_processed` is assigned to, but never used
[INFO] [stdout]     --> src/matching/mod.rs:6617:9
[INFO] [stdout]      |
[INFO] [stdout] 6617 |     let mut inner_processed: usize = 0;
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: consider using `_inner_processed` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `gpu_logged_once`
[INFO] [stdout]     --> src/matching/mod.rs:6631:9
[INFO] [stdout]      |
[INFO] [stdout] 6631 |     let mut gpu_logged_once = false;
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_gpu_logged_once`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `inner_processed` is never read
[INFO] [stdout]     --> src/matching/mod.rs:6759:9
[INFO] [stdout]      |
[INFO] [stdout] 6759 |         inner_processed += rows.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 `outer_watermark` is never read
[INFO] [stdout]     --> src/matching/mod.rs:7515:36
[INFO] [stdout]      |
[INFO] [stdout] 7515 |     let mut outer_watermark: i64 = 0;
[INFO] [stdout]      |                                    ^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `outer_watermark` is never read
[INFO] [stdout]     --> src/matching/mod.rs:7522:17
[INFO] [stdout]      |
[INFO] [stdout] 7522 |                 outer_watermark = cp.watermark_id.unwrap_or(0);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gpu_fuzzy_prep_enabled` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1427:4
[INFO] [stdout]      |
[INFO] [stdout] 1427 | fn gpu_fuzzy_prep_enabled() -> bool {
[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 `gpu_fuzzy_prep_budget_mb` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1439:15
[INFO] [stdout]      |
[INFO] [stdout] 1439 | pub(crate) fn gpu_fuzzy_prep_budget_mb() -> u64 {
[INFO] [stdout]      |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gpu_lev_full_scoring_enabled` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1484:4
[INFO] [stdout]      |
[INFO] [stdout] 1484 | fn gpu_lev_full_scoring_enabled() -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `should_enable_gpu_fuzzy_by_heuristic` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1509:4
[INFO] [stdout]      |
[INFO] [stdout] 1509 | fn should_enable_gpu_fuzzy_by_heuristic(table1: &[Person], table2: &[Person]) -> (bool, String) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gpu_fuzzy_metrics_enabled` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1619:4
[INFO] [stdout]      |
[INFO] [stdout] 1619 | fn gpu_fuzzy_metrics_enabled() -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gpu_fuzzy_force` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1635:4
[INFO] [stdout]      |
[INFO] [stdout] 1635 | fn gpu_fuzzy_force() -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dynamic_gpu_tuning_enabled` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1651:4
[INFO] [stdout]      |
[INFO] [stdout] 1651 | fn dynamic_gpu_tuning_enabled() -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `match_fuzzy_no_mid_blocked_cpu` is never used
[INFO] [stdout]     --> src/matching/mod.rs:2095:15
[INFO] [stdout]      |
[INFO] [stdout] 2095 | pub(crate) fn match_fuzzy_no_mid_blocked_cpu<F>(
[INFO] [stdout]      |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `GpuHash` is never constructed
[INFO] [stdout]     --> src/matching/mod.rs:8163:9
[INFO] [stdout]      |
[INFO] [stdout] 8159 |     enum Index {
[INFO] [stdout]      |          ----- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 8163 |         GpuHash {
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `GpuHash` is never constructed
[INFO] [stdout]     --> src/matching/mod.rs:9230:9
[INFO] [stdout]      |
[INFO] [stdout] 9226 |     enum Index {
[INFO] [stdout]      |          ----- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 9230 |         GpuHash {
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/config.rs:136:39
[INFO] [stdout]     |
[INFO] [stdout] 136 |         if self.database.port == 0 || self.database.port > 65535 {
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `allow_birthdate_swap`
[INFO] [stdout]      --> src/matching/mod.rs:10108:5
[INFO] [stdout]       |
[INFO] [stdout] 10108 |     allow_birthdate_swap: bool,
[INFO] [stdout]       |     ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_allow_birthdate_swap`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `allow_birthdate_swap`
[INFO] [stdout]      --> src/matching/mod.rs:10989:9
[INFO] [stdout]       |
[INFO] [stdout] 10989 |     let allow_birthdate_swap = crate::matching::birthdate_matcher::allow_birthdate_swap();
[INFO] [stdout]       |         ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_allow_birthdate_swap`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gpu_fuzzy_prep_enabled` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1427:4
[INFO] [stdout]      |
[INFO] [stdout] 1427 | fn gpu_fuzzy_prep_enabled() -> bool {
[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 `gpu_fuzzy_prep_budget_mb` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1439:15
[INFO] [stdout]      |
[INFO] [stdout] 1439 | pub(crate) fn gpu_fuzzy_prep_budget_mb() -> u64 {
[INFO] [stdout]      |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gpu_lev_full_scoring_enabled` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1484:4
[INFO] [stdout]      |
[INFO] [stdout] 1484 | fn gpu_lev_full_scoring_enabled() -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gpu_fuzzy_metrics_enabled` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1619:4
[INFO] [stdout]      |
[INFO] [stdout] 1619 | fn gpu_fuzzy_metrics_enabled() -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gpu_fuzzy_force` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1635:4
[INFO] [stdout]      |
[INFO] [stdout] 1635 | fn gpu_fuzzy_force() -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dynamic_gpu_tuning_enabled` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1651:4
[INFO] [stdout]      |
[INFO] [stdout] 1651 | fn dynamic_gpu_tuning_enabled() -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `match_fuzzy_no_mid_blocked_cpu` is never used
[INFO] [stdout]     --> src/matching/mod.rs:2095:15
[INFO] [stdout]      |
[INFO] [stdout] 2095 | pub(crate) fn match_fuzzy_no_mid_blocked_cpu<F>(
[INFO] [stdout]      |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `GpuHash` is never constructed
[INFO] [stdout]     --> src/matching/mod.rs:8163:9
[INFO] [stdout]      |
[INFO] [stdout] 8159 |     enum Index {
[INFO] [stdout]      |          ----- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 8163 |         GpuHash {
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `GpuHash` is never constructed
[INFO] [stdout]     --> src/matching/mod.rs:9230:9
[INFO] [stdout]      |
[INFO] [stdout] 9226 |     enum Index {
[INFO] [stdout]      |          ----- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 9230 |         GpuHash {
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/config.rs:136:39
[INFO] [stdout]     |
[INFO] [stdout] 136 |         if self.database.port == 0 || self.database.port > 65535 {
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]     --> src/bin/gui.rs:5474:36
[INFO] [stdout]      |
[INFO] [stdout] 5474 |             Ok::<Box<dyn App>, Box<(dyn std::error::Error + Send + Sync + 'static)>>(Box::new(
[INFO] [stdout]      |                                    ^                                             ^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 5474 -             Ok::<Box<dyn App>, Box<(dyn std::error::Error + Send + Sync + 'static)>>(Box::new(
[INFO] [stdout] 5474 +             Ok::<Box<dyn App>, Box<dyn std::error::Error + Send + Sync + 'static>>(Box::new(
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]     --> src/bin/gui.rs:5474:36
[INFO] [stdout]      |
[INFO] [stdout] 5474 |             Ok::<Box<dyn App>, Box<(dyn std::error::Error + Send + Sync + 'static)>>(Box::new(
[INFO] [stdout]      |                                    ^                                             ^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 5474 -             Ok::<Box<dyn App>, Box<(dyn std::error::Error + Send + Sync + 'static)>>(Box::new(
[INFO] [stdout] 5474 +             Ok::<Box<dyn App>, Box<dyn std::error::Error + Send + Sync + 'static>>(Box::new(
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `seed_table` is never used
[INFO] [stdout]    --> src/bin/seed.rs:456:10
[INFO] [stdout]     |
[INFO] [stdout] 456 | async fn seed_table(pool: &Pool<MySql>, table: &str, rows: usize, seed: u64) -> Result<()> {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `GpuConfig`, `MatchOptions`, `ProgressConfig`, and `ProgressUpdate`
[INFO] [stdout]   --> src/matching/cascade.rs:18:21
[INFO] [stdout]    |
[INFO] [stdout] 18 |     ComputeBackend, GpuConfig, MatchOptions, MatchPair, ProgressConfig, ProgressUpdate,
[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: `chrono::Datelike`
[INFO] [stdout]     --> src/matching/mod.rs:2388:9
[INFO] [stdout]      |
[INFO] [stdout] 2388 |     use chrono::Datelike;
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HashSet`
[INFO] [stdout]     --> src/matching/mod.rs:2389:37
[INFO] [stdout]      |
[INFO] [stdout] 2389 |     use std::collections::{HashMap, HashSet};
[INFO] [stdout]      |                                     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `fetch_person_rows_chunk_where`
[INFO] [stdout]     --> src/matching/mod.rs:5617:5
[INFO] [stdout]      |
[INFO] [stdout] 5617 |     fetch_person_rows_chunk_where, fetch_person_rows_chunk_where_keyset, get_max_id,
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `StreamCheckpoint`, `load_checkpoint`, `remove_checkpoint`, and `save_checkpoint`
[INFO] [stdout]     --> src/matching/mod.rs:7436:9
[INFO] [stdout]      |
[INFO] [stdout] 7436 |         StreamCheckpoint, load_checkpoint, remove_checkpoint, save_checkpoint,
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::envfile::parse_env_file`
[INFO] [stdout]   --> src/cli/args.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::util::envfile::parse_env_file;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Cli`, `FormatOpt`, and `parse_cli_to_app_config`
[INFO] [stdout]   --> src/cli/mod.rs:64:23
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub use clap_parser::{Cli, FormatOpt, parse_cli_to_app_config};
[INFO] [stdout]    |                       ^^^  ^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::cli::args`
[INFO] [stdout]   --> src/orchestrator/mod.rs:96:5
[INFO] [stdout]    |
[INFO] [stdout] 96 | use crate::cli::args;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `make_pool`
[INFO] [stdout]   --> src/orchestrator/mod.rs:99:59
[INFO] [stdout]    |
[INFO] [stdout] 99 | use crate::db::{discover_table_columns, get_person_count, make_pool};
[INFO] [stdout]    |                                                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `seed_table` is never used
[INFO] [stdout]    --> src/bin/seed.rs:456:10
[INFO] [stdout]     |
[INFO] [stdout] 456 | async fn seed_table(pool: &Pool<MySql>, table: &str, rows: usize, seed: u64) -> Result<()> {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `GpuConfig`, `MatchOptions`, `ProgressConfig`, and `ProgressUpdate`
[INFO] [stdout]   --> src/matching/cascade.rs:18:21
[INFO] [stdout]    |
[INFO] [stdout] 18 |     ComputeBackend, GpuConfig, MatchOptions, MatchPair, ProgressConfig, ProgressUpdate,
[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: `chrono::Datelike`
[INFO] [stdout]     --> src/matching/mod.rs:2388:9
[INFO] [stdout]      |
[INFO] [stdout] 2388 |     use chrono::Datelike;
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HashSet`
[INFO] [stdout]     --> src/matching/mod.rs:2389:37
[INFO] [stdout]      |
[INFO] [stdout] 2389 |     use std::collections::{HashMap, HashSet};
[INFO] [stdout]      |                                     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `fetch_person_rows_chunk_where`
[INFO] [stdout]     --> src/matching/mod.rs:5617:5
[INFO] [stdout]      |
[INFO] [stdout] 5617 |     fetch_person_rows_chunk_where, fetch_person_rows_chunk_where_keyset, get_max_id,
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `StreamCheckpoint`, `load_checkpoint`, `remove_checkpoint`, and `save_checkpoint`
[INFO] [stdout]     --> src/matching/mod.rs:7436:9
[INFO] [stdout]      |
[INFO] [stdout] 7436 |         StreamCheckpoint, load_checkpoint, remove_checkpoint, save_checkpoint,
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::envfile::parse_env_file`
[INFO] [stdout]   --> src/cli/args.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::util::envfile::parse_env_file;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Cli`, `FormatOpt`, and `parse_cli_to_app_config`
[INFO] [stdout]   --> src/cli/mod.rs:64:23
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub use clap_parser::{Cli, FormatOpt, parse_cli_to_app_config};
[INFO] [stdout]    |                       ^^^  ^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::cli::args`
[INFO] [stdout]   --> src/orchestrator/mod.rs:96:5
[INFO] [stdout]    |
[INFO] [stdout] 96 | use crate::cli::args;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `make_pool`
[INFO] [stdout]   --> src/orchestrator/mod.rs:99:59
[INFO] [stdout]    |
[INFO] [stdout] 99 | use crate::db::{discover_table_columns, get_person_count, make_pool};
[INFO] [stdout]    |                                                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/bin/gui.rs:118:23
[INFO] [stdout]     |
[INFO] [stdout] 118 |             if let Ok(mut guard) = mtx.lock() {
[INFO] [stdout]     |                       ----^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/bin/gui.rs:118:23
[INFO] [stdout]     |
[INFO] [stdout] 118 |             if let Ok(mut guard) = mtx.lock() {
[INFO] [stdout]     |                       ----^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/matching/mod.rs:6077:13
[INFO] [stdout]      |
[INFO] [stdout] 6077 |         let mut hashed: Option<Vec<u64>> = None;
[INFO] [stdout]      |             ----^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/matching/mod.rs:6348:13
[INFO] [stdout]      |
[INFO] [stdout] 6348 |         let mut probe_hashes_opt: Option<Vec<u64>> = None;
[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/matching/mod.rs:6631:9
[INFO] [stdout]      |
[INFO] [stdout] 6631 |     let mut gpu_logged_once = false;
[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/matching/mod.rs:6657:13
[INFO] [stdout]      |
[INFO] [stdout] 6657 |         let mut hashed: Option<Vec<u64>> = None;
[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/matching/mod.rs:6932:13
[INFO] [stdout]      |
[INFO] [stdout] 6932 |         let mut probe_hashes_opt: Option<Vec<u64>> = None;
[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/matching/mod.rs:6077:13
[INFO] [stdout]      |
[INFO] [stdout] 6077 |         let mut hashed: Option<Vec<u64>> = None;
[INFO] [stdout]      |             ----^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/matching/mod.rs:6348:13
[INFO] [stdout]      |
[INFO] [stdout] 6348 |         let mut probe_hashes_opt: Option<Vec<u64>> = None;
[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/matching/mod.rs:6631:9
[INFO] [stdout]      |
[INFO] [stdout] 6631 |     let mut gpu_logged_once = false;
[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/matching/mod.rs:6657:13
[INFO] [stdout]      |
[INFO] [stdout] 6657 |         let mut hashed: Option<Vec<u64>> = None;
[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/matching/mod.rs:6932:13
[INFO] [stdout]      |
[INFO] [stdout] 6932 |         let mut probe_hashes_opt: Option<Vec<u64>> = None;
[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/matching/mod.rs:8864:37
[INFO] [stdout]      |
[INFO] [stdout] 8864 | ...                   let mut pair = MatchPair {
[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/matching/mod.rs:8077:5
[INFO] [stdout]      |
[INFO] [stdout] 8077 |     mut on_match: F,
[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/matching/mod.rs:8514:21
[INFO] [stdout]      |
[INFO] [stdout] 8514 |                 let mut flush_pending_gpu = |pending: &mut Vec<(Vec<Person>, Vec<Person>)>,
[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/matching/mod.rs:9008:53
[INFO] [stdout]      |
[INFO] [stdout] 9008 | ...                   let mut pair = MatchPair {
[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/matching/mod.rs:9756:37
[INFO] [stdout]      |
[INFO] [stdout] 9756 | ...                   let mut pair = MatchPair {
[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/matching/mod.rs:9158:5
[INFO] [stdout]      |
[INFO] [stdout] 9158 |     mut on_match: F,
[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/matching/mod.rs:9546:21
[INFO] [stdout]      |
[INFO] [stdout] 9546 |                 let mut flush_pending_gpu = |pending: &mut Vec<(Vec<Person>, Vec<Person>)>,
[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/matching/mod.rs:9887:53
[INFO] [stdout]      |
[INFO] [stdout] 9887 | ...                   let mut pair = MatchPair {
[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/matching/mod.rs:8864:37
[INFO] [stdout]      |
[INFO] [stdout] 8864 | ...                   let mut pair = MatchPair {
[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/matching/mod.rs:8077:5
[INFO] [stdout]      |
[INFO] [stdout] 8077 |     mut on_match: F,
[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/matching/mod.rs:8514:21
[INFO] [stdout]      |
[INFO] [stdout] 8514 |                 let mut flush_pending_gpu = |pending: &mut Vec<(Vec<Person>, Vec<Person>)>,
[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/matching/mod.rs:9008:53
[INFO] [stdout]      |
[INFO] [stdout] 9008 | ...                   let mut pair = MatchPair {
[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/matching/mod.rs:10235:13
[INFO] [stdout]       |
[INFO] [stdout] 10235 |         let mut flush_pending_gpu = |pending: &mut Vec<(Vec<Person>, Vec<Person>)>,
[INFO] [stdout]       |             ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]       |             |
[INFO] [stdout]       |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `a1` is never read
[INFO] [stdout]     --> src/bin/gui.rs:3484:49
[INFO] [stdout]      |
[INFO] [stdout] 3484 | ...                   let mut a1: usize = 0; let mut a2: usize = 0;
[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 `a2` is never read
[INFO] [stdout]     --> src/bin/gui.rs:3484:72
[INFO] [stdout]      |
[INFO] [stdout] 3484 | ...                   let mut a1: usize = 0; let mut a2: usize = 0;
[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]     --> src/matching/mod.rs:9756:37
[INFO] [stdout]      |
[INFO] [stdout] 9756 | ...                   let mut pair = MatchPair {
[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/matching/mod.rs:9158:5
[INFO] [stdout]      |
[INFO] [stdout] 9158 |     mut on_match: F,
[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/matching/mod.rs:9546:21
[INFO] [stdout]      |
[INFO] [stdout] 9546 |                 let mut flush_pending_gpu = |pending: &mut Vec<(Vec<Person>, Vec<Person>)>,
[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/matching/mod.rs:9887:53
[INFO] [stdout]      |
[INFO] [stdout] 9887 | ...                   let mut pair = MatchPair {
[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/matching/mod.rs:10682:13
[INFO] [stdout]       |
[INFO] [stdout] 10682 |         let mut flush_pending_gpu = |pending: &mut Vec<(Vec<Person>, Vec<Person>)>,
[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/matching/mod.rs:10235:13
[INFO] [stdout]       |
[INFO] [stdout] 10235 |         let mut flush_pending_gpu = |pending: &mut Vec<(Vec<Person>, Vec<Person>)>,
[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/matching/mod.rs:10682:13
[INFO] [stdout]       |
[INFO] [stdout] 10682 |         let mut flush_pending_gpu = |pending: &mut Vec<(Vec<Person>, Vec<Person>)>,
[INFO] [stdout]       |             ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]       |             |
[INFO] [stdout]       |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `a1` is never read
[INFO] [stdout]     --> src/bin/gui.rs:3484:49
[INFO] [stdout]      |
[INFO] [stdout] 3484 | ...                   let mut a1: usize = 0; let mut a2: usize = 0;
[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 `a2` is never read
[INFO] [stdout]     --> src/bin/gui.rs:3484:72
[INFO] [stdout]      |
[INFO] [stdout] 3484 | ...                   let mut a1: usize = 0; let mut a2: usize = 0;
[INFO] [stdout]      |                                                                  ^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `success_color`
[INFO] [stdout]     --> src/bin/gui.rs:5372:9
[INFO] [stdout]      |
[INFO] [stdout] 5372 |     let success_color = Color32::from_rgb(76, 217, 100); // Bright green
[INFO] [stdout]      |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_success_color`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `success_dim`
[INFO] [stdout]     --> src/bin/gui.rs:5373:9
[INFO] [stdout]      |
[INFO] [stdout] 5373 |     let success_dim = Color32::from_rgb(52, 199, 89); // Dimmer green
[INFO] [stdout]      |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_success_dim`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `gpu_accent`
[INFO] [stdout]     --> src/bin/gui.rs:5376:9
[INFO] [stdout]      |
[INFO] [stdout] 5376 |     let gpu_accent = Color32::from_rgb(175, 82, 222); // Vibrant purple
[INFO] [stdout]      |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_gpu_accent`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `gpu_accent_hover`
[INFO] [stdout]     --> src/bin/gui.rs:5377:9
[INFO] [stdout]      |
[INFO] [stdout] 5377 |     let gpu_accent_hover = Color32::from_rgb(191, 108, 230); // Lighter purple
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_gpu_accent_hover`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `warning_color`
[INFO] [stdout]     --> src/bin/gui.rs:5380:9
[INFO] [stdout]      |
[INFO] [stdout] 5380 |     let warning_color = Color32::from_rgb(255, 204, 0); // Amber
[INFO] [stdout]      |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_warning_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `error_color`
[INFO] [stdout]     --> src/bin/gui.rs:5381:9
[INFO] [stdout]      |
[INFO] [stdout] 5381 |     let error_color = Color32::from_rgb(255, 69, 58); // Red
[INFO] [stdout]      |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_error_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Error` is never constructed
[INFO] [stdout]   --> src/bin/gui.rs:87:5
[INFO] [stdout]    |
[INFO] [stdout] 68 | enum Msg {
[INFO] [stdout]    |      --- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 87 |     Error(String),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Msg` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `save_fuzzy_threshold_pref` is never used
[INFO] [stdout]    --> src/bin/gui.rs:500:8
[INFO] [stdout]     |
[INFO] [stdout] 473 | impl GuiApp {
[INFO] [stdout]     | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 500 |     fn save_fuzzy_threshold_pref(&self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `success_color`
[INFO] [stdout]     --> src/bin/gui.rs:5372:9
[INFO] [stdout]      |
[INFO] [stdout] 5372 |     let success_color = Color32::from_rgb(76, 217, 100); // Bright green
[INFO] [stdout]      |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_success_color`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `success_dim`
[INFO] [stdout]     --> src/bin/gui.rs:5373:9
[INFO] [stdout]      |
[INFO] [stdout] 5373 |     let success_dim = Color32::from_rgb(52, 199, 89); // Dimmer green
[INFO] [stdout]      |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_success_dim`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `gpu_accent`
[INFO] [stdout]     --> src/bin/gui.rs:5376:9
[INFO] [stdout]      |
[INFO] [stdout] 5376 |     let gpu_accent = Color32::from_rgb(175, 82, 222); // Vibrant purple
[INFO] [stdout]      |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_gpu_accent`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `gpu_accent_hover`
[INFO] [stdout]     --> src/bin/gui.rs:5377:9
[INFO] [stdout]      |
[INFO] [stdout] 5377 |     let gpu_accent_hover = Color32::from_rgb(191, 108, 230); // Lighter purple
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_gpu_accent_hover`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `warning_color`
[INFO] [stdout]     --> src/bin/gui.rs:5380:9
[INFO] [stdout]      |
[INFO] [stdout] 5380 |     let warning_color = Color32::from_rgb(255, 204, 0); // Amber
[INFO] [stdout]      |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_warning_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `error_color`
[INFO] [stdout]     --> src/bin/gui.rs:5381:9
[INFO] [stdout]      |
[INFO] [stdout] 5381 |     let error_color = Color32::from_rgb(255, 69, 58); // Red
[INFO] [stdout]      |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_error_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Error` is never constructed
[INFO] [stdout]   --> src/bin/gui.rs:87:5
[INFO] [stdout]    |
[INFO] [stdout] 68 | enum Msg {
[INFO] [stdout]    |      --- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 87 |     Error(String),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Msg` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `save_fuzzy_threshold_pref` is never used
[INFO] [stdout]    --> src/bin/gui.rs:500:8
[INFO] [stdout]     |
[INFO] [stdout] 473 | impl GuiApp {
[INFO] [stdout]     | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 500 |     fn save_fuzzy_threshold_pref(&self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/matching/advanced_matcher.rs:263:37
[INFO] [stdout]     |
[INFO] [stdout] 263 | ...                   let mut pair = MatchPair {
[INFO] [stdout]     |                           ----^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `gpu_device_id`
[INFO] [stdout]    --> src/matching/cascade.rs:271:5
[INFO] [stdout]     |
[INFO] [stdout] 271 |     gpu_device_id: Option<usize>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_gpu_device_id`
[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/matching/advanced_matcher.rs:263:37
[INFO] [stdout]     |
[INFO] [stdout] 263 | ...                   let mut pair = MatchPair {
[INFO] [stdout]     |                           ----^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `gpu_device_id`
[INFO] [stdout]    --> src/matching/cascade.rs:271:5
[INFO] [stdout]     |
[INFO] [stdout] 271 |     gpu_device_id: Option<usize>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_gpu_device_id`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idx`
[INFO] [stdout]    --> src/matching/cascade.rs:599:10
[INFO] [stdout]     |
[INFO] [stdout] 599 |     for (idx, level_num) in levels_to_run.iter().enumerate() {
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idx`
[INFO] [stdout]    --> src/matching/cascade.rs:599:10
[INFO] [stdout]     |
[INFO] [stdout] 599 |     for (idx, level_num) in levels_to_run.iter().enumerate() {
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag`
[INFO] [stdout]    --> src/matching/mod.rs:296:21
[INFO] [stdout]     |
[INFO] [stdout] 296 |     let log_snap = |tag: &str| {
[INFO] [stdout]     |                     ^^^ help: if this is intentional, prefix it with an underscore: `_tag`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `total_count` is assigned to, but never used
[INFO] [stdout]    --> src/matching/mod.rs:411:9
[INFO] [stdout]     |
[INFO] [stdout] 411 |     let mut total_count = 0;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_total_count` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `total_count` is never read
[INFO] [stdout]    --> src/matching/mod.rs:419:9
[INFO] [stdout]     |
[INFO] [stdout] 419 |         total_count += 1;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag`
[INFO] [stdout]    --> src/matching/mod.rs:544:21
[INFO] [stdout]     |
[INFO] [stdout] 544 |     let log_snap = |tag: &str| {
[INFO] [stdout]     |                     ^^^ help: if this is intentional, prefix it with an underscore: `_tag`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `allow_birthdate_swap`
[INFO] [stdout]    --> src/matching/mod.rs:803:9
[INFO] [stdout]     |
[INFO] [stdout] 803 |     let allow_birthdate_swap = crate::matching::birthdate_matcher::allow_birthdate_swap();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_allow_birthdate_swap`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag`
[INFO] [stdout]    --> src/matching/mod.rs:296:21
[INFO] [stdout]     |
[INFO] [stdout] 296 |     let log_snap = |tag: &str| {
[INFO] [stdout]     |                     ^^^ help: if this is intentional, prefix it with an underscore: `_tag`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `total_count` is assigned to, but never used
[INFO] [stdout]    --> src/matching/mod.rs:411:9
[INFO] [stdout]     |
[INFO] [stdout] 411 |     let mut total_count = 0;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_total_count` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `total_count` is never read
[INFO] [stdout]    --> src/matching/mod.rs:419:9
[INFO] [stdout]     |
[INFO] [stdout] 419 |         total_count += 1;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag`
[INFO] [stdout]    --> src/matching/mod.rs:544:21
[INFO] [stdout]     |
[INFO] [stdout] 544 |     let log_snap = |tag: &str| {
[INFO] [stdout]     |                     ^^^ help: if this is intentional, prefix it with an underscore: `_tag`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `allow_birthdate_swap`
[INFO] [stdout]    --> src/matching/mod.rs:803:9
[INFO] [stdout]     |
[INFO] [stdout] 803 |     let allow_birthdate_swap = crate::matching::birthdate_matcher::allow_birthdate_swap();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_allow_birthdate_swap`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `inner_processed` is assigned to, but never used
[INFO] [stdout]     --> src/matching/mod.rs:6036:9
[INFO] [stdout]      |
[INFO] [stdout] 6036 |     let mut inner_processed: usize = 0;
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: consider using `_inner_processed` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `inner_processed` is never read
[INFO] [stdout]     --> src/matching/mod.rs:6181:9
[INFO] [stdout]      |
[INFO] [stdout] 6181 |         inner_processed += rows.len();
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `inner_processed` is assigned to, but never used
[INFO] [stdout]     --> src/matching/mod.rs:6036:9
[INFO] [stdout]      |
[INFO] [stdout] 6036 |     let mut inner_processed: usize = 0;
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: consider using `_inner_processed` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `inner_processed` is never read
[INFO] [stdout]     --> src/matching/mod.rs:6181:9
[INFO] [stdout]      |
[INFO] [stdout] 6181 |         inner_processed += rows.len();
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `inner_processed` is assigned to, but never used
[INFO] [stdout]     --> src/matching/mod.rs:6617:9
[INFO] [stdout]      |
[INFO] [stdout] 6617 |     let mut inner_processed: usize = 0;
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: consider using `_inner_processed` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `gpu_logged_once`
[INFO] [stdout]     --> src/matching/mod.rs:6631:9
[INFO] [stdout]      |
[INFO] [stdout] 6631 |     let mut gpu_logged_once = false;
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_gpu_logged_once`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `inner_processed` is never read
[INFO] [stdout]     --> src/matching/mod.rs:6759:9
[INFO] [stdout]      |
[INFO] [stdout] 6759 |         inner_processed += rows.len();
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `inner_processed` is assigned to, but never used
[INFO] [stdout]     --> src/matching/mod.rs:6617:9
[INFO] [stdout]      |
[INFO] [stdout] 6617 |     let mut inner_processed: usize = 0;
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: consider using `_inner_processed` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `gpu_logged_once`
[INFO] [stdout]     --> src/matching/mod.rs:6631:9
[INFO] [stdout]      |
[INFO] [stdout] 6631 |     let mut gpu_logged_once = false;
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_gpu_logged_once`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `inner_processed` is never read
[INFO] [stdout]     --> src/matching/mod.rs:6759:9
[INFO] [stdout]      |
[INFO] [stdout] 6759 |         inner_processed += rows.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 `outer_watermark` is never read
[INFO] [stdout]     --> src/matching/mod.rs:7515:36
[INFO] [stdout]      |
[INFO] [stdout] 7515 |     let mut outer_watermark: i64 = 0;
[INFO] [stdout]      |                                    ^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `outer_watermark` is never read
[INFO] [stdout]     --> src/matching/mod.rs:7522:17
[INFO] [stdout]      |
[INFO] [stdout] 7522 |                 outer_watermark = cp.watermark_id.unwrap_or(0);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `outer_watermark` is never read
[INFO] [stdout]     --> src/matching/mod.rs:7515:36
[INFO] [stdout]      |
[INFO] [stdout] 7515 |     let mut outer_watermark: i64 = 0;
[INFO] [stdout]      |                                    ^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `outer_watermark` is never read
[INFO] [stdout]     --> src/matching/mod.rs:7522:17
[INFO] [stdout]      |
[INFO] [stdout] 7522 |                 outer_watermark = cp.watermark_id.unwrap_or(0);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `allow_birthdate_swap`
[INFO] [stdout]      --> src/matching/mod.rs:10108:5
[INFO] [stdout]       |
[INFO] [stdout] 10108 |     allow_birthdate_swap: bool,
[INFO] [stdout]       |     ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_allow_birthdate_swap`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `allow_birthdate_swap`
[INFO] [stdout]      --> src/matching/mod.rs:10108:5
[INFO] [stdout]       |
[INFO] [stdout] 10108 |     allow_birthdate_swap: bool,
[INFO] [stdout]       |     ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_allow_birthdate_swap`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `allow_birthdate_swap`
[INFO] [stdout]      --> src/matching/mod.rs:10989:9
[INFO] [stdout]       |
[INFO] [stdout] 10989 |     let allow_birthdate_swap = crate::matching::birthdate_matcher::allow_birthdate_swap();
[INFO] [stdout]       |         ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_allow_birthdate_swap`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `allow_birthdate_swap`
[INFO] [stdout]      --> src/matching/mod.rs:10989:9
[INFO] [stdout]       |
[INFO] [stdout] 10989 |     let allow_birthdate_swap = crate::matching::birthdate_matcher::allow_birthdate_swap();
[INFO] [stdout]       |         ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_allow_birthdate_swap`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `format` is never read
[INFO] [stdout]    --> src/main.rs:724:13
[INFO] [stdout]     |
[INFO] [stdout] 724 |             format = "csv".into();
[INFO] [stdout]     |             ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `format` is never read
[INFO] [stdout]    --> src/main.rs:574:13
[INFO] [stdout]     |
[INFO] [stdout] 574 |             format = "csv".into();
[INFO] [stdout]     |             ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `emitted` is never read
[INFO] [stdout]    --> src/main.rs:887:35
[INFO] [stdout]     |
[INFO] [stdout] 887 |                 let mut emitted = 0usize;
[INFO] [stdout]     |                                   ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `fuzzy_gpu_used_opt` is never read
[INFO] [stdout]     --> src/main.rs:2579:13
[INFO] [stdout]      |
[INFO] [stdout] 2579 |             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 `format` is never read
[INFO] [stdout]    --> src/main.rs:724:13
[INFO] [stdout]     |
[INFO] [stdout] 724 |             format = "csv".into();
[INFO] [stdout]     |             ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `format` is never read
[INFO] [stdout]    --> src/main.rs:574:13
[INFO] [stdout]     |
[INFO] [stdout] 574 |             format = "csv".into();
[INFO] [stdout]     |             ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `emitted` is never read
[INFO] [stdout]    --> src/main.rs:887:35
[INFO] [stdout]     |
[INFO] [stdout] 887 |                 let mut emitted = 0usize;
[INFO] [stdout]     |                                   ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `fuzzy_gpu_used_opt` is never read
[INFO] [stdout]     --> src/main.rs:2579:13
[INFO] [stdout]      |
[INFO] [stdout] 2579 |             None;
[INFO] [stdout]      |             ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `validate` is never used
[INFO] [stdout]    --> src/config.rs:120:12
[INFO] [stdout]     |
[INFO] [stdout] 119 | impl AppConfig {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] 120 |     pub fn validate(&self) -> Result<(), ConfigError> {
[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_person_count_fast` is never used
[INFO] [stdout]    --> src/db/schema.rs:528:14
[INFO] [stdout]     |
[INFO] [stdout] 528 | pub async fn get_person_count_fast(pool: &MySqlPool, table: &str) -> Result<i64> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_person_rows_chunk_where` is never used
[INFO] [stdout]    --> src/db/schema.rs:678:14
[INFO] [stdout]     |
[INFO] [stdout] 678 | pub async fn fetch_person_rows_chunk_where(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `create` is never used
[INFO] [stdout]    --> src/export/csv_export.rs:305:12
[INFO] [stdout]     |
[INFO] [stdout] 303 | impl HouseholdCsvWriter {
[INFO] [stdout]     | ----------------------- associated function in this implementation
[INFO] [stdout] 304 |     /// Backward-compatible constructor (no metadata columns)
[INFO] [stdout] 305 |     pub fn create(path: &str) -> Result<Self> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `create` is never used
[INFO] [stdout]    --> src/export/csv_export.rs:371:12
[INFO] [stdout]     |
[INFO] [stdout] 370 | impl CsvStreamWriter {
[INFO] [stdout]     | -------------------- associated function in this implementation
[INFO] [stdout] 371 |     pub fn create(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/export/xlsx_export.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct SummaryContext {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub overlap_count: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 39 |     pub unique_algo1: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 40 |     pub unique_algo2: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fetch_time: Duration,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 44 |     pub match1_time: Duration,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 45 |     pub match2_time: Duration,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 46 |     pub export_time: Duration,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub mem_used_start_mb: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 50 |     pub mem_used_end_mb: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SummaryContext` 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 `create` is never used
[INFO] [stdout]    --> src/export/xlsx_export.rs:523:12
[INFO] [stdout]     |
[INFO] [stdout] 522 | impl XlsxStreamWriter {
[INFO] [stdout]     | --------------------- associated function in this implementation
[INFO] [stdout] 523 |     pub fn create(out_path: &str) -> Result<Self> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `export_summary_xlsx` is never used
[INFO] [stdout]    --> src/export/xlsx_export.rs:770:8
[INFO] [stdout]     |
[INFO] [stdout] 770 | pub fn export_summary_xlsx(out_path: &str, summary: &SummaryContext) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gpu_fuzzy_prep_enabled` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1427:4
[INFO] [stdout]      |
[INFO] [stdout] 1427 | fn gpu_fuzzy_prep_enabled() -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `GPU_FUZZY_PREPASS_BUDGET_MB` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1432:8
[INFO] [stdout]      |
[INFO] [stdout] 1432 | static GPU_FUZZY_PREPASS_BUDGET_MB: std::sync::atomic::AtomicU64 =
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_gpu_fuzzy_prepass_budget_mb` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1435:8
[INFO] [stdout]      |
[INFO] [stdout] 1435 | pub fn set_gpu_fuzzy_prepass_budget_mb(mb: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gpu_fuzzy_prep_budget_mb` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1439:15
[INFO] [stdout]      |
[INFO] [stdout] 1439 | pub(crate) fn gpu_fuzzy_prep_budget_mb() -> u64 {
[INFO] [stdout]      |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gpu_lev_full_scoring_enabled` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1484:4
[INFO] [stdout]      |
[INFO] [stdout] 1484 | fn gpu_lev_full_scoring_enabled() -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gpu_fuzzy_metrics_enabled` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1619:4
[INFO] [stdout]      |
[INFO] [stdout] 1619 | fn gpu_fuzzy_metrics_enabled() -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gpu_fuzzy_force` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1635:4
[INFO] [stdout]      |
[INFO] [stdout] 1635 | fn gpu_fuzzy_force() -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `DYNAMIC_GPU_TUNING` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1644:8
[INFO] [stdout]      |
[INFO] [stdout] 1644 | static DYNAMIC_GPU_TUNING: std::sync::atomic::AtomicBool =
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_dynamic_gpu_tuning` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1647:8
[INFO] [stdout]      |
[INFO] [stdout] 1647 | pub fn set_dynamic_gpu_tuning(enabled: bool) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dynamic_gpu_tuning_enabled` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1651:4
[INFO] [stdout]      |
[INFO] [stdout] 1651 | fn dynamic_gpu_tuning_enabled() -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `match_fuzzy_no_mid_blocked_cpu` is never used
[INFO] [stdout]     --> src/matching/mod.rs:2095:15
[INFO] [stdout]      |
[INFO] [stdout] 2095 | pub(crate) fn match_fuzzy_no_mid_blocked_cpu<F>(
[INFO] [stdout]      |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_BATCH_SIZE` is never used
[INFO] [stdout]     --> src/matching/mod.rs:5771:11
[INFO] [stdout]      |
[INFO] [stdout] 5771 | pub const DEFAULT_BATCH_SIZE: i64 = 50_000;
[INFO] [stdout]      |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `stream_match_gpu_hash_join` is never used
[INFO] [stdout]     --> src/matching/mod.rs:5951:14
[INFO] [stdout]      |
[INFO] [stdout] 5951 | pub async fn stream_match_gpu_hash_join<F>(
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `GpuHash` is never constructed
[INFO] [stdout]     --> src/matching/mod.rs:8163:9
[INFO] [stdout]      |
[INFO] [stdout] 8159 |     enum Index {
[INFO] [stdout]      |          ----- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 8163 |         GpuHash {
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `GpuHash` is never constructed
[INFO] [stdout]     --> src/matching/mod.rs:9230:9
[INFO] [stdout]      |
[INFO] [stdout] 9226 |     enum Index {
[INFO] [stdout]      |          ----- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 9230 |         GpuHash {
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `stream_match_advanced_l12_dual` is never used
[INFO] [stdout]      --> src/matching/mod.rs:10065:14
[INFO] [stdout]       |
[INFO] [stdout] 10065 | pub async fn stream_match_advanced_l12_dual<F>(
[INFO] [stdout]       |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `prewarm_gpu_contexts` is never used
[INFO] [stdout]      --> src/matching/mod.rs:11600:8
[INFO] [stdout]       |
[INFO] [stdout] 11600 | pub fn prewarm_gpu_contexts() {
[INFO] [stdout]       |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `barangay_code` and `city_code` are never read
[INFO] [stdout]   --> src/matching/advanced_matcher.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct AdvColumns {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 36 |     pub barangay_code: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 37 |     pub city_code: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AdvColumns` 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 `jw` is never used
[INFO] [stdout]    --> src/matching/advanced_matcher.rs:157:4
[INFO] [stdout]     |
[INFO] [stdout] 157 | fn jw(a: &str, b: &str) -> f32 {
[INFO] [stdout]     |    ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `nlev` is never used
[INFO] [stdout]    --> src/matching/advanced_matcher.rs:160:4
[INFO] [stdout]     |
[INFO] [stdout] 160 | fn nlev(a: &str, b: &str) -> f32 {
[INFO] [stdout]     |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fuzzy_score` is never used
[INFO] [stdout]    --> src/matching/advanced_matcher.rs:164:8
[INFO] [stdout]     |
[INFO] [stdout] 164 | pub fn fuzzy_score(
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LevelResult` is never constructed
[INFO] [stdout]   --> src/matching/cascade.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct LevelResult {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CascadeSummary` is never constructed
[INFO] [stdout]   --> src/matching/cascade.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct CascadeSummary {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Independent` is never constructed
[INFO] [stdout]   --> src/matching/cascade.rs:67:5
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub enum CascadeExclusionMode {
[INFO] [stdout]    |          -------------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 67 |     Independent,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CascadeExclusionMode` 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: method `get_unavailable_levels` is never used
[INFO] [stdout]    --> src/matching/cascade.rs:143:12
[INFO] [stdout]     |
[INFO] [stdout] 118 | impl GeoColumnStatus {
[INFO] [stdout]     | -------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn get_unavailable_levels(&self) -> Vec<(u8, String)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `adv_level_to_num` is never used
[INFO] [stdout]    --> src/matching/cascade.rs:191:8
[INFO] [stdout]     |
[INFO] [stdout] 191 | pub fn adv_level_to_num(level: AdvLevel) -> u8 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sorted_matches_by_id` is never used
[INFO] [stdout]    --> src/matching/cascade.rs:254:8
[INFO] [stdout]     |
[INFO] [stdout] 254 | pub fn sorted_matches_by_id(mut matches: Vec<MatchPair>) -> Vec<MatchPair> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `determine_runnable_levels` is never used
[INFO] [stdout]    --> src/matching/cascade.rs:476:8
[INFO] [stdout]     |
[INFO] [stdout] 476 | pub fn determine_runnable_levels(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `CascadeProgressFn` is never used
[INFO] [stdout]    --> src/matching/cascade.rs:520:10
[INFO] [stdout]     |
[INFO] [stdout] 520 | pub type CascadeProgressFn = Box<dyn Fn(CascadeProgress) + Send + Sync>;
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_streaming_config` is never used
[INFO] [stdout]    --> src/optimization/profile_calculator.rs:170:8
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub fn validate_streaming_config(profile: &SystemProfile, cfg: &StreamCfg) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `arch` is never read
[INFO] [stdout]  --> src/optimization/system_profiler.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct CpuInfo {
[INFO] [stdout]   |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 7 |     pub arch: String,
[INFO] [stdout]   |         ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `CpuInfo` 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 `load_env_file_from` is never used
[INFO] [stdout]   --> src/util/envfile.rs:57:8
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub fn load_env_file_from(path: &str) -> Result<std::collections::HashMap<String, String>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ParsedArgs` is never constructed
[INFO] [stdout]   --> src/cli/args.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct ParsedArgs {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_db_config` is never used
[INFO] [stdout]   --> src/cli/args.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub fn parse_db_config(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_db2_config` is never used
[INFO] [stdout]   --> src/cli/args.rs:86:8
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub fn parse_db2_config(primary: &DatabaseConfig) -> Option<DatabaseConfig> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_table_names` is never used
[INFO] [stdout]    --> src/cli/args.rs:111:8
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub fn parse_table_names(env_map: &HashMap<String, String>, args: &[String]) -> (String, String) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_algo_num` is never used
[INFO] [stdout]    --> src/cli/args.rs:126:8
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub fn parse_algo_num(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `algo_from_num` is never used
[INFO] [stdout]    --> src/cli/args.rs:144:8
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub fn algo_from_num(algo_num: u8) -> Option<MatchingAlgorithm> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_out_path` is never used
[INFO] [stdout]    --> src/cli/args.rs:158:8
[INFO] [stdout]     |
[INFO] [stdout] 158 | pub fn parse_out_path(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_format` is never used
[INFO] [stdout]    --> src/cli/args.rs:175:8
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub fn parse_format(app_cfg_opt: Option<&crate::config::AppConfig>, args: &[String]) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_required_args` is never used
[INFO] [stdout]    --> src/cli/args.rs:187:8
[INFO] [stdout]     |
[INFO] [stdout] 187 | pub fn has_required_args(args: &[String]) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_usage` is never used
[INFO] [stdout]    --> src/cli/args.rs:197:8
[INFO] [stdout]     |
[INFO] [stdout] 197 | pub fn print_usage(program_name: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_app_config` is never used
[INFO] [stdout]   --> src/cli/clap_parser.rs:98:12
[INFO] [stdout]    |
[INFO] [stdout] 97 | impl Cli {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] 98 |     pub fn to_app_config(&self) -> Result<AppConfig, ConfigError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_cli_to_app_config` is never used
[INFO] [stdout]    --> src/cli/clap_parser.rs:135:8
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub fn parse_cli_to_app_config() -> Result<AppConfig, ConfigError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CliFlags` is never constructed
[INFO] [stdout]   --> src/cli/flags.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct CliFlags {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_args`, `merge_env`, and `print_cascade_help` are never used
[INFO] [stdout]    --> src/cli/flags.rs:46:12
[INFO] [stdout]     |
[INFO] [stdout]  44 | impl CliFlags {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout]  45 |     /// Parse CLI flags from command-line arguments.
[INFO] [stdout]  46 |     pub fn from_args(args: &[String]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn merge_env(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub fn print_cascade_help() {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_bool_env` is never used
[INFO] [stdout]    --> src/cli/flags.rs:222:4
[INFO] [stdout]     |
[INFO] [stdout] 222 | fn parse_bool_env(name: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_threshold_string` is never used
[INFO] [stdout]    --> src/cli/flags.rs:230:4
[INFO] [stdout]     |
[INFO] [stdout] 230 | fn parse_threshold_string(s: &str) -> f32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ConfigError` is never used
[INFO] [stdout]  --> src/error.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum ConfigError {
[INFO] [stdout]   |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DbError` is never used
[INFO] [stdout]   --> src/error.rs:12:10
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub enum DbError {
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MatchError` is never used
[INFO] [stdout]   --> src/error.rs:20:10
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub enum MatchError {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `GpuError` is never used
[INFO] [stdout]   --> src/error.rs:28:10
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub enum GpuError {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ExportError` is never used
[INFO] [stdout]   --> src/error.rs:38:10
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub enum ExportError {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `EngineError` is never used
[INFO] [stdout]   --> src/error.rs:46:10
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub enum EngineError {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RunConfig` is never constructed
[INFO] [stdout]    --> src/orchestrator/mod.rs:104:12
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub struct RunConfig {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `AUTO_STREAM_THRESHOLD` is never used
[INFO] [stdout]    --> src/orchestrator/mod.rs:128:11
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub const AUTO_STREAM_THRESHOLD: i64 = 100_000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_schemas` is never used
[INFO] [stdout]    --> src/orchestrator/mod.rs:131:14
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub async fn validate_schemas(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `should_use_streaming` is never used
[INFO] [stdout]    --> src/orchestrator/mod.rs:156:14
[INFO] [stdout]     |
[INFO] [stdout] 156 | pub async fn should_use_streaming(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `algo_label_summary` is never used
[INFO] [stdout]    --> src/orchestrator/mod.rs:181:8
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub fn algo_label_summary(algo: MatchingAlgorithm) -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_auto_optimize` is never used
[INFO] [stdout]    --> src/orchestrator/mod.rs:202:8
[INFO] [stdout]     |
[INFO] [stdout] 202 | pub fn apply_auto_optimize(algorithm: MatchingAlgorithm) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SummaryBuilder` is never constructed
[INFO] [stdout]   --> src/orchestrator/summary.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct SummaryBuilder {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `with_counts`, `with_timestamps`, `with_algo`, `with_adv_level`, and `build` are never used
[INFO] [stdout]    --> src/orchestrator/summary.rs:79:12
[INFO] [stdout]     |
[INFO] [stdout]  77 | impl SummaryBuilder {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  78 |     /// Create a new summary builder with database and table info.
[INFO] [stdout]  79 |     pub fn new(db_name: &str, table1: &str, table2: &str) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub fn with_counts(mut self, total1: usize, total2: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn with_timestamps(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn with_algo(mut self, algo_used: &str, gpu_used: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn with_adv_level(mut self, level: AdvLevel, description: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn build(self) -> SummaryContext {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/config.rs:136:39
[INFO] [stdout]     |
[INFO] [stdout] 136 |         if self.database.port == 0 || self.database.port > 65535 {
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `validate` is never used
[INFO] [stdout]    --> src/config.rs:120:12
[INFO] [stdout]     |
[INFO] [stdout] 119 | impl AppConfig {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] 120 |     pub fn validate(&self) -> Result<(), ConfigError> {
[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_person_count_fast` is never used
[INFO] [stdout]    --> src/db/schema.rs:528:14
[INFO] [stdout]     |
[INFO] [stdout] 528 | pub async fn get_person_count_fast(pool: &MySqlPool, table: &str) -> Result<i64> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_person_rows_chunk_where` is never used
[INFO] [stdout]    --> src/db/schema.rs:678:14
[INFO] [stdout]     |
[INFO] [stdout] 678 | pub async fn fetch_person_rows_chunk_where(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `create` is never used
[INFO] [stdout]    --> src/export/csv_export.rs:305:12
[INFO] [stdout]     |
[INFO] [stdout] 303 | impl HouseholdCsvWriter {
[INFO] [stdout]     | ----------------------- associated function in this implementation
[INFO] [stdout] 304 |     /// Backward-compatible constructor (no metadata columns)
[INFO] [stdout] 305 |     pub fn create(path: &str) -> Result<Self> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `create` is never used
[INFO] [stdout]    --> src/export/csv_export.rs:371:12
[INFO] [stdout]     |
[INFO] [stdout] 370 | impl CsvStreamWriter {
[INFO] [stdout]     | -------------------- associated function in this implementation
[INFO] [stdout] 371 |     pub fn create(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/export/xlsx_export.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct SummaryContext {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub overlap_count: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 39 |     pub unique_algo1: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 40 |     pub unique_algo2: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fetch_time: Duration,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 44 |     pub match1_time: Duration,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 45 |     pub match2_time: Duration,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 46 |     pub export_time: Duration,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub mem_used_start_mb: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 50 |     pub mem_used_end_mb: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SummaryContext` 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 `create` is never used
[INFO] [stdout]    --> src/export/xlsx_export.rs:523:12
[INFO] [stdout]     |
[INFO] [stdout] 522 | impl XlsxStreamWriter {
[INFO] [stdout]     | --------------------- associated function in this implementation
[INFO] [stdout] 523 |     pub fn create(out_path: &str) -> Result<Self> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `export_summary_xlsx` is never used
[INFO] [stdout]    --> src/export/xlsx_export.rs:770:8
[INFO] [stdout]     |
[INFO] [stdout] 770 | pub fn export_summary_xlsx(out_path: &str, summary: &SummaryContext) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gpu_fuzzy_prep_enabled` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1427:4
[INFO] [stdout]      |
[INFO] [stdout] 1427 | fn gpu_fuzzy_prep_enabled() -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `GPU_FUZZY_PREPASS_BUDGET_MB` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1432:8
[INFO] [stdout]      |
[INFO] [stdout] 1432 | static GPU_FUZZY_PREPASS_BUDGET_MB: std::sync::atomic::AtomicU64 =
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_gpu_fuzzy_prepass_budget_mb` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1435:8
[INFO] [stdout]      |
[INFO] [stdout] 1435 | pub fn set_gpu_fuzzy_prepass_budget_mb(mb: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gpu_fuzzy_prep_budget_mb` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1439:15
[INFO] [stdout]      |
[INFO] [stdout] 1439 | pub(crate) fn gpu_fuzzy_prep_budget_mb() -> u64 {
[INFO] [stdout]      |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gpu_lev_full_scoring_enabled` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1484:4
[INFO] [stdout]      |
[INFO] [stdout] 1484 | fn gpu_lev_full_scoring_enabled() -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `should_enable_gpu_fuzzy_by_heuristic` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1509:4
[INFO] [stdout]      |
[INFO] [stdout] 1509 | fn should_enable_gpu_fuzzy_by_heuristic(table1: &[Person], table2: &[Person]) -> (bool, String) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gpu_fuzzy_metrics_enabled` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1619:4
[INFO] [stdout]      |
[INFO] [stdout] 1619 | fn gpu_fuzzy_metrics_enabled() -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gpu_fuzzy_force` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1635:4
[INFO] [stdout]      |
[INFO] [stdout] 1635 | fn gpu_fuzzy_force() -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `DYNAMIC_GPU_TUNING` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1644:8
[INFO] [stdout]      |
[INFO] [stdout] 1644 | static DYNAMIC_GPU_TUNING: std::sync::atomic::AtomicBool =
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_dynamic_gpu_tuning` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1647:8
[INFO] [stdout]      |
[INFO] [stdout] 1647 | pub fn set_dynamic_gpu_tuning(enabled: bool) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dynamic_gpu_tuning_enabled` is never used
[INFO] [stdout]     --> src/matching/mod.rs:1651:4
[INFO] [stdout]      |
[INFO] [stdout] 1651 | fn dynamic_gpu_tuning_enabled() -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `match_fuzzy_no_mid_blocked_cpu` is never used
[INFO] [stdout]     --> src/matching/mod.rs:2095:15
[INFO] [stdout]      |
[INFO] [stdout] 2095 | pub(crate) fn match_fuzzy_no_mid_blocked_cpu<F>(
[INFO] [stdout]      |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_BATCH_SIZE` is never used
[INFO] [stdout]     --> src/matching/mod.rs:5771:11
[INFO] [stdout]      |
[INFO] [stdout] 5771 | pub const DEFAULT_BATCH_SIZE: i64 = 50_000;
[INFO] [stdout]      |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `stream_match_gpu_hash_join` is never used
[INFO] [stdout]     --> src/matching/mod.rs:5951:14
[INFO] [stdout]      |
[INFO] [stdout] 5951 | pub async fn stream_match_gpu_hash_join<F>(
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `GpuHash` is never constructed
[INFO] [stdout]     --> src/matching/mod.rs:8163:9
[INFO] [stdout]      |
[INFO] [stdout] 8159 |     enum Index {
[INFO] [stdout]      |          ----- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 8163 |         GpuHash {
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `GpuHash` is never constructed
[INFO] [stdout]     --> src/matching/mod.rs:9230:9
[INFO] [stdout]      |
[INFO] [stdout] 9226 |     enum Index {
[INFO] [stdout]      |          ----- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 9230 |         GpuHash {
[INFO] [stdout]      |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `stream_match_advanced_l12_dual` is never used
[INFO] [stdout]      --> src/matching/mod.rs:10065:14
[INFO] [stdout]       |
[INFO] [stdout] 10065 | pub async fn stream_match_advanced_l12_dual<F>(
[INFO] [stdout]       |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `prewarm_gpu_contexts` is never used
[INFO] [stdout]      --> src/matching/mod.rs:11600:8
[INFO] [stdout]       |
[INFO] [stdout] 11600 | pub fn prewarm_gpu_contexts() {
[INFO] [stdout]       |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `barangay_code` and `city_code` are never read
[INFO] [stdout]   --> src/matching/advanced_matcher.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct AdvColumns {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 36 |     pub barangay_code: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 37 |     pub city_code: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AdvColumns` 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 `jw` is never used
[INFO] [stdout]    --> src/matching/advanced_matcher.rs:157:4
[INFO] [stdout]     |
[INFO] [stdout] 157 | fn jw(a: &str, b: &str) -> f32 {
[INFO] [stdout]     |    ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `nlev` is never used
[INFO] [stdout]    --> src/matching/advanced_matcher.rs:160:4
[INFO] [stdout]     |
[INFO] [stdout] 160 | fn nlev(a: &str, b: &str) -> f32 {
[INFO] [stdout]     |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fuzzy_score` is never used
[INFO] [stdout]    --> src/matching/advanced_matcher.rs:164:8
[INFO] [stdout]     |
[INFO] [stdout] 164 | pub fn fuzzy_score(
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `advanced_match_inmemory_gpu` is never used
[INFO] [stdout]    --> src/matching/advanced_matcher.rs:620:8
[INFO] [stdout]     |
[INFO] [stdout] 620 | pub fn advanced_match_inmemory_gpu(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LevelResult` is never constructed
[INFO] [stdout]   --> src/matching/cascade.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct LevelResult {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CascadeSummary` is never constructed
[INFO] [stdout]   --> src/matching/cascade.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct CascadeSummary {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Independent` is never constructed
[INFO] [stdout]   --> src/matching/cascade.rs:67:5
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub enum CascadeExclusionMode {
[INFO] [stdout]    |          -------------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 67 |     Independent,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CascadeExclusionMode` 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: method `get_unavailable_levels` is never used
[INFO] [stdout]    --> src/matching/cascade.rs:143:12
[INFO] [stdout]     |
[INFO] [stdout] 118 | impl GeoColumnStatus {
[INFO] [stdout]     | -------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn get_unavailable_levels(&self) -> Vec<(u8, String)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `adv_level_to_num` is never used
[INFO] [stdout]    --> src/matching/cascade.rs:191:8
[INFO] [stdout]     |
[INFO] [stdout] 191 | pub fn adv_level_to_num(level: AdvLevel) -> u8 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sorted_matches_by_id` is never used
[INFO] [stdout]    --> src/matching/cascade.rs:254:8
[INFO] [stdout]     |
[INFO] [stdout] 254 | pub fn sorted_matches_by_id(mut matches: Vec<MatchPair>) -> Vec<MatchPair> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `determine_runnable_levels` is never used
[INFO] [stdout]    --> src/matching/cascade.rs:476:8
[INFO] [stdout]     |
[INFO] [stdout] 476 | pub fn determine_runnable_levels(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `CascadeProgressFn` is never used
[INFO] [stdout]    --> src/matching/cascade.rs:520:10
[INFO] [stdout]     |
[INFO] [stdout] 520 | pub type CascadeProgressFn = Box<dyn Fn(CascadeProgress) + Send + Sync>;
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_streaming_config` is never used
[INFO] [stdout]    --> src/optimization/profile_calculator.rs:170:8
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub fn validate_streaming_config(profile: &SystemProfile, cfg: &StreamCfg) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `arch` is never read
[INFO] [stdout]  --> src/optimization/system_profiler.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct CpuInfo {
[INFO] [stdout]   |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 7 |     pub arch: String,
[INFO] [stdout]   |         ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `CpuInfo` 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 `load_env_file_from` is never used
[INFO] [stdout]   --> src/util/envfile.rs:57:8
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub fn load_env_file_from(path: &str) -> Result<std::collections::HashMap<String, String>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ParsedArgs` is never constructed
[INFO] [stdout]   --> src/cli/args.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct ParsedArgs {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_db_config` is never used
[INFO] [stdout]   --> src/cli/args.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub fn parse_db_config(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_db2_config` is never used
[INFO] [stdout]   --> src/cli/args.rs:86:8
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub fn parse_db2_config(primary: &DatabaseConfig) -> Option<DatabaseConfig> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_table_names` is never used
[INFO] [stdout]    --> src/cli/args.rs:111:8
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub fn parse_table_names(env_map: &HashMap<String, String>, args: &[String]) -> (String, String) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_algo_num` is never used
[INFO] [stdout]    --> src/cli/args.rs:126:8
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub fn parse_algo_num(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `algo_from_num` is never used
[INFO] [stdout]    --> src/cli/args.rs:144:8
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub fn algo_from_num(algo_num: u8) -> Option<MatchingAlgorithm> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_out_path` is never used
[INFO] [stdout]    --> src/cli/args.rs:158:8
[INFO] [stdout]     |
[INFO] [stdout] 158 | pub fn parse_out_path(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_format` is never used
[INFO] [stdout]    --> src/cli/args.rs:175:8
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub fn parse_format(app_cfg_opt: Option<&crate::config::AppConfig>, args: &[String]) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_required_args` is never used
[INFO] [stdout]    --> src/cli/args.rs:187:8
[INFO] [stdout]     |
[INFO] [stdout] 187 | pub fn has_required_args(args: &[String]) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_usage` is never used
[INFO] [stdout]    --> src/cli/args.rs:197:8
[INFO] [stdout]     |
[INFO] [stdout] 197 | pub fn print_usage(program_name: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_app_config` is never used
[INFO] [stdout]   --> src/cli/clap_parser.rs:98:12
[INFO] [stdout]    |
[INFO] [stdout] 97 | impl Cli {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] 98 |     pub fn to_app_config(&self) -> Result<AppConfig, ConfigError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_cli_to_app_config` is never used
[INFO] [stdout]    --> src/cli/clap_parser.rs:135:8
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub fn parse_cli_to_app_config() -> Result<AppConfig, ConfigError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CliFlags` is never constructed
[INFO] [stdout]   --> src/cli/flags.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct CliFlags {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_args`, `merge_env`, and `print_cascade_help` are never used
[INFO] [stdout]    --> src/cli/flags.rs:46:12
[INFO] [stdout]     |
[INFO] [stdout]  44 | impl CliFlags {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout]  45 |     /// Parse CLI flags from command-line arguments.
[INFO] [stdout]  46 |     pub fn from_args(args: &[String]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn merge_env(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub fn print_cascade_help() {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_bool_env` is never used
[INFO] [stdout]    --> src/cli/flags.rs:222:4
[INFO] [stdout]     |
[INFO] [stdout] 222 | fn parse_bool_env(name: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_threshold_string` is never used
[INFO] [stdout]    --> src/cli/flags.rs:230:4
[INFO] [stdout]     |
[INFO] [stdout] 230 | fn parse_threshold_string(s: &str) -> f32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ConfigError` is never used
[INFO] [stdout]  --> src/error.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum ConfigError {
[INFO] [stdout]   |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DbError` is never used
[INFO] [stdout]   --> src/error.rs:12:10
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub enum DbError {
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MatchError` is never used
[INFO] [stdout]   --> src/error.rs:20:10
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub enum MatchError {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `GpuError` is never used
[INFO] [stdout]   --> src/error.rs:28:10
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub enum GpuError {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ExportError` is never used
[INFO] [stdout]   --> src/error.rs:38:10
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub enum ExportError {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `EngineError` is never used
[INFO] [stdout]   --> src/error.rs:46:10
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub enum EngineError {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RunConfig` is never constructed
[INFO] [stdout]    --> src/orchestrator/mod.rs:104:12
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub struct RunConfig {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `AUTO_STREAM_THRESHOLD` is never used
[INFO] [stdout]    --> src/orchestrator/mod.rs:128:11
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub const AUTO_STREAM_THRESHOLD: i64 = 100_000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_schemas` is never used
[INFO] [stdout]    --> src/orchestrator/mod.rs:131:14
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub async fn validate_schemas(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `should_use_streaming` is never used
[INFO] [stdout]    --> src/orchestrator/mod.rs:156:14
[INFO] [stdout]     |
[INFO] [stdout] 156 | pub async fn should_use_streaming(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `algo_label_summary` is never used
[INFO] [stdout]    --> src/orchestrator/mod.rs:181:8
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub fn algo_label_summary(algo: MatchingAlgorithm) -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_auto_optimize` is never used
[INFO] [stdout]    --> src/orchestrator/mod.rs:202:8
[INFO] [stdout]     |
[INFO] [stdout] 202 | pub fn apply_auto_optimize(algorithm: MatchingAlgorithm) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SummaryBuilder` is never constructed
[INFO] [stdout]   --> src/orchestrator/summary.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct SummaryBuilder {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `with_counts`, `with_timestamps`, `with_algo`, `with_adv_level`, and `build` are never used
[INFO] [stdout]    --> src/orchestrator/summary.rs:79:12
[INFO] [stdout]     |
[INFO] [stdout]  77 | impl SummaryBuilder {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  78 |     /// Create a new summary builder with database and table info.
[INFO] [stdout]  79 |     pub fn new(db_name: &str, table1: &str, table2: &str) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub fn with_counts(mut self, total1: usize, total2: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn with_timestamps(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn with_algo(mut self, algo_used: &str, gpu_used: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn with_adv_level(mut self, level: AdvLevel, description: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn build(self) -> SummaryContext {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/config.rs:136:39
[INFO] [stdout]     |
[INFO] [stdout] 136 |         if self.database.port == 0 || self.database.port > 65535 {
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 55s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: num-bigint-dig v0.8.4
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
[INFO] running `Command { std: "docker" "inspect" "40f292fa052c2484f4dc9fd902b09506f1acf108de6d38baf9769c90ba9272ec", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "40f292fa052c2484f4dc9fd902b09506f1acf108de6d38baf9769c90ba9272ec", kill_on_drop: false }`
[INFO] [stdout] 40f292fa052c2484f4dc9fd902b09506f1acf108de6d38baf9769c90ba9272ec
