[INFO] cloning repository https://github.com/akseven6221/oj
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/akseven6221/oj" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fakseven6221%2Foj", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fakseven6221%2Foj'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 81e76bf68d2cbd65c7b86308b4ba555e775ddaa2
[INFO] checking akseven6221/oj against 49a6044d37d694890450f52ceaceb66277a36b1e for pr-161154
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fakseven6221%2Foj" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'...
[INFO] [stderr] done.
[INFO] [stderr] Updating files:  78% (3983/5081)
Updating files:  79% (4014/5081)
Updating files:  80% (4065/5081)
Updating files:  81% (4116/5081)
Updating files:  82% (4167/5081)
Updating files:  83% (4218/5081)
Updating files:  84% (4269/5081)
Updating files:  85% (4319/5081)
Updating files:  86% (4370/5081)
Updating files:  87% (4421/5081)
Updating files:  88% (4472/5081)
Updating files:  89% (4523/5081)
Updating files:  90% (4573/5081)
Updating files:  91% (4624/5081)
Updating files:  92% (4675/5081)
Updating files:  93% (4726/5081)
Updating files:  94% (4777/5081)
Updating files:  95% (4827/5081)
Updating files:  96% (4878/5081)
Updating files:  97% (4929/5081)
Updating files:  98% (4980/5081)
Updating files:  99% (5031/5081)
Updating files: 100% (5081/5081)
Updating files: 100% (5081/5081), done.
[INFO] removed /workspace/builds/worker-2-tc2/source/rust-toolchain.toml
[INFO] started tweaking git repo https://github.com/akseven6221/oj
[INFO] finished tweaking git repo https://github.com/akseven6221/oj
[INFO] tweaked toml for git repo https://github.com/akseven6221/oj written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/akseven6221/oj on toolchain 49a6044d37d694890450f52ceaceb66277a36b1e
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+49a6044d37d694890450f52ceaceb66277a36b1e" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/akseven6221/oj 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" "+49a6044d37d694890450f52ceaceb66277a36b1e" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/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:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 748713c0654693a8e5c19daf656a28aed6a1d5d2a18bc4d3c2f07ef142a7bd96
[INFO] running `Command { std: "docker" "start" "748713c0654693a8e5c19daf656a28aed6a1d5d2a18bc4d3c2f07ef142a7bd96", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "748713c0654693a8e5c19daf656a28aed6a1d5d2a18bc4d3c2f07ef142a7bd96", 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" "748713c0654693a8e5c19daf656a28aed6a1d5d2a18bc4d3c2f07ef142a7bd96" "/opt/rustwide/cargo-home/bin/cargo" "+49a6044d37d694890450f52ceaceb66277a36b1e" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "748713c0654693a8e5c19daf656a28aed6a1d5d2a18bc4d3c2f07ef142a7bd96", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "748713c0654693a8e5c19daf656a28aed6a1d5d2a18bc4d3c2f07ef142a7bd96" "/opt/rustwide/cargo-home/bin/cargo" "+49a6044d37d694890450f52ceaceb66277a36b1e" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.94
[INFO] [stderr]    Compiling libc v0.2.171
[INFO] [stderr]     Checking smallvec v1.14.0
[INFO] [stderr]    Compiling libm v0.2.11
[INFO] [stderr]    Compiling icu_locid_transform_data v1.5.1
[INFO] [stderr]     Checking bytes v1.10.1
[INFO] [stderr]    Compiling typenum v1.18.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling icu_properties_data v1.5.1
[INFO] [stderr]    Compiling zerocopy v0.8.24
[INFO] [stderr]    Compiling icu_normalizer_data v1.5.1
[INFO] [stderr]     Checking futures-core v0.3.31
[INFO] [stderr]    Compiling stable_deref_trait v1.2.0
[INFO] [stderr]    Compiling openssl v0.10.71
[INFO] [stderr]     Checking futures-sink v0.3.31
[INFO] [stderr]    Compiling ahash v0.8.11
[INFO] [stderr]    Compiling parking_lot_core v0.8.6
[INFO] [stderr]     Checking base64ct v1.7.3
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]    Compiling litemap v0.7.5
[INFO] [stderr]    Compiling writeable v0.5.5
[INFO] [stderr]    Compiling rustversion v1.0.20
[INFO] [stderr]    Compiling num-bigint-dig v0.8.4
[INFO] [stderr]     Checking spin v0.9.8
[INFO] [stderr]    Compiling serde v1.0.219
[INFO] [stderr]    Compiling foreign-types-shared v0.1.1
[INFO] [stderr]    Compiling const-oid v0.7.1
[INFO] [stderr]    Compiling foreign-types v0.3.2
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]     Checking pem-rfc7468 v0.3.1
[INFO] [stderr]     Checking tracing-core v0.1.33
[INFO] [stderr]    Compiling ahash v0.7.8
[INFO] [stderr]    Compiling syn v2.0.100
[INFO] [stderr]    Compiling indexmap v1.9.3
[INFO] [stderr]    Compiling bitflags v2.9.0
[INFO] [stderr]    Compiling jobserver v0.1.33
[INFO] [stderr]    Compiling getrandom v0.2.15
[INFO] [stderr]    Compiling socket2 v0.5.9
[INFO] [stderr]    Compiling mio v1.0.3
[INFO] [stderr]    Compiling utf16_iter v1.0.5
[INFO] [stderr]     Checking parking_lot_core v0.9.10
[INFO] [stderr]     Checking signal-hook-registry v1.4.2
[INFO] [stderr]    Compiling cc v1.2.17
[INFO] [stderr]    Compiling crypto-bigint v0.3.2
[INFO] [stderr]    Compiling crypto-common v0.1.6
[INFO] [stderr]     Checking parking_lot v0.12.3
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling zeroize v1.8.1
[INFO] [stderr]    Compiling write16 v1.0.0
[INFO] [stderr]    Compiling tokio v1.44.1
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]     Checking http v0.2.12
[INFO] [stderr]     Checking lazy_static v1.5.0
[INFO] [stderr]    Compiling instant v0.1.13
[INFO] [stderr]    Compiling zerocopy v0.7.35
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling der v0.5.1
[INFO] [stderr]     Checking tower-service v0.3.3
[INFO] [stderr]    Compiling openssl-probe v0.1.6
[INFO] [stderr]    Compiling tinyvec v1.9.0
[INFO] [stderr]    Compiling lock_api v0.4.12
[INFO] [stderr]    Compiling num-iter v0.1.45
[INFO] [stderr]    Compiling num-conv v0.1.0
[INFO] [stderr]    Compiling byteorder v1.5.0
[INFO] [stderr]    Compiling time-core v0.1.4
[INFO] [stderr]    Compiling minimal-lexical v0.2.1
[INFO] [stderr]     Checking tower-layer v0.3.3
[INFO] [stderr]    Compiling parking_lot v0.11.2
[INFO] [stderr]    Compiling time-macros v0.2.22
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]    Compiling heck v0.4.1
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]     Checking http-body v0.4.6
[INFO] [stderr]    Compiling spki v0.5.4
[INFO] [stderr]     Checking sha2 v0.10.8
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling pkcs8 v0.8.0
[INFO] [stderr]    Compiling form_urlencoded v1.2.1
[INFO] [stderr]     Checking deranged v0.4.1
[INFO] [stderr]    Compiling pkcs1 v0.3.3
[INFO] [stderr]    Compiling axum-core v0.3.4
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]     Checking futures-channel v0.3.31
[INFO] [stderr]    Compiling unicode-bidi v0.3.18
[INFO] [stderr]    Compiling futures-task v0.3.31
[INFO] [stderr]    Compiling iana-time-zone v0.1.63
[INFO] [stderr]    Compiling unicode_categories v0.1.1
[INFO] [stderr]    Compiling unicase v2.8.1
[INFO] [stderr]    Compiling unicode-normalization v0.1.24
[INFO] [stderr]    Compiling hashbrown v0.12.3
[INFO] [stderr]    Compiling pin-utils v0.1.0
[INFO] [stderr]    Compiling zstd-safe v5.0.2+zstd.1.5.2
[INFO] [stderr]    Compiling unicode-properties v0.1.3
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]    Compiling crossbeam-queue v0.3.12
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling openssl-sys v0.9.106
[INFO] [stderr]    Compiling zstd-sys v2.0.15+zstd.1.5.7
[INFO] [stderr]    Compiling bzip2-sys v0.1.13+1.0.8
[INFO] [stderr]    Compiling chrono v0.4.40
[INFO] [stderr]    Compiling stringprep v0.1.5
[INFO] [stderr]    Compiling crc v3.2.1
[INFO] [stderr]     Checking time v0.3.41
[INFO] [stderr]    Compiling hashlink v0.8.4
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]    Compiling futures-intrusive v0.4.2
[INFO] [stderr]     Checking inout v0.1.4
[INFO] [stderr]    Compiling sqlformat v0.2.6
[INFO] [stderr]    Compiling num-bigint v0.4.6
[INFO] [stderr]    Compiling rsa v0.6.1
[INFO] [stderr]    Compiling atoi v1.0.0
[INFO] [stderr]     Checking http v1.3.1
[INFO] [stderr]    Compiling cookie v0.16.2
[INFO] [stderr]    Compiling multer v2.1.0
[INFO] [stderr]    Compiling itoa v1.0.15
[INFO] [stderr]    Compiling dotenvy v0.15.7
[INFO] [stderr]     Checking regex-syntax v0.6.29
[INFO] [stderr]    Compiling hex v0.4.3
[INFO] [stderr]    Compiling event-listener v2.5.3
[INFO] [stderr]    Compiling serde_json v1.0.140
[INFO] [stderr]     Checking crc-catalog v2.4.0
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]     Checking regex-syntax v0.8.5
[INFO] [stderr]    Compiling bitflags v1.3.2
[INFO] [stderr]     Checking miniz_oxide v0.8.5
[INFO] [stderr]    Compiling getrandom v0.3.2
[INFO] [stderr]     Checking cipher v0.4.4
[INFO] [stderr]    Compiling synstructure v0.13.1
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]     Checking password-hash v0.4.2
[INFO] [stderr]    Compiling axum v0.6.20
[INFO] [stderr]     Checking encoding_rs v0.8.35
[INFO] [stderr]     Checking overload v0.1.1
[INFO] [stderr]     Checking nu-ansi-term v0.46.0
[INFO] [stderr]     Checking pbkdf2 v0.11.0
[INFO] [stderr]     Checking flate2 v1.1.1
[INFO] [stderr]     Checking aes v0.8.4
[INFO] [stderr]     Checking bzip2 v0.4.4
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]     Checking regex-automata v0.1.10
[INFO] [stderr]     Checking sharded-slab v0.1.7
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking thread_local v1.1.8
[INFO] [stderr]     Checking utf8-width v0.1.7
[INFO] [stderr]     Checking matchit v0.7.3
[INFO] [stderr]     Checking http-range-header v0.4.2
[INFO] [stderr]     Checking html-escape v0.2.13
[INFO] [stderr]     Checking uuid v1.16.0
[INFO] [stderr]     Checking urlencoding v2.1.3
[INFO] [stderr]     Checking regex-automata v0.4.9
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.7.5
[INFO] [stderr]    Compiling zerovec-derive v0.10.3
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling icu_provider_macros v1.5.0
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling tracing-attributes v0.1.28
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke v0.7.5
[INFO] [stderr]    Compiling zerovec v0.10.4
[INFO] [stderr]    Compiling tokio-stream v0.1.17
[INFO] [stderr]     Checking tinystr v0.7.6
[INFO] [stderr]    Compiling icu_collections v1.5.0
[INFO] [stderr]    Compiling icu_locid v1.5.0
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling pin-project-internal v1.1.10
[INFO] [stderr]    Compiling async-trait v0.1.88
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking icu_provider v1.5.0
[INFO] [stderr]     Checking regex v1.11.1
[INFO] [stderr]     Checking matchers v0.1.0
[INFO] [stderr]    Compiling axum-macros v0.3.8
[INFO] [stderr]     Checking icu_locid_transform v1.5.0
[INFO] [stderr]     Checking tracing-subscriber v0.3.19
[INFO] [stderr]     Checking pin-project v1.1.10
[INFO] [stderr]     Checking zstd v0.11.2+zstd.1.5.2
[INFO] [stderr]     Checking icu_properties v1.5.1
[INFO] [stderr]     Checking zip v0.6.6
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]     Checking tower v0.4.13
[INFO] [stderr]     Checking tokio-util v0.7.14
[INFO] [stderr]     Checking hyper v0.14.32
[INFO] [stderr]    Compiling sqlx-rt v0.6.3
[INFO] [stderr]     Checking icu_normalizer v1.5.0
[INFO] [stderr]     Checking tower-http v0.5.2
[INFO] [stderr]     Checking idna_adapter v1.2.0
[INFO] [stderr]     Checking idna v1.0.3
[INFO] [stderr]     Checking tower-cookies v0.8.0
[INFO] [stderr]     Checking url v2.5.4
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking serde_path_to_error v0.1.17
[INFO] [stderr]    Compiling sqlx-core v0.6.3
[INFO] [stderr]    Compiling sqlx-macros v0.6.3
[INFO] [stderr]     Checking sqlx v0.6.3
[INFO] [stderr]     Checking axum-file-upload v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `admin_panel`, `create_user`, `delete_user`, and `update_user`
[INFO] [stdout]  --> src/handler/mod.rs:8:17
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use admin::{admin_panel, create_user, delete_user, update_user};
[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 imports: `download_file` and `view_user_files`
[INFO] [stdout]   --> src/handler/mod.rs:10:17
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use files::{download_file, view_user_files};
[INFO] [stdout]    |                 ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `upload_handler` and `view_uploads`
[INFO] [stdout]   --> src/handler/mod.rs:11:33
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use upload::{index_handler, upload_handler, view_uploads};
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `view_result_detail` and `view_results`
[INFO] [stdout]   --> src/handler/mod.rs:12:24
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use test_results::{view_results, view_result_detail};
[INFO] [stdout]    |                        ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `admin_panel`, `create_user`, `delete_user`, and `update_user`
[INFO] [stdout]  --> src/handler/mod.rs:8:17
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use admin::{admin_panel, create_user, delete_user, update_user};
[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 imports: `download_file` and `view_user_files`
[INFO] [stdout]   --> src/handler/mod.rs:10:17
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use files::{download_file, view_user_files};
[INFO] [stdout]    |                 ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `upload_handler` and `view_uploads`
[INFO] [stdout]   --> src/handler/mod.rs:11:33
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use upload::{index_handler, upload_handler, view_uploads};
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tower_http::services::ServeDir`
[INFO] [stdout]   --> src/main.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use tower_http::services::ServeDir; // 新增：导入 ServeDir
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `view_result_detail` and `view_results`
[INFO] [stdout]   --> src/handler/mod.rs:12:24
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use test_results::{view_results, view_result_detail};
[INFO] [stdout]    |                        ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `post`
[INFO] [stdout]   --> src/main.rs:23:20
[INFO] [stdout]    |
[INFO] [stdout] 23 |     routing::{get, post}, // Remove get_service import
[INFO] [stdout]    |                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tower_http::services::ServeDir`
[INFO] [stdout]   --> src/main.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use tower_http::services::ServeDir; // 新增：导入 ServeDir
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `post`
[INFO] [stdout]   --> src/main.rs:23:20
[INFO] [stdout]    |
[INFO] [stdout] 23 |     routing::{get, post}, // Remove get_service import
[INFO] [stdout]    |                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ServiceExt`
[INFO] [stdout]   --> src/main.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     ServiceExt,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ServiceExt`
[INFO] [stdout]   --> src/main.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     ServiceExt,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `get_all_users`, `create_user`, `update_user`, and `delete_user` are never used
[INFO] [stdout]    --> src/database.rs:88:18
[INFO] [stdout]     |
[INFO] [stdout]  86 | impl UserRepo {
[INFO] [stdout]     | ------------- associated functions in this implementation
[INFO] [stdout]  87 |     // 获取所有用户
[INFO] [stdout]  88 |     pub async fn get_all_users(pool: &DbPool) -> Result<Vec<User>, DbError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     pub async fn create_user(pool: &DbPool, username: &str, password: &str, role: UserRole) -> Result<i32, DbError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub async fn update_user(pool: &DbPool, username: &str, password: Option<&str>, role: Option<UserRole>) -> Result<bool, DbError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 210 |     pub async fn delete_user(pool: &DbPool, username: &str) -> Result<bool, DbError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `clear_user_sessions` is never used
[INFO] [stdout]    --> src/database.rs:257:18
[INFO] [stdout]     |
[INFO] [stdout] 223 | impl SessionRepo {
[INFO] [stdout]     | ---------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 257 |     pub async fn clear_user_sessions(pool: &DbPool, user_id: i32) -> Result<(), DbError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UploadRepo` is never constructed
[INFO] [stdout]    --> src/database.rs:268:12
[INFO] [stdout]     |
[INFO] [stdout] 268 | pub struct UploadRepo;
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `record_upload`, `get_user_uploads`, and `get_all_uploads` are never used
[INFO] [stdout]    --> src/database.rs:272:18
[INFO] [stdout]     |
[INFO] [stdout] 270 | impl UploadRepo {
[INFO] [stdout]     | --------------- associated functions in this implementation
[INFO] [stdout] 271 |     // 记录文件上传
[INFO] [stdout] 272 |     pub async fn record_upload(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     pub async fn get_user_uploads(pool: &DbPool, user_id: i32) -> Result<Vec<sqlx::mysql::MySqlRow>, DbError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 301 |     pub async fn get_all_uploads(pool: &DbPool) -> Result<Vec<sqlx::mysql::MySqlRow>, DbError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `create_test`, `get_user_tests`, `get_all_tests`, and `get_test_by_id` are never used
[INFO] [stdout]    --> src/database.rs:315:18
[INFO] [stdout]     |
[INFO] [stdout] 313 | impl TestRepo {
[INFO] [stdout]     | ------------- associated functions in this implementation
[INFO] [stdout] 314 |     // 创建新的测试记录
[INFO] [stdout] 315 |     pub async fn create_test(pool: &DbPool, user_id: i32) -> Result<i32, DbError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 375 |     pub async fn get_user_tests(pool: &DbPool, user_id: i32) -> Result<Vec<crate::models::TestResult>, DbError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 417 |     pub async fn get_all_tests(pool: &DbPool) -> Result<Vec<crate::models::TestResult>, DbError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 457 |     pub async fn get_test_by_id(pool: &DbPool, id: i32) -> Result<Option<crate::models::TestResult>, DbError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `admin_panel` is never used
[INFO] [stdout]   --> src/handler/admin.rs:10:14
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub async fn admin_panel(
[INFO] [stdout]    |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_user` is never used
[INFO] [stdout]   --> src/handler/admin.rs:32:14
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub async fn create_user(
[INFO] [stdout]    |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `update_user` is never used
[INFO] [stdout]   --> src/handler/admin.rs:82:14
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub async fn update_user(
[INFO] [stdout]    |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_user` is never used
[INFO] [stdout]    --> src/handler/admin.rs:142:14
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub async fn delete_user(
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `view_user_files` is never used
[INFO] [stdout]   --> src/handler/files.rs:31:14
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub async fn view_user_files(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `download_file` is never used
[INFO] [stdout]    --> src/handler/files.rs:103:14
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub async fn download_file(
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `upload_page` is never used
[INFO] [stdout]    --> src/handler/files.rs:159:14
[INFO] [stdout]     |
[INFO] [stdout] 159 | pub async fn upload_page(
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `upload_handler` is never used
[INFO] [stdout]   --> src/handler/upload.rs:17:14
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub async fn upload_handler(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `view_uploads` is never used
[INFO] [stdout]    --> src/handler/upload.rs:147:14
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub async fn view_uploads(
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_zip_and_replace_user_dir` is never used
[INFO] [stdout]    --> src/handler/upload.rs:183:4
[INFO] [stdout]     |
[INFO] [stdout] 183 | fn extract_zip_and_replace_user_dir(zip_path: &PathBuf, username: &str, extract_dir_name: &str) -> Result<(), String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_user_dir` is never used
[INFO] [stdout]    --> src/handler/upload.rs:242:4
[INFO] [stdout]     |
[INFO] [stdout] 242 | fn find_user_dir(extract_dir: &str) -> Result<std::path::PathBuf, String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `copy_dir_recursively` is never used
[INFO] [stdout]    --> src/handler/upload.rs:270:4
[INFO] [stdout]     |
[INFO] [stdout] 270 | fn copy_dir_recursively(src: &str, dst: &std::path::Path) -> std::io::Result<()> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `view_results` is never used
[INFO] [stdout]   --> src/handler/test_results.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub async fn view_results(
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `view_result_detail` is never used
[INFO] [stdout]   --> src/handler/test_results.rs:40:14
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub async fn view_result_detail(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Session` is never constructed
[INFO] [stdout]   --> src/models.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct Session {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `test_queue` is never read
[INFO] [stdout]   --> src/models.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct AppState {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 32 |     pub db_pool: Arc<MySqlPool>,
[INFO] [stdout] 33 |     pub test_queue: Arc<TestQueue>, // 新增
[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 `UserCreateForm` is never constructed
[INFO] [stdout]   --> src/models.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct UserCreateForm {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserUpdateForm` is never constructed
[INFO] [stdout]   --> src/models.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub struct UserUpdateForm {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UploadRecord` is never constructed
[INFO] [stdout]   --> src/models.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct UploadRecord {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TestResult` is never constructed
[INFO] [stdout]   --> src/models.rs:80:12
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub struct TestResult {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `user_id` is never read
[INFO] [stdout]   --> src/models.rs:95:9
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub struct TestTask {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 94 |     pub id: i32,
[INFO] [stdout] 95 |     pub user_id: i32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TestTask` 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 `UPLOADS_TABLE_PATH` is never used
[INFO] [stdout]   --> src/templates.rs:27:7
[INFO] [stdout]    |
[INFO] [stdout] 27 | const UPLOADS_TABLE_PATH: &str = "templates/uploads_table.html"; // 新增
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TEST_RESULTS_LIST_TABLE_PATH` is never used
[INFO] [stdout]   --> src/templates.rs:29:7
[INFO] [stdout]    |
[INFO] [stdout] 29 | const TEST_RESULTS_LIST_TABLE_PATH: &str = "templates/test_results_list_table.html"; // 新增
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `admin_panel_template` is never used
[INFO] [stdout]    --> src/templates.rs:153:8
[INFO] [stdout]     |
[INFO] [stdout] 153 | pub fn admin_panel_template(users: &[User], error_message: Option<&str>, success_message: Option<&str>) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_users_html` is never used
[INFO] [stdout]    --> src/templates.rs:194:4
[INFO] [stdout]     |
[INFO] [stdout] 194 | fn build_users_html(users: &[User]) -> Result<String, std::io::Error> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `uploads_template` is never used
[INFO] [stdout]    --> src/templates.rs:221:8
[INFO] [stdout]     |
[INFO] [stdout] 221 | pub fn uploads_template(user: &User, uploads: &[UploadRecord]) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `upload_page_template` is never used
[INFO] [stdout]    --> src/templates.rs:391:8
[INFO] [stdout]     |
[INFO] [stdout] 391 | pub fn upload_page_template() -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_results_list_template` is never used
[INFO] [stdout]    --> src/templates.rs:400:8
[INFO] [stdout]     |
[INFO] [stdout] 400 | pub fn test_results_list_template(results_content_html: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_test_results_content_html` is never used
[INFO] [stdout]    --> src/templates.rs:410:8
[INFO] [stdout]     |
[INFO] [stdout] 410 | pub fn build_test_results_content_html(results: &[TestResult]) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_results_detail_template` is never used
[INFO] [stdout]    --> src/templates.rs:459:8
[INFO] [stdout]     |
[INFO] [stdout] 459 | pub fn test_results_detail_template(result: &TestResult) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_message_template` is never used
[INFO] [stdout]    --> src/templates.rs:499:4
[INFO] [stdout]     |
[INFO] [stdout] 499 | fn render_message_template(message_class: &str, message_text: &str) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `add_task` is never used
[INFO] [stdout]   --> src/tester.rs:25:18
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl TestQueue {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub async fn add_task(&self, task: TestTask) {
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `get_all_users`, `create_user`, `update_user`, and `delete_user` are never used
[INFO] [stdout]    --> src/database.rs:88:18
[INFO] [stdout]     |
[INFO] [stdout]  86 | impl UserRepo {
[INFO] [stdout]     | ------------- associated functions in this implementation
[INFO] [stdout]  87 |     // 获取所有用户
[INFO] [stdout]  88 |     pub async fn get_all_users(pool: &DbPool) -> Result<Vec<User>, DbError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     pub async fn create_user(pool: &DbPool, username: &str, password: &str, role: UserRole) -> Result<i32, DbError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub async fn update_user(pool: &DbPool, username: &str, password: Option<&str>, role: Option<UserRole>) -> Result<bool, DbError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 210 |     pub async fn delete_user(pool: &DbPool, username: &str) -> Result<bool, DbError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `clear_user_sessions` is never used
[INFO] [stdout]    --> src/database.rs:257:18
[INFO] [stdout]     |
[INFO] [stdout] 223 | impl SessionRepo {
[INFO] [stdout]     | ---------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 257 |     pub async fn clear_user_sessions(pool: &DbPool, user_id: i32) -> Result<(), DbError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UploadRepo` is never constructed
[INFO] [stdout]    --> src/database.rs:268:12
[INFO] [stdout]     |
[INFO] [stdout] 268 | pub struct UploadRepo;
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `record_upload`, `get_user_uploads`, and `get_all_uploads` are never used
[INFO] [stdout]    --> src/database.rs:272:18
[INFO] [stdout]     |
[INFO] [stdout] 270 | impl UploadRepo {
[INFO] [stdout]     | --------------- associated functions in this implementation
[INFO] [stdout] 271 |     // 记录文件上传
[INFO] [stdout] 272 |     pub async fn record_upload(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     pub async fn get_user_uploads(pool: &DbPool, user_id: i32) -> Result<Vec<sqlx::mysql::MySqlRow>, DbError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 301 |     pub async fn get_all_uploads(pool: &DbPool) -> Result<Vec<sqlx::mysql::MySqlRow>, DbError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `create_test`, `get_user_tests`, `get_all_tests`, and `get_test_by_id` are never used
[INFO] [stdout]    --> src/database.rs:315:18
[INFO] [stdout]     |
[INFO] [stdout] 313 | impl TestRepo {
[INFO] [stdout]     | ------------- associated functions in this implementation
[INFO] [stdout] 314 |     // 创建新的测试记录
[INFO] [stdout] 315 |     pub async fn create_test(pool: &DbPool, user_id: i32) -> Result<i32, DbError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 375 |     pub async fn get_user_tests(pool: &DbPool, user_id: i32) -> Result<Vec<crate::models::TestResult>, DbError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 417 |     pub async fn get_all_tests(pool: &DbPool) -> Result<Vec<crate::models::TestResult>, DbError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 457 |     pub async fn get_test_by_id(pool: &DbPool, id: i32) -> Result<Option<crate::models::TestResult>, DbError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `admin_panel` is never used
[INFO] [stdout]   --> src/handler/admin.rs:10:14
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub async fn admin_panel(
[INFO] [stdout]    |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_user` is never used
[INFO] [stdout]   --> src/handler/admin.rs:32:14
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub async fn create_user(
[INFO] [stdout]    |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `update_user` is never used
[INFO] [stdout]   --> src/handler/admin.rs:82:14
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub async fn update_user(
[INFO] [stdout]    |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_user` is never used
[INFO] [stdout]    --> src/handler/admin.rs:142:14
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub async fn delete_user(
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `view_user_files` is never used
[INFO] [stdout]   --> src/handler/files.rs:31:14
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub async fn view_user_files(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `download_file` is never used
[INFO] [stdout]    --> src/handler/files.rs:103:14
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub async fn download_file(
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `upload_page` is never used
[INFO] [stdout]    --> src/handler/files.rs:159:14
[INFO] [stdout]     |
[INFO] [stdout] 159 | pub async fn upload_page(
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `upload_handler` is never used
[INFO] [stdout]   --> src/handler/upload.rs:17:14
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub async fn upload_handler(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `view_uploads` is never used
[INFO] [stdout]    --> src/handler/upload.rs:147:14
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub async fn view_uploads(
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_zip_and_replace_user_dir` is never used
[INFO] [stdout]    --> src/handler/upload.rs:183:4
[INFO] [stdout]     |
[INFO] [stdout] 183 | fn extract_zip_and_replace_user_dir(zip_path: &PathBuf, username: &str, extract_dir_name: &str) -> Result<(), String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_user_dir` is never used
[INFO] [stdout]    --> src/handler/upload.rs:242:4
[INFO] [stdout]     |
[INFO] [stdout] 242 | fn find_user_dir(extract_dir: &str) -> Result<std::path::PathBuf, String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `copy_dir_recursively` is never used
[INFO] [stdout]    --> src/handler/upload.rs:270:4
[INFO] [stdout]     |
[INFO] [stdout] 270 | fn copy_dir_recursively(src: &str, dst: &std::path::Path) -> std::io::Result<()> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `view_results` is never used
[INFO] [stdout]   --> src/handler/test_results.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub async fn view_results(
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `view_result_detail` is never used
[INFO] [stdout]   --> src/handler/test_results.rs:40:14
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub async fn view_result_detail(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Session` is never constructed
[INFO] [stdout]   --> src/models.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct Session {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `test_queue` is never read
[INFO] [stdout]   --> src/models.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct AppState {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 32 |     pub db_pool: Arc<MySqlPool>,
[INFO] [stdout] 33 |     pub test_queue: Arc<TestQueue>, // 新增
[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 `UserCreateForm` is never constructed
[INFO] [stdout]   --> src/models.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct UserCreateForm {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserUpdateForm` is never constructed
[INFO] [stdout]   --> src/models.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub struct UserUpdateForm {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UploadRecord` is never constructed
[INFO] [stdout]   --> src/models.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct UploadRecord {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TestResult` is never constructed
[INFO] [stdout]   --> src/models.rs:80:12
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub struct TestResult {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `user_id` is never read
[INFO] [stdout]   --> src/models.rs:95:9
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub struct TestTask {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 94 |     pub id: i32,
[INFO] [stdout] 95 |     pub user_id: i32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TestTask` 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 `UPLOADS_TABLE_PATH` is never used
[INFO] [stdout]   --> src/templates.rs:27:7
[INFO] [stdout]    |
[INFO] [stdout] 27 | const UPLOADS_TABLE_PATH: &str = "templates/uploads_table.html"; // 新增
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TEST_RESULTS_LIST_TABLE_PATH` is never used
[INFO] [stdout]   --> src/templates.rs:29:7
[INFO] [stdout]    |
[INFO] [stdout] 29 | const TEST_RESULTS_LIST_TABLE_PATH: &str = "templates/test_results_list_table.html"; // 新增
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `admin_panel_template` is never used
[INFO] [stdout]    --> src/templates.rs:153:8
[INFO] [stdout]     |
[INFO] [stdout] 153 | pub fn admin_panel_template(users: &[User], error_message: Option<&str>, success_message: Option<&str>) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_users_html` is never used
[INFO] [stdout]    --> src/templates.rs:194:4
[INFO] [stdout]     |
[INFO] [stdout] 194 | fn build_users_html(users: &[User]) -> Result<String, std::io::Error> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `uploads_template` is never used
[INFO] [stdout]    --> src/templates.rs:221:8
[INFO] [stdout]     |
[INFO] [stdout] 221 | pub fn uploads_template(user: &User, uploads: &[UploadRecord]) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `upload_page_template` is never used
[INFO] [stdout]    --> src/templates.rs:391:8
[INFO] [stdout]     |
[INFO] [stdout] 391 | pub fn upload_page_template() -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_results_list_template` is never used
[INFO] [stdout]    --> src/templates.rs:400:8
[INFO] [stdout]     |
[INFO] [stdout] 400 | pub fn test_results_list_template(results_content_html: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_test_results_content_html` is never used
[INFO] [stdout]    --> src/templates.rs:410:8
[INFO] [stdout]     |
[INFO] [stdout] 410 | pub fn build_test_results_content_html(results: &[TestResult]) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_results_detail_template` is never used
[INFO] [stdout]    --> src/templates.rs:459:8
[INFO] [stdout]     |
[INFO] [stdout] 459 | pub fn test_results_detail_template(result: &TestResult) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_message_template` is never used
[INFO] [stdout]    --> src/templates.rs:499:4
[INFO] [stdout]     |
[INFO] [stdout] 499 | fn render_message_template(message_class: &str, message_text: &str) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `add_task` is never used
[INFO] [stdout]   --> src/tester.rs:25:18
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl TestQueue {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub async fn add_task(&self, task: TestTask) {
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 13s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: num-bigint-dig v0.8.4
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 3`
[INFO] running `Command { std: "docker" "inspect" "748713c0654693a8e5c19daf656a28aed6a1d5d2a18bc4d3c2f07ef142a7bd96", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "748713c0654693a8e5c19daf656a28aed6a1d5d2a18bc4d3c2f07ef142a7bd96", kill_on_drop: false }`
[INFO] [stdout] 748713c0654693a8e5c19daf656a28aed6a1d5d2a18bc4d3c2f07ef142a7bd96
