[INFO] cloning repository https://github.com/ematiasm/roya
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ematiasm/roya" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fematiasm%2Froya", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fematiasm%2Froya'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 9fd78863e2220db56ce829843069e82329d03a1e
[INFO] checking ematiasm/roya against 3154cc1a3e6424e44f438a95007d043ed5ceaaf6+rustflags=-Znext-solver=coherence for pr-133502-30
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fematiasm%2Froya" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/ematiasm/roya
[INFO] finished tweaking git repo https://github.com/ematiasm/roya
[INFO] tweaked toml for git repo https://github.com/ematiasm/roya written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/ematiasm/roya on toolchain 3154cc1a3e6424e44f438a95007d043ed5ceaaf6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/ematiasm/roya 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" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded crypto-common v0.1.6
[INFO] [stderr]   Downloaded sqlx-sqlite v0.9.0
[INFO] [stderr]   Downloaded generic-array v0.14.9
[INFO] [stderr]   Downloaded humansize v2.1.3
[INFO] [stderr]   Downloaded askama_escape v0.10.3
[INFO] [stderr]   Downloaded askama_axum v0.4.0
[INFO] [stderr]   Downloaded sha1 v0.11.0
[INFO] [stderr]   Downloaded etcetera v0.11.0
[INFO] [stderr]   Downloaded sqlx-macros v0.9.0
[INFO] [stderr]   Downloaded askama_parser v0.2.1
[INFO] [stderr]   Downloaded hashlink v0.11.1
[INFO] [stderr]   Downloaded askama v0.12.1
[INFO] [stderr]   Downloaded askama_derive v0.12.5
[INFO] [stderr]   Downloaded cmov v0.5.4
[INFO] [stderr]   Downloaded axum-core v0.4.5
[INFO] [stderr]   Downloaded password-hash v0.5.0
[INFO] [stderr]   Downloaded ctutils v0.4.2
[INFO] [stderr]   Downloaded argon2 v0.5.3
[INFO] [stderr]   Downloaded borsh-derive v1.8.1
[INFO] [stderr]   Downloaded blake2 v0.10.6
[INFO] [stderr]   Downloaded hmac v0.13.0
[INFO] [stderr]   Downloaded axum-macros v0.5.1
[INFO] [stderr]   Downloaded basic-toml v0.1.10
[INFO] [stderr]   Downloaded sqlx-mysql v0.9.0
[INFO] [stderr]   Downloaded sqlx-macros-core v0.9.0
[INFO] [stderr]   Downloaded sqlx-core v0.9.0
[INFO] [stderr]   Downloaded sqlx-postgres v0.9.0
[INFO] [stderr]   Downloaded hkdf v0.13.0
[INFO] [stderr]   Downloaded sqlx v0.9.0
[INFO] [stderr]   Downloaded libsqlite3-sys v0.37.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] ba0bb49212655f527c4bbb6b3313444cd592c5cd303d469a2f8ae9f8c3a62af3
[INFO] running `Command { std: "docker" "start" "ba0bb49212655f527c4bbb6b3313444cd592c5cd303d469a2f8ae9f8c3a62af3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "ba0bb49212655f527c4bbb6b3313444cd592c5cd303d469a2f8ae9f8c3a62af3", 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" "ba0bb49212655f527c4bbb6b3313444cd592c5cd303d469a2f8ae9f8c3a62af3" "/opt/rustwide/cargo-home/bin/cargo" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "ba0bb49212655f527c4bbb6b3313444cd592c5cd303d469a2f8ae9f8c3a62af3", 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 -Znext-solver=coherence" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "ba0bb49212655f527c4bbb6b3313444cd592c5cd303d469a2f8ae9f8c3a62af3" "/opt/rustwide/cargo-home/bin/cargo" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v3.0.5
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]     Checking smallvec v1.16.1
[INFO] [stderr]    Compiling stable_deref_trait v1.2.1
[INFO] [stderr]     Checking bytes v1.12.1
[INFO] [stderr]    Compiling libc v0.2.189
[INFO] [stderr]    Compiling generic-array v0.14.9
[INFO] [stderr]     Checking scopeguard v1.2.0
[INFO] [stderr]    Compiling serde_core v1.0.229
[INFO] [stderr]    Compiling litemap v0.8.3
[INFO] [stderr]    Compiling writeable v0.6.4
[INFO] [stderr]    Compiling crossbeam-utils v0.8.23
[INFO] [stderr]    Compiling cc v1.4.6
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling futures-core v0.3.34
[INFO] [stderr]     Checking lock_api v0.4.14
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling utf8_iter v1.0.4
[INFO] [stderr]    Compiling vcpkg v0.2.15
[INFO] [stderr]     Checking slab v0.4.12
[INFO] [stderr]    Compiling unicase v2.9.0
[INFO] [stderr]    Compiling typenum v1.20.1
[INFO] [stderr]     Checking futures-io v0.3.34
[INFO] [stderr]    Compiling icu_properties_data v2.3.0
[INFO] [stderr]     Checking futures-util v0.3.34
[INFO] [stderr]    Compiling icu_normalizer_data v2.3.0
[INFO] [stderr]    Compiling futures-sink v0.3.34
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling equivalent v1.0.2
[INFO] [stderr]    Compiling thiserror v2.0.20
[INFO] [stderr]    Compiling allocator-api2 v0.2.21
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling futures-task v0.3.34
[INFO] [stderr]    Compiling foldhash v0.2.0
[INFO] [stderr]     Checking http v1.5.0
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling rust_decimal v1.43.0
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling zmij v1.0.23
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling mio v1.2.3
[INFO] [stderr]     Checking errno v0.3.14
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking socket2 v0.6.5
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling libsqlite3-sys v0.37.0
[INFO] [stderr]     Checking http-body v1.1.0
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking crypto-common v0.1.6
[INFO] [stderr]     Checking mime v0.3.17
[INFO] [stderr]    Compiling cpufeatures v0.2.17
[INFO] [stderr]    Compiling hashbrown v0.17.1
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]    Compiling arrayvec v0.7.8
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling log v0.4.34
[INFO] [stderr]    Compiling crc-catalog v2.5.0
[INFO] [stderr]    Compiling parking v2.2.1
[INFO] [stderr]    Compiling tokio v1.53.1
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling futures-intrusive v0.5.0
[INFO] [stderr]    Compiling crc v3.4.0
[INFO] [stderr]    Compiling event-listener v5.4.2
[INFO] [stderr]     Checking http-body-util v0.1.5
[INFO] [stderr]    Compiling crossbeam-queue v0.3.14
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling hashlink v0.11.1
[INFO] [stderr]    Compiling spin v0.9.9
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]    Compiling minimal-lexical v0.2.1
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]     Checking sync_wrapper v1.0.2
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]    Compiling flume v0.12.0
[INFO] [stderr]    Compiling indexmap v2.14.2
[INFO] [stderr]    Compiling atoi v2.0.0
[INFO] [stderr]    Compiling futures-channel v0.3.34
[INFO] [stderr]     Checking httpdate v1.0.3
[INFO] [stderr]    Compiling dotenvy v0.15.7
[INFO] [stderr]     Checking regex-syntax v0.8.11
[INFO] [stderr]    Compiling hex v0.4.3
[INFO] [stderr]     Checking futures-executor v0.3.34
[INFO] [stderr]     Checking humansize v2.1.3
[INFO] [stderr]     Checking base64ct v1.8.3
[INFO] [stderr]     Checking lazy_static v1.5.0
[INFO] [stderr]     Checking askama_escape v0.10.3
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking sharded-slab v0.1.7
[INFO] [stderr]     Checking blake2 v0.10.6
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking serde_path_to_error v0.1.20
[INFO] [stderr]     Checking password-hash v0.5.0
[INFO] [stderr]     Checking thread_local v1.1.10
[INFO] [stderr]     Checking http-range-header v0.4.2
[INFO] [stderr]     Checking bitflags v2.13.2
[INFO] [stderr]     Checking matchit v0.8.4
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]     Checking argon2 v0.5.3
[INFO] [stderr]    Compiling zerovec-derive v0.11.6
[INFO] [stderr]    Compiling displaydoc v0.2.7
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling tokio-macros v2.7.2
[INFO] [stderr]    Compiling thiserror-impl v2.0.20
[INFO] [stderr]    Compiling async-trait v0.1.92
[INFO] [stderr]     Checking regex-automata v0.4.18
[INFO] [stderr]    Compiling askama_parser v0.2.1
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]     Checking axum-core v0.4.5
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling axum-macros v0.5.1
[INFO] [stderr]    Compiling zerofrom v0.1.8
[INFO] [stderr]    Compiling tokio-stream v0.1.19
[INFO] [stderr]    Compiling yoke v0.8.3
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]    Compiling zerovec v0.11.8
[INFO] [stderr]    Compiling zerotrie v0.2.5
[INFO] [stderr]     Checking axum-core v0.5.6
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]     Checking tinystr v0.8.4
[INFO] [stderr]     Checking potential_utf v0.1.6
[INFO] [stderr]     Checking icu_collections v2.3.0
[INFO] [stderr]     Checking icu_locale_core v2.3.0
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]     Checking either v1.18.0
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling basic-toml v0.1.10
[INFO] [stderr]     Checking icu_provider v2.3.1
[INFO] [stderr]     Checking icu_properties v2.3.0
[INFO] [stderr]     Checking icu_normalizer v2.3.0
[INFO] [stderr]    Compiling askama_derive v0.12.5
[INFO] [stderr]     Checking chrono-tz v0.10.4
[INFO] [stderr]     Checking hyper v1.11.1
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking tokio-util v0.7.19
[INFO] [stderr]     Checking idna_adapter v1.2.2
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking tower-http v0.6.11
[INFO] [stderr]     Checking askama v0.12.1
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking askama_axum v0.4.0
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking axum v0.8.9
[INFO] [stderr]     Checking sqlx-core v0.9.0
[INFO] [stderr]    Compiling sqlx-sqlite v0.9.0
[INFO] [stderr]    Compiling sqlx-macros-core v0.9.0
[INFO] [stderr]    Compiling sqlx-macros v0.9.0
[INFO] [stderr]     Checking sqlx v0.9.0
[INFO] [stderr]     Checking roya v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `SetupRecord` and `SetupRepository`
[INFO] [stdout]   --> src/repositories/mod.rs:74:22
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub use setup_repo::{SetupRecord, SetupRepository, SqliteSetupRepository};
[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: `AppResult`
[INFO] [stdout]   --> src/routes/sales_api.rs:14:30
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::error::{AppError, AppResult};
[INFO] [stdout]    |                              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::NaiveDate`
[INFO] [stdout]  --> src/services/inventory.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use chrono::NaiveDate;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MovementReason`
[INFO] [stdout]  --> src/services/inventory.rs:8:15
[INFO] [stdout]   |
[INFO] [stdout] 8 |     Category, MovementReason, MovementType, NewMovement, NewProduct, PriceRefusal, Product,
[INFO] [stdout]   |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PaymentStatus`
[INFO] [stdout]   --> src/services/sales.rs:57:70
[INFO] [stdout]    |
[INFO] [stdout] 57 |     LineTaxView, MovementReason, MovementType, NewMovement, NewSale, PaymentStatus, PaymentType,
[INFO] [stdout]    |                                                                      ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BarcodeRepository` and `StockMovementRepository`
[INFO] [stdout]   --> src/services/sales.rs:63:24
[INFO] [stdout]    |
[INFO] [stdout] 63 |     AccountRepository, BarcodeRepository, CategoryRepository, CustomerRepository,
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 64 |     DocSequenceRepository, PaymentMethodRepository, ProductRepository, SaleRepository,
[INFO] [stdout] 65 |     StockMovementRepository, TransactionRepository,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `customer_return::CustomerReturnService`
[INFO] [stdout]   --> src/services/mod.rs:61:9
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub use customer_return::CustomerReturnService;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `purchase_return::PurchaseReturnService`
[INFO] [stdout]   --> src/services/mod.rs:67:9
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub use purchase_return::PurchaseReturnService;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SetupRecord` and `SetupRepository`
[INFO] [stdout]   --> src/repositories/mod.rs:74:22
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub use setup_repo::{SetupRecord, SetupRepository, SqliteSetupRepository};
[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: `NewPurchase`
[INFO] [stdout]     --> src/routes/purchases_web.rs:4459:41
[INFO] [stdout]      |
[INFO] [stdout] 4459 |         use crate::models::{NewProduct, NewPurchase, NewSupplier, ProductKind};
[INFO] [stdout]      |                                         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::NaiveDate`
[INFO] [stdout]     --> src/routes/purchases_web.rs:7626:13
[INFO] [stdout]      |
[INFO] [stdout] 7626 |         use chrono::NaiveDate;
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `StatusCode`
[INFO] [stdout]    --> src/routes/roles_web.rs:509:25
[INFO] [stdout]     |
[INFO] [stdout] 509 |         http::{Request, StatusCode},
[INFO] [stdout]     |                         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AppResult`
[INFO] [stdout]   --> src/routes/sales_api.rs:14:30
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::error::{AppError, AppResult};
[INFO] [stdout]    |                              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `customer_return::CustomerReturnService`
[INFO] [stdout]   --> src/services/mod.rs:61:9
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub use customer_return::CustomerReturnService;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `purchase_return::PurchaseReturnService`
[INFO] [stdout]   --> src/services/mod.rs:67:9
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub use purchase_return::PurchaseReturnService;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ProductRepository`
[INFO] [stdout]   --> src/services/sales.rs:64:53
[INFO] [stdout]    |
[INFO] [stdout] 64 |     DocSequenceRepository, PaymentMethodRepository, ProductRepository, SaleRepository,
[INFO] [stdout]    |                                                     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TransactionRepository`
[INFO] [stdout]   --> src/services/sales.rs:65:30
[INFO] [stdout]    |
[INFO] [stdout] 65 |     StockMovementRepository, TransactionRepository,
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CategoryRepository`
[INFO] [stdout]   --> src/services/sales.rs:63:43
[INFO] [stdout]    |
[INFO] [stdout] 63 |     AccountRepository, BarcodeRepository, CategoryRepository, CustomerRepository,
[INFO] [stdout]    |                                           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AccountRepository`
[INFO] [stdout]   --> src/services/sales.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 63 |     AccountRepository, BarcodeRepository, CategoryRepository, CustomerRepository,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BarcodeRepository`
[INFO] [stdout]   --> src/routes/inventory_web.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     BarcodeRepository, CategoryRepository, ProductRepository, ProductSupplierCostRepository,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `StockMovementRepository`
[INFO] [stdout]   --> src/routes/inventory_web.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     StockMovementRepository,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `roya` (bin "roya" test); 7 warnings emitted
[INFO] [stderr] 
[INFO] [stderr] Caused by:
[INFO] [stderr]   process didn't exit successfully: `/opt/rustwide/rustup-home/toolchains/3154cc1a3e6424e44f438a95007d043ed5ceaaf6/bin/rustc --crate-name roya --edition=2021 src/main.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat,unused-externs-silent --emit=dep-info,metadata -C embed-bitcode=no -C debuginfo=2 --test --check-cfg 'cfg(docsrs,test)' --check-cfg 'cfg(feature, values())' -C metadata=c5f924ba3b76407f -C extra-filename=-0645b6f3ddb3524f --out-dir /opt/rustwide/target/debug/build/roya/0645b6f3ddb3524f/out -L dependency=/opt/rustwide/target/debug/build/allocator-api2/320a7223f6faf4b8/out -L dependency=/opt/rustwide/target/debug/build/arrayvec/95c39394a4d512cf/out -L dependency=/opt/rustwide/target/debug/build/askama/c2d5a0eed564b34b/out -L dependency=/opt/rustwide/target/debug/build/askama_derive/b391abe8b86580f4/out -L dependency=/opt/rustwide/target/debug/build/askama_escape/baf8a9c6b95b0396/out -L dependency=/opt/rustwide/target/debug/build/async-trait/adff1d12ae305469/out -L dependency=/opt/rustwide/target/debug/build/atoi/c3744baa0ca7ad09/out -L dependency=/opt/rustwide/target/debug/build/atomic-waker/da9535de70c6dc9f/out -L dependency=/opt/rustwide/target/debug/build/axum-core/eb14101365134cb7/out -L dependency=/opt/rustwide/target/debug/build/axum-core/f002de7b91027857/out -L dependency=/opt/rustwide/target/debug/build/axum-macros/05fdf9b0a133e386/out -L dependency=/opt/rustwide/target/debug/build/base64/1197ac9fab90ee7e/out -L dependency=/opt/rustwide/target/debug/build/base64ct/d284462b97be39a4/out -L dependency=/opt/rustwide/target/debug/build/bitflags/2d588c7fc7d36056/out -L dependency=/opt/rustwide/target/debug/build/blake2/199c210103b259b7/out -L dependency=/opt/rustwide/target/debug/build/block-buffer/fce0ff9c0eb1a01f/out -L dependency=/opt/rustwide/target/debug/build/bytes/0a99efe9a33d2eab/out -L dependency=/opt/rustwide/target/debug/build/cfg-if/455a21b2886a1534/out -L dependency=/opt/rustwide/target/debug/build/chrono/5d669c1545575c71/out -L dependency=/opt/rustwide/target/debug/build/cpufeatures/d69d304f9ccab94d/out -L dependency=/opt/rustwide/target/debug/build/crc-catalog/281fd66f15baae29/out -L dependency=/opt/rustwide/target/debug/build/crc/5722c826f5223421/out -L dependency=/opt/rustwide/target/debug/build/crossbeam-queue/38cd0180724ad7d5/out -L dependency=/opt/rustwide/target/debug/build/crossbeam-utils/3594e90d7ec5a865/out -L dependency=/opt/rustwide/target/debug/build/crypto-common/3d047bc50dde436e/out -L dependency=/opt/rustwide/target/debug/build/digest/b43e8ec4a367a224/out -L dependency=/opt/rustwide/target/debug/build/displaydoc/ef65966942f43c52/out -L dependency=/opt/rustwide/target/debug/build/either/10c008947aa6c676/out -L dependency=/opt/rustwide/target/debug/build/equivalent/53277b141c879f87/out -L dependency=/opt/rustwide/target/debug/build/errno/75e95ad699f80dda/out -L dependency=/opt/rustwide/target/debug/build/event-listener/58fa857208369662/out -L dependency=/opt/rustwide/target/debug/build/flume/f5289002a2d654af/out -L dependency=/opt/rustwide/target/debug/build/foldhash/d794f8647a7c5183/out -L dependency=/opt/rustwide/target/debug/build/form_urlencoded/8558270de8c5e9db/out -L dependency=/opt/rustwide/target/debug/build/futures-channel/7fbd05cccead0f33/out -L dependency=/opt/rustwide/target/debug/build/futures-core/89a52963e41357f6/out -L dependency=/opt/rustwide/target/debug/build/futures-executor/bfc90780b363a1d4/out -L dependency=/opt/rustwide/target/debug/build/futures-intrusive/6cc7e0853746bf69/out -L dependency=/opt/rustwide/target/debug/build/futures-io/0acdad65c3b537c1/out -L dependency=/opt/rustwide/target/debug/build/futures-sink/95b5bfb79dc476dc/out -L dependency=/opt/rustwide/target/debug/build/futures-task/d1ebca5e6911b813/out -L dependency=/opt/rustwide/target/debug/build/futures-util/ee0438ddb6b4c209/out -L dependency=/opt/rustwide/target/debug/build/generic-array/80e75a2bbea7db10/out -L dependency=/opt/rustwide/target/debug/build/hashbrown/4b7f4884d1f9f0a8/out -L dependency=/opt/rustwide/target/debug/build/hashbrown/88ed4e4aff25222b/out -L dependency=/opt/rustwide/target/debug/build/hashlink/b2391fa6934e35c9/out -L dependency=/opt/rustwide/target/debug/build/http-body-util/ab0b5f8c4ef2956d/out -L dependency=/opt/rustwide/target/debug/build/http-body/95b8f62f3ce65260/out -L dependency=/opt/rustwide/target/debug/build/http-range-header/d455c6e165ab5419/out -L dependency=/opt/rustwide/target/debug/build/http/27bb2c76016546af/out -L dependency=/opt/rustwide/target/debug/build/httparse/76e96eecfa617739/out -L dependency=/opt/rustwide/target/debug/build/httpdate/b5025f4ba65bacc8/out -L dependency=/opt/rustwide/target/debug/build/humansize/1315e8b49416be94/out -L dependency=/opt/rustwide/target/debug/build/hyper-util/fa57c01295175808/out -L dependency=/opt/rustwide/target/debug/build/hyper/02dd16666ddcd779/out -L dependency=/opt/rustwide/target/debug/build/iana-time-zone/76e6fb2c1855833b/out -L dependency=/opt/rustwide/target/debug/build/icu_collections/eb7f2d3a31e4a3ed/out -L dependency=/opt/rustwide/target/debug/build/icu_locale_core/a8380448c3a7bf7f/out -L dependency=/opt/rustwide/target/debug/build/icu_normalizer/7a350866446640c8/out -L dependency=/opt/rustwide/target/debug/build/icu_normalizer_data/6d8d8ee2a678262c/out -L dependency=/opt/rustwide/target/debug/build/icu_properties/c7be52ac3c17a397/out -L dependency=/opt/rustwide/target/debug/build/icu_properties_data/1608f962d6c95250/out -L dependency=/opt/rustwide/target/debug/build/icu_provider/99cbaf7674060b6c/out -L dependency=/opt/rustwide/target/debug/build/idna/fd7e1f196a0891b8/out -L dependency=/opt/rustwide/target/debug/build/idna_adapter/e61039f1018edb2f/out -L dependency=/opt/rustwide/target/debug/build/indexmap/197d9a58e1784308/out -L dependency=/opt/rustwide/target/debug/build/itoa/9757112bd9972718/out -L dependency=/opt/rustwide/target/debug/build/lazy_static/8814797a196a17b5/out -L dependency=/opt/rustwide/target/debug/build/libc/6c469ea5525a8374/out -L dependency=/opt/rustwide/target/debug/build/libm/2e0fe817bf4c866c/out -L dependency=/opt/rustwide/target/debug/build/libsqlite3-sys/9b62f16f61975ef0/out -L dependency=/opt/rustwide/target/debug/build/litemap/1d56a444480118ad/out -L dependency=/opt/rustwide/target/debug/build/lock_api/497c3c4b546acad3/out -L dependency=/opt/rustwide/target/debug/build/log/85e3409aa7b4535e/out -L dependency=/opt/rustwide/target/debug/build/matchers/05d93644fe230a16/out -L dependency=/opt/rustwide/target/debug/build/matchit/29be1edda9b2fc61/out -L dependency=/opt/rustwide/target/debug/build/memchr/1dee75255e878028/out -L dependency=/opt/rustwide/target/debug/build/mime/ee7da7d8bd74decc/out -L dependency=/opt/rustwide/target/debug/build/mime_guess/91bc21f39e6aed54/out -L dependency=/opt/rustwide/target/debug/build/mio/5237334d0f0a90b1/out -L dependency=/opt/rustwide/target/debug/build/nu-ansi-term/c0b94389a4cbca02/out -L dependency=/opt/rustwide/target/debug/build/num-traits/d48d04855fc991bc/out -L dependency=/opt/rustwide/target/debug/build/once_cell/c3517054d55a7dff/out -L dependency=/opt/rustwide/target/debug/build/parking/25df844171a2272a/out -L dependency=/opt/rustwide/target/debug/build/parking_lot/78f4447402fc6a46/out -L dependency=/opt/rustwide/target/debug/build/parking_lot_core/320c719e7d2f0036/out -L dependency=/opt/rustwide/target/debug/build/password-hash/d54caa918fba1e95/out -L dependency=/opt/rustwide/target/debug/build/percent-encoding/528721a9f54dc4b1/out -L dependency=/opt/rustwide/target/debug/build/phf/dcef1db933913fe8/out -L dependency=/opt/rustwide/target/debug/build/phf_shared/b4587410a5862b45/out -L dependency=/opt/rustwide/target/debug/build/pin-project-lite/bc36f7de3f04be06/out -L dependency=/opt/rustwide/target/debug/build/potential_utf/340dbb88d0fc00d1/out -L dependency=/opt/rustwide/target/debug/build/rand_core/f9d99b5331a8deee/out -L dependency=/opt/rustwide/target/debug/build/regex-automata/374cc26cfaac2734/out -L dependency=/opt/rustwide/target/debug/build/regex-syntax/57e7b922a5fa9240/out -L dependency=/opt/rustwide/target/debug/build/rust_decimal/606aa0d7e0c6e63a/out -L dependency=/opt/rustwide/target/debug/build/rustversion/6a05414b448f1068/out -L dependency=/opt/rustwide/target/debug/build/ryu/659b25542bb7dde0/out -L dependency=/opt/rustwide/target/debug/build/scopeguard/2eedc5e742d791e6/out -L dependency=/opt/rustwide/target/debug/build/serde/4a6234dcae307891/out -L dependency=/opt/rustwide/target/debug/build/serde_core/71553de3b708d8ea/out -L dependency=/opt/rustwide/target/debug/build/serde_derive/f6c6cf88df8f63cc/out -L dependency=/opt/rustwide/target/debug/build/serde_json/46cd26a3bdff5705/out -L dependency=/opt/rustwide/target/debug/build/serde_path_to_error/bba93a440cd8a829/out -L dependency=/opt/rustwide/target/debug/build/serde_urlencoded/7e9488c183c93a94/out -L dependency=/opt/rustwide/target/debug/build/sha2/4e7df3a23a2c8aa5/out -L dependency=/opt/rustwide/target/debug/build/sharded-slab/10ced3d8fd7e5e0c/out -L dependency=/opt/rustwide/target/debug/build/signal-hook-registry/e2158083d87b31df/out -L dependency=/opt/rustwide/target/debug/build/siphasher/d16b28d9a15bbb10/out -L dependency=/opt/rustwide/target/debug/build/slab/c929510ac75177ef/out -L dependency=/opt/rustwide/target/debug/build/smallvec/8e759a283707e78a/out -L dependency=/opt/rustwide/target/debug/build/socket2/16cafadec737d477/out -L dependency=/opt/rustwide/target/debug/build/spin/43bea0ac9e83fb05/out -L dependency=/opt/rustwide/target/debug/build/sqlx-core/4684b5c684f42628/out -L dependency=/opt/rustwide/target/debug/build/sqlx-macros/37f504316ebe78b0/out -L dependency=/opt/rustwide/target/debug/build/sqlx-sqlite/a43602c0c7c03601/out -L dependency=/opt/rustwide/target/debug/build/stable_deref_trait/5d0e5045ac141f4e/out -L dependency=/opt/rustwide/target/debug/build/subtle/8f505b5194b43595/out -L dependency=/opt/rustwide/target/debug/build/sync_wrapper/63b874d35a00e3f9/out -L dependency=/opt/rustwide/target/debug/build/thiserror-impl/8005053fcc142c9c/out -L dependency=/opt/rustwide/target/debug/build/thiserror/72daa8b23d0585e7/out -L dependency=/opt/rustwide/target/debug/build/thread_local/cdbae7701f9141f8/out -L dependency=/opt/rustwide/target/debug/build/tinystr/87b54af1f63d899b/out -L dependency=/opt/rustwide/target/debug/build/tokio-macros/55306112a8a93397/out -L dependency=/opt/rustwide/target/debug/build/tokio-stream/4f3080248afb2ee7/out -L dependency=/opt/rustwide/target/debug/build/tokio-util/50bb6bcf642b399a/out -L dependency=/opt/rustwide/target/debug/build/tokio/8f009ae1ba7e7c8b/out -L dependency=/opt/rustwide/target/debug/build/tower-layer/18253f72d6097d72/out -L dependency=/opt/rustwide/target/debug/build/tower-service/f067f85429613f02/out -L dependency=/opt/rustwide/target/debug/build/tower/9ea6c0edcd4e6581/out -L dependency=/opt/rustwide/target/debug/build/tracing-attributes/4d29400370cb5ead/out -L dependency=/opt/rustwide/target/debug/build/tracing-core/f96a330ff2c13dd7/out -L dependency=/opt/rustwide/target/debug/build/tracing-log/a616417cce960ae6/out -L dependency=/opt/rustwide/target/debug/build/tracing/08fa535fbff0b784/out -L dependency=/opt/rustwide/target/debug/build/typenum/9cf2777d6d699e5b/out -L dependency=/opt/rustwide/target/debug/build/unicase/a72f21564edb58b5/out -L dependency=/opt/rustwide/target/debug/build/url/f40aa92331d1b6c1/out -L dependency=/opt/rustwide/target/debug/build/utf8_iter/2a9a14295c98e961/out -L dependency=/opt/rustwide/target/debug/build/writeable/8526e47e60eb96b2/out -L dependency=/opt/rustwide/target/debug/build/yoke-derive/ed299dff8dbcbdca/out -L dependency=/opt/rustwide/target/debug/build/yoke/0fd5bff53c36b48d/out -L dependency=/opt/rustwide/target/debug/build/zerofrom-derive/4d70ba0cb5f5b711/out -L dependency=/opt/rustwide/target/debug/build/zerofrom/4161cef4c47d4d97/out -L dependency=/opt/rustwide/target/debug/build/zerotrie/c690f2c9b4ad9176/out -L dependency=/opt/rustwide/target/debug/build/zerovec-derive/20949d462f6d7262/out -L dependency=/opt/rustwide/target/debug/build/zerovec/21501bc1277223c7/out -L dependency=/opt/rustwide/target/debug/build/zmij/7db290db90de1c50/out --extern anyhow=/opt/rustwide/target/debug/build/anyhow/b2877dcd007b481e/out/libanyhow-b2877dcd007b481e.rmeta --extern argon2=/opt/rustwide/target/debug/build/argon2/b16cc39840e9c93d/out/libargon2-b16cc39840e9c93d.rmeta --extern askama=/opt/rustwide/target/debug/build/askama/c2d5a0eed564b34b/out/libaskama-c2d5a0eed564b34b.rmeta --extern askama_axum=/opt/rustwide/target/debug/build/askama_axum/1f415618f26826c6/out/libaskama_axum-1f415618f26826c6.rmeta --extern async_trait=/opt/rustwide/target/debug/build/async-trait/adff1d12ae305469/out/libasync_trait-adff1d12ae305469.so --extern axum=/opt/rustwide/target/debug/build/axum/b7583b4201ee970f/out/libaxum-b7583b4201ee970f.rmeta --extern base64=/opt/rustwide/target/debug/build/base64/1197ac9fab90ee7e/out/libbase64-1197ac9fab90ee7e.rmeta --extern chrono=/opt/rustwide/target/debug/build/chrono/5d669c1545575c71/out/libchrono-5d669c1545575c71.rmeta --extern chrono_tz=/opt/rustwide/target/debug/build/chrono-tz/a91e5f71d4c01915/out/libchrono_tz-a91e5f71d4c01915.rmeta --extern dotenvy=/opt/rustwide/target/debug/build/dotenvy/0df3078392d0d12f/out/libdotenvy-0df3078392d0d12f.rmeta --extern getrandom=/opt/rustwide/target/debug/build/getrandom/26f0b7b155ad76a9/out/libgetrandom-26f0b7b155ad76a9.rmeta --extern rust_decimal=/opt/rustwide/target/debug/build/rust_decimal/606aa0d7e0c6e63a/out/librust_decimal-606aa0d7e0c6e63a.rmeta --extern serde=/opt/rustwide/target/debug/build/serde/4a6234dcae307891/out/libserde-4a6234dcae307891.rmeta --extern serde_json=/opt/rustwide/target/debug/build/serde_json/46cd26a3bdff5705/out/libserde_json-46cd26a3bdff5705.rmeta --extern sha2=/opt/rustwide/target/debug/build/sha2/4e7df3a23a2c8aa5/out/libsha2-4e7df3a23a2c8aa5.rmeta --extern sqlx=/opt/rustwide/target/debug/build/sqlx/29f6bd01fee137dc/out/libsqlx-29f6bd01fee137dc.rmeta --extern thiserror=/opt/rustwide/target/debug/build/thiserror/72daa8b23d0585e7/out/libthiserror-72daa8b23d0585e7.rmeta --extern tokio=/opt/rustwide/target/debug/build/tokio/8f009ae1ba7e7c8b/out/libtokio-8f009ae1ba7e7c8b.rmeta --extern tower=/opt/rustwide/target/debug/build/tower/9ea6c0edcd4e6581/out/libtower-9ea6c0edcd4e6581.rmeta --extern tower_http=/opt/rustwide/target/debug/build/tower-http/5f67bf97985726f5/out/libtower_http-5f67bf97985726f5.rmeta --extern tracing=/opt/rustwide/target/debug/build/tracing/08fa535fbff0b784/out/libtracing-08fa535fbff0b784.rmeta --extern tracing_subscriber=/opt/rustwide/target/debug/build/tracing-subscriber/7e6c781ec710988e/out/libtracing_subscriber-7e6c781ec710988e.rmeta --cap-lints=forbid -Znext-solver=coherence --force-warn=unused_crate_dependencies -L native=/opt/rustwide/target/debug/build/libsqlite3-sys/a2fe916bbf7212bd/out` (signal: 9, SIGKILL: kill)
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]     --> src/routes/documents_web.rs:1540:5
[INFO] [stdout]      |
[INFO] [stdout] 1540 |     state: &AppState,
[INFO] [stdout]      |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]     --> src/routes/documents_web.rs:1828:5
[INFO] [stdout]      |
[INFO] [stdout] 1828 |     state: &AppState,
[INFO] [stdout]      |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `ALL` and `as_str` are never used
[INFO] [stdout]    --> src/localization/mod.rs:42:23
[INFO] [stdout]     |
[INFO] [stdout]  32 |   macro_rules! define_message_keys {
[INFO] [stdout] ...
[INFO] [stdout]  39 |           impl MessageKey {
[INFO] [stdout]     |           --------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  42 |               pub const ALL: &'static [Self] = &[$(Self::$variant),+];
[INFO] [stdout]     |                         ^^^
[INFO] [stdout]  43 |
[INFO] [stdout]  44 |               pub const fn as_str(self) -> &'static str {
[INFO] [stdout]     |                            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  53 | / define_message_keys! {
[INFO] [stdout]  54 | |     AccessibilityOpenNavigation => "accessibility.open_navigation",
[INFO] [stdout]  55 | |     AccessibilityMainNavigation => "accessibility.main_navigation",
[INFO] [stdout]  56 | |     AccessibilityBreadcrumb => "accessibility.breadcrumb",
[INFO] [stdout] ...   |
[INFO] [stdout] 890 | |     LineQuantity => "line.quantity",
[INFO] [stdout] 891 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DashboardData` is never constructed
[INFO] [stdout]    --> src/models.rs:894:12
[INFO] [stdout]     |
[INFO] [stdout] 894 | pub struct DashboardData {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `sale_price_display` and `cost_price_display` are never used
[INFO] [stdout]     --> src/models.rs:1086:12
[INFO] [stdout]      |
[INFO] [stdout] 1074 | impl Product {
[INFO] [stdout]      | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1086 |     pub fn sale_price_display(&self) -> String {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1092 |     pub fn cost_price_display(&self) -> String {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `money_display` is never used
[INFO] [stdout]     --> src/models.rs:1116:8
[INFO] [stdout]      |
[INFO] [stdout] 1116 | pub fn money_display(d: Decimal) -> String {
[INFO] [stdout]      |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `signed_qty` is never used
[INFO] [stdout]     --> src/models.rs:1165:12
[INFO] [stdout]      |
[INFO] [stdout] 1163 | impl StockMovement {
[INFO] [stdout]      | ------------------ method in this implementation
[INFO] [stdout] 1164 |     /// Signed contribution of this movement to derived stock.
[INFO] [stdout] 1165 |     pub fn signed_qty(&self) -> Decimal {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `account_label` and `label` are never used
[INFO] [stdout]     --> src/models.rs:1497:12
[INFO] [stdout]      |
[INFO] [stdout] 1495 | impl PaymentMethodWithAccount {
[INFO] [stdout]      | ----------------------------- methods in this implementation
[INFO] [stdout] 1496 |     /// Owning account name, or `unassigned` for methods no account owns yet.
[INFO] [stdout] 1497 |     pub fn account_label(&self) -> String {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1504 |     pub fn label(&self) -> String {
[INFO] [stdout]      |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DocSequence` is never constructed
[INFO] [stdout]     --> src/models.rs:1510:12
[INFO] [stdout]      |
[INFO] [stdout] 1510 | pub struct DocSequence {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `line_cost_display` and `stored_cost_display` are never used
[INFO] [stdout]     --> src/models.rs:2244:12
[INFO] [stdout]      |
[INFO] [stdout] 2239 | impl StaleLineCostView {
[INFO] [stdout]      | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 2244 |     pub fn line_cost_display(&self) -> String {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2249 |     pub fn stored_cost_display(&self) -> String {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `label` is never used
[INFO] [stdout]     --> src/models.rs:2430:12
[INFO] [stdout]      |
[INFO] [stdout] 2382 | impl DocumentKind {
[INFO] [stdout]      | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 2430 |     pub fn label(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `label` is never used
[INFO] [stdout]     --> src/models.rs:2467:12
[INFO] [stdout]      |
[INFO] [stdout] 2452 | impl DocumentGroup {
[INFO] [stdout]      | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 2467 |     pub fn label(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `created_at`, `revoked_at`, and `user_agent` are never read
[INFO] [stdout]     --> src/models.rs:2986:9
[INFO] [stdout]      |
[INFO] [stdout] 2985 | pub struct Session {
[INFO] [stdout]      |            ------- fields in this struct
[INFO] [stdout] 2986 |     pub id: i64,
[INFO] [stdout]      |         ^^
[INFO] [stdout] ...
[INFO] [stdout] 2990 |     pub created_at: chrono::NaiveDateTime,
[INFO] [stdout]      |         ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2993 |     pub revoked_at: Option<chrono::NaiveDateTime>,
[INFO] [stdout]      |         ^^^^^^^^^^
[INFO] [stdout] 2994 |     pub user_agent: Option<String>,
[INFO] [stdout]      |         ^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `Session` 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 `created_at` and `updated_at` are never read
[INFO] [stdout]     --> src/models.rs:3036:9
[INFO] [stdout]      |
[INFO] [stdout] 3025 | pub struct Role {
[INFO] [stdout]      |            ---- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 3036 |     pub created_at: chrono::NaiveDateTime,
[INFO] [stdout]      |         ^^^^^^^^^^
[INFO] [stdout] 3037 |     pub updated_at: chrono::NaiveDateTime,
[INFO] [stdout]      |         ^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `Role` 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 `action` and `created_at` are never read
[INFO] [stdout]     --> src/models.rs:3049:9
[INFO] [stdout]      |
[INFO] [stdout] 3045 | pub struct Permission {
[INFO] [stdout]      |            ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 3049 |     pub action: String,
[INFO] [stdout]      |         ^^^^^^
[INFO] [stdout] 3050 |     pub description: String,
[INFO] [stdout] 3051 |     pub created_at: chrono::NaiveDateTime,
[INFO] [stdout]      |         ^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `Permission` 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 `NewUserRole` is never constructed
[INFO] [stdout]     --> src/models.rs:3082:12
[INFO] [stdout]      |
[INFO] [stdout] 3082 | pub struct NewUserRole {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `signed_amount` is never used
[INFO] [stdout]   --> src/repositories/mod.rs:87:8
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub fn signed_amount(kind: crate::models::TransactionKind, amount: Decimal) -> Decimal {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `find_by_id` and `delete` are never used
[INFO] [stdout]   --> src/repositories/barcode_repo.rs:10:14
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub trait BarcodeRepository: Send + Sync {
[INFO] [stdout]    |           ----------------- methods in this trait
[INFO] [stdout]  9 |     async fn create(&self, product_id: i64, code: &str) -> AppResult<ProductBarcode>;
[INFO] [stdout] 10 |     async fn find_by_id(&self, id: i64) -> AppResult<Option<ProductBarcode>>;
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 13 |     async fn delete(&self, id: i64) -> AppResult<bool>;
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `map_db_err` is never used
[INFO] [stdout]   --> src/repositories/business_config_repo.rs:10:4
[INFO] [stdout]    |
[INFO] [stdout] 10 | fn map_db_err(error: sqlx::Error) -> AppError {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `create` is never used
[INFO] [stdout]   --> src/repositories/business_config_repo.rs:46:14
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub trait BusinessSettingsRepository: Send + Sync {
[INFO] [stdout]    |           -------------------------- method in this trait
[INFO] [stdout] 46 |     async fn create(&self, input: &NewBusinessSettings) -> AppResult<BusinessSettings>;
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `create` and `find_by_code` are never used
[INFO] [stdout]   --> src/repositories/business_config_repo.rs:52:14
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub trait BusinessLocaleRepository: Send + Sync {
[INFO] [stdout]    |           ------------------------ methods in this trait
[INFO] [stdout] 52 |     async fn create(&self, input: &NewBusinessLocale) -> AppResult<BusinessLocale>;
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 53 |     async fn find_by_code(&self, locale_code: &str) -> AppResult<Option<BusinessLocale>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `list_children` is never used
[INFO] [stdout]   --> src/repositories/category_repo.rs:20:14
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub trait CategoryRepository: Send + Sync {
[INFO] [stdout]    |           ------------------ method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 20 |     async fn list_children(&self, parent_id: i64) -> AppResult<Vec<Category>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `delete` is never used
[INFO] [stdout]   --> src/repositories/customer_receipt_repo.rs:73:14
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub trait CustomerReceiptRepository: Send + Sync {
[INFO] [stdout]    |           ------------------------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 73 |     async fn delete(&self, id: i64) -> AppResult<bool>;
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `exists` is never used
[INFO] [stdout]    --> src/repositories/customer_repo.rs:175:14
[INFO] [stdout]     |
[INFO] [stdout]  51 | pub trait CustomerRepository: Send + Sync {
[INFO] [stdout]     |           ------------------ method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 175 |     async fn exists(&self, id: i64) -> AppResult<bool>;
[INFO] [stdout]     |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_confirmed` and `create_payment` are never used
[INFO] [stdout]    --> src/repositories/customer_return_repo.rs:280:14
[INFO] [stdout]     |
[INFO] [stdout] 167 | pub trait CustomerReturnRepository: Send + Sync {
[INFO] [stdout]     |           ------------------------ methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 280 |     async fn set_confirmed(
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 376 |     async fn create_payment(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `next_number` and `current` are never used
[INFO] [stdout]   --> src/repositories/doc_sequence_repo.rs:14:14
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub trait DocSequenceRepository: Send + Sync {
[INFO] [stdout]    |           --------------------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 14 |     async fn next_number(&self, doc_type: &str, year: i32) -> AppResult<i64>;
[INFO] [stdout]    |              ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     async fn current(&self, doc_type: &str, year: i32) -> AppResult<Option<DocSequence>>;
[INFO] [stdout]    |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `pool` is never read
[INFO] [stdout]   --> src/repositories/doc_sequence_repo.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct SqliteDocSequenceRepository {
[INFO] [stdout]    |            --------------------------- field in this struct
[INFO] [stdout] 36 |     pub pool: SqlitePool,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SqliteDocSequenceRepository` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `find_method_by_name` and `find_unassigned_by_name` are never used
[INFO] [stdout]   --> src/repositories/payment_method_repo.rs:83:14
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub trait PaymentMethodRepository: Send + Sync {
[INFO] [stdout]    |           ----------------------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 83 |     async fn find_method_by_name(&self, name: &str) -> AppResult<Option<PaymentMethod>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 89 |     async fn find_unassigned_by_name(&self, name: &str) -> AppResult<Option<PaymentMethod>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `exists` is never used
[INFO] [stdout]   --> src/repositories/product_repo.rs:77:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait ProductRepository: Send + Sync {
[INFO] [stdout]    |           ----------------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 77 |     async fn exists(&self, id: i64) -> AppResult<bool>;
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `find_by_id` and `clear_preferred` are never used
[INFO] [stdout]    --> src/repositories/product_supplier_cost_repo.rs:230:14
[INFO] [stdout]     |
[INFO] [stdout]  53 | pub trait ProductSupplierCostRepository: Send + Sync {
[INFO] [stdout]     |           ----------------------------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 230 |     async fn find_by_id(&self, id: i64) -> AppResult<Option<ProductSupplierCost>>;
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     async fn clear_preferred(&self, actor: i64, product_id: i64) -> AppResult<()>;
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `find_purchase_by_number` and `set_confirmed` are never used
[INFO] [stdout]    --> src/repositories/purchase_repo.rs:170:14
[INFO] [stdout]     |
[INFO] [stdout] 143 | pub trait PurchaseRepository: Send + Sync {
[INFO] [stdout]     |           ------------------ methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 170 |     async fn find_purchase_by_number(&self, number: &str) -> AppResult<Option<Purchase>>;
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     async fn set_confirmed(
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_confirmed` and `create_payment` are never used
[INFO] [stdout]    --> src/repositories/purchase_return_repo.rs:287:14
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub trait PurchaseReturnRepository: Send + Sync {
[INFO] [stdout]     |           ------------------------ methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 287 |     async fn set_confirmed(
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 379 |     async fn create_payment(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `count_active_holders`, `count_active_protected_holders`, `grant`, and `revoke` are never used
[INFO] [stdout]    --> src/repositories/role_repo.rs:113:14
[INFO] [stdout]     |
[INFO] [stdout]  99 | pub trait RoleRepository: Send + Sync {
[INFO] [stdout]     |           -------------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 113 |     async fn count_active_holders(&self, role_id: i64) -> AppResult<i64>;
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     async fn count_active_protected_holders(&self) -> AppResult<i64>;
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 117 |     /// Record a grant (`granted_by`/`granted_at` are part of the row).
[INFO] [stdout] 118 |     async fn grant(&self, input: &NewUserRole) -> AppResult<()>;
[INFO] [stdout]     |              ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     async fn revoke(&self, user_id: i64, role_id: i64) -> AppResult<()>;
[INFO] [stdout]     |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `find_sale_by_number` and `set_confirmed` are never used
[INFO] [stdout]    --> src/repositories/sale_repo.rs:181:14
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub trait SaleRepository: Send + Sync {
[INFO] [stdout]     |           -------------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 181 |     async fn find_sale_by_number(&self, number: &str) -> AppResult<Option<Sale>>;
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 231 |     async fn set_confirmed(&self, id: i64, actor: i64, sale_number: &str) -> AppResult<Sale>;
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `find_by_name` is never used
[INFO] [stdout]   --> src/repositories/supplier_repo.rs:41:14
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub trait SupplierRepository: Send + Sync {
[INFO] [stdout]    |           ------------------ method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 41 |     async fn find_by_name(&self, name: &str) -> AppResult<Option<Supplier>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `sync_cached_balance` is never used
[INFO] [stdout]   --> src/repositories/transaction_repo.rs:76:14
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub trait TransactionRepository: Send + Sync {
[INFO] [stdout]    |           --------------------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 76 |     async fn sync_cached_balance(&self, account_id: i64) -> AppResult<()>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `enforce_credit_limit` is never read
[INFO] [stdout]    --> src/routes/mod.rs:331:9
[INFO] [stdout]     |
[INFO] [stdout] 297 | pub struct AppState {
[INFO] [stdout]     |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 331 |     pub enforce_credit_limit: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AppState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `new_with_credit_limit` are never used
[INFO] [stdout]    --> src/routes/mod.rs:337:12
[INFO] [stdout]     |
[INFO] [stdout] 334 | impl AppState {
[INFO] [stdout]     | ------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 337 |     pub fn new(pool: SqlitePool, allow_negative: bool, allow_negative_stock: bool) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 341 |     pub fn new_with_credit_limit(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `balance`, `ageing`, and `over_limit` are never read
[INFO] [stdout]   --> src/routes/customers_web.rs:60:9
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub struct CustomerRow {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub balance: SetMoney,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 61 |     pub ageing: Ageing,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 62 |     pub over_limit: bool,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CustomerRow` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `limit` is never read
[INFO] [stdout]   --> src/routes/documents_web.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 51 | struct DocumentsTemplate {
[INFO] [stdout]    |        ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 56 |     limit: usize,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `limit` is never read
[INFO] [stdout]   --> src/routes/documents_web.rs:77:5
[INFO] [stdout]    |
[INFO] [stdout] 72 | struct DocumentListPartial {
[INFO] [stdout]    |        ------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 77 |     limit: usize,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `cost`, `product_name`, `product_sku`, and `product_unit` are never read
[INFO] [stdout]   --> src/routes/suppliers_web.rs:46:9
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct SupplierCostView {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] 46 |     pub cost: ProductSupplierCost,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 47 |     pub product_name: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 48 |     pub product_sku: String,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 49 |     pub product_unit: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SupplierCostView` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `costs` is never read
[INFO] [stdout]   --> src/routes/suppliers_web.rs:55:9
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct SupplierView {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] 54 |     pub supplier: Supplier,
[INFO] [stdout] 55 |     pub costs: Vec<SupplierCostView>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SupplierView` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `role_name`, `granted_by_label`, and `granted_on` are never read
[INFO] [stdout]   --> src/routes/users_web.rs:50:9
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct GrantRowView {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 50 |     pub role_name: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 51 |     pub granted_by_label: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 52 |     pub granted_on: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `web_assign_roles_placeholder` is never used
[INFO] [stdout]    --> src/routes/users_web.rs:319:10
[INFO] [stdout]     |
[INFO] [stdout] 319 | async fn web_assign_roles_placeholder() {}
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `allow_negative` is never read
[INFO] [stdout]   --> src/routes/web.rs:88:5
[INFO] [stdout]    |
[INFO] [stdout] 76 | struct AccountDetailTemplate {
[INFO] [stdout]    |        --------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 88 |     allow_negative: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `account_id` is never read
[INFO] [stdout]    --> src/routes/web.rs:118:5
[INFO] [stdout]     |
[INFO] [stdout] 116 | struct TransactionListPartial {
[INFO] [stdout]     |        ---------------------- field in this struct
[INFO] [stdout] 117 |     transactions: Vec<crate::models::Transaction>,
[INFO] [stdout] 118 |     account_id: i64,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `forbidden_response` is never used
[INFO] [stdout]    --> src/security/authz.rs:417:8
[INFO] [stdout]     |
[INFO] [stdout] 417 | pub fn forbidden_response(parts: &Parts, message: String) -> Response {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `list` is never used
[INFO] [stdout]   --> src/services/account.rs:88:18
[INFO] [stdout]    |
[INFO] [stdout] 19 | / impl<A, T> AccountService<A, T>
[INFO] [stdout] 20 | | where
[INFO] [stdout] 21 | |     A: AccountRepository,
[INFO] [stdout] 22 | |     T: TransactionRepository,
[INFO] [stdout]    | |_____________________________- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 88 |       pub async fn list(&self) -> AppResult<Vec<Account>> {
[INFO] [stdout]    |                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `delete_receipt` is never used
[INFO] [stdout]    --> src/services/customer_receipts.rs:198:18
[INFO] [stdout]     |
[INFO] [stdout]  55 | / impl<RR, SR, DR, C, P, B, S, A, T, PM, CR, TS>
[INFO] [stdout]  56 | |     CustomerReceiptService<RR, SR, DR, C, P, B, S, A, T, PM, CR, TS>
[INFO] [stdout]  57 | | where
[INFO] [stdout]  58 | |     RR: CustomerReceiptRepository,
[INFO] [stdout] ...   |
[INFO] [stdout]  68 | |     CR: CustomerRepository,
[INFO] [stdout]  69 | |     TS: TaxSnapshotRepository,
[INFO] [stdout]     | |______________________________- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 198 |       pub async fn delete_receipt(&self, receipt_id: i64) -> AppResult<()> {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_walkin` is never used
[INFO] [stdout]    --> src/services/customers.rs:211:18
[INFO] [stdout]     |
[INFO] [stdout]  22 | / impl<R> CustomerService<R>
[INFO] [stdout]  23 | | where
[INFO] [stdout]  24 | |     R: CustomerRepository,
[INFO] [stdout]     | |__________________________- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 211 |       pub async fn is_walkin(&self, id: i64) -> AppResult<bool> {
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `seeded_names`, `default_method_names_for_account_name`, and `ensure_defaults_for_account` are never used
[INFO] [stdout]   --> src/services/finance_methods.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | / impl<PM> PaymentMethodService<PM>
[INFO] [stdout] 23 | | where
[INFO] [stdout] 24 | |     PM: PaymentMethodRepository,
[INFO] [stdout]    | |________________________________- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 41 |       pub fn seeded_names() -> Vec<&'static str> {
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |       pub fn default_method_names_for_account_name(name: &str) -> Vec<&'static str> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |       pub async fn ensure_defaults_for_account(
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BOOTSTRAP_ADMIN_USERNAME` is never used
[INFO] [stdout]   --> src/services/identity.rs:29:11
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub const BOOTSTRAP_ADMIN_USERNAME: &str = "admin";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BOOTSTRAP_ADMIN_DISPLAY_NAME` is never used
[INFO] [stdout]   --> src/services/identity.rs:30:11
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub const BOOTSTRAP_ADMIN_DISPLAY_NAME: &str = "Admin";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BOOTSTRAP_ADMIN_ROLE_CODE` is never used
[INFO] [stdout]   --> src/services/identity.rs:35:11
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub const BOOTSTRAP_ADMIN_ROLE_CODE: &str = "admin";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BootstrapCredential` is never constructed
[INFO] [stdout]    --> src/services/identity.rs:198:8
[INFO] [stdout]     |
[INFO] [stdout] 198 | struct BootstrapCredential {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BootstrapOutcome` is never constructed
[INFO] [stdout]    --> src/services/identity.rs:206:12
[INFO] [stdout]     |
[INFO] [stdout] 206 | pub struct BootstrapOutcome {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `bootstrap_admin`, `grant_protected_role`, and `bootstrap_credential` are never used
[INFO] [stdout]    --> src/services/identity.rs:378:18
[INFO] [stdout]     |
[INFO] [stdout] 266 | / impl<U, S, R, C, H> IdentityService<U, S, R, C, H>
[INFO] [stdout] 267 | | where
[INFO] [stdout] 268 | |     U: UserRepository,
[INFO] [stdout] 269 | |     S: SessionRepository,
[INFO] [stdout] 270 | |     R: RoleRepository,
[INFO] [stdout] 271 | |     C: Clock,
[INFO] [stdout] 272 | |     H: PasswordHashing,
[INFO] [stdout]     | |_______________________- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 378 |       pub async fn bootstrap_admin(&self, env_password: Option<&str>) -> AppResult<BootstrapOutcome> {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 467 |       async fn grant_protected_role(&self, user_id: i64) -> AppResult<()> {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 488 |       fn bootstrap_credential(&self, env_password: Option<&str>) -> AppResult<BootstrapCredential> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/services/purchases.rs:77:11
[INFO] [stdout]    |
[INFO] [stdout] 77 |     Added(PurchaseLine),
[INFO] [stdout]    |     ----- ^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LineAddOutcome` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 77 -     Added(PurchaseLine),
[INFO] [stdout] 77 +     Added(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `clear_preferred` and `price_alert` are never used
[INFO] [stdout]    --> src/services/suppliers.rs:396:18
[INFO] [stdout]     |
[INFO] [stdout]  29 | / impl<SR, CR> SupplierService<SR, CR>
[INFO] [stdout]  30 | | where
[INFO] [stdout]  31 | |     SR: SupplierRepository,
[INFO] [stdout]  32 | |     CR: ProductSupplierCostRepository,
[INFO] [stdout]     | |______________________________________- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 396 |       pub async fn clear_preferred(&self, actor: i64, product_id: i64) -> AppResult<()> {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 415 |       pub async fn price_alert(
[INFO] [stdout]     |                    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gross_cost_from_net` is never used
[INFO] [stdout]    --> src/services/purchase_cost.rs:187:8
[INFO] [stdout]     |
[INFO] [stdout] 187 | pub fn gross_cost_from_net(net: Decimal, taxes: &[Tax]) -> SolveResult<Decimal> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "ba0bb49212655f527c4bbb6b3313444cd592c5cd303d469a2f8ae9f8c3a62af3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ba0bb49212655f527c4bbb6b3313444cd592c5cd303d469a2f8ae9f8c3a62af3", kill_on_drop: false }`
[INFO] [stdout] ba0bb49212655f527c4bbb6b3313444cd592c5cd303d469a2f8ae9f8c3a62af3
