[INFO] cloning repository https://github.com/Viking602/GlamourServer
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Viking602/GlamourServer" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FViking602%2FGlamourServer", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FViking602%2FGlamourServer'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] f0084b819319a245ce847b91e7b8adaf662e11ef
[INFO] checking Viking602/GlamourServer against try#6284d7b4bd27983dba388146648ab844ca7d032f for pr-152971
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FViking602%2FGlamourServer" "/workspace/builds/worker-7-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc2/source'...
[INFO] [stderr] done.
[INFO] [stderr] Updating files:  77% (6588/8551)
Updating files:  78% (6670/8551)
Updating files:  79% (6756/8551)
Updating files:  80% (6841/8551)
Updating files:  81% (6927/8551)
Updating files:  82% (7012/8551)
Updating files:  83% (7098/8551)
Updating files:  84% (7183/8551)
Updating files:  85% (7269/8551)
Updating files:  86% (7354/8551)
Updating files:  87% (7440/8551)
Updating files:  88% (7525/8551)
Updating files:  89% (7611/8551)
Updating files:  90% (7696/8551)
Updating files:  91% (7782/8551)
Updating files:  92% (7867/8551)
Updating files:  93% (7953/8551)
Updating files:  94% (8038/8551)
Updating files:  95% (8124/8551)
Updating files:  96% (8209/8551)
Updating files:  97% (8295/8551)
Updating files:  98% (8380/8551)
Updating files:  99% (8466/8551)
Updating files: 100% (8551/8551)
Updating files: 100% (8551/8551), done.
[INFO] started tweaking git repo https://github.com/Viking602/GlamourServer
[INFO] finished tweaking git repo https://github.com/Viking602/GlamourServer
[INFO] tweaked toml for git repo https://github.com/Viking602/GlamourServer written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Viking602/GlamourServer on toolchain 6284d7b4bd27983dba388146648ab844ca7d032f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+6284d7b4bd27983dba388146648ab844ca7d032f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Viking602/GlamourServer 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" "+6284d7b4bd27983dba388146648ab844ca7d032f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+6284d7b4bd27983dba388146648ab844ca7d032f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] deb3de7c6462fa3e91d52333d959b976e55036117326344b5bbe9b2183daf56e
[INFO] running `Command { std: "docker" "start" "-a" "deb3de7c6462fa3e91d52333d959b976e55036117326344b5bbe9b2183daf56e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "deb3de7c6462fa3e91d52333d959b976e55036117326344b5bbe9b2183daf56e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "deb3de7c6462fa3e91d52333d959b976e55036117326344b5bbe9b2183daf56e", kill_on_drop: false }`
[INFO] [stdout] deb3de7c6462fa3e91d52333d959b976e55036117326344b5bbe9b2183daf56e
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+6284d7b4bd27983dba388146648ab844ca7d032f" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] f29955a2ac3afd4e2c01cdc553fc74877bb69f3fbb2aad15e1aad825d936d976
[INFO] running `Command { std: "docker" "start" "-a" "f29955a2ac3afd4e2c01cdc553fc74877bb69f3fbb2aad15e1aad825d936d976", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.180
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]    Compiling zerocopy v0.8.34
[INFO] [stderr]    Compiling zerocopy-derive v0.8.34
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]    Compiling time-core v0.1.8
[INFO] [stderr]    Compiling num-conv v0.2.0
[INFO] [stderr]     Checking deranged v0.5.5
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]    Compiling aws-lc-rs v1.15.4
[INFO] [stderr]    Compiling rustls v0.23.36
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]     Checking serde_json v1.0.149
[INFO] [stderr]     Checking outref v0.5.2
[INFO] [stderr]     Checking vsimd v0.8.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]     Checking atoi v2.0.0
[INFO] [stderr]     Checking base64ct v1.8.3
[INFO] [stderr]    Compiling time-macros v0.2.26
[INFO] [stderr]     Checking unicode-properties v0.1.4
[INFO] [stderr]     Checking home v0.5.12
[INFO] [stderr]     Checking der v0.6.1
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]     Checking md-5 v0.10.6
[INFO] [stderr]     Checking hkdf v0.12.4
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]     Checking aho-corasick v1.1.4
[INFO] [stderr]     Checking uuid v1.20.0
[INFO] [stderr]    Compiling inherent v1.0.13
[INFO] [stderr]     Checking stringprep v0.1.5
[INFO] [stderr]     Checking crypto-bigint v0.4.9
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]     Checking base64-simd v0.8.0
[INFO] [stderr]     Checking chrono v0.4.43
[INFO] [stderr]     Checking bytes-utils v0.1.4
[INFO] [stderr]     Checking ff v0.12.1
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]    Compiling proc-macro-error-attr2 v2.0.0
[INFO] [stderr]     Checking base16ct v0.1.1
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]     Checking group v0.12.1
[INFO] [stderr]     Checking spki v0.6.0
[INFO] [stderr]    Compiling proc-macro-error2 v2.0.1
[INFO] [stderr]     Checking tokio v1.49.0
[INFO] [stderr]     Checking futures-intrusive v0.5.0
[INFO] [stderr]     Checking pkcs8 v0.9.0
[INFO] [stderr]     Checking webpki-roots v1.0.5
[INFO] [stderr]     Checking sec1 v0.3.0
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]     Checking concurrent-queue v2.5.0
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling cc v1.2.54
[INFO] [stderr]     Checking regex-automata v0.4.13
[INFO] [stderr]     Checking event-listener v5.4.1
[INFO] [stderr]     Checking elliptic-curve v0.12.3
[INFO] [stderr]     Checking webpki-roots v0.26.11
[INFO] [stderr]    Compiling sea-bae v0.2.1
[INFO] [stderr]     Checking rfc6979 v0.3.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking signature v1.6.4
[INFO] [stderr]     Checking hashlink v0.10.0
[INFO] [stderr]     Checking aliasable v0.1.3
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling aws-types v1.3.11
[INFO] [stderr]    Compiling equator-macro v0.4.2
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking ecdsa v0.14.8
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]    Compiling proc-macro2-diagnostics v0.10.1
[INFO] [stderr]    Compiling rust_decimal v1.40.0
[INFO] [stderr]     Checking ordered-float v4.6.0
[INFO] [stderr]     Checking crypto-bigint v0.5.5
[INFO] [stderr]     Checking time v0.3.46
[INFO] [stderr]    Compiling cmake v0.1.57
[INFO] [stderr]     Checking p256 v0.11.1
[INFO] [stderr]    Compiling yansi v1.0.1
[INFO] [stderr]    Compiling openssl v0.10.75
[INFO] [stderr]     Checking bigdecimal v0.3.1
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]     Checking async-stream v0.3.6
[INFO] [stderr]     Checking clap_lex v0.7.7
[INFO] [stderr]     Checking clap_builder v4.5.54
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking rayon v1.11.0
[INFO] [stderr]    Compiling clap_derive v4.5.49
[INFO] [stderr]     Checking equator v0.4.2
[INFO] [stderr]     Checking num-rational v0.4.2
[INFO] [stderr]     Checking regex v1.12.2
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]    Compiling ouroboros_macro v0.18.5
[INFO] [stderr]     Checking rand_core v0.9.5
[INFO] [stderr]     Checking tracing-subscriber v0.3.22
[INFO] [stderr]     Checking aligned-vec v0.6.4
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling aws-lc-sys v0.37.0
[INFO] [stderr]    Compiling openssl-sys v0.9.111
[INFO] [stderr]     Checking v_frame v0.3.9
[INFO] [stderr]     Checking regex-lite v0.1.8
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]    Compiling sea-orm-macros v1.1.19
[INFO] [stderr]    Compiling sea-schema-derive v0.3.0
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]    Compiling arg_enum_proc_macro v0.3.4
[INFO] [stderr]     Checking derive_more v2.1.1
[INFO] [stderr]    Compiling profiling-procmacros v1.0.17
[INFO] [stderr]     Checking nom v8.0.0
[INFO] [stderr]     Checking core2 v0.4.0
[INFO] [stderr]    Compiling unicase v2.9.0
[INFO] [stderr]     Checking glob v0.3.3
[INFO] [stderr]     Checking strum v0.26.3
[INFO] [stderr]     Checking xmlparser v0.13.6
[INFO] [stderr]     Checking profiling v1.0.17
[INFO] [stderr]     Checking bitstream-io v4.9.0
[INFO] [stderr]     Checking ouroboros v0.18.5
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]     Checking maybe-rayon v0.1.1
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]     Checking half v2.7.1
[INFO] [stderr]    Compiling derivative v2.2.0
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]     Checking av-scenechange v0.14.1
[INFO] [stderr]     Checking aws-smithy-xml v0.60.13
[INFO] [stderr]     Checking clap v4.5.54
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]     Checking flate2 v1.1.8
[INFO] [stderr]     Checking itertools v0.14.0
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking ordered-float v3.9.2
[INFO] [stderr]    Compiling sea-query-derive v0.4.3
[INFO] [stderr]    Compiling fax_derive v0.2.0
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]    Compiling num-derive v0.4.2
[INFO] [stderr]    Compiling simd_helpers v0.1.0
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]     Checking tokio-stream v0.1.18
[INFO] [stderr]     Checking aws-smithy-async v1.2.7
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking hashlink v0.8.4
[INFO] [stderr]     Checking sea-query v0.32.7
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]     Checking aws-smithy-types v1.3.6
[INFO] [stderr]     Checking h2 v0.3.27
[INFO] [stderr]     Checking h2 v0.4.13
[INFO] [stderr]     Checking sea-orm-cli v1.1.19
[INFO] [stderr]    Compiling multer v3.1.0
[INFO] [stderr]     Checking fax v0.2.6
[INFO] [stderr]    Compiling ouroboros_macro v0.17.2
[INFO] [stderr]     Checking sea-query v0.30.7
[INFO] [stderr]     Checking crc-fast v1.6.0
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]     Checking serde_path_to_error v0.1.20
[INFO] [stderr]     Checking spin v0.9.8
[INFO] [stderr]     Checking zune-core v0.5.1
[INFO] [stderr]     Checking exr v1.74.0
[INFO] [stderr]     Checking png v0.18.0
[INFO] [stderr]     Checking zune-jpeg v0.5.11
[INFO] [stderr]     Checking tiff v0.10.3
[INFO] [stderr]     Checking av1-grain v0.2.5
[INFO] [stderr]     Checking axum-core v0.4.5
[INFO] [stderr]     Checking aws-smithy-runtime-api v1.10.0
[INFO] [stderr]     Checking aws-smithy-eventstream v0.60.14
[INFO] [stderr]     Checking aws-smithy-json v0.61.9
[INFO] [stderr]     Checking aws-smithy-query v0.60.9
[INFO] [stderr]    Compiling sea-orm-macros v0.12.15
[INFO] [stderr]     Checking rav1e v0.8.1
[INFO] [stderr]     Checking password-hash v0.5.0
[INFO] [stderr]     Checking blake2 v0.10.6
[INFO] [stderr]     Checking lru v0.12.5
[INFO] [stderr]     Checking strum v0.25.0
[INFO] [stderr]     Checking tower-http v0.5.2
[INFO] [stderr]     Checking tower v0.4.13
[INFO] [stderr]     Checking tokio-test v0.4.5
[INFO] [stderr]     Checking argon2 v0.5.3
[INFO] [stderr]     Checking ouroboros v0.17.2
[INFO] [stderr]    Compiling rustls v0.21.12
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking aws-smithy-http v0.62.6
[INFO] [stderr]     Checking aws-credential-types v1.2.11
[INFO] [stderr]     Checking aws-smithy-observability v0.2.0
[INFO] [stderr]     Checking aws-smithy-checksums v0.63.12
[INFO] [stderr]     Checking rustls-webpki v0.101.7
[INFO] [stderr]     Checking sct v0.7.1
[INFO] [stderr]     Checking aws-sigv4 v1.3.7
[INFO] [stderr]     Checking hyper v1.8.1
[INFO] [stderr]     Checking hyper v0.14.32
[INFO] [stderr]     Checking hyper-util v0.1.19
[INFO] [stderr]     Checking tokio-rustls v0.24.1
[INFO] [stderr]     Checking sqlx-core v0.7.4
[INFO] [stderr]     Checking axum v0.7.9
[INFO] [stderr]     Checking ravif v0.12.0
[INFO] [stderr]     Checking image v0.25.9
[INFO] [stderr]     Checking sqlx-postgres v0.7.4
[INFO] [stderr]     Checking hyper-rustls v0.24.2
[INFO] [stderr]     Checking hyper-tls v0.5.0
[INFO] [stderr]     Checking reqwest v0.11.27
[INFO] [stderr]     Checking oauth2 v4.4.2
[INFO] [stderr]     Checking sqlx v0.7.4
[INFO] [stderr]     Checking sea-query-binder v0.5.0
[INFO] [stderr]     Checking sea-orm v0.12.15
[INFO] [stderr]     Checking rustls-webpki v0.103.9
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking sqlx-core v0.8.6
[INFO] [stderr]     Checking hyper-rustls v0.27.7
[INFO] [stderr]     Checking aws-smithy-http-client v1.1.5
[INFO] [stderr]     Checking aws-smithy-runtime v1.9.8
[INFO] [stderr]     Checking sqlx-postgres v0.8.6
[INFO] [stderr]     Checking aws-runtime v1.5.18
[INFO] [stderr]     Checking aws-sdk-sso v1.92.0
[INFO] [stderr]     Checking aws-sdk-sts v1.96.0
[INFO] [stderr]     Checking aws-sdk-ssooidc v1.94.0
[INFO] [stderr]     Checking aws-sdk-s3 v1.119.0
[INFO] [stderr]     Checking sqlx v0.8.6
[INFO] [stderr]     Checking sea-query-binder v0.7.0
[INFO] [stderr]     Checking sea-schema v0.16.2
[INFO] [stderr]     Checking sea-orm v1.1.19
[INFO] [stderr]     Checking aws-config v1.8.12
[INFO] [stderr]     Checking sea-orm-migration v1.1.19
[INFO] [stderr]     Checking migration v0.1.0 (/opt/rustwide/workdir/migration)
[INFO] [stderr]     Checking glamour-server v0.1.0 (/opt/rustwide/workdir/glamour-server)
[INFO] [stdout] warning: unused imports: `delete` and `put`
[INFO] [stdout]  --> glamour-server/src/main.rs:1:33
[INFO] [stdout]   |
[INFO] [stdout] 1 | use axum::{routing::{get, post, put, delete}, Router};
[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: `body::Body`
[INFO] [stdout]  --> glamour-server/src/middleware/csrf.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     body::Body,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `uuid::Uuid`
[INFO] [stdout]  --> glamour-server/src/routes/player.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use uuid::Uuid;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `delete` and `put`
[INFO] [stdout]  --> glamour-server/src/main.rs:1:33
[INFO] [stdout]   |
[INFO] [stdout] 1 | use axum::{routing::{get, post, put, delete}, Router};
[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: `body::Body`
[INFO] [stdout]  --> glamour-server/src/middleware/csrf.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     body::Body,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]   --> glamour-server/src/services/session.rs:94:9
[INFO] [stdout]    |
[INFO] [stdout] 94 |     use std::thread;
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `password_hash`
[INFO] [stdout]   --> glamour-server/src/routes/auth.rs:68:9
[INFO] [stdout]    |
[INFO] [stdout] 68 |     let password_hash = match auth::hash_password(&req.password) {
[INFO] [stdout]    |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_password_hash`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `username`
[INFO] [stdout]   --> glamour-server/src/routes/legacy.rs:35:28
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub async fn get_skin(Path(username): Path<String>) -> Response {
[INFO] [stdout]    |                            ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_username`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `username`
[INFO] [stdout]   --> glamour-server/src/routes/legacy.rs:39:28
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub async fn get_cape(Path(username): Path<String>) -> Response {
[INFO] [stdout]    |                            ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_username`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `texture_name` is assigned to, but never used
[INFO] [stdout]   --> glamour-server/src/routes/texture.rs:65:9
[INFO] [stdout]    |
[INFO] [stdout] 65 |     let mut texture_name = String::from("Untitled");
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: consider using `_texture_name` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `texture_name` is never read
[INFO] [stdout]   --> glamour-server/src/routes/texture.rs:88:21
[INFO] [stdout]    |
[INFO] [stdout] 88 |                     texture_name = String::from_utf8_lossy(&bytes).to_string();
[INFO] [stdout]    |                     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `password_hash`
[INFO] [stdout]   --> glamour-server/src/routes/auth.rs:68:9
[INFO] [stdout]    |
[INFO] [stdout] 68 |     let password_hash = match auth::hash_password(&req.password) {
[INFO] [stdout]    |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_password_hash`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `username`
[INFO] [stdout]   --> glamour-server/src/routes/legacy.rs:35:28
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub async fn get_skin(Path(username): Path<String>) -> Response {
[INFO] [stdout]    |                            ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_username`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `username`
[INFO] [stdout]   --> glamour-server/src/routes/legacy.rs:39:28
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub async fn get_cape(Path(username): Path<String>) -> Response {
[INFO] [stdout]    |                            ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_username`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `texture_name` is assigned to, but never used
[INFO] [stdout]   --> glamour-server/src/routes/texture.rs:65:9
[INFO] [stdout]    |
[INFO] [stdout] 65 |     let mut texture_name = String::from("Untitled");
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: consider using `_texture_name` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `texture_name` is never read
[INFO] [stdout]   --> glamour-server/src/routes/texture.rs:88:21
[INFO] [stdout]    |
[INFO] [stdout] 88 |                     texture_name = String::from_utf8_lossy(&bytes).to_string();
[INFO] [stdout]    |                     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CSRF_HEADER` is never used
[INFO] [stdout]  --> glamour-server/src/middleware/csrf.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const CSRF_HEADER: &str = "x-csrf-token";
[INFO] [stdout]   |       ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CSRF_COOKIE` is never used
[INFO] [stdout]   --> glamour-server/src/middleware/csrf.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const CSRF_COOKIE: &str = "csrf_token";
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `csrf_middleware` is never used
[INFO] [stdout]   --> glamour-server/src/middleware/csrf.rs:12:14
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub async fn csrf_middleware(headers: HeaderMap, request: Request, next: Next) -> Response {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_csrf_token` is never used
[INFO] [stdout]   --> glamour-server/src/middleware/csrf.rs:46:8
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub fn generate_csrf_token() -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `remaining` and `cleanup` are never used
[INFO] [stdout]   --> glamour-server/src/middleware/rate_limit.rs:38:18
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl RateLimiter {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub async fn remaining(&self, key: &str) -> usize {
[INFO] [stdout]    |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub async fn cleanup(&self) {
[INFO] [stdout]    |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `db` is never read
[INFO] [stdout]   --> glamour-server/src/routes/auth.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct AppState {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub db: Option<DatabaseConnection>,
[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: field `keep` is never read
[INFO] [stdout]   --> glamour-server/src/routes/auth.rs:39:9
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct LoginRequest {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub keep: bool,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreatePlayerRequest` is never constructed
[INFO] [stdout]   --> glamour-server/src/routes/player.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct CreatePlayerRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UpdatePlayerRequest` is never constructed
[INFO] [stdout]   --> glamour-server/src/routes/player.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct UpdatePlayerRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AssignTextureRequest` is never constructed
[INFO] [stdout]   --> glamour-server/src/routes/player.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct AssignTextureRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlayerResponse` is never constructed
[INFO] [stdout]   --> glamour-server/src/routes/player.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct PlayerResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlayersListResponse` is never constructed
[INFO] [stdout]   --> glamour-server/src/routes/player.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub struct PlayersListResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlayerErrorResponse` is never constructed
[INFO] [stdout]   --> glamour-server/src/routes/player.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub struct PlayerErrorResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> glamour-server/src/routes/player.rs:63:8
[INFO] [stdout]    |
[INFO] [stdout] 62 | impl PlayerErrorResponse {
[INFO] [stdout]    | ------------------------ associated function in this implementation
[INFO] [stdout] 63 |     fn new(error: impl Into<String>, code: impl Into<String>) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `player_error_to_response` is never used
[INFO] [stdout]   --> glamour-server/src/routes/player.rs:71:4
[INFO] [stdout]    |
[INFO] [stdout] 71 | fn player_error_to_response(err: PlayerError) -> Response {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `list_players` is never used
[INFO] [stdout]   --> glamour-server/src/routes/player.rs:86:14
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub async fn list_players(State(state): State<Arc<AppState>>) -> Response {
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_player` is never used
[INFO] [stdout]    --> glamour-server/src/routes/player.rs:112:14
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub async fn create_player(
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `update_player` is never used
[INFO] [stdout]    --> glamour-server/src/routes/player.rs:141:14
[INFO] [stdout]     |
[INFO] [stdout] 141 | pub async fn update_player(
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_player` is never used
[INFO] [stdout]    --> glamour-server/src/routes/player.rs:171:14
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub async fn delete_player(
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assign_textures` is never used
[INFO] [stdout]    --> glamour-server/src/routes/player.rs:197:14
[INFO] [stdout]     |
[INFO] [stdout] 197 | pub async fn assign_textures(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `app_state` is never read
[INFO] [stdout]   --> glamour-server/src/routes/texture.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct TextureUploadState {
[INFO] [stdout]    |            ------------------ field in this struct
[INFO] [stdout] 41 |     pub app_state: Arc<AppState>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `verify_password` is never used
[INFO] [stdout]   --> glamour-server/src/services/auth.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub fn verify_password(password: &str, hash: &str) -> AuthResult<bool> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `send_password_reset_email` is never used
[INFO] [stdout]   --> glamour-server/src/services/email.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl EmailService {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub fn send_password_reset_email(&self, email: &str, token: &str) -> Result<(), String> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_str` is never used
[INFO] [stdout]   --> glamour-server/src/services/oauth.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl OAuthProvider {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn as_str(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `csrf_token` is never read
[INFO] [stdout]   --> glamour-server/src/services/oauth.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct OAuthState {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] 41 |     pub csrf_token: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OAuthState` 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: constant `MAX_PROFILES_PER_USER` is never used
[INFO] [stdout]  --> glamour-server/src/services/player.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const MAX_PROFILES_PER_USER: usize = 5;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIN_NAME_LENGTH` is never used
[INFO] [stdout]  --> glamour-server/src/services/player.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const MIN_NAME_LENGTH: usize = 3;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_NAME_LENGTH` is never used
[INFO] [stdout]   --> glamour-server/src/services/player.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const MAX_NAME_LENGTH: usize = 16;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PlayerError` is never used
[INFO] [stdout]   --> glamour-server/src/services/player.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum PlayerError {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlayerProfile` is never constructed
[INFO] [stdout]   --> glamour-server/src/services/player.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct PlayerProfile {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_player_name` is never used
[INFO] [stdout]   --> glamour-server/src/services/player.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub fn validate_player_name(name: &str) -> Result<(), PlayerError> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_player_uuid` is never used
[INFO] [stdout]   --> glamour-server/src/services/player.rs:57:8
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub fn generate_player_uuid() -> Uuid {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_user_profile_count` is never used
[INFO] [stdout]    --> glamour-server/src/services/player.rs:107:14
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub async fn get_user_profile_count(db: &DatabaseConnection, uid: i32) -> Result<usize, PlayerError> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_name_exists` is never used
[INFO] [stdout]    --> glamour-server/src/services/player.rs:115:14
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub async fn check_name_exists(db: &DatabaseConnection, name: &str) -> Result<bool, PlayerError> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_profile` is never used
[INFO] [stdout]    --> glamour-server/src/services/player.rs:124:14
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub async fn create_profile(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_user_profiles` is never used
[INFO] [stdout]    --> glamour-server/src/services/player.rs:165:14
[INFO] [stdout]     |
[INFO] [stdout] 165 | pub async fn get_user_profiles(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_profile_by_id` is never used
[INFO] [stdout]    --> glamour-server/src/services/player.rs:187:14
[INFO] [stdout]     |
[INFO] [stdout] 187 | pub async fn get_profile_by_id(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `update_profile_name` is never used
[INFO] [stdout]    --> glamour-server/src/services/player.rs:203:14
[INFO] [stdout]     |
[INFO] [stdout] 203 | pub async fn update_profile_name(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_profile` is never used
[INFO] [stdout]    --> glamour-server/src/services/player.rs:241:14
[INFO] [stdout]     |
[INFO] [stdout] 241 | pub async fn delete_profile(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assign_texture` is never used
[INFO] [stdout]    --> glamour-server/src/services/player.rs:259:14
[INFO] [stdout]     |
[INFO] [stdout] 259 | pub async fn assign_texture(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `user_id`, `created_at`, and `expires_at` are never read
[INFO] [stdout]  --> glamour-server/src/services/session.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Session {
[INFO] [stdout]   |            ------- fields in this struct
[INFO] [stdout] 7 |     pub user_id: i32,
[INFO] [stdout]   |         ^^^^^^^
[INFO] [stdout] 8 |     pub created_at: SystemTime,
[INFO] [stdout]   |         ^^^^^^^^^^
[INFO] [stdout] 9 |     pub expires_at: SystemTime,
[INFO] [stdout]   |         ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Session` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_session`, `delete_session`, and `cleanup_expired` are never used
[INFO] [stdout]   --> glamour-server/src/services/session.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl SessionStore {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn get_session(&self, session_id: &str) -> Result<Option<Session>, String> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn delete_session(&self, session_id: &str) -> Result<(), String> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn cleanup_expired(&self) -> Result<usize, String> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `S3` is never constructed
[INFO] [stdout]   --> glamour-server/src/services/storage.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub enum StorageError {
[INFO] [stdout]    |          ------------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 10 |     S3(String),
[INFO] [stdout]    |     ^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `StorageError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `delete` is never used
[INFO] [stdout]   --> glamour-server/src/services/storage.rs:22:14
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub trait Storage: Send + Sync {
[INFO] [stdout]    |           ------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 22 |     async fn delete(&self, hash: &str) -> StorageResult<()>;
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `S3Storage` is never constructed
[INFO] [stdout]   --> glamour-server/src/services/storage.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct S3Storage {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `with_client`, and `get_key` are never used
[INFO] [stdout]    --> glamour-server/src/services/storage.rs:96:18
[INFO] [stdout]     |
[INFO] [stdout]  95 | impl S3Storage {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout]  96 |     pub async fn new(bucket: String, base_url: String) -> Self {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub fn with_client(client: aws_sdk_s3::Client, bucket: String, base_url: String) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     fn get_key(&self, hash: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `width` and `height` are never read
[INFO] [stdout]   --> glamour-server/src/services/texture.rs:39:9
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct TextureInfo {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub width: u32,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 40 |     pub height: u32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TextureInfo` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CSRF_HEADER` is never used
[INFO] [stdout]  --> glamour-server/src/middleware/csrf.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const CSRF_HEADER: &str = "x-csrf-token";
[INFO] [stdout]   |       ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CSRF_COOKIE` is never used
[INFO] [stdout]   --> glamour-server/src/middleware/csrf.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const CSRF_COOKIE: &str = "csrf_token";
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `csrf_middleware` is never used
[INFO] [stdout]   --> glamour-server/src/middleware/csrf.rs:12:14
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub async fn csrf_middleware(headers: HeaderMap, request: Request, next: Next) -> Response {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `db` is never read
[INFO] [stdout]   --> glamour-server/src/routes/auth.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct AppState {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub db: Option<DatabaseConnection>,
[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: function `player_error_to_response` is never used
[INFO] [stdout]   --> glamour-server/src/routes/player.rs:71:4
[INFO] [stdout]    |
[INFO] [stdout] 71 | fn player_error_to_response(err: PlayerError) -> Response {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `list_players` is never used
[INFO] [stdout]   --> glamour-server/src/routes/player.rs:86:14
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub async fn list_players(State(state): State<Arc<AppState>>) -> Response {
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_player` is never used
[INFO] [stdout]    --> glamour-server/src/routes/player.rs:112:14
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub async fn create_player(
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `update_player` is never used
[INFO] [stdout]    --> glamour-server/src/routes/player.rs:141:14
[INFO] [stdout]     |
[INFO] [stdout] 141 | pub async fn update_player(
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_player` is never used
[INFO] [stdout]    --> glamour-server/src/routes/player.rs:171:14
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub async fn delete_player(
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assign_textures` is never used
[INFO] [stdout]    --> glamour-server/src/routes/player.rs:197:14
[INFO] [stdout]     |
[INFO] [stdout] 197 | pub async fn assign_textures(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `app_state` is never read
[INFO] [stdout]   --> glamour-server/src/routes/texture.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct TextureUploadState {
[INFO] [stdout]    |            ------------------ field in this struct
[INFO] [stdout] 41 |     pub app_state: Arc<AppState>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `csrf_token` is never read
[INFO] [stdout]   --> glamour-server/src/services/oauth.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct OAuthState {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] 41 |     pub csrf_token: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OAuthState` 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: constant `MAX_PROFILES_PER_USER` is never used
[INFO] [stdout]  --> glamour-server/src/services/player.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const MAX_PROFILES_PER_USER: usize = 5;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `TextureNotFound` is never constructed
[INFO] [stdout]   --> glamour-server/src/services/player.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum PlayerError {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 27 |     TextureNotFound,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PlayerError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `uid` is never read
[INFO] [stdout]   --> glamour-server/src/services/player.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct PlayerProfile {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] 34 |     pub pid: i32,
[INFO] [stdout] 35 |     pub uid: i32,
[INFO] [stdout]    |         ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PlayerProfile` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_user_profile_count` is never used
[INFO] [stdout]    --> glamour-server/src/services/player.rs:107:14
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub async fn get_user_profile_count(db: &DatabaseConnection, uid: i32) -> Result<usize, PlayerError> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_name_exists` is never used
[INFO] [stdout]    --> glamour-server/src/services/player.rs:115:14
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub async fn check_name_exists(db: &DatabaseConnection, name: &str) -> Result<bool, PlayerError> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_profile` is never used
[INFO] [stdout]    --> glamour-server/src/services/player.rs:124:14
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub async fn create_profile(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_user_profiles` is never used
[INFO] [stdout]    --> glamour-server/src/services/player.rs:165:14
[INFO] [stdout]     |
[INFO] [stdout] 165 | pub async fn get_user_profiles(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_profile_by_id` is never used
[INFO] [stdout]    --> glamour-server/src/services/player.rs:187:14
[INFO] [stdout]     |
[INFO] [stdout] 187 | pub async fn get_profile_by_id(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `update_profile_name` is never used
[INFO] [stdout]    --> glamour-server/src/services/player.rs:203:14
[INFO] [stdout]     |
[INFO] [stdout] 203 | pub async fn update_profile_name(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_profile` is never used
[INFO] [stdout]    --> glamour-server/src/services/player.rs:241:14
[INFO] [stdout]     |
[INFO] [stdout] 241 | pub async fn delete_profile(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assign_texture` is never used
[INFO] [stdout]    --> glamour-server/src/services/player.rs:259:14
[INFO] [stdout]     |
[INFO] [stdout] 259 | pub async fn assign_texture(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `created_at` is never read
[INFO] [stdout]  --> glamour-server/src/services/session.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Session {
[INFO] [stdout]   |            ------- field in this struct
[INFO] [stdout] 7 |     pub user_id: i32,
[INFO] [stdout] 8 |     pub created_at: SystemTime,
[INFO] [stdout]   |         ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Session` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `S3` is never constructed
[INFO] [stdout]   --> glamour-server/src/services/storage.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub enum StorageError {
[INFO] [stdout]    |          ------------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 10 |     S3(String),
[INFO] [stdout]    |     ^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `StorageError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `S3Storage` is never constructed
[INFO] [stdout]   --> glamour-server/src/services/storage.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct S3Storage {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `with_client`, and `get_key` are never used
[INFO] [stdout]    --> glamour-server/src/services/storage.rs:96:18
[INFO] [stdout]     |
[INFO] [stdout]  95 | impl S3Storage {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout]  96 |     pub async fn new(bucket: String, base_url: String) -> Self {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub fn with_client(client: aws_sdk_s3::Client, bucket: String, base_url: String) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     fn get_key(&self, hash: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 39s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: sqlx-postgres v0.7.4
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 6`
[INFO] running `Command { std: "docker" "inspect" "f29955a2ac3afd4e2c01cdc553fc74877bb69f3fbb2aad15e1aad825d936d976", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f29955a2ac3afd4e2c01cdc553fc74877bb69f3fbb2aad15e1aad825d936d976", kill_on_drop: false }`
[INFO] [stdout] f29955a2ac3afd4e2c01cdc553fc74877bb69f3fbb2aad15e1aad825d936d976
