[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 try#bd7d74411512a3dd3b35d2f699c51dd2557c7e7e+cargoflags=-Zbuild-dir-new-layout for pr-149852-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjtlab-studio%2Frust-gpx-smoother" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc2/source'...
[INFO] [stderr] done.
[INFO] [stderr] Updating files:  84% (1443/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-1-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/jtlab-studio/rust-gpx-smoother on toolchain bd7d74411512a3dd3b35d2f699c51dd2557c7e7e
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+bd7d74411512a3dd3b35d2f699c51dd2557c7e7e" "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" "+bd7d74411512a3dd3b35d2f699c51dd2557c7e7e" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+bd7d74411512a3dd3b35d2f699c51dd2557c7e7e" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 04a0a37366ee5b55bb85e5ebc713c78dbc277ee5fba2cc0ccd2b2bc13b2fa568
[INFO] running `Command { std: "docker" "start" "-a" "04a0a37366ee5b55bb85e5ebc713c78dbc277ee5fba2cc0ccd2b2bc13b2fa568", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "04a0a37366ee5b55bb85e5ebc713c78dbc277ee5fba2cc0ccd2b2bc13b2fa568", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "04a0a37366ee5b55bb85e5ebc713c78dbc277ee5fba2cc0ccd2b2bc13b2fa568", kill_on_drop: false }`
[INFO] [stdout] 04a0a37366ee5b55bb85e5ebc713c78dbc277ee5fba2cc0ccd2b2bc13b2fa568
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+bd7d74411512a3dd3b35d2f699c51dd2557c7e7e" "build" "--frozen" "--message-format=json" "-Zbuild-dir-new-layout", kill_on_drop: false }`
[INFO] [stdout] 4e8126ba2cf74e94fbb4c4bd4b9536d9ceda4afdacfb9e32e4f2edd024fb376e
[INFO] running `Command { std: "docker" "start" "-a" "4e8126ba2cf74e94fbb4c4bd4b9536d9ceda4afdacfb9e32e4f2edd024fb376e", kill_on_drop: false }`
[INFO] [stderr]    Compiling memchr v2.7.4
[INFO] [stderr]    Compiling heapless v0.8.0
[INFO] [stderr]    Compiling byteorder v1.5.0
[INFO] [stderr]    Compiling object v0.36.7
[INFO] [stderr]    Compiling stable_deref_trait v1.2.0
[INFO] [stderr]    Compiling smallvec v1.15.0
[INFO] [stderr]    Compiling either 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 libm v0.1.4
[INFO] [stderr]    Compiling syn v2.0.101
[INFO] [stderr]    Compiling hashbrown v0.15.3
[INFO] [stderr]    Compiling robust v1.2.0
[INFO] [stderr]    Compiling geographiclib-rs v0.2.5
[INFO] [stderr]    Compiling itertools v0.11.0
[INFO] [stderr]    Compiling xml-rs v0.8.26
[INFO] [stderr]    Compiling log v0.4.27
[INFO] [stderr]    Compiling hash32 v0.3.1
[INFO] [stderr]    Compiling float_next_after v1.0.0
[INFO] [stderr]    Compiling assert_approx_eq v1.1.0
[INFO] [stderr]    Compiling rayon v1.10.0
[INFO] [stderr]    Compiling biquad v0.4.2
[INFO] [stderr]    Compiling csv-core v0.1.12
[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 addr2line v0.24.2
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling geo v0.28.0
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling backtrace v0.3.75
[INFO] [stderr]    Compiling serde v1.0.219
[INFO] [stderr]    Compiling gpx v0.9.1
[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:9
[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: value assigned to `coord_count` is never read
[INFO] [stdout]    --> src/gpx_preprocessor.rs:912:17
[INFO] [stdout]     |
[INFO] [stdout] 912 |                 coord_count += 1;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 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 18.24s
[INFO] running `Command { std: "docker" "inspect" "4e8126ba2cf74e94fbb4c4bd4b9536d9ceda4afdacfb9e32e4f2edd024fb376e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4e8126ba2cf74e94fbb4c4bd4b9536d9ceda4afdacfb9e32e4f2edd024fb376e", kill_on_drop: false }`
[INFO] [stdout] 4e8126ba2cf74e94fbb4c4bd4b9536d9ceda4afdacfb9e32e4f2edd024fb376e
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+bd7d74411512a3dd3b35d2f699c51dd2557c7e7e" "test" "--frozen" "--no-run" "--message-format=json" "-Zbuild-dir-new-layout", kill_on_drop: false }`
[INFO] [stdout] a7a121c9d4eb35bf4a4f2233f789379c5dddb389be9853eaa6927031e972319a
[INFO] running `Command { std: "docker" "start" "-a" "a7a121c9d4eb35bf4a4f2233f789379c5dddb389be9853eaa6927031e972319a", 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:9
[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: value assigned to `coord_count` is never read
[INFO] [stdout]    --> src/gpx_preprocessor.rs:912:17
[INFO] [stdout]     |
[INFO] [stdout] 912 |                 coord_count += 1;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 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 2.85s
[INFO] running `Command { std: "docker" "inspect" "a7a121c9d4eb35bf4a4f2233f789379c5dddb389be9853eaa6927031e972319a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a7a121c9d4eb35bf4a4f2233f789379c5dddb389be9853eaa6927031e972319a", kill_on_drop: false }`
[INFO] [stdout] a7a121c9d4eb35bf4a4f2233f789379c5dddb389be9853eaa6927031e972319a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+bd7d74411512a3dd3b35d2f699c51dd2557c7e7e" "test" "--frozen" "-Zbuild-dir-new-layout", kill_on_drop: false }`
[INFO] [stdout] 9e989595f6a8bedbd20265d2a24ad2c6496be7e0cb4bbfcea5f825df6974393d
[INFO] running `Command { std: "docker" "start" "-a" "9e989595f6a8bedbd20265d2a24ad2c6496be7e0cb4bbfcea5f825df6974393d", 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:9
[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: value assigned to `coord_count` is never read
[INFO] [stderr]    --> src/gpx_preprocessor.rs:912:17
[INFO] [stderr]     |
[INFO] [stderr] 912 |                 coord_count += 1;
[INFO] [stderr]     |                 ^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[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 77 warnings (run `cargo fix --bin "rust-gpx-smoother" -p rust-gpx-smoother --tests` to apply 6 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.14s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/build/rust-gpx-smoother/d8d8ee671365a271/deps/rust_gpx_smoother-d8d8ee671365a271)
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test distbased_elevation_processor::tests::test_convenience_function ... ok
[INFO] [stdout] test distbased_elevation_processor::tests::test_gain_loss_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' (25) 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:     0x5be9e5758c22 - std[840933623431fd06]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5be9e5758c22 - std[840933623431fd06]::backtrace_rs::backtrace::trace_unsynchronized::<std[840933623431fd06]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5be9e5758c22 - std[840933623431fd06]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x5be9e5758c22 - <<std[840933623431fd06]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[8f93d80df273fe75]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x5be9e576d45a - <core[8f93d80df273fe75]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x5be9e576d45a - core[8f93d80df273fe75]::fmt::write
[INFO] [stdout]    6:     0x5be9e575da56 - std[840933623431fd06]::io::default_write_fmt::<alloc[40b2bae28975ac47]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x5be9e575da56 - <alloc[40b2bae28975ac47]::vec::Vec<u8> as std[840933623431fd06]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x5be9e57370ef - <std[840933623431fd06]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x5be9e57370ef - std[840933623431fd06]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x5be9e5750f59 - std[840933623431fd06]::panicking::default_hook
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5be9e56e867e - <alloc[40b2bae28975ac47]::boxed::Box<dyn for<'a, 'b> core[8f93d80df273fe75]::ops::function::Fn<(&'a std[840933623431fd06]::panic::PanicHookInfo<'b>,), Output = ()> + core[8f93d80df273fe75]::marker::Sync + core[8f93d80df273fe75]::marker::Send> as core[8f93d80df273fe75]::ops::function::Fn<(&std[840933623431fd06]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x5be9e56e867e - test[2f1252070343a163]::test_main_with_exit_callback::<test[2f1252070343a163]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x5be9e5751112 - <alloc[40b2bae28975ac47]::boxed::Box<dyn for<'a, 'b> core[8f93d80df273fe75]::ops::function::Fn<(&'a std[840933623431fd06]::panic::PanicHookInfo<'b>,), Output = ()> + core[8f93d80df273fe75]::marker::Sync + core[8f93d80df273fe75]::marker::Send> as core[8f93d80df273fe75]::ops::function::Fn<(&std[840933623431fd06]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x5be9e5751112 - std[840933623431fd06]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x5be9e57371da - std[840933623431fd06]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/panicking.rs:691:13
[INFO] [stdout]   16:     0x5be9e572eb79 - std[840933623431fd06]::sys::backtrace::__rust_end_short_backtrace::<std[840933623431fd06]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x5be9e5737ffd - __rustc[5b4a0c6d8cc4a177]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x5be9e576db2c - core[8f93d80df273fe75]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x5be9e576daf2 - core[8f93d80df273fe75]::panicking::panic
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/core/src/panicking.rs:150:5
[INFO] [stdout]   20:     0x5be9e56d9298 - rust_gpx_smoother[91932561d5b1885e]::distbased_elevation_processor::tests::test_flat_route
[INFO] [stdout]                                at /opt/rustwide/workdir/src/distbased_elevation_processor.rs:475:9
[INFO] [stdout]   21:     0x5be9e56d51d7 - rust_gpx_smoother[91932561d5b1885e]::distbased_elevation_processor::tests::test_flat_route::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/distbased_elevation_processor.rs:468:25
[INFO] [stdout]   22:     0x5be9e56dc8c6 - <rust_gpx_smoother[91932561d5b1885e]::distbased_elevation_processor::tests::test_flat_route::{closure#0} as core[8f93d80df273fe75]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x5be9e56dca2b - <fn() -> core[8f93d80df273fe75]::result::Result<(), alloc[40b2bae28975ac47]::string::String> as core[8f93d80df273fe75]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x5be9e56dca2b - test[2f1252070343a163]::__rust_begin_short_backtrace::<core[8f93d80df273fe75]::result::Result<(), alloc[40b2bae28975ac47]::string::String>, fn() -> core[8f93d80df273fe75]::result::Result<(), alloc[40b2bae28975ac47]::string::String>>
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/test/src/lib.rs:663:18
[INFO] [stdout]   25:     0x5be9e56e928a - test[2f1252070343a163]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/test/src/lib.rs:686:74
[INFO] [stdout]   26:     0x5be9e56e928a - <core[8f93d80df273fe75]::panic::unwind_safe::AssertUnwindSafe<test[2f1252070343a163]::run_test_in_process::{closure#0}> as core[8f93d80df273fe75]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   27:     0x5be9e56e928a - std[840933623431fd06]::panicking::catch_unwind::do_call::<core[8f93d80df273fe75]::panic::unwind_safe::AssertUnwindSafe<test[2f1252070343a163]::run_test_in_process::{closure#0}>, core[8f93d80df273fe75]::result::Result<(), alloc[40b2bae28975ac47]::string::String>>
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/panicking.rs:581:40
[INFO] [stdout]   28:     0x5be9e56e928a - std[840933623431fd06]::panicking::catch_unwind::<core[8f93d80df273fe75]::result::Result<(), alloc[40b2bae28975ac47]::string::String>, core[8f93d80df273fe75]::panic::unwind_safe::AssertUnwindSafe<test[2f1252070343a163]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/panicking.rs:544:19
[INFO] [stdout]   29:     0x5be9e56e928a - std[840933623431fd06]::panic::catch_unwind::<core[8f93d80df273fe75]::panic::unwind_safe::AssertUnwindSafe<test[2f1252070343a163]::run_test_in_process::{closure#0}>, core[8f93d80df273fe75]::result::Result<(), alloc[40b2bae28975ac47]::string::String>>
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/panic.rs:359:14
[INFO] [stdout]   30:     0x5be9e56e928a - test[2f1252070343a163]::run_test_in_process
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/test/src/lib.rs:686:27
[INFO] [stdout]   31:     0x5be9e56e928a - test[2f1252070343a163]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/test/src/lib.rs:607:43
[INFO] [stdout]   32:     0x5be9e56e3754 - test[2f1252070343a163]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/test/src/lib.rs:637:41
[INFO] [stdout]   33:     0x5be9e56e3754 - std[840933623431fd06]::sys::backtrace::__rust_begin_short_backtrace::<test[2f1252070343a163]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   34:     0x5be9e56ebd82 - std[840933623431fd06]::thread::lifecycle::spawn_unchecked::<test[2f1252070343a163]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   35:     0x5be9e56ebd82 - <core[8f93d80df273fe75]::panic::unwind_safe::AssertUnwindSafe<std[840933623431fd06]::thread::lifecycle::spawn_unchecked<test[2f1252070343a163]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[8f93d80df273fe75]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   36:     0x5be9e56ebd82 - std[840933623431fd06]::panicking::catch_unwind::do_call::<core[8f93d80df273fe75]::panic::unwind_safe::AssertUnwindSafe<std[840933623431fd06]::thread::lifecycle::spawn_unchecked<test[2f1252070343a163]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/panicking.rs:581:40
[INFO] [stdout]   37:     0x5be9e56ebd82 - std[840933623431fd06]::panicking::catch_unwind::<(), core[8f93d80df273fe75]::panic::unwind_safe::AssertUnwindSafe<std[840933623431fd06]::thread::lifecycle::spawn_unchecked<test[2f1252070343a163]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/panicking.rs:544:19
[INFO] [stdout]   38:     0x5be9e56ebd82 - std[840933623431fd06]::panic::catch_unwind::<core[8f93d80df273fe75]::panic::unwind_safe::AssertUnwindSafe<std[840933623431fd06]::thread::lifecycle::spawn_unchecked<test[2f1252070343a163]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/panic.rs:359:14
[INFO] [stdout]   39:     0x5be9e56ebd82 - std[840933623431fd06]::thread::lifecycle::spawn_unchecked::<test[2f1252070343a163]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   40:     0x5be9e56ebd82 - <std[840933623431fd06]::thread::lifecycle::spawn_unchecked<test[2f1252070343a163]::run_test::{closure#1}, ()>::{closure#1} as core[8f93d80df273fe75]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   41:     0x5be9e57584cf - <alloc[40b2bae28975ac47]::boxed::Box<dyn core[8f93d80df273fe75]::ops::function::FnOnce<(), Output = ()> + core[8f93d80df273fe75]::marker::Send> as core[8f93d80df273fe75]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   42:     0x5be9e57584cf - <std[840933623431fd06]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/bd7d74411512a3dd3b35d2f699c51dd2557c7e7e/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   43:     0x7884dcefcaa4 - <unknown>
[INFO] [stdout]   44:     0x7884dcf89a64 - 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.05s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--bin rust-gpx-smoother`
[INFO] running `Command { std: "docker" "inspect" "9e989595f6a8bedbd20265d2a24ad2c6496be7e0cb4bbfcea5f825df6974393d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9e989595f6a8bedbd20265d2a24ad2c6496be7e0cb4bbfcea5f825df6974393d", kill_on_drop: false }`
[INFO] [stdout] 9e989595f6a8bedbd20265d2a24ad2c6496be7e0cb4bbfcea5f825df6974393d
