[INFO] cloning repository https://github.com/Xgood1118/solocoder-5439-rust-bom
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Xgood1118/solocoder-5439-rust-bom" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FXgood1118%2Fsolocoder-5439-rust-bom", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FXgood1118%2Fsolocoder-5439-rust-bom'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 34d98a22934a7fe480c7ad3d697266a4f5e1a6d6
[INFO] checking Xgood1118/solocoder-5439-rust-bom against dfbea5bc945a9d7ff017d3d4bfbd1af9295fe5b8 for pr-133502-26
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FXgood1118%2Fsolocoder-5439-rust-bom" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Xgood1118/solocoder-5439-rust-bom
[INFO] finished tweaking git repo https://github.com/Xgood1118/solocoder-5439-rust-bom
[INFO] tweaked toml for git repo https://github.com/Xgood1118/solocoder-5439-rust-bom written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Xgood1118/solocoder-5439-rust-bom on toolchain dfbea5bc945a9d7ff017d3d4bfbd1af9295fe5b8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dfbea5bc945a9d7ff017d3d4bfbd1af9295fe5b8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Xgood1118/solocoder-5439-rust-bom 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" "+dfbea5bc945a9d7ff017d3d4bfbd1af9295fe5b8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded codepage v0.1.2
[INFO] [stderr]   Downloaded actix-multipart v0.6.2
[INFO] [stderr]   Downloaded actix-multipart-derive v0.6.1
[INFO] [stderr]   Downloaded parse-size v1.1.0
[INFO] [stderr]   Downloaded actix-http v3.12.1
[INFO] [stderr]   Downloaded calamine v0.25.0
[INFO] [stderr]   Downloaded actix-web v4.13.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:1fa6594d87c8fa7b311925a7a77a16f539833322d9dfba4ce891f211db2f90b1" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 4b682923b0dbae823b74ce65a1ab1085d317aa641d3d59d467b1b1b139e8c061
[INFO] running `Command { std: "docker" "start" "4b682923b0dbae823b74ce65a1ab1085d317aa641d3d59d467b1b1b139e8c061", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4b682923b0dbae823b74ce65a1ab1085d317aa641d3d59d467b1b1b139e8c061", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4b682923b0dbae823b74ce65a1ab1085d317aa641d3d59d467b1b1b139e8c061" "/opt/rustwide/cargo-home/bin/cargo" "+dfbea5bc945a9d7ff017d3d4bfbd1af9295fe5b8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4b682923b0dbae823b74ce65a1ab1085d317aa641d3d59d467b1b1b139e8c061", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4b682923b0dbae823b74ce65a1ab1085d317aa641d3d59d467b1b1b139e8c061" "/opt/rustwide/cargo-home/bin/cargo" "+dfbea5bc945a9d7ff017d3d4bfbd1af9295fe5b8" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]     Checking memchr v2.8.1
[INFO] [stderr]     Checking log v0.4.32
[INFO] [stderr]    Compiling displaydoc v0.2.6
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]     Checking yoke v0.8.3
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]    Compiling cc v1.2.63
[INFO] [stderr]     Checking futures-channel v0.3.32
[INFO] [stderr]     Checking typenum v1.20.1
[INFO] [stderr]     Checking rand_core v0.10.1
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]     Checking simd-adler32 v0.3.9
[INFO] [stderr]    Compiling winnow v1.0.3
[INFO] [stderr]    Compiling unicode-segmentation v1.13.3
[INFO] [stderr]    Compiling toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling zerocopy v0.8.50
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]     Checking mio v1.2.1
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking zerovec v0.11.6
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking http v0.2.12
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling bytes v1.11.1
[INFO] [stderr]    Compiling cookie v0.16.2
[INFO] [stderr]    Compiling time-macros v0.2.27
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]     Checking aho-corasick v1.1.4
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]     Checking tokio v1.52.3
[INFO] [stderr]     Checking zerotrie v0.2.4
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]     Checking flate2 v1.1.9
[INFO] [stderr]     Checking hybrid-array v0.4.12
[INFO] [stderr]     Checking tinystr v0.8.3
[INFO] [stderr]     Checking potential_utf v0.1.5
[INFO] [stderr]    Compiling bytestring v1.5.1
[INFO] [stderr]     Checking brotli-decompressor v5.0.1
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]     Checking icu_locale_core v2.2.0
[INFO] [stderr]     Checking icu_collections v2.2.0
[INFO] [stderr]     Checking chacha20 v0.10.0
[INFO] [stderr]     Checking actix-utils v3.0.1
[INFO] [stderr]     Checking actix-service v2.0.3
[INFO] [stderr]    Compiling toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling regex-lite v0.1.9
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking crypto-common v0.2.2
[INFO] [stderr]     Checking block-buffer v0.12.0
[INFO] [stderr]    Compiling toml_edit v0.25.12+spec-1.1.0
[INFO] [stderr]     Checking rand v0.10.1
[INFO] [stderr]     Checking time v0.3.47
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]     Checking local-channel v0.1.5
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking icu_provider v2.2.0
[INFO] [stderr]    Compiling zstd-sys v2.0.16+zstd.1.5.7
[INFO] [stderr]     Checking brotli v8.0.3
[INFO] [stderr]     Checking foldhash v0.1.5
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]     Checking icu_properties v2.2.0
[INFO] [stderr]     Checking digest v0.11.3
[INFO] [stderr]    Compiling actix-router v0.5.4
[INFO] [stderr]     Checking sha1 v0.11.0
[INFO] [stderr]    Compiling proc-macro-crate v3.5.0
[INFO] [stderr]    Compiling zip v1.1.4
[INFO] [stderr]     Checking language-tags v0.3.2
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]    Compiling num_enum_derive v0.7.6
[INFO] [stderr]    Compiling actix-macros v0.2.4
[INFO] [stderr]     Checking regex v1.12.4
[INFO] [stderr]    Compiling parse-size v1.1.0
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling actix-web-codegen v4.3.0
[INFO] [stderr]     Checking impl-more v0.1.9
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking anstream v1.0.0
[INFO] [stderr]    Compiling derive_more v0.99.20
[INFO] [stderr]    Compiling actix-multipart-derive v0.6.1
[INFO] [stderr]     Checking env_filter v1.0.1
[INFO] [stderr]     Checking serde_plain v1.0.2
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking futures-executor v0.3.32
[INFO] [stderr]     Checking csv-core v0.1.13
[INFO] [stderr]     Checking tempfile v3.27.0
[INFO] [stderr]     Checking idna_adapter v1.2.2
[INFO] [stderr]     Checking quick-xml v0.31.0
[INFO] [stderr]     Checking codepage v0.1.2
[INFO] [stderr]     Checking jiff v0.2.28
[INFO] [stderr]     Checking futures v0.3.32
[INFO] [stderr]     Checking uuid v1.23.3
[INFO] [stderr]     Checking csv v1.4.0
[INFO] [stderr]     Checking dotenvy v0.15.7
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking derive_more v2.1.1
[INFO] [stderr]     Checking chrono v0.4.45
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]     Checking actix-rt v2.11.0
[INFO] [stderr]     Checking num_enum v0.7.6
[INFO] [stderr]     Checking actix-server v2.6.0
[INFO] [stderr]     Checking rand v0.8.6
[INFO] [stderr]     Checking calamine v0.25.0
[INFO] [stderr]     Checking h2 v0.3.27
[INFO] [stderr]     Checking actix-codec v0.5.2
[INFO] [stderr]     Checking env_logger v0.11.10
[INFO] [stderr]    Compiling zstd-safe v7.2.4
[INFO] [stderr]     Checking zstd v0.13.3
[INFO] [stderr]     Checking actix-http v3.12.1
[INFO] [stderr]     Checking actix-web v4.13.0
[INFO] [stderr]     Checking actix-multipart v0.6.2
[INFO] [stderr]     Checking bom-parser v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::io::Read`
[INFO] [stdout]    --> src/bom.rs:114:9
[INFO] [stdout]     |
[INFO] [stdout] 114 |     use std::io::Read;
[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::sync::Arc`
[INFO] [stdout]  --> src/alt.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/calc.rs:2:19
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::tree::{self, BomTreeNode};
[INFO] [stdout]   |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]   --> src/api.rs:11:26
[INFO] [stdout]    |
[INFO] [stdout] 11 | use serde::{Deserialize, Serialize};
[INFO] [stdout]    |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Read`
[INFO] [stdout]    --> src/bom.rs:114:9
[INFO] [stdout]     |
[INFO] [stdout] 114 |     use std::io::Read;
[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::sync::Arc`
[INFO] [stdout]  --> src/alt.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/calc.rs:2:19
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::tree::{self, BomTreeNode};
[INFO] [stdout]   |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]   --> src/api.rs:11:26
[INFO] [stdout]    |
[INFO] [stdout] 11 | use serde::{Deserialize, Serialize};
[INFO] [stdout]    |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tree.rs:156:73
[INFO] [stdout]     |
[INFO] [stdout] 156 | pub fn traverse_pre_order<F: FnMut(&BomTreeNode)>(tree: &[BomTreeNode], mut f: F) {
[INFO] [stdout]     |                                                                         ----^
[INFO] [stdout]     |                                                                         |
[INFO] [stdout]     |                                                                         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tree.rs:169:74
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub fn traverse_post_order<F: FnMut(&BomTreeNode)>(tree: &[BomTreeNode], mut f: F) {
[INFO] [stdout]     |                                                                          ----^
[INFO] [stdout]     |                                                                          |
[INFO] [stdout]     |                                                                          help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tree.rs:156:73
[INFO] [stdout]     |
[INFO] [stdout] 156 | pub fn traverse_pre_order<F: FnMut(&BomTreeNode)>(tree: &[BomTreeNode], mut f: F) {
[INFO] [stdout]     |                                                                         ----^
[INFO] [stdout]     |                                                                         |
[INFO] [stdout]     |                                                                         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/tree.rs:169:74
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub fn traverse_post_order<F: FnMut(&BomTreeNode)>(tree: &[BomTreeNode], mut f: F) {
[INFO] [stdout]     |                                                                          ----^
[INFO] [stdout]     |                                                                          |
[INFO] [stdout]     |                                                                          help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_virtual` and `is_raw_material` are never used
[INFO] [stdout]    --> src/bom.rs:100:12
[INFO] [stdout]     |
[INFO] [stdout]  99 | impl BomItem {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] 100 |     pub fn is_virtual(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub fn is_raw_material(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_leaf` is never used
[INFO] [stdout]   --> src/tree.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl BomTreeNode {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn is_leaf(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `flatten` is never used
[INFO] [stdout]    --> src/tree.rs:119:8
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub fn flatten(tree: &[BomTreeNode]) -> BomData {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `flatten_node` is never used
[INFO] [stdout]    --> src/tree.rs:127:4
[INFO] [stdout]     |
[INFO] [stdout] 127 | fn flatten_node(node: &BomTreeNode, parent: Option<&str>, result: &mut BomData) {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `traverse_post_order` is never used
[INFO] [stdout]    --> src/tree.rs:169:8
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub fn traverse_post_order<F: FnMut(&BomTreeNode)>(tree: &[BomTreeNode], mut f: F) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `collect_raw_materials` is never used
[INFO] [stdout]    --> src/tree.rs:200:8
[INFO] [stdout]     |
[INFO] [stdout] 200 | pub fn collect_raw_materials(tree: &[BomTreeNode]) -> Vec<BomTreeNode> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_node` is never used
[INFO] [stdout]    --> src/tree.rs:220:8
[INFO] [stdout]     |
[INFO] [stdout] 220 | pub fn find_node(tree: &[BomTreeNode], material_no: &str) -> Option<BomTreeNode> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `score` is never used
[INFO] [stdout]   --> src/alt.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl AltMaterial {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 23 |     pub fn score(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `sorted_by_score` and `find_by_supplier` are never used
[INFO] [stdout]   --> src/alt.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl AltMaterialGroup {
[INFO] [stdout]    | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn sorted_by_score(&self) -> Vec<&AltMaterial> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn find_by_supplier(&self, supplier: &str) -> Option<&AltMaterial> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `consume_stock` and `switch_count` are never used
[INFO] [stdout]    --> src/alt.rs:176:12
[INFO] [stdout]     |
[INFO] [stdout]  78 | impl AltMaterialManager {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn consume_stock(
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub fn switch_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_virtual_material` is never used
[INFO] [stdout]    --> src/alt.rs:221:8
[INFO] [stdout]     |
[INFO] [stdout] 221 | pub fn is_virtual_material(bom_type: &BomType) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `should_skip_in_cost` is never used
[INFO] [stdout]    --> src/alt.rs:225:8
[INFO] [stdout]     |
[INFO] [stdout] 225 | pub fn should_skip_in_cost(bom_type: &BomType) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `collect_non_virtual_alts` is never used
[INFO] [stdout]    --> src/alt.rs:229:8
[INFO] [stdout]     |
[INFO] [stdout] 229 | pub fn collect_non_virtual_alts(group: &AltMaterialGroup) -> Vec<&AltMaterial> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `total_rate` is never used
[INFO] [stdout]   --> src/calc.rs:99:12
[INFO] [stdout]    |
[INFO] [stdout] 98 | impl SurchargeConfig {
[INFO] [stdout]    | -------------------- method in this implementation
[INFO] [stdout] 99 |     pub fn total_rate(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `set_custom_price_tiers` is never used
[INFO] [stdout]    --> src/calc.rs:183:12
[INFO] [stdout]     |
[INFO] [stdout] 156 | impl CostCalculator {
[INFO] [stdout]     | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 183 |     pub fn set_custom_price_tiers(&mut self, material_no: &str, tiers: Vec<PriceTier>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_cost` is never used
[INFO] [stdout]    --> src/calc.rs:324:8
[INFO] [stdout]     |
[INFO] [stdout] 324 | pub fn format_cost(value: f64) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `version_count` is never used
[INFO] [stdout]    --> src/version.rs:117:12
[INFO] [stdout]     |
[INFO] [stdout]  35 | impl VersionHistory {
[INFO] [stdout]     | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn version_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `has_bom` is never used
[INFO] [stdout]    --> src/version.rs:352:12
[INFO] [stdout]     |
[INFO] [stdout] 297 | impl VersionManager {
[INFO] [stdout]     | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 352 |     pub fn has_bom(&self, bom_id: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `with_max_loss_rate` and `add_master_material` are never used
[INFO] [stdout]   --> src/validation.rs:80:12
[INFO] [stdout]    |
[INFO] [stdout] 72 | impl BomValidator {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub fn with_max_loss_rate(mut self, max_loss_rate: f64) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 89 |     pub fn add_master_material(&mut self, material_no: &str) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `fail_batch_job` is never used
[INFO] [stdout]    --> src/app_state.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl AppState {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn fail_batch_job(&self, job_id: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_virtual` and `is_raw_material` are never used
[INFO] [stdout]    --> src/bom.rs:100:12
[INFO] [stdout]     |
[INFO] [stdout]  99 | impl BomItem {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] 100 |     pub fn is_virtual(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub fn is_raw_material(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_leaf` is never used
[INFO] [stdout]   --> src/tree.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl BomTreeNode {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn is_leaf(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `traverse_post_order` is never used
[INFO] [stdout]    --> src/tree.rs:169:8
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub fn traverse_post_order<F: FnMut(&BomTreeNode)>(tree: &[BomTreeNode], mut f: F) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `collect_raw_materials` is never used
[INFO] [stdout]    --> src/tree.rs:200:8
[INFO] [stdout]     |
[INFO] [stdout] 200 | pub fn collect_raw_materials(tree: &[BomTreeNode]) -> Vec<BomTreeNode> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `score` is never used
[INFO] [stdout]   --> src/alt.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl AltMaterial {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 23 |     pub fn score(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `sorted_by_score` and `find_by_supplier` are never used
[INFO] [stdout]   --> src/alt.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl AltMaterialGroup {
[INFO] [stdout]    | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn sorted_by_score(&self) -> Vec<&AltMaterial> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn find_by_supplier(&self, supplier: &str) -> Option<&AltMaterial> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `switch_count` is never used
[INFO] [stdout]    --> src/alt.rs:205:12
[INFO] [stdout]     |
[INFO] [stdout]  78 | impl AltMaterialManager {
[INFO] [stdout]     | ----------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub fn switch_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `collect_non_virtual_alts` is never used
[INFO] [stdout]    --> src/alt.rs:229:8
[INFO] [stdout]     |
[INFO] [stdout] 229 | pub fn collect_non_virtual_alts(group: &AltMaterialGroup) -> Vec<&AltMaterial> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `total_rate` is never used
[INFO] [stdout]   --> src/calc.rs:99:12
[INFO] [stdout]    |
[INFO] [stdout] 98 | impl SurchargeConfig {
[INFO] [stdout]    | -------------------- method in this implementation
[INFO] [stdout] 99 |     pub fn total_rate(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_cost` is never used
[INFO] [stdout]    --> src/calc.rs:324:8
[INFO] [stdout]     |
[INFO] [stdout] 324 | pub fn format_cost(value: f64) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `with_max_loss_rate` is never used
[INFO] [stdout]   --> src/validation.rs:80:12
[INFO] [stdout]    |
[INFO] [stdout] 72 | impl BomValidator {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub fn with_max_loss_rate(mut self, max_loss_rate: f64) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `fail_batch_job` is never used
[INFO] [stdout]    --> src/app_state.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl AppState {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn fail_batch_job(&self, job_id: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 44.36s
[INFO] running `Command { std: "docker" "inspect" "4b682923b0dbae823b74ce65a1ab1085d317aa641d3d59d467b1b1b139e8c061", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4b682923b0dbae823b74ce65a1ab1085d317aa641d3d59d467b1b1b139e8c061", kill_on_drop: false }`
[INFO] [stdout] 4b682923b0dbae823b74ce65a1ab1085d317aa641d3d59d467b1b1b139e8c061
