[INFO] cloning repository https://github.com/jcv-dev/ferrum
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/jcv-dev/ferrum" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjcv-dev%2Fferrum", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjcv-dev%2Fferrum'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] a62a9644b79703c232a032ae13c0853435313a90
[INFO] testing jcv-dev/ferrum against 1.97.0-beta.6 for beta-1.98-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjcv-dev%2Fferrum" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/jcv-dev/ferrum
[INFO] finished tweaking git repo https://github.com/jcv-dev/ferrum
[INFO] tweaked toml for git repo https://github.com/jcv-dev/ferrum written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/jcv-dev/ferrum on toolchain 1.97.0-beta.6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/jcv-dev/ferrum already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.97.0-beta.6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded if_chain v1.0.3
[INFO] [stderr]   Downloaded validator_types v0.16.0
[INFO] [stderr]   Downloaded validator v0.16.1
[INFO] [stderr]   Downloaded serde_json v1.0.141
[INFO] [stderr]   Downloaded validator_derive v0.16.0
[INFO] [stderr]   Downloaded ogg_pager v0.7.0
[INFO] [stderr]   Downloaded actix-router v0.5.3
[INFO] [stderr]   Downloaded actix-files v0.6.6
[INFO] [stderr]   Downloaded tracing-actix-web v0.7.20
[INFO] [stderr]   Downloaded v_htmlescape v0.15.8
[INFO] [stderr]   Downloaded mutually_exclusive_features v0.1.0
[INFO] [stderr]   Downloaded http-range v0.1.5
[INFO] [stderr]   Downloaded lofty_attr v0.11.1
[INFO] [stderr]   Downloaded regex-lite v0.1.6
[INFO] [stderr]   Downloaded bytestring v1.4.0
[INFO] [stderr]   Downloaded actix-rt v2.10.0
[INFO] [stderr]   Downloaded password-hash v0.5.0
[INFO] [stderr]   Downloaded actix-cors v0.7.1
[INFO] [stderr]   Downloaded simple_asn1 v0.6.3
[INFO] [stderr]   Downloaded argon2 v0.5.3
[INFO] [stderr]   Downloaded derive_more v2.0.1
[INFO] [stderr]   Downloaded derive_more-impl v2.0.1
[INFO] [stderr]   Downloaded actix-http v3.11.0
[INFO] [stderr]   Downloaded cc v1.2.30
[INFO] [stderr]   Downloaded tokio-util v0.7.15
[INFO] [stderr]   Downloaded lofty v0.22.4
[INFO] [stderr]   Downloaded actix-web v4.11.0
[INFO] [stderr]   Downloaded brotli v8.0.1
[INFO] [stderr]   Downloaded zstd-sys v2.0.15+zstd.1.5.7
[INFO] [stderr]   Downloaded tokio v1.47.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 8acbc9763a232478b1ec239726d356b87c02488816a3a758d0c114c6c942c256
[INFO] running `Command { std: "docker" "start" "8acbc9763a232478b1ec239726d356b87c02488816a3a758d0c114c6c942c256", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "8acbc9763a232478b1ec239726d356b87c02488816a3a758d0c114c6c942c256", 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" "8acbc9763a232478b1ec239726d356b87c02488816a3a758d0c114c6c942c256" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "8acbc9763a232478b1ec239726d356b87c02488816a3a758d0c114c6c942c256", 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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "8acbc9763a232478b1ec239726d356b87c02488816a3a758d0c114c6c942c256" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.95
[INFO] [stderr]    Compiling unicode-ident v1.0.18
[INFO] [stderr]    Compiling libc v0.2.174
[INFO] [stderr]    Compiling cfg-if v1.0.1
[INFO] [stderr]    Compiling pin-project-lite v0.2.16
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling stable_deref_trait v1.2.0
[INFO] [stderr]    Compiling log v0.4.27
[INFO] [stderr]    Compiling itoa v1.0.15
[INFO] [stderr]    Compiling lock_api v0.4.13
[INFO] [stderr]    Compiling parking_lot_core v0.9.11
[INFO] [stderr]    Compiling bytes v1.10.1
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling typenum v1.18.0
[INFO] [stderr]    Compiling memchr v2.7.5
[INFO] [stderr]    Compiling tracing-core v0.1.34
[INFO] [stderr]    Compiling futures-core v0.3.31
[INFO] [stderr]    Compiling regex-syntax v0.8.5
[INFO] [stderr]    Compiling litemap v0.8.0
[INFO] [stderr]    Compiling writeable v0.6.1
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]    Compiling jobserver v0.1.33
[INFO] [stderr]    Compiling zerocopy v0.8.26
[INFO] [stderr]    Compiling socket2 v0.6.0
[INFO] [stderr]    Compiling syn v2.0.104
[INFO] [stderr]    Compiling mio v1.0.4
[INFO] [stderr]    Compiling cc v1.2.30
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling parking_lot v0.12.4
[INFO] [stderr]    Compiling signal-hook-registry v1.4.5
[INFO] [stderr]    Compiling icu_normalizer_data v2.0.0
[INFO] [stderr]    Compiling getrandom v0.3.3
[INFO] [stderr]    Compiling icu_properties_data v2.0.1
[INFO] [stderr]    Compiling percent-encoding v2.3.1
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling crypto-common v0.1.6
[INFO] [stderr]    Compiling aho-corasick v1.1.3
[INFO] [stderr]    Compiling powerfmt v0.2.0
[INFO] [stderr]    Compiling time-core v0.1.4
[INFO] [stderr]    Compiling num-conv v0.1.0
[INFO] [stderr]    Compiling ryu v1.0.20
[INFO] [stderr]    Compiling serde_json v1.0.141
[INFO] [stderr]    Compiling futures-sink v0.3.31
[INFO] [stderr]    Compiling time-macros v0.2.22
[INFO] [stderr]    Compiling deranged v0.4.0
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling alloc-no-stdlib v2.0.4
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling local-waker v0.1.4
[INFO] [stderr]    Compiling futures-task v0.3.31
[INFO] [stderr]    Compiling zstd-safe v7.2.4
[INFO] [stderr]    Compiling slab v0.4.10
[INFO] [stderr]    Compiling http v0.2.12
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling zstd-sys v2.0.15+zstd.1.5.7
[INFO] [stderr]    Compiling time v0.3.41
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling regex-automata v0.4.9
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling alloc-stdlib v0.2.2
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling form_urlencoded v1.2.1
[INFO] [stderr]    Compiling rand_core v0.9.3
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling regex-lite v0.1.6
[INFO] [stderr]    Compiling hashbrown v0.15.4
[INFO] [stderr]    Compiling unicode-xid v0.2.6
[INFO] [stderr]    Compiling indexmap v2.10.0
[INFO] [stderr]    Compiling bytestring v1.4.0
[INFO] [stderr]    Compiling tracing v0.1.41
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling flate2 v1.1.2
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling regex v1.11.1
[INFO] [stderr]    Compiling brotli-decompressor v5.0.0
[INFO] [stderr]    Compiling actix-utils v3.0.1
[INFO] [stderr]    Compiling actix-service v2.0.3
[INFO] [stderr]    Compiling cookie v0.16.2
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling bitflags v2.9.1
[INFO] [stderr]    Compiling rand v0.9.2
[INFO] [stderr]    Compiling sha1 v0.10.6
[INFO] [stderr]    Compiling actix-router v0.5.3
[INFO] [stderr]    Compiling local-channel v0.1.5
[INFO] [stderr]    Compiling socket2 v0.5.10
[INFO] [stderr]    Compiling brotli v8.0.1
[INFO] [stderr]    Compiling encoding_rs v0.8.35
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]    Compiling foldhash v0.1.5
[INFO] [stderr]    Compiling language-tags v0.3.2
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.0
[INFO] [stderr]    Compiling zerovec-derive v0.11.1
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.30
[INFO] [stderr]    Compiling yoke v0.8.0
[INFO] [stderr]    Compiling zerotrie v0.2.2
[INFO] [stderr]    Compiling tokio v1.47.0
[INFO] [stderr]    Compiling derive_more-impl v2.0.1
[INFO] [stderr]    Compiling zerovec v0.11.2
[INFO] [stderr]    Compiling actix-web-codegen v4.3.0
[INFO] [stderr]    Compiling tinystr v0.8.1
[INFO] [stderr]    Compiling icu_locale_core v2.0.0
[INFO] [stderr]    Compiling potential_utf v0.1.2
[INFO] [stderr]    Compiling icu_collections v2.0.0
[INFO] [stderr]    Compiling actix-macros v0.2.4
[INFO] [stderr]    Compiling icu_provider v2.0.0
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]    Compiling icu_normalizer v2.0.0
[INFO] [stderr]    Compiling icu_properties v2.0.1
[INFO] [stderr]    Compiling derive_more v2.0.1
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling unicase v2.8.1
[INFO] [stderr]    Compiling thiserror v2.0.17
[INFO] [stderr]    Compiling impl-more v0.1.9
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]    Compiling tinyvec v1.10.0
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.0.3
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]    Compiling url v2.5.4
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling paste v1.0.15
[INFO] [stderr]    Compiling v_htmlescape v0.15.8
[INFO] [stderr]    Compiling tokio-util v0.7.15
[INFO] [stderr]    Compiling actix-rt v2.10.0
[INFO] [stderr]    Compiling regex-syntax v0.6.29
[INFO] [stderr]    Compiling actix-server v2.6.0
[INFO] [stderr]    Compiling actix-codec v0.5.2
[INFO] [stderr]    Compiling h2 v0.3.27
[INFO] [stderr]    Compiling regex-automata v0.1.10
[INFO] [stderr]    Compiling num-bigint v0.4.6
[INFO] [stderr]    Compiling zstd v0.13.3
[INFO] [stderr]    Compiling unicode-normalization v0.1.25
[INFO] [stderr]    Compiling validator_types v0.16.0
[INFO] [stderr]    Compiling pin-project-internal v1.1.10
[INFO] [stderr]    Compiling base64ct v1.8.3
[INFO] [stderr]    Compiling convert_case v0.4.0
[INFO] [stderr]    Compiling if_chain v1.0.3
[INFO] [stderr]    Compiling unicode-bidi v0.3.18
[INFO] [stderr]    Compiling overload v0.1.1
[INFO] [stderr]    Compiling ogg_pager v0.7.0
[INFO] [stderr]    Compiling validator_derive v0.16.0
[INFO] [stderr]    Compiling nu-ansi-term v0.46.0
[INFO] [stderr]    Compiling derive_more v0.99.20
[INFO] [stderr]    Compiling idna v0.4.0
[INFO] [stderr]    Compiling password-hash v0.5.0
[INFO] [stderr]    Compiling simple_asn1 v0.6.3
[INFO] [stderr]    Compiling pin-project v1.1.10
[INFO] [stderr]    Compiling matchers v0.1.0
[INFO] [stderr]    Compiling tracing-serde v0.2.0
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling lofty_attr v0.11.1
[INFO] [stderr]    Compiling pem v3.0.6
[INFO] [stderr]    Compiling blake2 v0.10.6
[INFO] [stderr]    Compiling uuid v1.19.0
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling data-encoding v2.9.0
[INFO] [stderr]    Compiling mutually_exclusive_features v0.1.0
[INFO] [stderr]    Compiling iana-time-zone v0.1.64
[INFO] [stderr]    Compiling actix-http v3.11.0
[INFO] [stderr]    Compiling http-range v0.1.5
[INFO] [stderr]    Compiling chrono v0.4.42
[INFO] [stderr]    Compiling tracing-subscriber v0.3.19
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling jsonwebtoken v9.3.1
[INFO] [stderr]    Compiling lofty v0.22.4
[INFO] [stderr]    Compiling argon2 v0.5.3
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling validator v0.16.1
[INFO] [stderr]    Compiling actix-web v4.11.0
[INFO] [stderr]    Compiling actix-cors v0.7.1
[INFO] [stderr]    Compiling actix-files v0.6.6
[INFO] [stderr]    Compiling tracing-actix-web v0.7.20
[INFO] [stderr]    Compiling ferrum v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: fields `username` and `is_admin` are never read
[INFO] [stdout]   --> src/auth/middleware.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct AuthenticatedUser {
[INFO] [stdout]    |            ----------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub username: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 26 |     /// Whether the user is an admin.
[INFO] [stdout] 27 |     pub is_admin: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AuthenticatedUser` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `require_admin` is never used
[INFO] [stdout]   --> src/auth/middleware.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl AuthenticatedUser {
[INFO] [stdout]    | ---------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn require_admin(&self) -> Result<(), AppError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OptionalUser` is never constructed
[INFO] [stdout]   --> src/auth/middleware.rs:95:12
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub struct OptionalUser(pub Option<AuthenticatedUser>);
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_public` is never used
[INFO] [stdout]   --> src/auth/user_repository.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl User {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn to_public(&self) -> PublicUser {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PublicUser` is never constructed
[INFO] [stdout]   --> src/auth/user_repository.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub struct PublicUser {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `delete` and `list_all` are never used
[INFO] [stdout]   --> src/auth/user_repository.rs:85:8
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub trait UserRepository: Send + Sync {
[INFO] [stdout]    |           -------------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 85 |     fn delete(&self, id: Uuid) -> AppResult<bool>;
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     fn list_all(&self) -> AppResult<Vec<User>>;
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `SharedUserRepository` is never used
[INFO] [stdout]    --> src/auth/user_repository.rs:240:10
[INFO] [stdout]     |
[INFO] [stdout] 240 | pub type SharedUserRepository = Arc<dyn UserRepository>;
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `with_details` is never used
[INFO] [stdout]   --> src/error.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl ErrorResponse {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn with_details(mut self, details: serde_json::Value) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Forbidden` is never constructed
[INFO] [stdout]   --> src/error.rs:50:5
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub enum AppError {
[INFO] [stdout]    |          -------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 50 |     Forbidden(String),
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AppError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `OptionExt` is never used
[INFO] [stdout]    --> src/error.rs:146:11
[INFO] [stdout]     |
[INFO] [stdout] 146 | pub trait OptionExt<T> {
[INFO] [stdout]     |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `user_repo` is never read
[INFO] [stdout]   --> src/models.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct AppState {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 14 |     pub user_repo: std::sync::Arc<JsonUserRepository>,
[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: struct `ApiResponse` is never constructed
[INFO] [stdout]   --> src/models.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct ApiResponse<T> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `success` is never used
[INFO] [stdout]   --> src/models.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl<T> ApiResponse<T> {
[INFO] [stdout]    | ---------------------- associated function in this implementation
[INFO] [stdout] 66 |     /// Create a successful response.
[INFO] [stdout] 67 |     pub fn success(data: T) -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 3m 44s
[INFO] running `Command { std: "docker" "inspect" "8acbc9763a232478b1ec239726d356b87c02488816a3a758d0c114c6c942c256", 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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "8acbc9763a232478b1ec239726d356b87c02488816a3a758d0c114c6c942c256" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling bitflags v2.9.1
[INFO] [stderr]    Compiling actix-rt v2.10.0
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]    Compiling linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling actix-codec v0.5.2
[INFO] [stderr]    Compiling actix-server v2.6.0
[INFO] [stderr]    Compiling actix-http v3.11.0
[INFO] [stderr]    Compiling tempfile v3.23.0
[INFO] [stderr]    Compiling actix-web v4.11.0
[INFO] [stderr]    Compiling actix-cors v0.7.1
[INFO] [stderr]    Compiling tracing-actix-web v0.7.20
[INFO] [stderr]    Compiling actix-files v0.6.6
[INFO] [stderr]    Compiling ferrum v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: fields `username` and `is_admin` are never read
[INFO] [stdout]   --> src/auth/middleware.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct AuthenticatedUser {
[INFO] [stdout]    |            ----------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub username: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 26 |     /// Whether the user is an admin.
[INFO] [stdout] 27 |     pub is_admin: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AuthenticatedUser` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `require_admin` is never used
[INFO] [stdout]   --> src/auth/middleware.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl AuthenticatedUser {
[INFO] [stdout]    | ---------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn require_admin(&self) -> Result<(), AppError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OptionalUser` is never constructed
[INFO] [stdout]   --> src/auth/middleware.rs:95:12
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub struct OptionalUser(pub Option<AuthenticatedUser>);
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_public` is never used
[INFO] [stdout]   --> src/auth/user_repository.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl User {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn to_public(&self) -> PublicUser {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PublicUser` is never constructed
[INFO] [stdout]   --> src/auth/user_repository.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub struct PublicUser {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `delete` and `list_all` are never used
[INFO] [stdout]   --> src/auth/user_repository.rs:85:8
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub trait UserRepository: Send + Sync {
[INFO] [stdout]    |           -------------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 85 |     fn delete(&self, id: Uuid) -> AppResult<bool>;
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     fn list_all(&self) -> AppResult<Vec<User>>;
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `SharedUserRepository` is never used
[INFO] [stdout]    --> src/auth/user_repository.rs:240:10
[INFO] [stdout]     |
[INFO] [stdout] 240 | pub type SharedUserRepository = Arc<dyn UserRepository>;
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `with_details` is never used
[INFO] [stdout]   --> src/error.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl ErrorResponse {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn with_details(mut self, details: serde_json::Value) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `OptionExt` is never used
[INFO] [stdout]    --> src/error.rs:146:11
[INFO] [stdout]     |
[INFO] [stdout] 146 | pub trait OptionExt<T> {
[INFO] [stdout]     |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `user_repo` is never read
[INFO] [stdout]   --> src/models.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct AppState {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 14 |     pub user_repo: std::sync::Arc<JsonUserRepository>,
[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: struct `ApiResponse` is never constructed
[INFO] [stdout]   --> src/models.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct ApiResponse<T> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `success` is never used
[INFO] [stdout]   --> src/models.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl<T> ApiResponse<T> {
[INFO] [stdout]    | ---------------------- associated function in this implementation
[INFO] [stdout] 66 |     /// Create a successful response.
[INFO] [stdout] 67 |     pub fn success(data: T) -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 27.84s
[INFO] running `Command { std: "docker" "inspect" "8acbc9763a232478b1ec239726d356b87c02488816a3a758d0c114c6c942c256", 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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "8acbc9763a232478b1ec239726d356b87c02488816a3a758d0c114c6c942c256" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr] warning: fields `username` and `is_admin` are never read
[INFO] [stderr]   --> src/auth/middleware.rs:25:9
[INFO] [stderr]    |
[INFO] [stderr] 21 | pub struct AuthenticatedUser {
[INFO] [stderr]    |            ----------------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 25 |     pub username: String,
[INFO] [stderr]    |         ^^^^^^^^
[INFO] [stderr] 26 |     /// Whether the user is an admin.
[INFO] [stderr] 27 |     pub is_admin: bool,
[INFO] [stderr]    |         ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `AuthenticatedUser` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: method `require_admin` is never used
[INFO] [stderr]   --> src/auth/middleware.rs:41:12
[INFO] [stderr]    |
[INFO] [stderr] 30 | impl AuthenticatedUser {
[INFO] [stderr]    | ---------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 41 |     pub fn require_admin(&self) -> Result<(), AppError> {
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `OptionalUser` is never constructed
[INFO] [stderr]   --> src/auth/middleware.rs:95:12
[INFO] [stderr]    |
[INFO] [stderr] 95 | pub struct OptionalUser(pub Option<AuthenticatedUser>);
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `to_public` is never used
[INFO] [stderr]   --> src/auth/user_repository.rs:45:12
[INFO] [stderr]    |
[INFO] [stderr] 31 | impl User {
[INFO] [stderr]    | --------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 45 |     pub fn to_public(&self) -> PublicUser {
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `PublicUser` is never constructed
[INFO] [stderr]   --> src/auth/user_repository.rs:57:12
[INFO] [stderr]    |
[INFO] [stderr] 57 | pub struct PublicUser {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `delete` and `list_all` are never used
[INFO] [stderr]   --> src/auth/user_repository.rs:85:8
[INFO] [stderr]    |
[INFO] [stderr] 71 | pub trait UserRepository: Send + Sync {
[INFO] [stderr]    |           -------------- methods in this trait
[INFO] [stderr] ...
[INFO] [stderr] 85 |     fn delete(&self, id: Uuid) -> AppResult<bool>;
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 88 |     fn list_all(&self) -> AppResult<Vec<User>>;
[INFO] [stderr]    |        ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: type alias `SharedUserRepository` is never used
[INFO] [stderr]    --> src/auth/user_repository.rs:240:10
[INFO] [stderr]     |
[INFO] [stderr] 240 | pub type SharedUserRepository = Arc<dyn UserRepository>;
[INFO] [stderr]     |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `with_details` is never used
[INFO] [stderr]   --> src/error.rs:31:12
[INFO] [stderr]    |
[INFO] [stderr] 20 | impl ErrorResponse {
[INFO] [stderr]    | ------------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 31 |     pub fn with_details(mut self, details: serde_json::Value) -> Self {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait `OptionExt` is never used
[INFO] [stderr]    --> src/error.rs:146:11
[INFO] [stderr]     |
[INFO] [stderr] 146 | pub trait OptionExt<T> {
[INFO] [stderr]     |           ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `user_repo` is never read
[INFO] [stderr]   --> src/models.rs:14:9
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub struct AppState {
[INFO] [stderr]    |            -------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 14 |     pub user_repo: std::sync::Arc<JsonUserRepository>,
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `AppState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ApiResponse` is never constructed
[INFO] [stderr]   --> src/models.rs:58:12
[INFO] [stderr]    |
[INFO] [stderr] 58 | pub struct ApiResponse<T> {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `success` is never used
[INFO] [stderr]   --> src/models.rs:67:12
[INFO] [stderr]    |
[INFO] [stderr] 65 | impl<T> ApiResponse<T> {
[INFO] [stderr]    | ---------------------- associated function in this implementation
[INFO] [stderr] 66 |     /// Create a successful response.
[INFO] [stderr] 67 |     pub fn success(data: T) -> Self {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `ferrum` (bin "ferrum" test) generated 12 warnings
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.41s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/ferrum-c60df665d74ebb74)
[INFO] [stdout] 
[INFO] [stdout] running 18 tests
[INFO] [stdout] test api::music::tests::test_sanitize_filename_empty ... ok
[INFO] [stdout] test api::music::tests::test_sanitize_filename_valid ... ok
[INFO] [stdout] test auth::jwt::tests::test_claims_creation ... ok
[INFO] [stdout] test auth::middleware::tests::test_missing_auth_header ... ok
[INFO] [stdout] test auth::user_repository::tests::test_create_user ... ok
[INFO] [stdout] test auth::user_repository::tests::test_case_insensitive_username ... ok
[INFO] [stdout] test auth::middleware::tests::test_invalid_auth_header_format ... ok
[INFO] [stdout] test auth::jwt::tests::test_token_roundtrip ... ok
[INFO] [stdout] test config::tests::test_cors_origins_parsing ... ok
[INFO] [stdout] test auth::user_repository::tests::test_duplicate_username ... ok
[INFO] [stdout] test api::music::tests::test_is_audio_file ... ok
[INFO] [stdout] test config::tests::test_default_config ... ok
[INFO] [stdout] test error::tests::test_error_codes ... ok
[INFO] [stdout] test error::tests::test_error_response_serialization ... ok
[INFO] [stdout] test error::tests::test_status_codes ... ok
[INFO] [stdout] test models::tests::test_paginated_response ... ok
[INFO] [stdout] test api::music::tests::test_sanitize_filename_path_traversal ... ok
[INFO] [stdout] test models::tests::test_song_id_generation ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "8acbc9763a232478b1ec239726d356b87c02488816a3a758d0c114c6c942c256", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8acbc9763a232478b1ec239726d356b87c02488816a3a758d0c114c6c942c256", kill_on_drop: false }`
[INFO] [stdout] 8acbc9763a232478b1ec239726d356b87c02488816a3a758d0c114c6c942c256
