[INFO] cloning repository https://github.com/Nandem1/rust-christmas-extract
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Nandem1/rust-christmas-extract" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FNandem1%2Frust-christmas-extract", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FNandem1%2Frust-christmas-extract'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 7ad9e3cc2561ed4605e53698f944b29e5c4773d1
[INFO] checking Nandem1/rust-christmas-extract against 1.95.0 for pr-155915
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FNandem1%2Frust-christmas-extract" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'...
[INFO] [stderr] done.
[INFO] [stderr] Updating files:  13% (14/106)
Updating files:  14% (15/106)
Updating files:  15% (16/106)
Updating files:  16% (17/106)
Updating files:  17% (19/106)
Updating files:  18% (20/106)
Updating files:  19% (21/106)
Updating files:  20% (22/106)
Updating files:  21% (23/106)
Updating files:  22% (24/106)
Updating files:  23% (25/106)
Updating files:  24% (26/106)
Updating files:  25% (27/106)
Updating files:  26% (28/106)
Updating files:  27% (29/106)
Updating files:  28% (30/106)
Updating files:  29% (31/106)
Updating files:  30% (32/106)
Updating files:  31% (33/106)
Updating files:  32% (34/106)
Updating files:  33% (35/106)
Updating files:  34% (37/106)
Updating files:  35% (38/106)
Updating files:  36% (39/106)
Updating files:  37% (40/106)
Updating files:  38% (41/106)
Updating files:  39% (42/106)
Updating files:  40% (43/106)
Updating files:  41% (44/106)
Updating files:  42% (45/106)
Updating files:  43% (46/106)
Updating files:  44% (47/106)
Updating files:  45% (48/106)
Updating files:  46% (49/106)
Updating files:  47% (50/106)
Updating files:  48% (51/106)
Updating files:  49% (52/106)
Updating files:  50% (53/106)
Updating files:  51% (55/106)
Updating files:  52% (56/106)
Updating files:  53% (57/106)
Updating files:  54% (58/106)
Updating files:  55% (59/106)
Updating files:  56% (60/106)
Updating files:  57% (61/106)
Updating files:  58% (62/106)
Updating files:  59% (63/106)
Updating files:  60% (64/106)
Updating files:  61% (65/106)
Updating files:  62% (66/106)
Updating files:  63% (67/106)
Updating files:  64% (68/106)
Updating files:  65% (69/106)
Updating files:  66% (70/106)
Updating files:  67% (72/106)
Updating files:  68% (73/106)
Updating files:  69% (74/106)
Updating files:  70% (75/106)
Updating files:  71% (76/106)
Updating files:  72% (77/106)
Updating files:  73% (78/106)
Updating files:  74% (79/106)
Updating files:  75% (80/106)
Updating files:  76% (81/106)
Updating files:  77% (82/106)
Updating files:  78% (83/106)
Updating files:  79% (84/106)
Updating files:  80% (85/106)
Updating files:  81% (86/106)
Updating files:  82% (87/106)
Updating files:  83% (88/106)
Updating files:  84% (90/106)
Updating files:  85% (91/106)
Updating files:  86% (92/106)
Updating files:  87% (93/106)
Updating files:  88% (94/106)
Updating files:  89% (95/106)
Updating files:  90% (96/106)
Updating files:  91% (97/106)
Updating files:  92% (98/106)
Updating files:  93% (99/106)
Updating files:  94% (100/106)
Updating files:  95% (101/106)
Updating files:  96% (102/106)
Updating files:  97% (103/106)
Updating files:  98% (104/106)
Updating files:  99% (105/106)
Updating files: 100% (106/106)
Updating files: 100% (106/106), done.
[INFO] started tweaking git repo https://github.com/Nandem1/rust-christmas-extract
[INFO] finished tweaking git repo https://github.com/Nandem1/rust-christmas-extract
[INFO] tweaked toml for git repo https://github.com/Nandem1/rust-christmas-extract written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Nandem1/rust-christmas-extract on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Nandem1/rust-christmas-extract 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" "+1.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded array-init-cursor v0.2.1
[INFO] [stderr]   Downloaded polars-error v0.36.2
[INFO] [stderr]   Downloaded polars-row v0.36.2
[INFO] [stderr]   Downloaded polars-time v0.36.2
[INFO] [stderr]   Downloaded polars v0.36.2
[INFO] [stderr]   Downloaded halfbrown v0.2.5
[INFO] [stderr]   Downloaded polars-json v0.36.2
[INFO] [stderr]   Downloaded polars-compute v0.36.2
[INFO] [stderr]   Downloaded arrow-format v0.8.1
[INFO] [stderr]   Downloaded value-trait v0.8.1
[INFO] [stderr]   Downloaded polars-utils v0.36.2
[INFO] [stderr]   Downloaded polars-sql v0.36.2
[INFO] [stderr]   Downloaded calamine v0.24.0
[INFO] [stderr]   Downloaded polars-pipe v0.36.2
[INFO] [stderr]   Downloaded polars-io v0.36.2
[INFO] [stderr]   Downloaded simd-json v0.13.11
[INFO] [stderr]   Downloaded polars-lazy v0.36.2
[INFO] [stderr]   Downloaded argminmax v0.6.3
[INFO] [stderr]   Downloaded polars-ops v0.36.2
[INFO] [stderr]   Downloaded comfy-table v7.2.1
[INFO] [stderr]   Downloaded polars-plan v0.36.2
[INFO] [stderr]   Downloaded polars-core v0.36.2
[INFO] [stderr]   Downloaded polars-arrow v0.36.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 701dcc6d738477b1934ea09f20f7e59aae1b4dc6549c62057047f4b89a50735b
[INFO] running `Command { std: "docker" "start" "-a" "701dcc6d738477b1934ea09f20f7e59aae1b4dc6549c62057047f4b89a50735b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "701dcc6d738477b1934ea09f20f7e59aae1b4dc6549c62057047f4b89a50735b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "701dcc6d738477b1934ea09f20f7e59aae1b4dc6549c62057047f4b89a50735b", kill_on_drop: false }`
[INFO] [stdout] 701dcc6d738477b1934ea09f20f7e59aae1b4dc6549c62057047f4b89a50735b
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 6e0f5013304357ee4e0fb31fbf961024d1e5d927d20f199e1ec9a26b69b20db2
[INFO] running `Command { std: "docker" "start" "-a" "6e0f5013304357ee4e0fb31fbf961024d1e5d927d20f199e1ec9a26b69b20db2", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v2.0.111
[INFO] [stderr]    Compiling cc v1.2.49
[INFO] [stderr]     Checking array-init-cursor v0.2.1
[INFO] [stderr]    Compiling smartstring v1.0.1
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]     Checking simdutf8 v0.1.5
[INFO] [stderr]    Compiling polars-utils v0.36.2
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]     Checking sysinfo v0.30.13
[INFO] [stderr]    Compiling polars-arrow v0.36.2
[INFO] [stderr]     Checking rayon v1.11.0
[INFO] [stderr]     Checking chrono v0.4.42
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]     Checking lexical-util v1.0.7
[INFO] [stderr]     Checking ethnum v1.5.2
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]     Checking planus v0.3.1
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]    Compiling polars-compute v0.36.2
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]    Compiling polars-core v0.36.2
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]    Compiling ref-cast v1.0.25
[INFO] [stderr]     Checking unicode-width v0.2.2
[INFO] [stderr]     Checking float-cmp v0.9.0
[INFO] [stderr]    Compiling polars-ops v0.36.2
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking argminmax v0.6.3
[INFO] [stderr]     Checking atoi v2.0.0
[INFO] [stderr]     Checking memmap2 v0.7.1
[INFO] [stderr]    Compiling polars-plan v0.36.2
[INFO] [stderr]     Checking home v0.5.12
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]    Compiling polars-pipe v0.36.2
[INFO] [stderr]     Checking crossbeam-queue v0.3.12
[INFO] [stderr]     Checking crossbeam-channel v0.5.15
[INFO] [stderr]    Compiling polars-lazy v0.36.2
[INFO] [stderr]     Checking flate2 v1.1.5
[INFO] [stderr]    Compiling polars v0.36.2
[INFO] [stderr]     Checking glob v0.3.3
[INFO] [stderr]     Checking codepage v0.1.2
[INFO] [stderr]     Checking lexical-parse-integer v1.0.6
[INFO] [stderr]     Checking lexical-write-integer v1.0.6
[INFO] [stderr]     Checking quick-xml v0.31.0
[INFO] [stderr]     Checking lexical-parse-float v1.0.6
[INFO] [stderr]     Checking lexical-write-float v1.0.6
[INFO] [stderr]     Checking now v0.1.3
[INFO] [stderr]     Checking crossterm v0.29.0
[INFO] [stderr]     Checking zip v0.6.6
[INFO] [stderr]     Checking rand_distr v0.4.3
[INFO] [stderr]    Compiling zstd-sys v2.0.16+zstd.1.5.7
[INFO] [stderr]    Compiling lz4-sys v1.11.1+lz4-1.10.0
[INFO] [stderr]     Checking comfy-table v7.2.1
[INFO] [stderr]     Checking lexical-core v1.0.6
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling bytemuck_derive v1.10.2
[INFO] [stderr]    Compiling ref-cast-impl v1.0.25
[INFO] [stderr]    Compiling strum_macros v0.25.3
[INFO] [stderr]    Compiling enum_dispatch v0.3.13
[INFO] [stderr]    Compiling multiversion-macros v0.7.4
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]    Compiling zstd-safe v7.2.4
[INFO] [stderr]     Checking zstd v0.13.3
[INFO] [stderr]     Checking bytemuck v1.24.0
[INFO] [stderr]     Checking multiversion v0.7.4
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking arrow-format v0.8.1
[INFO] [stderr]     Checking halfbrown v0.2.5
[INFO] [stderr]     Checking calamine v0.24.0
[INFO] [stderr]     Checking value-trait v0.8.1
[INFO] [stderr]     Checking simd-json v0.13.11
[INFO] [stderr]     Checking polars-error v0.36.2
[INFO] [stderr]     Checking lz4 v1.28.1
[INFO] [stderr]     Checking polars-row v0.36.2
[INFO] [stderr]     Checking polars-json v0.36.2
[INFO] [stderr]     Checking polars-time v0.36.2
[INFO] [stderr]     Checking polars-io v0.36.2
[INFO] [stderr]     Checking excel_processor v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `Data`
[INFO] [stdout]  --> src/inspect_bd.rs:1:45
[INFO] [stdout]   |
[INFO] [stdout] 1 | use calamine::{Reader, Xlsx, open_workbook, Data};
[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: `Data`
[INFO] [stdout]  --> src/inspect_bd.rs:1:45
[INFO] [stdout]   |
[INFO] [stdout] 1 | use calamine::{Reader, Xlsx, open_workbook, Data};
[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/analytics_generator.rs:3:26
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::io::{BufWriter, Write};
[INFO] [stdout]   |                          ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `analytics`
[INFO] [stdout]    --> src/sales_processor.rs:117:11
[INFO] [stdout]     |
[INFO] [stdout] 117 |     #[cfg(feature = "analytics")]
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]     |
[INFO] [stdout]     = note: no expected values for `feature`
[INFO] [stdout]     = help: consider adding `analytics` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]     = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `analytics`
[INFO] [stdout]    --> src/sales_processor.rs:127:15
[INFO] [stdout]     |
[INFO] [stdout] 127 |     #[cfg(not(feature = "analytics"))]
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]     |
[INFO] [stdout]     = note: no expected values for `feature`
[INFO] [stdout]     = help: consider adding `analytics` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/analytics_json.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | 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: `crate::metadata::load_metadata`
[INFO] [stdout]  --> src/analytics_json.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::metadata::load_metadata;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/analytics_generator.rs:3:26
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::io::{BufWriter, Write};
[INFO] [stdout]   |                          ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `analytics`
[INFO] [stdout]    --> src/sales_processor.rs:117:11
[INFO] [stdout]     |
[INFO] [stdout] 117 |     #[cfg(feature = "analytics")]
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]     |
[INFO] [stdout]     = note: no expected values for `feature`
[INFO] [stdout]     = help: consider adding `analytics` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]     = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `analytics`
[INFO] [stdout]    --> src/sales_processor.rs:127:15
[INFO] [stdout]     |
[INFO] [stdout] 127 |     #[cfg(not(feature = "analytics"))]
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]     |
[INFO] [stdout]     = note: no expected values for `feature`
[INFO] [stdout]     = help: consider adding `analytics` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/analytics_json.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | 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: `crate::metadata::load_metadata`
[INFO] [stdout]  --> src/analytics_json.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::metadata::load_metadata;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/analytics_generator.rs:3:26
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::io::{BufWriter, Write};
[INFO] [stdout]   |                          ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/analytics_json.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::metadata::load_metadata`
[INFO] [stdout]  --> src/analytics_json.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::metadata::load_metadata;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `analytics`
[INFO] [stdout]    --> src/sales_processor.rs:117:11
[INFO] [stdout]     |
[INFO] [stdout] 117 |     #[cfg(feature = "analytics")]
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]     |
[INFO] [stdout]     = note: no expected values for `feature`
[INFO] [stdout]     = help: consider adding `analytics` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]     = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `analytics`
[INFO] [stdout]    --> src/sales_processor.rs:127:15
[INFO] [stdout]     |
[INFO] [stdout] 127 |     #[cfg(not(feature = "analytics"))]
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]     |
[INFO] [stdout]     = note: no expected values for `feature`
[INFO] [stdout]     = help: consider adding `analytics` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/analytics_generator.rs:3:26
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::io::{BufWriter, Write};
[INFO] [stdout]   |                          ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/analytics_json.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::metadata::load_metadata`
[INFO] [stdout]  --> src/analytics_json.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::metadata::load_metadata;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `analytics`
[INFO] [stdout]    --> src/sales_processor.rs:117:11
[INFO] [stdout]     |
[INFO] [stdout] 117 |     #[cfg(feature = "analytics")]
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]     |
[INFO] [stdout]     = note: no expected values for `feature`
[INFO] [stdout]     = help: consider adding `analytics` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]     = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `analytics`
[INFO] [stdout]    --> src/sales_processor.rs:127:15
[INFO] [stdout]     |
[INFO] [stdout] 127 |     #[cfg(not(feature = "analytics"))]
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]     |
[INFO] [stdout]     = note: no expected values for `feature`
[INFO] [stdout]     = help: consider adding `analytics` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXCLUDED_ARTICLES` is never used
[INFO] [stdout]   --> src/constants.rs:16:11
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub const EXCLUDED_ARTICLES: &[&str] = &["1495628"];
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `product_code` is never read
[INFO] [stdout]  --> src/metadata.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct ProductMetadata {
[INFO] [stdout]   |            --------------- field in this struct
[INFO] [stdout] 9 |     pub product_code: String,  // Código de bdproducts (columna 0, ej: "A00001")
[INFO] [stdout]   |         ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `ProductMetadata` 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 `SaleRecord` is never constructed
[INFO] [stdout]   --> src/models.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct SaleRecord {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `extract_product_code`, `extract_product_name`, and `normalize_date` are never used
[INFO] [stdout]   --> src/models.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl SaleRecord {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 35 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn extract_product_code(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn extract_product_name(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub fn normalize_date(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `price` is never read
[INFO] [stdout]   --> src/metadata.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct ProductMetadata {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     pub price: f64,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ProductMetadata` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `doc`, `cantidad`, and `archivo` are never read
[INFO] [stdout]   --> src/john_processor.rs:37:13
[INFO] [stdout]    |
[INFO] [stdout] 34 |     pub struct SaleRecord {
[INFO] [stdout]    |                ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 37 |         pub doc: String,
[INFO] [stdout]    |             ^^^
[INFO] [stdout] 38 |         pub precio_unit: f64,
[INFO] [stdout] 39 |         pub cantidad: f64,
[INFO] [stdout]    |             ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |         pub archivo: String,
[INFO] [stdout]    |             ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SaleRecord` 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 `AggregatedSale` is never constructed
[INFO] [stdout]    --> src/john_processor.rs:327:16
[INFO] [stdout]     |
[INFO] [stdout] 327 |     pub struct AggregatedSale {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `process_sales_records` is never used
[INFO] [stdout]    --> src/john_processor.rs:336:12
[INFO] [stdout]     |
[INFO] [stdout] 336 |     pub fn process_sales_records(records: Vec<SaleRecord>) -> Result<Vec<AggregatedSale>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_sales_dataframe` is never used
[INFO] [stdout]    --> src/john_processor.rs:363:12
[INFO] [stdout]     |
[INFO] [stdout] 363 |     pub fn create_sales_dataframe(sales: Vec<AggregatedSale>) -> Result<DataFrame> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_sales_json` is never used
[INFO] [stdout]    --> src/john_processor.rs:387:12
[INFO] [stdout]     |
[INFO] [stdout] 387 |     pub fn generate_sales_json(df: &mut DataFrame, output_path: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_sales_csv` is never used
[INFO] [stdout]    --> src/john_processor.rs:405:12
[INFO] [stdout]     |
[INFO] [stdout] 405 |     pub fn generate_sales_csv(df: &mut DataFrame, output_path: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/metadata_matcher.rs:14:13
[INFO] [stdout]    |
[INFO] [stdout] 14 |         let mut by_name = HashMap::new();
[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: struct `InventoryRecord` is never constructed
[INFO] [stdout]  --> src/models.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct InventoryRecord {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/models.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl InventoryRecord {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 10 |     pub fn new(date: String, product_code: String, product_name: String, units: f64) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `doc`, `precio_unit`, `cantidad`, `archivo`, `pack_units_sold`, and `is_nc` are never read
[INFO] [stdout]   --> src/models.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct SaleRecord {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub doc: String,              // Número de boleta
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 25 |     pub precio_unit: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 26 |     pub cantidad: f64,            // Puede ser negativa en NC
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub archivo: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 30 |     pub pack_units_sold: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 31 |     pub is_nc: bool,              // true para notas de crédito
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SaleRecord` 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: field `product_code` is never read
[INFO] [stdout]  --> src/metadata.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct ProductMetadata {
[INFO] [stdout]   |            --------------- field in this struct
[INFO] [stdout] 9 |     pub product_code: String,  // Código de bdproducts (columna 0, ej: "A00001")
[INFO] [stdout]   |         ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `ProductMetadata` 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 `create_sales_dataframe` is never used
[INFO] [stdout]   --> src/sales_processor.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub fn create_sales_dataframe(sales: Vec<AggregatedSale>) -> Result<DataFrame> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_sales_json` is never used
[INFO] [stdout]   --> src/sales_processor.rs:79:8
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub fn generate_sales_json(df: &mut DataFrame, output_path: &str) -> Result<()> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_sales_csv` is never used
[INFO] [stdout]    --> src/sales_processor.rs:101:8
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub fn generate_sales_csv(df: &mut DataFrame, output_path: &str) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_analytics_json_wrapper` is never used
[INFO] [stdout]    --> src/sales_processor.rs:112:8
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub fn generate_analytics_json_wrapper(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `by_name` is never read
[INFO] [stdout]  --> src/metadata_matcher.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct MetadataMatcher {
[INFO] [stdout]   |            --------------- field in this struct
[INFO] [stdout] 6 |     by_code: HashMap<String, ProductMetadata>,
[INFO] [stdout] 7 |     by_name: HashMap<String, ProductMetadata>,
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FormatConversionRule` is never constructed
[INFO] [stdout]  --> src/format_converter.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct FormatConversionRule {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/format_converter.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl FormatConversionRule {
[INFO] [stdout]    | ------------------------- associated function in this implementation
[INFO] [stdout] 13 |     pub fn new(product_code: &str, cutoff_date: NaiveDate, display_size: f64) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_conversion_rules` is never used
[INFO] [stdout]   --> src/format_converter.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn get_conversion_rules() -> Vec<FormatConversionRule> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_date_to_naive` is never used
[INFO] [stdout]   --> src/format_converter.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub fn parse_date_to_naive(date_str: &str) -> Option<NaiveDate> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_format_conversion` is never used
[INFO] [stdout]   --> src/format_converter.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn apply_format_conversion(record: &mut InventoryRecord) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/metadata_matcher.rs:14:13
[INFO] [stdout]    |
[INFO] [stdout] 14 |         let mut by_name = HashMap::new();
[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: fields `doc`, `precio_unit`, `cantidad`, `archivo`, `pack_units_sold`, and `is_nc` are never read
[INFO] [stdout]   --> src/models.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct SaleRecord {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub doc: String,              // Número de boleta
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 25 |     pub precio_unit: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 26 |     pub cantidad: f64,            // Puede ser negativa en NC
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub archivo: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 30 |     pub pack_units_sold: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 31 |     pub is_nc: bool,              // true para notas de crédito
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SaleRecord` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `product_code` is never read
[INFO] [stdout]  --> src/metadata.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct ProductMetadata {
[INFO] [stdout]   |            --------------- field in this struct
[INFO] [stdout] 9 |     pub product_code: String,  // Código de bdproducts (columna 0, ej: "A00001")
[INFO] [stdout]   |         ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `ProductMetadata` 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 `create_sales_dataframe` is never used
[INFO] [stdout]   --> src/sales_processor.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub fn create_sales_dataframe(sales: Vec<AggregatedSale>) -> Result<DataFrame> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_sales_json` is never used
[INFO] [stdout]   --> src/sales_processor.rs:79:8
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub fn generate_sales_json(df: &mut DataFrame, output_path: &str) -> Result<()> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_sales_csv` is never used
[INFO] [stdout]    --> src/sales_processor.rs:101:8
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub fn generate_sales_csv(df: &mut DataFrame, output_path: &str) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_analytics_json_wrapper` is never used
[INFO] [stdout]    --> src/sales_processor.rs:112:8
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub fn generate_analytics_json_wrapper(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `by_name` is never read
[INFO] [stdout]  --> src/metadata_matcher.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct MetadataMatcher {
[INFO] [stdout]   |            --------------- field in this struct
[INFO] [stdout] 6 |     by_code: HashMap<String, ProductMetadata>,
[INFO] [stdout] 7 |     by_name: HashMap<String, ProductMetadata>,
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXCLUDED_ARTICLES` is never used
[INFO] [stdout]   --> src/constants.rs:16:11
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub const EXCLUDED_ARTICLES: &[&str] = &["1495628"];
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `product_code` is never read
[INFO] [stdout]  --> src/metadata.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct ProductMetadata {
[INFO] [stdout]   |            --------------- field in this struct
[INFO] [stdout] 9 |     pub product_code: String,  // Código de bdproducts (columna 0, ej: "A00001")
[INFO] [stdout]   |         ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `ProductMetadata` 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 `SaleRecord` is never constructed
[INFO] [stdout]   --> src/models.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct SaleRecord {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `extract_product_code`, `extract_product_name`, and `normalize_date` are never used
[INFO] [stdout]   --> src/models.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl SaleRecord {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 35 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn extract_product_code(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn extract_product_name(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub fn normalize_date(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `price` is never read
[INFO] [stdout]   --> src/metadata.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct ProductMetadata {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     pub price: f64,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ProductMetadata` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FormatConversionRule` is never constructed
[INFO] [stdout]  --> src/format_converter.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct FormatConversionRule {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/format_converter.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl FormatConversionRule {
[INFO] [stdout]    | ------------------------- associated function in this implementation
[INFO] [stdout] 13 |     pub fn new(product_code: &str, cutoff_date: NaiveDate, display_size: f64) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_conversion_rules` is never used
[INFO] [stdout]   --> src/format_converter.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn get_conversion_rules() -> Vec<FormatConversionRule> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_date_to_naive` is never used
[INFO] [stdout]   --> src/format_converter.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub fn parse_date_to_naive(date_str: &str) -> Option<NaiveDate> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_format_conversion` is never used
[INFO] [stdout]   --> src/format_converter.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn apply_format_conversion(record: &mut InventoryRecord) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InventoryRecord` is never constructed
[INFO] [stdout]   --> src/john_processor.rs:15:16
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub struct InventoryRecord {
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/john_processor.rs:23:16
[INFO] [stdout]    |
[INFO] [stdout] 22 |     impl InventoryRecord {
[INFO] [stdout]    |     -------------------- associated function in this implementation
[INFO] [stdout] 23 |         pub fn new(date: String, product_code: String, product_name: String, units: f64) -> Self {
[INFO] [stdout]    |                ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `doc`, `cantidad`, and `archivo` are never read
[INFO] [stdout]   --> src/john_processor.rs:37:13
[INFO] [stdout]    |
[INFO] [stdout] 34 |     pub struct SaleRecord {
[INFO] [stdout]    |                ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 37 |         pub doc: String,
[INFO] [stdout]    |             ^^^
[INFO] [stdout] 38 |         pub precio_unit: f64,
[INFO] [stdout] 39 |         pub cantidad: f64,
[INFO] [stdout]    |             ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |         pub archivo: String,
[INFO] [stdout]    |             ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SaleRecord` 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 `AggregatedSale` is never constructed
[INFO] [stdout]    --> src/john_processor.rs:327:16
[INFO] [stdout]     |
[INFO] [stdout] 327 |     pub struct AggregatedSale {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `process_sales_records` is never used
[INFO] [stdout]    --> src/john_processor.rs:336:12
[INFO] [stdout]     |
[INFO] [stdout] 336 |     pub fn process_sales_records(records: Vec<SaleRecord>) -> Result<Vec<AggregatedSale>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_sales_dataframe` is never used
[INFO] [stdout]    --> src/john_processor.rs:363:12
[INFO] [stdout]     |
[INFO] [stdout] 363 |     pub fn create_sales_dataframe(sales: Vec<AggregatedSale>) -> Result<DataFrame> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_sales_json` is never used
[INFO] [stdout]    --> src/john_processor.rs:387:12
[INFO] [stdout]     |
[INFO] [stdout] 387 |     pub fn generate_sales_json(df: &mut DataFrame, output_path: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_sales_csv` is never used
[INFO] [stdout]    --> src/john_processor.rs:405:12
[INFO] [stdout]     |
[INFO] [stdout] 405 |     pub fn generate_sales_csv(df: &mut DataFrame, output_path: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/metadata_matcher.rs:14:13
[INFO] [stdout]    |
[INFO] [stdout] 14 |         let mut by_name = HashMap::new();
[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: constant `EXCLUDED_ARTICLES` is never used
[INFO] [stdout]   --> src/constants.rs:16:11
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub const EXCLUDED_ARTICLES: &[&str] = &["1495628"];
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `by_name` is never read
[INFO] [stdout]  --> src/metadata_matcher.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct MetadataMatcher {
[INFO] [stdout]   |            --------------- field in this struct
[INFO] [stdout] 6 |     by_code: HashMap<String, ProductMetadata>,
[INFO] [stdout] 7 |     by_name: HashMap<String, ProductMetadata>,
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/metadata_matcher.rs:14:13
[INFO] [stdout]    |
[INFO] [stdout] 14 |         let mut by_name = HashMap::new();
[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: constant `EXCLUDED_ARTICLES` is never used
[INFO] [stdout]   --> src/constants.rs:16:11
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub const EXCLUDED_ARTICLES: &[&str] = &["1495628"];
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `by_name` is never read
[INFO] [stdout]  --> src/metadata_matcher.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct MetadataMatcher {
[INFO] [stdout]   |            --------------- field in this struct
[INFO] [stdout] 6 |     by_code: HashMap<String, ProductMetadata>,
[INFO] [stdout] 7 |     by_name: HashMap<String, ProductMetadata>,
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 56.85s
[INFO] running `Command { std: "docker" "inspect" "6e0f5013304357ee4e0fb31fbf961024d1e5d927d20f199e1ec9a26b69b20db2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6e0f5013304357ee4e0fb31fbf961024d1e5d927d20f199e1ec9a26b69b20db2", kill_on_drop: false }`
[INFO] [stdout] 6e0f5013304357ee4e0fb31fbf961024d1e5d927d20f199e1ec9a26b69b20db2
