[INFO] cloning repository https://github.com/jtlab-studio/rust-gpx-smoother
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/jtlab-studio/rust-gpx-smoother" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjtlab-studio%2Frust-gpx-smoother", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjtlab-studio%2Frust-gpx-smoother'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] c2c8c758bf1511d9fa48461ed1c7d7d2ae962646
[INFO] testing jtlab-studio/rust-gpx-smoother against beta-2025-09-21 for beta-1.91-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjtlab-studio%2Frust-gpx-smoother" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[INFO] [stderr] Updating files:  81% (1400/1716)
Updating files:  82% (1408/1716)
Updating files:  83% (1425/1716)
Updating files:  84% (1442/1716)
Updating files:  85% (1459/1716)
Updating files:  86% (1476/1716)
Updating files:  87% (1493/1716)
Updating files:  88% (1511/1716)
Updating files:  89% (1528/1716)
Updating files:  90% (1545/1716)
Updating files:  91% (1562/1716)
Updating files:  92% (1579/1716)
Updating files:  93% (1596/1716)
Updating files:  94% (1614/1716)
Updating files:  95% (1631/1716)
Updating files:  96% (1648/1716)
Updating files:  97% (1665/1716)
Updating files:  98% (1682/1716)
Updating files:  99% (1699/1716)
Updating files: 100% (1716/1716)
Updating files: 100% (1716/1716), done.
[INFO] started tweaking git repo https://github.com/jtlab-studio/rust-gpx-smoother
[INFO] finished tweaking git repo https://github.com/jtlab-studio/rust-gpx-smoother
[INFO] tweaked toml for git repo https://github.com/jtlab-studio/rust-gpx-smoother written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/jtlab-studio/rust-gpx-smoother on toolchain beta-2025-09-21
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2025-09-21" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/jtlab-studio/rust-gpx-smoother 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" "+beta-2025-09-21" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-09-21" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 222e0791aa1525d7d70930b6f3fd93c1a07cd774b4fa4202a369ae6f0c580961
[INFO] running `Command { std: "docker" "start" "-a" "222e0791aa1525d7d70930b6f3fd93c1a07cd774b4fa4202a369ae6f0c580961", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "222e0791aa1525d7d70930b6f3fd93c1a07cd774b4fa4202a369ae6f0c580961", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "222e0791aa1525d7d70930b6f3fd93c1a07cd774b4fa4202a369ae6f0c580961", kill_on_drop: false }`
[INFO] [stdout] 222e0791aa1525d7d70930b6f3fd93c1a07cd774b4fa4202a369ae6f0c580961
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-09-21" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 980a82fe1284ffe0ec52ed1f1f1934f10c6771fd8747072629052644eb0e4666
[INFO] running `Command { std: "docker" "start" "-a" "980a82fe1284ffe0ec52ed1f1f1934f10c6771fd8747072629052644eb0e4666", kill_on_drop: false }`
[INFO] [stderr]    Compiling libm v0.2.15
[INFO] [stderr]    Compiling memchr v2.7.4
[INFO] [stderr]    Compiling byteorder v1.5.0
[INFO] [stderr]    Compiling heapless v0.8.0
[INFO] [stderr]    Compiling libc v0.2.172
[INFO] [stderr]    Compiling stable_deref_trait v1.2.0
[INFO] [stderr]    Compiling object v0.36.7
[INFO] [stderr]    Compiling smallvec v1.15.0
[INFO] [stderr]    Compiling gimli v0.31.1
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling miniz_oxide v0.8.8
[INFO] [stderr]    Compiling error-chain v0.12.4
[INFO] [stderr]    Compiling syn v2.0.101
[INFO] [stderr]    Compiling rustc-demangle v0.1.24
[INFO] [stderr]    Compiling libm v0.1.4
[INFO] [stderr]    Compiling hashbrown v0.15.3
[INFO] [stderr]    Compiling itertools v0.11.0
[INFO] [stderr]    Compiling robust v1.2.0
[INFO] [stderr]    Compiling time v0.3.41
[INFO] [stderr]    Compiling xml-rs v0.8.26
[INFO] [stderr]    Compiling float_next_after v1.0.0
[INFO] [stderr]    Compiling hash32 v0.3.1
[INFO] [stderr]    Compiling assert_approx_eq v1.1.0
[INFO] [stderr]    Compiling csv-core v0.1.12
[INFO] [stderr]    Compiling geographiclib-rs v0.2.5
[INFO] [stderr]    Compiling biquad v0.4.2
[INFO] [stderr]    Compiling num_cpus v1.16.0
[INFO] [stderr]    Compiling rstar v0.12.2
[INFO] [stderr]    Compiling approx v0.5.1
[INFO] [stderr]    Compiling spade v2.13.1
[INFO] [stderr]    Compiling earcutr v0.4.3
[INFO] [stderr]    Compiling geo-types v0.7.16
[INFO] [stderr]    Compiling geo v0.28.0
[INFO] [stderr]    Compiling addr2line v0.24.2
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling backtrace v0.3.75
[INFO] [stderr]    Compiling gpx v0.9.1
[INFO] [stderr]    Compiling serde v1.0.219
[INFO] [stderr]    Compiling chrono v0.4.41
[INFO] [stderr]    Compiling csv v1.3.1
[INFO] [stderr]    Compiling rust-gpx-smoother v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/hybrid_analysis.rs:313:9
[INFO] [stdout]     |
[INFO] [stdout] 313 |         (processed_loss / processed_gain * 100.0)
[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] 313 -         (processed_loss / processed_gain * 100.0)
[INFO] [stdout] 313 +         processed_loss / processed_gain * 100.0
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/distbased_elevation_processor.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use std::collections::HashMap;
[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: `Write`
[INFO] [stdout]  --> src/gpx_preprocessor.rs:8:32
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::io::{BufReader, Read, Write};
[INFO] [stdout]   |                                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `incline_analysis`
[INFO] [stdout]    --> src/gpx_processor.rs:218:9
[INFO] [stdout]     |
[INFO] [stdout] 218 |     let incline_analysis = analyze_inclines_default(deadzone_filtered_elevations.clone(), processed_distances.clone());
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_incline_analysis`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input_path`
[INFO] [stdout]    --> src/gpx_preprocessor.rs:332:5
[INFO] [stdout]     |
[INFO] [stdout] 332 |     input_path: &Path,
[INFO] [stdout]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_input_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `coord_count` is assigned to, but never used
[INFO] [stdout]    --> src/gpx_preprocessor.rs:906:13
[INFO] [stdout]     |
[INFO] [stdout] 906 |     let mut coord_count = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_coord_count` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/single_interval_analysis.rs:899:9
[INFO] [stdout]     |
[INFO] [stdout] 899 |     let mut repaired = content.to_string();
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `original_error`
[INFO] [stdout]     --> src/single_interval_analysis.rs:1014:56
[INFO] [stdout]      |
[INFO] [stdout] 1014 | fn try_aggressive_repair_and_read_gpx(gpx_path: &Path, original_error: &str) -> Result<Gpx, Box<dyn std::error::Error>> {
[INFO] [stdout]      |                                                        ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_original_error`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `source` and `notes` are never read
[INFO] [stdout]   --> src/main.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 31 | struct OfficialElevationRecord {
[INFO] [stdout]    |        ----------------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 35 |     source: String,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 36 |     #[serde(default)]
[INFO] [stdout] 37 |     notes: String,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OfficialElevationRecord` 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: struct `GpxAnalysis` is never constructed
[INFO] [stdout]   --> src/main.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | struct GpxAnalysis {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Original`, `Capping`, `Flat21`, and `PostCap` are never constructed
[INFO] [stdout]   --> src/custom_smoother.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum SmoothingVariant {
[INFO] [stdout]    |          ---------------- variants in this enum
[INFO] [stdout] 19 |     Original,   // Adaptive 83/5-point with conditional capping
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 20 |     Capping,    // 5-point smoothing + capping for ALL routes
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 21 |     Flat21,     // 21-point for flat, 5-point for hilly
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 22 |     PostCap,    // 5-point + capping + 83-point post-capping smoothing
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SmoothingVariant` 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 items `new` and `process_elevation_data` are never used
[INFO] [stdout]    --> src/custom_smoother.rs:28:12
[INFO] [stdout]     |
[INFO] [stdout]  27 | impl ElevationData {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  28 |     pub fn new(enhanced_altitude: Vec<f64>, cumulative_distance: Vec<f64>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 703 |     pub fn process_elevation_data(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_custom_original` is never used
[INFO] [stdout]    --> src/custom_smoother.rs:717:8
[INFO] [stdout]     |
[INFO] [stdout] 717 | pub fn create_custom_original(elevations: Vec<f64>, distances: Vec<f64>) -> ElevationData {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_custom_capping` is never used
[INFO] [stdout]    --> src/custom_smoother.rs:721:8
[INFO] [stdout]     |
[INFO] [stdout] 721 | pub fn create_custom_capping(elevations: Vec<f64>, distances: Vec<f64>) -> ElevationData {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_custom_flat21` is never used
[INFO] [stdout]    --> src/custom_smoother.rs:725:8
[INFO] [stdout]     |
[INFO] [stdout] 725 | pub fn create_custom_flat21(elevations: Vec<f64>, distances: Vec<f64>) -> ElevationData {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_custom_postcap` is never used
[INFO] [stdout]    --> src/custom_smoother.rs:729:8
[INFO] [stdout]     |
[INFO] [stdout] 729 | pub fn create_custom_postcap(elevations: Vec<f64>, distances: Vec<f64>) -> ElevationData {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_custom_distbased` is never used
[INFO] [stdout]    --> src/custom_smoother.rs:733:8
[INFO] [stdout]     |
[INFO] [stdout] 733 | pub fn create_custom_distbased(elevations: Vec<f64>, distances: Vec<f64>) -> ElevationData {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_custom_symmetric_fixed` is never used
[INFO] [stdout]    --> src/custom_smoother.rs:738:8
[INFO] [stdout]     |
[INFO] [stdout] 738 | pub fn create_custom_symmetric_fixed(elevations: Vec<f64>, distances: Vec<f64>) -> ElevationData {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_custom_distbased_adaptive` is never used
[INFO] [stdout]    --> src/custom_smoother.rs:743:8
[INFO] [stdout]     |
[INFO] [stdout] 743 | pub fn create_custom_distbased_adaptive(elevations: Vec<f64>, distances: Vec<f64>) -> ElevationData {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `apply_adaptive_distance_based_processing` and `apply_adaptive_deadband_filtering` are never used
[INFO] [stdout]    --> src/custom_smoother.rs:754:8
[INFO] [stdout]     |
[INFO] [stdout] 752 | impl ElevationData {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] 753 |     /// Adaptive distance-based processing with terrain-specific parameters
[INFO] [stdout] 754 |     fn apply_adaptive_distance_based_processing(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 813 |     fn apply_adaptive_deadband_filtering(&mut self, threshold_meters: f64) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AnalysisResult` is never constructed
[INFO] [stdout]   --> src/simplified_analysis.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct AnalysisResult {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GpxFileData` is never constructed
[INFO] [stdout]   --> src/simplified_analysis.rs:48:8
[INFO] [stdout]    |
[INFO] [stdout] 48 | struct GpxFileData {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProcessingResult` is never constructed
[INFO] [stdout]   --> src/simplified_analysis.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | struct ProcessingResult {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_simplified_analysis` is never used
[INFO] [stdout]   --> src/simplified_analysis.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub fn run_simplified_analysis(gpx_folder: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_gpx_data` is never used
[INFO] [stdout]    --> src/simplified_analysis.rs:118:4
[INFO] [stdout]     |
[INFO] [stdout] 118 | fn load_gpx_data(gpx_folder: &str) -> Result<(HashMap<String, GpxFileData>, Vec<String>), Box<dyn std::error::Error>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `process_distbased_range` is never used
[INFO] [stdout]    --> src/simplified_analysis.rs:198:4
[INFO] [stdout]     |
[INFO] [stdout] 198 | fn process_distbased_range(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `process_single_file` is never used
[INFO] [stdout]    --> src/simplified_analysis.rs:271:4
[INFO] [stdout]     |
[INFO] [stdout] 271 | fn process_single_file(file_data: &GpxFileData, interval: f32) -> ProcessingResult {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_raw_gain_loss` is never used
[INFO] [stdout]    --> src/simplified_analysis.rs:326:4
[INFO] [stdout]     |
[INFO] [stdout] 326 | fn calculate_raw_gain_loss(elevations: &[f64]) -> (u32, u32) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_analysis_result` is never used
[INFO] [stdout]    --> src/simplified_analysis.rs:342:4
[INFO] [stdout]     |
[INFO] [stdout] 342 | fn create_analysis_result(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_results` is never used
[INFO] [stdout]    --> src/simplified_analysis.rs:483:4
[INFO] [stdout]     |
[INFO] [stdout] 483 | fn write_results(results: &[AnalysisResult], output_path: &Path) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_summary` is never used
[INFO] [stdout]    --> src/simplified_analysis.rs:551:4
[INFO] [stdout]     |
[INFO] [stdout] 551 | fn print_summary(results: &[AnalysisResult]) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProcessingResult` is never constructed
[INFO] [stdout]   --> src/gpx_output_analysis.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | struct ProcessingResult {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_gpx_output_analysis` is never used
[INFO] [stdout]   --> src/gpx_output_analysis.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub fn run_gpx_output_analysis(gpx_folder: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `process_single_gpx` is never used
[INFO] [stdout]   --> src/gpx_output_analysis.rs:90:4
[INFO] [stdout]    |
[INFO] [stdout] 90 | fn process_single_gpx(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_gain_loss` is never used
[INFO] [stdout]    --> src/gpx_output_analysis.rs:283:4
[INFO] [stdout]     |
[INFO] [stdout] 283 | fn calculate_gain_loss(elevations: &[f64]) -> (f64, f64) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_summary_csv` is never used
[INFO] [stdout]    --> src/gpx_output_analysis.rs:299:4
[INFO] [stdout]     |
[INFO] [stdout] 299 | fn write_summary_csv(results: &[ProcessingResult], output_path: &Path) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_processing_summary` is never used
[INFO] [stdout]    --> src/gpx_output_analysis.rs:340:4
[INFO] [stdout]     |
[INFO] [stdout] 340 | fn print_processing_summary(results: &[ProcessingResult]) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `filename`, `official_gain`, `processed_gain`, and `processed_loss` are never read
[INFO] [stdout]   --> src/assymetric_analysis.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 58 | struct FileResult {
[INFO] [stdout]    |        ---------- fields in this struct
[INFO] [stdout] 59 |     filename: String,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 60 |     official_gain: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 61 |     processed_gain: f32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 62 |     processed_loss: f32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FileResult` 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 `run_comprehensive_directional_deadzone_analysis` is never used
[INFO] [stdout]    --> src/assymetric_analysis.rs:844:8
[INFO] [stdout]     |
[INFO] [stdout] 844 | pub fn run_comprehensive_directional_deadzone_analysis(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `filename` is never read
[INFO] [stdout]   --> src/hybrid_analysis.rs:51:5
[INFO] [stdout]    |
[INFO] [stdout] 50 | struct GpxFileData {
[INFO] [stdout]    |        ----------- field in this struct
[INFO] [stdout] 51 |     filename: String,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GpxFileData` 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: struct `InclineSegment` is never constructed
[INFO] [stdout]  --> src/incline_analyzer.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct InclineSegment {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DeclineSegment` is never constructed
[INFO] [stdout]   --> src/incline_analyzer.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct DeclineSegment {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InclineAnalysisConfig` is never constructed
[INFO] [stdout]   --> src/incline_analyzer.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct InclineAnalysisConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InclineAnalysisResult` is never constructed
[INFO] [stdout]   --> src/incline_analyzer.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub struct InclineAnalysisResult {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `analyze_inclines_default` is never used
[INFO] [stdout]   --> src/incline_analyzer.rs:74:8
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub fn analyze_inclines_default(raw_elevations: Vec<f64>, distances: Vec<f64>) -> InclineAnalysisResult {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `analyze_inclines` is never used
[INFO] [stdout]   --> src/incline_analyzer.rs:78:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub fn analyze_inclines(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_gradients` is never used
[INFO] [stdout]    --> src/incline_analyzer.rs:107:4
[INFO] [stdout]     |
[INFO] [stdout] 107 | fn calculate_gradients(elevation_data: &ElevationData) -> Vec<f64> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `identify_climbing_segments` is never used
[INFO] [stdout]    --> src/incline_analyzer.rs:113:4
[INFO] [stdout]     |
[INFO] [stdout] 113 | fn identify_climbing_segments(gradients: &[f64], config: &InclineAnalysisConfig) -> Vec<(usize, usize)> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `identify_declining_segments` is never used
[INFO] [stdout]    --> src/incline_analyzer.rs:141:4
[INFO] [stdout]     |
[INFO] [stdout] 141 | fn identify_declining_segments(gradients: &[f64], config: &InclineAnalysisConfig) -> Vec<(usize, usize)> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `filter_incline_segments` is never used
[INFO] [stdout]    --> src/incline_analyzer.rs:169:4
[INFO] [stdout]     |
[INFO] [stdout] 169 | fn filter_incline_segments(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `filter_decline_segments` is never used
[INFO] [stdout]    --> src/incline_analyzer.rs:186:4
[INFO] [stdout]     |
[INFO] [stdout] 186 | fn filter_decline_segments(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_incline_segment_with_data` is never used
[INFO] [stdout]    --> src/incline_analyzer.rs:203:4
[INFO] [stdout]     |
[INFO] [stdout] 203 | fn create_incline_segment_with_data(start_idx: usize, end_idx: usize, elevation_data: &ElevationData) -> Option<InclineSegment> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_decline_segment_with_data` is never used
[INFO] [stdout]    --> src/incline_analyzer.rs:241:4
[INFO] [stdout]     |
[INFO] [stdout] 241 | fn create_decline_segment_with_data(start_idx: usize, end_idx: usize, elevation_data: &ElevationData) -> Option<DeclineSegment> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_analysis_result` is never used
[INFO] [stdout]    --> src/incline_analyzer.rs:279:4
[INFO] [stdout]     |
[INFO] [stdout] 279 | fn create_analysis_result(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_analysis_summary` is never used
[INFO] [stdout]    --> src/incline_analyzer.rs:340:4
[INFO] [stdout]     |
[INFO] [stdout] 340 | fn print_analysis_summary(result: &InclineAnalysisResult) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAIN_THRESHOLD` is never used
[INFO] [stdout]   --> src/gpx_processor.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const GAIN_THRESHOLD: f64 = 0.10;  // 10cm for elevation gains
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LOSS_THRESHOLD` is never used
[INFO] [stdout]   --> src/gpx_processor.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const LOSS_THRESHOLD: f64 = 0.05;  // 5cm for elevation losses
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_ELEVATION_CHANGE_PER_POINT` is never used
[INFO] [stdout]   --> src/gpx_processor.rs:21:7
[INFO] [stdout]    |
[INFO] [stdout] 21 | const MAX_ELEVATION_CHANGE_PER_POINT: f64 = 2.0;  // 2m max change between consecutive points
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPIKE_DETECTION_WINDOW` is never used
[INFO] [stdout]   --> src/gpx_processor.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const SPIKE_DETECTION_WINDOW: usize = 3;           // Look at 3-point windows for spike detection
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProcessingResult` is never constructed
[INFO] [stdout]   --> src/gpx_processor.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct ProcessingResult {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `process_and_save_gpx_files` is never used
[INFO] [stdout]   --> src/gpx_processor.rs:54:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub fn process_and_save_gpx_files(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `process_single_gpx_file_with_spike_filtering` is never used
[INFO] [stdout]    --> src/gpx_processor.rs:126:4
[INFO] [stdout]     |
[INFO] [stdout] 126 | fn process_single_gpx_file_with_spike_filtering(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SpikeFilteringStats` is never constructed
[INFO] [stdout]    --> src/gpx_processor.rs:284:8
[INFO] [stdout]     |
[INFO] [stdout] 284 | struct SpikeFilteringStats {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `filter_elevation_spikes` is never used
[INFO] [stdout]    --> src/gpx_processor.rs:291:4
[INFO] [stdout]     |
[INFO] [stdout] 291 | fn filter_elevation_spikes(elevations: &[f64]) -> (Vec<f64>, SpikeFilteringStats) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_directional_deadzone` is never used
[INFO] [stdout]    --> src/gpx_processor.rs:363:4
[INFO] [stdout]     |
[INFO] [stdout] 363 | fn apply_directional_deadzone(elevations: &[f64]) -> Vec<f64> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_distances` is never used
[INFO] [stdout]    --> src/gpx_processor.rs:392:4
[INFO] [stdout]     |
[INFO] [stdout] 392 | fn calculate_distances(coords: &[(f64, f64, f64)]) -> Vec<f64> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_raw_gain_loss` is never used
[INFO] [stdout]    --> src/gpx_processor.rs:405:4
[INFO] [stdout]     |
[INFO] [stdout] 405 | fn calculate_raw_gain_loss(elevations: &[f64]) -> (f64, f64) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clean_filename` is never used
[INFO] [stdout]    --> src/gpx_processor.rs:421:4
[INFO] [stdout]     |
[INFO] [stdout] 421 | fn clean_filename(name: &str) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_error_result` is never used
[INFO] [stdout]    --> src/gpx_processor.rs:441:4
[INFO] [stdout]     |
[INFO] [stdout] 441 | fn create_error_result(gpx_path: &Path, error_msg: &str) -> ProcessingResult {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_results_to_csv` is never used
[INFO] [stdout]    --> src/gpx_processor.rs:469:4
[INFO] [stdout]     |
[INFO] [stdout] 469 | fn save_results_to_csv(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_processing_summary` is never used
[INFO] [stdout]    --> src/gpx_processor.rs:536:4
[INFO] [stdout]     |
[INFO] [stdout] 536 | fn print_processing_summary(results: &[ProcessingResult], processed_count: usize, error_count: usize) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `original_points` and `resampling_interval_m` are never read
[INFO] [stdout]   --> src/distbased_elevation_processor.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub struct ProcessingStats {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 38 |     pub original_points: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 39 |     pub resampled_points: usize,
[INFO] [stdout] 40 |     pub resampling_interval_m: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ProcessingStats` 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: methods `get_processing_stats` and `get_terrain_type` are never used
[INFO] [stdout]    --> src/distbased_elevation_processor.rs:95:12
[INFO] [stdout]     |
[INFO] [stdout]  49 | impl DistBasedElevationProcessor {
[INFO] [stdout]     | -------------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub fn get_processing_stats(&self) -> &ProcessingStats {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn get_terrain_type(&self) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_elevation_gain` is never used
[INFO] [stdout]    --> src/distbased_elevation_processor.rs:445:8
[INFO] [stdout]     |
[INFO] [stdout] 445 | pub fn calculate_elevation_gain(elevations: Vec<f64>, distances: Vec<f64>) -> f64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_elevation_gain_loss` is never used
[INFO] [stdout]    --> src/distbased_elevation_processor.rs:458:8
[INFO] [stdout]     |
[INFO] [stdout] 458 | pub fn calculate_elevation_gain_loss(elevations: Vec<f64>, distances: Vec<f64>) -> (f64, f64) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileComparisonResult` is never constructed
[INFO] [stdout]   --> src/two_pass_analysis.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct FileComparisonResult {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `filename` and `official_gain` are never read
[INFO] [stdout]   --> src/precision_optimization_analysis.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 56 | struct SingleFileResult {
[INFO] [stdout]    |        ---------------- fields in this struct
[INFO] [stdout] 57 |     filename: String,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 58 |     official_gain: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SingleFileResult` 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: fields `filename`, `official_gain`, `processed_gain`, and `processed_loss` are never read
[INFO] [stdout]   --> src/focused_symmetric_analysis.rs:58:5
[INFO] [stdout]    |
[INFO] [stdout] 57 | struct SingleFileResult {
[INFO] [stdout]    |        ---------------- fields in this struct
[INFO] [stdout] 58 |     filename: String,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 59 |     official_gain: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 60 |     processed_gain: f32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 61 |     processed_loss: f32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SingleFileResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 29.30s
[INFO] running `Command { std: "docker" "inspect" "980a82fe1284ffe0ec52ed1f1f1934f10c6771fd8747072629052644eb0e4666", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "980a82fe1284ffe0ec52ed1f1f1934f10c6771fd8747072629052644eb0e4666", kill_on_drop: false }`
[INFO] [stdout] 980a82fe1284ffe0ec52ed1f1f1934f10c6771fd8747072629052644eb0e4666
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-09-21" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] a1c87a7de96a207be4501beb30586383908d989a7f66b43da912c9745d3c54d9
[INFO] running `Command { std: "docker" "start" "-a" "a1c87a7de96a207be4501beb30586383908d989a7f66b43da912c9745d3c54d9", kill_on_drop: false }`
[INFO] [stderr]    Compiling rust-gpx-smoother v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/hybrid_analysis.rs:313:9
[INFO] [stdout]     |
[INFO] [stdout] 313 |         (processed_loss / processed_gain * 100.0)
[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] 313 -         (processed_loss / processed_gain * 100.0)
[INFO] [stdout] 313 +         processed_loss / processed_gain * 100.0
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/distbased_elevation_processor.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use std::collections::HashMap;
[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: `Write`
[INFO] [stdout]  --> src/gpx_preprocessor.rs:8:32
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::io::{BufReader, Read, Write};
[INFO] [stdout]   |                                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `incline_analysis`
[INFO] [stdout]    --> src/gpx_processor.rs:218:9
[INFO] [stdout]     |
[INFO] [stdout] 218 |     let incline_analysis = analyze_inclines_default(deadzone_filtered_elevations.clone(), processed_distances.clone());
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_incline_analysis`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input_path`
[INFO] [stdout]    --> src/gpx_preprocessor.rs:332:5
[INFO] [stdout]     |
[INFO] [stdout] 332 |     input_path: &Path,
[INFO] [stdout]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_input_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `coord_count` is assigned to, but never used
[INFO] [stdout]    --> src/gpx_preprocessor.rs:906:13
[INFO] [stdout]     |
[INFO] [stdout] 906 |     let mut coord_count = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_coord_count` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/single_interval_analysis.rs:899:9
[INFO] [stdout]     |
[INFO] [stdout] 899 |     let mut repaired = content.to_string();
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `original_error`
[INFO] [stdout]     --> src/single_interval_analysis.rs:1014:56
[INFO] [stdout]      |
[INFO] [stdout] 1014 | fn try_aggressive_repair_and_read_gpx(gpx_path: &Path, original_error: &str) -> Result<Gpx, Box<dyn std::error::Error>> {
[INFO] [stdout]      |                                                        ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_original_error`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `source` and `notes` are never read
[INFO] [stdout]   --> src/main.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 31 | struct OfficialElevationRecord {
[INFO] [stdout]    |        ----------------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 35 |     source: String,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 36 |     #[serde(default)]
[INFO] [stdout] 37 |     notes: String,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OfficialElevationRecord` 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: struct `GpxAnalysis` is never constructed
[INFO] [stdout]   --> src/main.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | struct GpxAnalysis {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Original`, `Capping`, `Flat21`, and `PostCap` are never constructed
[INFO] [stdout]   --> src/custom_smoother.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum SmoothingVariant {
[INFO] [stdout]    |          ---------------- variants in this enum
[INFO] [stdout] 19 |     Original,   // Adaptive 83/5-point with conditional capping
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 20 |     Capping,    // 5-point smoothing + capping for ALL routes
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 21 |     Flat21,     // 21-point for flat, 5-point for hilly
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 22 |     PostCap,    // 5-point + capping + 83-point post-capping smoothing
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SmoothingVariant` 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 items `new` and `process_elevation_data` are never used
[INFO] [stdout]    --> src/custom_smoother.rs:28:12
[INFO] [stdout]     |
[INFO] [stdout]  27 | impl ElevationData {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  28 |     pub fn new(enhanced_altitude: Vec<f64>, cumulative_distance: Vec<f64>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 703 |     pub fn process_elevation_data(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_custom_original` is never used
[INFO] [stdout]    --> src/custom_smoother.rs:717:8
[INFO] [stdout]     |
[INFO] [stdout] 717 | pub fn create_custom_original(elevations: Vec<f64>, distances: Vec<f64>) -> ElevationData {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_custom_capping` is never used
[INFO] [stdout]    --> src/custom_smoother.rs:721:8
[INFO] [stdout]     |
[INFO] [stdout] 721 | pub fn create_custom_capping(elevations: Vec<f64>, distances: Vec<f64>) -> ElevationData {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_custom_flat21` is never used
[INFO] [stdout]    --> src/custom_smoother.rs:725:8
[INFO] [stdout]     |
[INFO] [stdout] 725 | pub fn create_custom_flat21(elevations: Vec<f64>, distances: Vec<f64>) -> ElevationData {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_custom_postcap` is never used
[INFO] [stdout]    --> src/custom_smoother.rs:729:8
[INFO] [stdout]     |
[INFO] [stdout] 729 | pub fn create_custom_postcap(elevations: Vec<f64>, distances: Vec<f64>) -> ElevationData {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_custom_distbased` is never used
[INFO] [stdout]    --> src/custom_smoother.rs:733:8
[INFO] [stdout]     |
[INFO] [stdout] 733 | pub fn create_custom_distbased(elevations: Vec<f64>, distances: Vec<f64>) -> ElevationData {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_custom_symmetric_fixed` is never used
[INFO] [stdout]    --> src/custom_smoother.rs:738:8
[INFO] [stdout]     |
[INFO] [stdout] 738 | pub fn create_custom_symmetric_fixed(elevations: Vec<f64>, distances: Vec<f64>) -> ElevationData {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_custom_distbased_adaptive` is never used
[INFO] [stdout]    --> src/custom_smoother.rs:743:8
[INFO] [stdout]     |
[INFO] [stdout] 743 | pub fn create_custom_distbased_adaptive(elevations: Vec<f64>, distances: Vec<f64>) -> ElevationData {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `apply_adaptive_distance_based_processing` and `apply_adaptive_deadband_filtering` are never used
[INFO] [stdout]    --> src/custom_smoother.rs:754:8
[INFO] [stdout]     |
[INFO] [stdout] 752 | impl ElevationData {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] 753 |     /// Adaptive distance-based processing with terrain-specific parameters
[INFO] [stdout] 754 |     fn apply_adaptive_distance_based_processing(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 813 |     fn apply_adaptive_deadband_filtering(&mut self, threshold_meters: f64) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AnalysisResult` is never constructed
[INFO] [stdout]   --> src/simplified_analysis.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct AnalysisResult {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GpxFileData` is never constructed
[INFO] [stdout]   --> src/simplified_analysis.rs:48:8
[INFO] [stdout]    |
[INFO] [stdout] 48 | struct GpxFileData {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProcessingResult` is never constructed
[INFO] [stdout]   --> src/simplified_analysis.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | struct ProcessingResult {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_simplified_analysis` is never used
[INFO] [stdout]   --> src/simplified_analysis.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub fn run_simplified_analysis(gpx_folder: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_gpx_data` is never used
[INFO] [stdout]    --> src/simplified_analysis.rs:118:4
[INFO] [stdout]     |
[INFO] [stdout] 118 | fn load_gpx_data(gpx_folder: &str) -> Result<(HashMap<String, GpxFileData>, Vec<String>), Box<dyn std::error::Error>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `process_distbased_range` is never used
[INFO] [stdout]    --> src/simplified_analysis.rs:198:4
[INFO] [stdout]     |
[INFO] [stdout] 198 | fn process_distbased_range(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `process_single_file` is never used
[INFO] [stdout]    --> src/simplified_analysis.rs:271:4
[INFO] [stdout]     |
[INFO] [stdout] 271 | fn process_single_file(file_data: &GpxFileData, interval: f32) -> ProcessingResult {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_raw_gain_loss` is never used
[INFO] [stdout]    --> src/simplified_analysis.rs:326:4
[INFO] [stdout]     |
[INFO] [stdout] 326 | fn calculate_raw_gain_loss(elevations: &[f64]) -> (u32, u32) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_analysis_result` is never used
[INFO] [stdout]    --> src/simplified_analysis.rs:342:4
[INFO] [stdout]     |
[INFO] [stdout] 342 | fn create_analysis_result(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_results` is never used
[INFO] [stdout]    --> src/simplified_analysis.rs:483:4
[INFO] [stdout]     |
[INFO] [stdout] 483 | fn write_results(results: &[AnalysisResult], output_path: &Path) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_summary` is never used
[INFO] [stdout]    --> src/simplified_analysis.rs:551:4
[INFO] [stdout]     |
[INFO] [stdout] 551 | fn print_summary(results: &[AnalysisResult]) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProcessingResult` is never constructed
[INFO] [stdout]   --> src/gpx_output_analysis.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | struct ProcessingResult {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_gpx_output_analysis` is never used
[INFO] [stdout]   --> src/gpx_output_analysis.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub fn run_gpx_output_analysis(gpx_folder: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `process_single_gpx` is never used
[INFO] [stdout]   --> src/gpx_output_analysis.rs:90:4
[INFO] [stdout]    |
[INFO] [stdout] 90 | fn process_single_gpx(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_gain_loss` is never used
[INFO] [stdout]    --> src/gpx_output_analysis.rs:283:4
[INFO] [stdout]     |
[INFO] [stdout] 283 | fn calculate_gain_loss(elevations: &[f64]) -> (f64, f64) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_summary_csv` is never used
[INFO] [stdout]    --> src/gpx_output_analysis.rs:299:4
[INFO] [stdout]     |
[INFO] [stdout] 299 | fn write_summary_csv(results: &[ProcessingResult], output_path: &Path) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_processing_summary` is never used
[INFO] [stdout]    --> src/gpx_output_analysis.rs:340:4
[INFO] [stdout]     |
[INFO] [stdout] 340 | fn print_processing_summary(results: &[ProcessingResult]) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `filename`, `official_gain`, `processed_gain`, and `processed_loss` are never read
[INFO] [stdout]   --> src/assymetric_analysis.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 58 | struct FileResult {
[INFO] [stdout]    |        ---------- fields in this struct
[INFO] [stdout] 59 |     filename: String,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 60 |     official_gain: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 61 |     processed_gain: f32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 62 |     processed_loss: f32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FileResult` 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 `run_comprehensive_directional_deadzone_analysis` is never used
[INFO] [stdout]    --> src/assymetric_analysis.rs:844:8
[INFO] [stdout]     |
[INFO] [stdout] 844 | pub fn run_comprehensive_directional_deadzone_analysis(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `filename` is never read
[INFO] [stdout]   --> src/hybrid_analysis.rs:51:5
[INFO] [stdout]    |
[INFO] [stdout] 50 | struct GpxFileData {
[INFO] [stdout]    |        ----------- field in this struct
[INFO] [stdout] 51 |     filename: String,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GpxFileData` 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: struct `InclineSegment` is never constructed
[INFO] [stdout]  --> src/incline_analyzer.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct InclineSegment {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DeclineSegment` is never constructed
[INFO] [stdout]   --> src/incline_analyzer.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct DeclineSegment {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InclineAnalysisConfig` is never constructed
[INFO] [stdout]   --> src/incline_analyzer.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct InclineAnalysisConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InclineAnalysisResult` is never constructed
[INFO] [stdout]   --> src/incline_analyzer.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub struct InclineAnalysisResult {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `analyze_inclines_default` is never used
[INFO] [stdout]   --> src/incline_analyzer.rs:74:8
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub fn analyze_inclines_default(raw_elevations: Vec<f64>, distances: Vec<f64>) -> InclineAnalysisResult {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `analyze_inclines` is never used
[INFO] [stdout]   --> src/incline_analyzer.rs:78:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub fn analyze_inclines(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_gradients` is never used
[INFO] [stdout]    --> src/incline_analyzer.rs:107:4
[INFO] [stdout]     |
[INFO] [stdout] 107 | fn calculate_gradients(elevation_data: &ElevationData) -> Vec<f64> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `identify_climbing_segments` is never used
[INFO] [stdout]    --> src/incline_analyzer.rs:113:4
[INFO] [stdout]     |
[INFO] [stdout] 113 | fn identify_climbing_segments(gradients: &[f64], config: &InclineAnalysisConfig) -> Vec<(usize, usize)> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `identify_declining_segments` is never used
[INFO] [stdout]    --> src/incline_analyzer.rs:141:4
[INFO] [stdout]     |
[INFO] [stdout] 141 | fn identify_declining_segments(gradients: &[f64], config: &InclineAnalysisConfig) -> Vec<(usize, usize)> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `filter_incline_segments` is never used
[INFO] [stdout]    --> src/incline_analyzer.rs:169:4
[INFO] [stdout]     |
[INFO] [stdout] 169 | fn filter_incline_segments(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `filter_decline_segments` is never used
[INFO] [stdout]    --> src/incline_analyzer.rs:186:4
[INFO] [stdout]     |
[INFO] [stdout] 186 | fn filter_decline_segments(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_incline_segment_with_data` is never used
[INFO] [stdout]    --> src/incline_analyzer.rs:203:4
[INFO] [stdout]     |
[INFO] [stdout] 203 | fn create_incline_segment_with_data(start_idx: usize, end_idx: usize, elevation_data: &ElevationData) -> Option<InclineSegment> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_decline_segment_with_data` is never used
[INFO] [stdout]    --> src/incline_analyzer.rs:241:4
[INFO] [stdout]     |
[INFO] [stdout] 241 | fn create_decline_segment_with_data(start_idx: usize, end_idx: usize, elevation_data: &ElevationData) -> Option<DeclineSegment> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_analysis_result` is never used
[INFO] [stdout]    --> src/incline_analyzer.rs:279:4
[INFO] [stdout]     |
[INFO] [stdout] 279 | fn create_analysis_result(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_analysis_summary` is never used
[INFO] [stdout]    --> src/incline_analyzer.rs:340:4
[INFO] [stdout]     |
[INFO] [stdout] 340 | fn print_analysis_summary(result: &InclineAnalysisResult) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAIN_THRESHOLD` is never used
[INFO] [stdout]   --> src/gpx_processor.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const GAIN_THRESHOLD: f64 = 0.10;  // 10cm for elevation gains
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LOSS_THRESHOLD` is never used
[INFO] [stdout]   --> src/gpx_processor.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const LOSS_THRESHOLD: f64 = 0.05;  // 5cm for elevation losses
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_ELEVATION_CHANGE_PER_POINT` is never used
[INFO] [stdout]   --> src/gpx_processor.rs:21:7
[INFO] [stdout]    |
[INFO] [stdout] 21 | const MAX_ELEVATION_CHANGE_PER_POINT: f64 = 2.0;  // 2m max change between consecutive points
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPIKE_DETECTION_WINDOW` is never used
[INFO] [stdout]   --> src/gpx_processor.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const SPIKE_DETECTION_WINDOW: usize = 3;           // Look at 3-point windows for spike detection
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProcessingResult` is never constructed
[INFO] [stdout]   --> src/gpx_processor.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct ProcessingResult {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `process_and_save_gpx_files` is never used
[INFO] [stdout]   --> src/gpx_processor.rs:54:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub fn process_and_save_gpx_files(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `process_single_gpx_file_with_spike_filtering` is never used
[INFO] [stdout]    --> src/gpx_processor.rs:126:4
[INFO] [stdout]     |
[INFO] [stdout] 126 | fn process_single_gpx_file_with_spike_filtering(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SpikeFilteringStats` is never constructed
[INFO] [stdout]    --> src/gpx_processor.rs:284:8
[INFO] [stdout]     |
[INFO] [stdout] 284 | struct SpikeFilteringStats {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `filter_elevation_spikes` is never used
[INFO] [stdout]    --> src/gpx_processor.rs:291:4
[INFO] [stdout]     |
[INFO] [stdout] 291 | fn filter_elevation_spikes(elevations: &[f64]) -> (Vec<f64>, SpikeFilteringStats) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_directional_deadzone` is never used
[INFO] [stdout]    --> src/gpx_processor.rs:363:4
[INFO] [stdout]     |
[INFO] [stdout] 363 | fn apply_directional_deadzone(elevations: &[f64]) -> Vec<f64> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_distances` is never used
[INFO] [stdout]    --> src/gpx_processor.rs:392:4
[INFO] [stdout]     |
[INFO] [stdout] 392 | fn calculate_distances(coords: &[(f64, f64, f64)]) -> Vec<f64> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_raw_gain_loss` is never used
[INFO] [stdout]    --> src/gpx_processor.rs:405:4
[INFO] [stdout]     |
[INFO] [stdout] 405 | fn calculate_raw_gain_loss(elevations: &[f64]) -> (f64, f64) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clean_filename` is never used
[INFO] [stdout]    --> src/gpx_processor.rs:421:4
[INFO] [stdout]     |
[INFO] [stdout] 421 | fn clean_filename(name: &str) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_error_result` is never used
[INFO] [stdout]    --> src/gpx_processor.rs:441:4
[INFO] [stdout]     |
[INFO] [stdout] 441 | fn create_error_result(gpx_path: &Path, error_msg: &str) -> ProcessingResult {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_results_to_csv` is never used
[INFO] [stdout]    --> src/gpx_processor.rs:469:4
[INFO] [stdout]     |
[INFO] [stdout] 469 | fn save_results_to_csv(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_processing_summary` is never used
[INFO] [stdout]    --> src/gpx_processor.rs:536:4
[INFO] [stdout]     |
[INFO] [stdout] 536 | fn print_processing_summary(results: &[ProcessingResult], processed_count: usize, error_count: usize) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `original_points` and `resampling_interval_m` are never read
[INFO] [stdout]   --> src/distbased_elevation_processor.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub struct ProcessingStats {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 38 |     pub original_points: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 39 |     pub resampled_points: usize,
[INFO] [stdout] 40 |     pub resampling_interval_m: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ProcessingStats` 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_processing_stats` is never used
[INFO] [stdout]   --> src/distbased_elevation_processor.rs:95:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | impl DistBasedElevationProcessor {
[INFO] [stdout]    | -------------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 95 |     pub fn get_processing_stats(&self) -> &ProcessingStats {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileComparisonResult` is never constructed
[INFO] [stdout]   --> src/two_pass_analysis.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct FileComparisonResult {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `filename` and `official_gain` are never read
[INFO] [stdout]   --> src/precision_optimization_analysis.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 56 | struct SingleFileResult {
[INFO] [stdout]    |        ---------------- fields in this struct
[INFO] [stdout] 57 |     filename: String,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 58 |     official_gain: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SingleFileResult` 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: fields `filename`, `official_gain`, `processed_gain`, and `processed_loss` are never read
[INFO] [stdout]   --> src/focused_symmetric_analysis.rs:58:5
[INFO] [stdout]    |
[INFO] [stdout] 57 | struct SingleFileResult {
[INFO] [stdout]    |        ---------------- fields in this struct
[INFO] [stdout] 58 |     filename: String,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 59 |     official_gain: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 60 |     processed_gain: f32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 61 |     processed_loss: f32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SingleFileResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 3.18s
[INFO] running `Command { std: "docker" "inspect" "a1c87a7de96a207be4501beb30586383908d989a7f66b43da912c9745d3c54d9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a1c87a7de96a207be4501beb30586383908d989a7f66b43da912c9745d3c54d9", kill_on_drop: false }`
[INFO] [stdout] a1c87a7de96a207be4501beb30586383908d989a7f66b43da912c9745d3c54d9
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-09-21" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 43bcb66be48b4ebbdf29bd7920229316e1abd2392a9114ee3631e4ee35029827
[INFO] running `Command { std: "docker" "start" "-a" "43bcb66be48b4ebbdf29bd7920229316e1abd2392a9114ee3631e4ee35029827", kill_on_drop: false }`
[INFO] [stderr] warning: unnecessary parentheses around block return value
[INFO] [stderr]    --> src/hybrid_analysis.rs:313:9
[INFO] [stderr]     |
[INFO] [stderr] 313 |         (processed_loss / processed_gain * 100.0)
[INFO] [stderr]     |         ^                                       ^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 313 -         (processed_loss / processed_gain * 100.0)
[INFO] [stderr] 313 +         processed_loss / processed_gain * 100.0
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::collections::HashMap`
[INFO] [stderr]   --> src/distbased_elevation_processor.rs:19:5
[INFO] [stderr]    |
[INFO] [stderr] 19 | use std::collections::HashMap;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Write`
[INFO] [stderr]  --> src/gpx_preprocessor.rs:8:32
[INFO] [stderr]   |
[INFO] [stderr] 8 | use std::io::{BufReader, Read, Write};
[INFO] [stderr]   |                                ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `incline_analysis`
[INFO] [stderr]    --> src/gpx_processor.rs:218:9
[INFO] [stderr]     |
[INFO] [stderr] 218 |     let incline_analysis = analyze_inclines_default(deadzone_filtered_elevations.clone(), processed_distances.clone());
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_incline_analysis`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `input_path`
[INFO] [stderr]    --> src/gpx_preprocessor.rs:332:5
[INFO] [stderr]     |
[INFO] [stderr] 332 |     input_path: &Path,
[INFO] [stderr]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_input_path`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `coord_count` is assigned to, but never used
[INFO] [stderr]    --> src/gpx_preprocessor.rs:906:13
[INFO] [stderr]     |
[INFO] [stderr] 906 |     let mut coord_count = 0;
[INFO] [stderr]     |             ^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: consider using `_coord_count` instead
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/single_interval_analysis.rs:899:9
[INFO] [stderr]     |
[INFO] [stderr] 899 |     let mut repaired = content.to_string();
[INFO] [stderr]     |         ----^^^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `original_error`
[INFO] [stderr]     --> src/single_interval_analysis.rs:1014:56
[INFO] [stderr]      |
[INFO] [stderr] 1014 | fn try_aggressive_repair_and_read_gpx(gpx_path: &Path, original_error: &str) -> Result<Gpx, Box<dyn std::error::Error>> {
[INFO] [stderr]      |                                                        ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_original_error`
[INFO] [stderr] 
[INFO] [stderr] warning: fields `source` and `notes` are never read
[INFO] [stderr]   --> src/main.rs:35:5
[INFO] [stderr]    |
[INFO] [stderr] 31 | struct OfficialElevationRecord {
[INFO] [stderr]    |        ----------------------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 35 |     source: String,
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr] 36 |     #[serde(default)]
[INFO] [stderr] 37 |     notes: String,
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `OfficialElevationRecord` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: struct `GpxAnalysis` is never constructed
[INFO] [stderr]   --> src/main.rs:41:8
[INFO] [stderr]    |
[INFO] [stderr] 41 | struct GpxAnalysis {
[INFO] [stderr]    |        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variants `Original`, `Capping`, `Flat21`, and `PostCap` are never constructed
[INFO] [stderr]   --> src/custom_smoother.rs:19:5
[INFO] [stderr]    |
[INFO] [stderr] 18 | pub enum SmoothingVariant {
[INFO] [stderr]    |          ---------------- variants in this enum
[INFO] [stderr] 19 |     Original,   // Adaptive 83/5-point with conditional capping
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr] 20 |     Capping,    // 5-point smoothing + capping for ALL routes
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr] 21 |     Flat21,     // 21-point for flat, 5-point for hilly
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr] 22 |     PostCap,    // 5-point + capping + 83-point post-capping smoothing
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `SmoothingVariant` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new` and `process_elevation_data` are never used
[INFO] [stderr]    --> src/custom_smoother.rs:28:12
[INFO] [stderr]     |
[INFO] [stderr]  27 | impl ElevationData {
[INFO] [stderr]     | ------------------ associated items in this implementation
[INFO] [stderr]  28 |     pub fn new(enhanced_altitude: Vec<f64>, cumulative_distance: Vec<f64>) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 703 |     pub fn process_elevation_data(&mut self) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `create_custom_original` is never used
[INFO] [stderr]    --> src/custom_smoother.rs:717:8
[INFO] [stderr]     |
[INFO] [stderr] 717 | pub fn create_custom_original(elevations: Vec<f64>, distances: Vec<f64>) -> ElevationData {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `create_custom_capping` is never used
[INFO] [stderr]    --> src/custom_smoother.rs:721:8
[INFO] [stderr]     |
[INFO] [stderr] 721 | pub fn create_custom_capping(elevations: Vec<f64>, distances: Vec<f64>) -> ElevationData {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `create_custom_flat21` is never used
[INFO] [stderr]    --> src/custom_smoother.rs:725:8
[INFO] [stderr]     |
[INFO] [stderr] 725 | pub fn create_custom_flat21(elevations: Vec<f64>, distances: Vec<f64>) -> ElevationData {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `create_custom_postcap` is never used
[INFO] [stderr]    --> src/custom_smoother.rs:729:8
[INFO] [stderr]     |
[INFO] [stderr] 729 | pub fn create_custom_postcap(elevations: Vec<f64>, distances: Vec<f64>) -> ElevationData {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `create_custom_distbased` is never used
[INFO] [stderr]    --> src/custom_smoother.rs:733:8
[INFO] [stderr]     |
[INFO] [stderr] 733 | pub fn create_custom_distbased(elevations: Vec<f64>, distances: Vec<f64>) -> ElevationData {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `create_custom_symmetric_fixed` is never used
[INFO] [stderr]    --> src/custom_smoother.rs:738:8
[INFO] [stderr]     |
[INFO] [stderr] 738 | pub fn create_custom_symmetric_fixed(elevations: Vec<f64>, distances: Vec<f64>) -> ElevationData {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `create_custom_distbased_adaptive` is never used
[INFO] [stderr]    --> src/custom_smoother.rs:743:8
[INFO] [stderr]     |
[INFO] [stderr] 743 | pub fn create_custom_distbased_adaptive(elevations: Vec<f64>, distances: Vec<f64>) -> ElevationData {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `apply_adaptive_distance_based_processing` and `apply_adaptive_deadband_filtering` are never used
[INFO] [stderr]    --> src/custom_smoother.rs:754:8
[INFO] [stderr]     |
[INFO] [stderr] 752 | impl ElevationData {
[INFO] [stderr]     | ------------------ methods in this implementation
[INFO] [stderr] 753 |     /// Adaptive distance-based processing with terrain-specific parameters
[INFO] [stderr] 754 |     fn apply_adaptive_distance_based_processing(&mut self) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 813 |     fn apply_adaptive_deadband_filtering(&mut self, threshold_meters: f64) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AnalysisResult` is never constructed
[INFO] [stderr]   --> src/simplified_analysis.rs:10:12
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub struct AnalysisResult {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `GpxFileData` is never constructed
[INFO] [stderr]   --> src/simplified_analysis.rs:48:8
[INFO] [stderr]    |
[INFO] [stderr] 48 | struct GpxFileData {
[INFO] [stderr]    |        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ProcessingResult` is never constructed
[INFO] [stderr]   --> src/simplified_analysis.rs:56:8
[INFO] [stderr]    |
[INFO] [stderr] 56 | struct ProcessingResult {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `run_simplified_analysis` is never used
[INFO] [stderr]   --> src/simplified_analysis.rs:66:8
[INFO] [stderr]    |
[INFO] [stderr] 66 | pub fn run_simplified_analysis(gpx_folder: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `load_gpx_data` is never used
[INFO] [stderr]    --> src/simplified_analysis.rs:118:4
[INFO] [stderr]     |
[INFO] [stderr] 118 | fn load_gpx_data(gpx_folder: &str) -> Result<(HashMap<String, GpxFileData>, Vec<String>), Box<dyn std::error::Error>> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `process_distbased_range` is never used
[INFO] [stderr]    --> src/simplified_analysis.rs:198:4
[INFO] [stderr]     |
[INFO] [stderr] 198 | fn process_distbased_range(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `process_single_file` is never used
[INFO] [stderr]    --> src/simplified_analysis.rs:271:4
[INFO] [stderr]     |
[INFO] [stderr] 271 | fn process_single_file(file_data: &GpxFileData, interval: f32) -> ProcessingResult {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `calculate_raw_gain_loss` is never used
[INFO] [stderr]    --> src/simplified_analysis.rs:326:4
[INFO] [stderr]     |
[INFO] [stderr] 326 | fn calculate_raw_gain_loss(elevations: &[f64]) -> (u32, u32) {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `create_analysis_result` is never used
[INFO] [stderr]    --> src/simplified_analysis.rs:342:4
[INFO] [stderr]     |
[INFO] [stderr] 342 | fn create_analysis_result(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `write_results` is never used
[INFO] [stderr]    --> src/simplified_analysis.rs:483:4
[INFO] [stderr]     |
[INFO] [stderr] 483 | fn write_results(results: &[AnalysisResult], output_path: &Path) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `print_summary` is never used
[INFO] [stderr]    --> src/simplified_analysis.rs:551:4
[INFO] [stderr]     |
[INFO] [stderr] 551 | fn print_summary(results: &[AnalysisResult]) {
[INFO] [stderr]     |    ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ProcessingResult` is never constructed
[INFO] [stderr]   --> src/gpx_output_analysis.rs:13:8
[INFO] [stderr]    |
[INFO] [stderr] 13 | struct ProcessingResult {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `run_gpx_output_analysis` is never used
[INFO] [stderr]   --> src/gpx_output_analysis.rs:26:8
[INFO] [stderr]    |
[INFO] [stderr] 26 | pub fn run_gpx_output_analysis(gpx_folder: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `process_single_gpx` is never used
[INFO] [stderr]   --> src/gpx_output_analysis.rs:90:4
[INFO] [stderr]    |
[INFO] [stderr] 90 | fn process_single_gpx(
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `calculate_gain_loss` is never used
[INFO] [stderr]    --> src/gpx_output_analysis.rs:283:4
[INFO] [stderr]     |
[INFO] [stderr] 283 | fn calculate_gain_loss(elevations: &[f64]) -> (f64, f64) {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `write_summary_csv` is never used
[INFO] [stderr]    --> src/gpx_output_analysis.rs:299:4
[INFO] [stderr]     |
[INFO] [stderr] 299 | fn write_summary_csv(results: &[ProcessingResult], output_path: &Path) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `print_processing_summary` is never used
[INFO] [stderr]    --> src/gpx_output_analysis.rs:340:4
[INFO] [stderr]     |
[INFO] [stderr] 340 | fn print_processing_summary(results: &[ProcessingResult]) {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `filename`, `official_gain`, `processed_gain`, and `processed_loss` are never read
[INFO] [stderr]   --> src/assymetric_analysis.rs:59:5
[INFO] [stderr]    |
[INFO] [stderr] 58 | struct FileResult {
[INFO] [stderr]    |        ---------- fields in this struct
[INFO] [stderr] 59 |     filename: String,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr] 60 |     official_gain: u32,
[INFO] [stderr]    |     ^^^^^^^^^^^^^
[INFO] [stderr] 61 |     processed_gain: f32,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr] 62 |     processed_loss: f32,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `FileResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: function `run_comprehensive_directional_deadzone_analysis` is never used
[INFO] [stderr]    --> src/assymetric_analysis.rs:844:8
[INFO] [stderr]     |
[INFO] [stderr] 844 | pub fn run_comprehensive_directional_deadzone_analysis(
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `filename` is never read
[INFO] [stderr]   --> src/hybrid_analysis.rs:51:5
[INFO] [stderr]    |
[INFO] [stderr] 50 | struct GpxFileData {
[INFO] [stderr]    |        ----------- field in this struct
[INFO] [stderr] 51 |     filename: String,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `GpxFileData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: struct `InclineSegment` is never constructed
[INFO] [stderr]  --> src/incline_analyzer.rs:6:12
[INFO] [stderr]   |
[INFO] [stderr] 6 | pub struct InclineSegment {
[INFO] [stderr]   |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `DeclineSegment` is never constructed
[INFO] [stderr]   --> src/incline_analyzer.rs:20:12
[INFO] [stderr]    |
[INFO] [stderr] 20 | pub struct DeclineSegment {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `InclineAnalysisConfig` is never constructed
[INFO] [stderr]   --> src/incline_analyzer.rs:34:12
[INFO] [stderr]    |
[INFO] [stderr] 34 | pub struct InclineAnalysisConfig {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `InclineAnalysisResult` is never constructed
[INFO] [stderr]   --> src/incline_analyzer.rs:57:12
[INFO] [stderr]    |
[INFO] [stderr] 57 | pub struct InclineAnalysisResult {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `analyze_inclines_default` is never used
[INFO] [stderr]   --> src/incline_analyzer.rs:74:8
[INFO] [stderr]    |
[INFO] [stderr] 74 | pub fn analyze_inclines_default(raw_elevations: Vec<f64>, distances: Vec<f64>) -> InclineAnalysisResult {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `analyze_inclines` is never used
[INFO] [stderr]   --> src/incline_analyzer.rs:78:8
[INFO] [stderr]    |
[INFO] [stderr] 78 | pub fn analyze_inclines(
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `calculate_gradients` is never used
[INFO] [stderr]    --> src/incline_analyzer.rs:107:4
[INFO] [stderr]     |
[INFO] [stderr] 107 | fn calculate_gradients(elevation_data: &ElevationData) -> Vec<f64> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `identify_climbing_segments` is never used
[INFO] [stderr]    --> src/incline_analyzer.rs:113:4
[INFO] [stderr]     |
[INFO] [stderr] 113 | fn identify_climbing_segments(gradients: &[f64], config: &InclineAnalysisConfig) -> Vec<(usize, usize)> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `identify_declining_segments` is never used
[INFO] [stderr]    --> src/incline_analyzer.rs:141:4
[INFO] [stderr]     |
[INFO] [stderr] 141 | fn identify_declining_segments(gradients: &[f64], config: &InclineAnalysisConfig) -> Vec<(usize, usize)> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `filter_incline_segments` is never used
[INFO] [stderr]    --> src/incline_analyzer.rs:169:4
[INFO] [stderr]     |
[INFO] [stderr] 169 | fn filter_incline_segments(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `filter_decline_segments` is never used
[INFO] [stderr]    --> src/incline_analyzer.rs:186:4
[INFO] [stderr]     |
[INFO] [stderr] 186 | fn filter_decline_segments(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `create_incline_segment_with_data` is never used
[INFO] [stderr]    --> src/incline_analyzer.rs:203:4
[INFO] [stderr]     |
[INFO] [stderr] 203 | fn create_incline_segment_with_data(start_idx: usize, end_idx: usize, elevation_data: &ElevationData) -> Option<InclineSegment> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `create_decline_segment_with_data` is never used
[INFO] [stderr]    --> src/incline_analyzer.rs:241:4
[INFO] [stderr]     |
[INFO] [stderr] 241 | fn create_decline_segment_with_data(start_idx: usize, end_idx: usize, elevation_data: &ElevationData) -> Option<DeclineSegment> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `create_analysis_result` is never used
[INFO] [stderr]    --> src/incline_analyzer.rs:279:4
[INFO] [stderr]     |
[INFO] [stderr] 279 | fn create_analysis_result(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `print_analysis_summary` is never used
[INFO] [stderr]    --> src/incline_analyzer.rs:340:4
[INFO] [stderr]     |
[INFO] [stderr] 340 | fn print_analysis_summary(result: &InclineAnalysisResult) {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `GAIN_THRESHOLD` is never used
[INFO] [stderr]   --> src/gpx_processor.rs:17:7
[INFO] [stderr]    |
[INFO] [stderr] 17 | const GAIN_THRESHOLD: f64 = 0.10;  // 10cm for elevation gains
[INFO] [stderr]    |       ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `LOSS_THRESHOLD` is never used
[INFO] [stderr]   --> src/gpx_processor.rs:18:7
[INFO] [stderr]    |
[INFO] [stderr] 18 | const LOSS_THRESHOLD: f64 = 0.05;  // 5cm for elevation losses
[INFO] [stderr]    |       ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAX_ELEVATION_CHANGE_PER_POINT` is never used
[INFO] [stderr]   --> src/gpx_processor.rs:21:7
[INFO] [stderr]    |
[INFO] [stderr] 21 | const MAX_ELEVATION_CHANGE_PER_POINT: f64 = 2.0;  // 2m max change between consecutive points
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SPIKE_DETECTION_WINDOW` is never used
[INFO] [stderr]   --> src/gpx_processor.rs:22:7
[INFO] [stderr]    |
[INFO] [stderr] 22 | const SPIKE_DETECTION_WINDOW: usize = 3;           // Look at 3-point windows for spike detection
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ProcessingResult` is never constructed
[INFO] [stderr]   --> src/gpx_processor.rs:25:12
[INFO] [stderr]    |
[INFO] [stderr] 25 | pub struct ProcessingResult {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `process_and_save_gpx_files` is never used
[INFO] [stderr]   --> src/gpx_processor.rs:54:8
[INFO] [stderr]    |
[INFO] [stderr] 54 | pub fn process_and_save_gpx_files(
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `process_single_gpx_file_with_spike_filtering` is never used
[INFO] [stderr]    --> src/gpx_processor.rs:126:4
[INFO] [stderr]     |
[INFO] [stderr] 126 | fn process_single_gpx_file_with_spike_filtering(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `SpikeFilteringStats` is never constructed
[INFO] [stderr]    --> src/gpx_processor.rs:284:8
[INFO] [stderr]     |
[INFO] [stderr] 284 | struct SpikeFilteringStats {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `filter_elevation_spikes` is never used
[INFO] [stderr]    --> src/gpx_processor.rs:291:4
[INFO] [stderr]     |
[INFO] [stderr] 291 | fn filter_elevation_spikes(elevations: &[f64]) -> (Vec<f64>, SpikeFilteringStats) {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `apply_directional_deadzone` is never used
[INFO] [stderr]    --> src/gpx_processor.rs:363:4
[INFO] [stderr]     |
[INFO] [stderr] 363 | fn apply_directional_deadzone(elevations: &[f64]) -> Vec<f64> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `calculate_distances` is never used
[INFO] [stderr]    --> src/gpx_processor.rs:392:4
[INFO] [stderr]     |
[INFO] [stderr] 392 | fn calculate_distances(coords: &[(f64, f64, f64)]) -> Vec<f64> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `calculate_raw_gain_loss` is never used
[INFO] [stderr]    --> src/gpx_processor.rs:405:4
[INFO] [stderr]     |
[INFO] [stderr] 405 | fn calculate_raw_gain_loss(elevations: &[f64]) -> (f64, f64) {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `clean_filename` is never used
[INFO] [stderr]    --> src/gpx_processor.rs:421:4
[INFO] [stderr]     |
[INFO] [stderr] 421 | fn clean_filename(name: &str) -> String {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `create_error_result` is never used
[INFO] [stderr]    --> src/gpx_processor.rs:441:4
[INFO] [stderr]     |
[INFO] [stderr] 441 | fn create_error_result(gpx_path: &Path, error_msg: &str) -> ProcessingResult {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `save_results_to_csv` is never used
[INFO] [stderr]    --> src/gpx_processor.rs:469:4
[INFO] [stderr]     |
[INFO] [stderr] 469 | fn save_results_to_csv(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `print_processing_summary` is never used
[INFO] [stderr]    --> src/gpx_processor.rs:536:4
[INFO] [stderr]     |
[INFO] [stderr] 536 | fn print_processing_summary(results: &[ProcessingResult], processed_count: usize, error_count: usize) {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `original_points` and `resampling_interval_m` are never read
[INFO] [stderr]   --> src/distbased_elevation_processor.rs:38:9
[INFO] [stderr]    |
[INFO] [stderr] 37 | pub struct ProcessingStats {
[INFO] [stderr]    |            --------------- fields in this struct
[INFO] [stderr] 38 |     pub original_points: usize,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^
[INFO] [stderr] 39 |     pub resampled_points: usize,
[INFO] [stderr] 40 |     pub resampling_interval_m: f64,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ProcessingStats` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `get_processing_stats` is never used
[INFO] [stderr]   --> src/distbased_elevation_processor.rs:95:12
[INFO] [stderr]    |
[INFO] [stderr] 49 | impl DistBasedElevationProcessor {
[INFO] [stderr]    | -------------------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 95 |     pub fn get_processing_stats(&self) -> &ProcessingStats {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `FileComparisonResult` is never constructed
[INFO] [stderr]   --> src/two_pass_analysis.rs:22:12
[INFO] [stderr]    |
[INFO] [stderr] 22 | pub struct FileComparisonResult {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `filename` and `official_gain` are never read
[INFO] [stderr]   --> src/precision_optimization_analysis.rs:57:5
[INFO] [stderr]    |
[INFO] [stderr] 56 | struct SingleFileResult {
[INFO] [stderr]    |        ---------------- fields in this struct
[INFO] [stderr] 57 |     filename: String,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr] 58 |     official_gain: u32,
[INFO] [stderr]    |     ^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `SingleFileResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `filename`, `official_gain`, `processed_gain`, and `processed_loss` are never read
[INFO] [stderr]   --> src/focused_symmetric_analysis.rs:58:5
[INFO] [stderr]    |
[INFO] [stderr] 57 | struct SingleFileResult {
[INFO] [stderr]    |        ---------------- fields in this struct
[INFO] [stderr] 58 |     filename: String,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr] 59 |     official_gain: u32,
[INFO] [stderr]    |     ^^^^^^^^^^^^^
[INFO] [stderr] 60 |     processed_gain: f32,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr] 61 |     processed_loss: f32,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `SingleFileResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: `rust-gpx-smoother` (bin "rust-gpx-smoother" test) generated 76 warnings (run `cargo fix --bin "rust-gpx-smoother" --tests` to apply 3 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.10s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/rust_gpx_smoother-7b1e6564e9334875)
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test distbased_elevation_processor::tests::test_gain_loss_function ... ok
[INFO] [stdout] test distbased_elevation_processor::tests::test_convenience_function ... ok
[INFO] [stdout] test distbased_elevation_processor::tests::test_hilly_route ... ok
[INFO] [stdout] test distbased_elevation_processor::tests::test_flat_route ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- distbased_elevation_processor::tests::test_flat_route stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'distbased_elevation_processor::tests::test_flat_route' (26) panicked at src/distbased_elevation_processor.rs:475:9:
[INFO] [stdout] assertion failed: gain > 0.0 && gain < 10.0
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x638fa15ba9e2 - std::backtrace_rs::backtrace::libunwind::trace::hcab59e1e990fdc24
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x638fa15ba9e2 - std::backtrace_rs::backtrace::trace_unsynchronized::he24cc57f3d2f47b7
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x638fa15ba9e2 - std::sys::backtrace::_print_fmt::hf8d65ede198eeb54
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/std/src/sys/backtrace.rs:66:9
[INFO] [stdout]    3:     0x638fa15ba9e2 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h67edf0e4d33c343c
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/std/src/sys/backtrace.rs:39:26
[INFO] [stdout]    4:     0x638fa15cab0f - core::fmt::rt::Argument::fmt::hef94184842aeafdd
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/core/src/fmt/rt.rs:173:76
[INFO] [stdout]    5:     0x638fa15cab0f - core::fmt::write::hcf0c66b48a8fa606
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/core/src/fmt/mod.rs:1468:25
[INFO] [stdout]    6:     0x638fa1587f51 - std::io::default_write_fmt::h69967ac0ba93195f
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x638fa1587f51 - std::io::Write::write_fmt::h8db9396209deaa1c
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/std/src/io/mod.rs:1954:13
[INFO] [stdout]    8:     0x638fa1593fb2 - std::sys::backtrace::BacktraceLock::print::h07e5435aa717b414
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/std/src/sys/backtrace.rs:42:9
[INFO] [stdout]    9:     0x638fa1598aff - std::panicking::default_hook::{{closure}}::h91001850288db5f7
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/std/src/panicking.rs:301:27
[INFO] [stdout]   10:     0x638fa1598991 - std::panicking::default_hook::h2346dbb704ef5512
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/std/src/panicking.rs:325:9
[INFO] [stdout]   11:     0x638fa1553c7e - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h18383b2e29377420
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/alloc/src/boxed.rs:1999:9
[INFO] [stdout]   12:     0x638fa1553c7e - test::test_main_with_exit_callback::{{closure}}::h272d7ef99aef06dc
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x638fa15991bf - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h6dba6e441651a0d1
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/alloc/src/boxed.rs:1999:9
[INFO] [stdout]   14:     0x638fa15991bf - std::panicking::panic_with_hook::hd2b063a6090d23a4
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/std/src/panicking.rs:842:13
[INFO] [stdout]   15:     0x638fa1598fe6 - std::panicking::panic_handler::{{closure}}::he666d95f139a333e
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/std/src/panicking.rs:700:13
[INFO] [stdout]   16:     0x638fa15940e9 - std::sys::backtrace::__rust_end_short_backtrace::h631ad224854ebee5
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/std/src/sys/backtrace.rs:174:18
[INFO] [stdout]   17:     0x638fa157c42d - __rustc[1d67440d6e82e4f]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/std/src/panicking.rs:698:5
[INFO] [stdout]   18:     0x638fa15d2460 - core::panicking::panic_fmt::h420ddb7fd73daf53
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/core/src/panicking.rs:75:14
[INFO] [stdout]   19:     0x638fa15d243c - core::panicking::panic::h355c5fec13755e30
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/core/src/panicking.rs:145:5
[INFO] [stdout]   20:     0x638fa1530beb - rust_gpx_smoother::distbased_elevation_processor::tests::test_flat_route::h3a55ac22f79c78de
[INFO] [stdout]                                at /opt/rustwide/workdir/src/distbased_elevation_processor.rs:475:9
[INFO] [stdout]   21:     0x638fa1530d07 - rust_gpx_smoother::distbased_elevation_processor::tests::test_flat_route::{{closure}}::hb862f99b818b7f12
[INFO] [stdout]                                at /opt/rustwide/workdir/src/distbased_elevation_processor.rs:468:25
[INFO] [stdout]   22:     0x638fa1524726 - core::ops::function::FnOnce::call_once::h850f09f7735cefdd
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x638fa1553a3b - core::ops::function::FnOnce::call_once::h70887edf07a630ba
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x638fa1553a3b - test::__rust_begin_short_backtrace::h27763c4cbbdb8601
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/test/src/lib.rs:663:18
[INFO] [stdout]   25:     0x638fa15696a5 - test::run_test_in_process::{{closure}}::h4dc8bc6d5e3924d3
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/test/src/lib.rs:686:74
[INFO] [stdout]   26:     0x638fa15696a5 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h75905e8ffe81974f
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   27:     0x638fa15696a5 - std::panicking::catch_unwind::do_call::h0bc60366ba66eba5
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/std/src/panicking.rs:590:40
[INFO] [stdout]   28:     0x638fa15696a5 - std::panicking::catch_unwind::hae1ec7bf94407afa
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/std/src/panicking.rs:553:19
[INFO] [stdout]   29:     0x638fa15696a5 - std::panic::catch_unwind::h0f4ff4773d84d3cd
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/std/src/panic.rs:359:14
[INFO] [stdout]   30:     0x638fa15696a5 - test::run_test_in_process::h03fbc77ae48b3f10
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/test/src/lib.rs:686:27
[INFO] [stdout]   31:     0x638fa15696a5 - test::run_test::{{closure}}::h83476a9c453dc4d3
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/test/src/lib.rs:607:43
[INFO] [stdout]   32:     0x638fa153fe94 - test::run_test::{{closure}}::h515482ad1e7fe7de
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/test/src/lib.rs:637:41
[INFO] [stdout]   33:     0x638fa153fe94 - std::sys::backtrace::__rust_begin_short_backtrace::hed09f6ac5fe9d647
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/std/src/sys/backtrace.rs:158:18
[INFO] [stdout]   34:     0x638fa154375a - std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}::h988e2cd969319888
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/std/src/thread/mod.rs:559:17
[INFO] [stdout]   35:     0x638fa154375a - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hd70e28dc46ec20be
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   36:     0x638fa154375a - std::panicking::catch_unwind::do_call::hdc29e11311eb7655
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/std/src/panicking.rs:590:40
[INFO] [stdout]   37:     0x638fa154375a - std::panicking::catch_unwind::h9e402d6a96fef41c
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/std/src/panicking.rs:553:19
[INFO] [stdout]   38:     0x638fa154375a - std::panic::catch_unwind::h9213c0c54aec70e0
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/std/src/panic.rs:359:14
[INFO] [stdout]   39:     0x638fa154375a - std::thread::Builder::spawn_unchecked_::{{closure}}::h6262965869ed2b87
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/std/src/thread/mod.rs:557:30
[INFO] [stdout]   40:     0x638fa154375a - core::ops::function::FnOnce::call_once{{vtable.shim}}::h05c05ed02619e462
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   41:     0x638fa158f24f - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h2044e71c41d3958a
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/alloc/src/boxed.rs:1985:9
[INFO] [stdout]   42:     0x638fa158f24f - std::sys::thread::unix::Thread::new::thread_start::hf277835320aa8e5a
[INFO] [stdout]                                at /rustc/bb624dcb4c8ab987e10c0808d92d76f3b84dd117/library/std/src/sys/thread/unix.rs:126:17
[INFO] [stdout]   43:     0x703aa643faa4 - <unknown>
[INFO] [stdout]   44:     0x703aa64cca34 - clone
[INFO] [stdout]   45:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     distbased_elevation_processor::tests::test_flat_route
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 3 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--bin rust-gpx-smoother`
[INFO] running `Command { std: "docker" "inspect" "43bcb66be48b4ebbdf29bd7920229316e1abd2392a9114ee3631e4ee35029827", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "43bcb66be48b4ebbdf29bd7920229316e1abd2392a9114ee3631e4ee35029827", kill_on_drop: false }`
[INFO] [stdout] 43bcb66be48b4ebbdf29bd7920229316e1abd2392a9114ee3631e4ee35029827
