[INFO] cloning repository https://github.com/KilluaSSR/KilluaBot
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/KilluaSSR/KilluaBot" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKilluaSSR%2FKilluaBot", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKilluaSSR%2FKilluaBot'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 52ff550ef734f34c49afb1ca9d7ad011076afb9d
[INFO] testing KilluaSSR/KilluaBot/52ff550ef734f34c49afb1ca9d7ad011076afb9d against master#0d162b25edd5bf0dba9a22e83b614f1113e90474 for pr-150681
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKilluaSSR%2FKilluaBot" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/KilluaSSR/KilluaBot
[INFO] finished tweaking git repo https://github.com/KilluaSSR/KilluaBot
[INFO] tweaked toml for git repo https://github.com/KilluaSSR/KilluaBot written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/KilluaSSR/KilluaBot on toolchain 0d162b25edd5bf0dba9a22e83b614f1113e90474
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0d162b25edd5bf0dba9a22e83b614f1113e90474" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/KilluaSSR/KilluaBot 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" "+0d162b25edd5bf0dba9a22e83b614f1113e90474" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded ar_archive_writer v0.2.0
[INFO] [stderr]   Downloaded serde_with_macros v3.15.1
[INFO] [stderr]   Downloaded teloxide-macros v0.10.0
[INFO] [stderr]   Downloaded psm v0.1.28
[INFO] [stderr]   Downloaded is-terminal v0.4.17
[INFO] [stderr]   Downloaded stacker v0.1.22
[INFO] [stderr]   Downloaded erasable v1.3.0
[INFO] [stderr]   Downloaded rc-box v1.3.0
[INFO] [stderr]   Downloaded colored v3.0.0
[INFO] [stderr]   Downloaded dptree v0.5.1
[INFO] [stderr]   Downloaded cc v1.2.44
[INFO] [stderr]   Downloaded teloxide v0.17.0
[INFO] [stderr]   Downloaded serde_with v3.15.1
[INFO] [stderr]   Downloaded teloxide-core v0.13.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+0d162b25edd5bf0dba9a22e83b614f1113e90474" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 5299f58814f3f680d064be11a3cba224bdcb5a669409a3298c48db08de8b4080
[INFO] running `Command { std: "docker" "start" "-a" "5299f58814f3f680d064be11a3cba224bdcb5a669409a3298c48db08de8b4080", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5299f58814f3f680d064be11a3cba224bdcb5a669409a3298c48db08de8b4080", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5299f58814f3f680d064be11a3cba224bdcb5a669409a3298c48db08de8b4080", kill_on_drop: false }`
[INFO] [stdout] 5299f58814f3f680d064be11a3cba224bdcb5a669409a3298c48db08de8b4080
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+0d162b25edd5bf0dba9a22e83b614f1113e90474" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] b9e6a82e87b97f986e44d5dc982b2df5d6cc7bdb38171f221aa942169524846c
[INFO] running `Command { std: "docker" "start" "-a" "b9e6a82e87b97f986e44d5dc982b2df5d6cc7bdb38171f221aa942169524846c", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.177
[INFO] [stderr]    Compiling quote v1.0.41
[INFO] [stderr]    Compiling generic-array v0.14.9
[INFO] [stderr]    Compiling cc v1.2.44
[INFO] [stderr]    Compiling tracing-core v0.1.34
[INFO] [stderr]    Compiling indexmap v2.12.0
[INFO] [stderr]    Compiling bitflags v2.10.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling foldhash v0.1.5
[INFO] [stderr]    Compiling crc-catalog v2.4.0
[INFO] [stderr]    Compiling concurrent-queue v2.5.0
[INFO] [stderr]    Compiling openssl v0.10.74
[INFO] [stderr]    Compiling tinyvec v1.10.0
[INFO] [stderr]    Compiling crossbeam-queue v0.3.12
[INFO] [stderr]    Compiling object v0.32.2
[INFO] [stderr]    Compiling futures-sink v0.3.31
[INFO] [stderr]    Compiling hashbrown v0.15.5
[INFO] [stderr]    Compiling crc v3.3.0
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling unicode-properties v0.1.4
[INFO] [stderr]    Compiling syn v2.0.108
[INFO] [stderr]    Compiling event-listener v5.4.1
[INFO] [stderr]    Compiling log v0.4.28
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling erasable v1.3.0
[INFO] [stderr]    Compiling byteorder v1.5.0
[INFO] [stderr]    Compiling whoami v1.6.1
[INFO] [stderr]    Compiling dotenvy v0.15.7
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling unicode-normalization v0.1.25
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling home v0.5.12
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling crypto-common v0.1.6
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling futures-channel v0.3.31
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling regex-syntax v0.8.8
[INFO] [stderr]    Compiling unicode-xid v0.2.6
[INFO] [stderr]    Compiling hashlink v0.10.0
[INFO] [stderr]    Compiling iri-string v0.7.8
[INFO] [stderr]    Compiling stringprep v0.1.5
[INFO] [stderr]    Compiling include_dir_macros v0.7.4
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling atoi v2.0.0
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling proc-macro-error-attr2 v2.0.0
[INFO] [stderr]    Compiling rgb v0.8.52
[INFO] [stderr]    Compiling socket2 v0.6.1
[INFO] [stderr]    Compiling mio v1.1.0
[INFO] [stderr]    Compiling signal-hook-registry v1.4.6
[INFO] [stderr]    Compiling getrandom v0.2.16
[INFO] [stderr]    Compiling hkdf v0.12.4
[INFO] [stderr]    Compiling md-5 v0.10.6
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling include_dir v0.7.4
[INFO] [stderr]    Compiling uuid v1.18.1
[INFO] [stderr]    Compiling proc-macro-error2 v2.0.1
[INFO] [stderr]    Compiling is-terminal v0.4.17
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling chrono v0.4.42
[INFO] [stderr]    Compiling rc-box v1.3.0
[INFO] [stderr]    Compiling humantime v2.3.0
[INFO] [stderr]    Compiling takecell v0.1.1
[INFO] [stderr]    Compiling colored v3.0.0
[INFO] [stderr]    Compiling tokio v1.48.0
[INFO] [stderr]    Compiling take_mut v0.2.2
[INFO] [stderr]    Compiling toml_write v0.1.2
[INFO] [stderr]    Compiling inventory v0.3.21
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling openssl-sys v0.9.110
[INFO] [stderr]    Compiling stacker v0.1.22
[INFO] [stderr]    Compiling regex-automata v0.4.13
[INFO] [stderr]    Compiling regex v1.12.2
[INFO] [stderr]    Compiling ar_archive_writer v0.2.0
[INFO] [stderr]    Compiling psm v0.1.28
[INFO] [stderr]    Compiling env_logger v0.10.2
[INFO] [stderr]    Compiling pretty_env_logger v0.5.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling darling_core v0.21.3
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tracing-attributes v0.1.30
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling derive_more-impl v1.0.0
[INFO] [stderr]    Compiling pin-project-internal v1.1.10
[INFO] [stderr]    Compiling teloxide-macros v0.10.0
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling tokio-stream v0.1.17
[INFO] [stderr]    Compiling pin-project v1.1.10
[INFO] [stderr]    Compiling thiserror v2.0.17
[INFO] [stderr]    Compiling tracing v0.1.41
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling darling_macro v0.21.3
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling derive_more v1.0.0
[INFO] [stderr]    Compiling darling v0.21.3
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling serde_with_macros v3.15.1
[INFO] [stderr]    Compiling serde_with v3.15.1
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling itertools v0.10.5
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling icu_properties v2.1.1
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling futures-executor v0.3.31
[INFO] [stderr]    Compiling futures v0.3.31
[INFO] [stderr]    Compiling futures-intrusive v0.5.0
[INFO] [stderr]    Compiling dptree v0.5.1
[INFO] [stderr]    Compiling tokio-util v0.7.16
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling tower v0.5.2
[INFO] [stderr]    Compiling aquamarine v0.6.0
[INFO] [stderr]    Compiling h2 v0.4.12
[INFO] [stderr]    Compiling tower-http v0.6.6
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.7
[INFO] [stderr]    Compiling sqlx-core v0.8.6
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling sqlx-postgres v0.8.6
[INFO] [stderr]    Compiling hyper v1.7.0
[INFO] [stderr]    Compiling hyper-util v0.1.17
[INFO] [stderr]    Compiling hyper-tls v0.6.0
[INFO] [stderr]    Compiling reqwest v0.12.24
[INFO] [stderr]    Compiling sqlx-macros-core v0.8.6
[INFO] [stderr]    Compiling sqlx-macros v0.8.6
[INFO] [stderr]    Compiling teloxide-core v0.13.0
[INFO] [stderr]    Compiling sqlx v0.8.6
[INFO] [stderr]    Compiling teloxide v0.17.0
[INFO] [stderr]    Compiling KilluaBot v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: method `name` is never used
[INFO] [stdout]   --> src/core/traits.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub trait ModelProvider: Send + Sync {
[INFO] [stdout]    |           ------------- method in this trait
[INFO] [stdout] 11 |     /// Get the provider name
[INFO] [stdout] 12 |     fn name(&self) -> &str;
[INFO] [stdout]    |        ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_conversation`, `delete_conversation`, and `clear_messages` are never used
[INFO] [stdout]   --> src/core/traits.rs:35:14
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub trait ConversationStorage: Send + Sync {
[INFO] [stdout]    |           ------------------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 35 |     async fn get_conversation(&self, id: ConversationId) -> Result<ConversationInfo>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     async fn delete_conversation(&self, id: ConversationId) -> Result<()>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     async fn clear_messages(&self, conversation_id: ConversationId) -> Result<()>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Image` and `Video` are never constructed
[INFO] [stdout]   --> src/core/types.rs:96:5
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub enum ResponseChunk {
[INFO] [stdout]    |          ------------- variants in this enum
[INFO] [stdout] 95 |     Text(String),
[INFO] [stdout] 96 |     Image { data: Vec<u8>, mime_type: String },
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 97 |     Video { data: Vec<u8>, mime_type: String },
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ResponseChunk` 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: variant `NotFound` is never constructed
[INFO] [stdout]   --> src/core/error.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum BotError {
[INFO] [stdout]    |          -------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 27 |     NotFound(String),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BotError` 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 `GET_WITH_COUNT` is never used
[INFO] [stdout]   --> src/storage/queries.rs:12:15
[INFO] [stdout]    |
[INFO] [stdout] 12 |     pub const GET_WITH_COUNT: &str = r#"
[INFO] [stdout]    |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DELETE` is never used
[INFO] [stdout]   --> src/storage/queries.rs:29:15
[INFO] [stdout]    |
[INFO] [stdout] 29 |     pub const DELETE: &str = "DELETE FROM conversations WHERE id = $1";
[INFO] [stdout]    |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UPDATE_TIMESTAMP` is never used
[INFO] [stdout]   --> src/storage/queries.rs:31:15
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub const UPDATE_TIMESTAMP: &str = r#"
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DELETE_BY_CONVERSATION` is never used
[INFO] [stdout]   --> src/storage/queries.rs:53:15
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pub const DELETE_BY_CONVERSATION: &str = r#"
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `COUNT_BY_CONVERSATION` is never used
[INFO] [stdout]   --> src/storage/queries.rs:57:15
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub const COUNT_BY_CONVERSATION: &str = r#"
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DELETE_BY_MESSAGE` is never used
[INFO] [stdout]   --> src/storage/queries.rs:86:15
[INFO] [stdout]    |
[INFO] [stdout] 86 |     pub const DELETE_BY_MESSAGE: &str = r#"
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DELETE` is never used
[INFO] [stdout]    --> src/storage/queries.rs:104:15
[INFO] [stdout]     |
[INFO] [stdout] 104 |     pub const DELETE: &str = r#"
[INFO] [stdout]     |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LIST_BY_USER` is never used
[INFO] [stdout]    --> src/storage/queries.rs:109:15
[INFO] [stdout]     |
[INFO] [stdout] 109 |     pub const LIST_BY_USER: &str = r#"
[INFO] [stdout]     |               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LONG_QUERIES` is never used
[INFO] [stdout]    --> src/storage/queries.rs:122:15
[INFO] [stdout]     |
[INFO] [stdout] 122 |     pub const LONG_QUERIES: &str = r#"
[INFO] [stdout]     |               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LOCKS` is never used
[INFO] [stdout]    --> src/storage/queries.rs:127:15
[INFO] [stdout]     |
[INFO] [stdout] 127 |     pub const LOCKS: &str = r#"
[INFO] [stdout]     |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CONNECTION_COUNT` is never used
[INFO] [stdout]    --> src/storage/queries.rs:132:15
[INFO] [stdout]     |
[INFO] [stdout] 132 |     pub const CONNECTION_COUNT: &str = r#"
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TABLE_SIZES` is never used
[INFO] [stdout]    --> src/storage/queries.rs:137:15
[INFO] [stdout]     |
[INFO] [stdout] 137 |     pub const TABLE_SIZES: &str = r#"
[INFO] [stdout]     |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SET_ISOLATION_REPEATABLE_READ` is never used
[INFO] [stdout]    --> src/storage/queries.rs:153:15
[INFO] [stdout]     |
[INFO] [stdout] 153 |     pub const SET_ISOLATION_REPEATABLE_READ: &str = 
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SET_ISOLATION_SERIALIZABLE` is never used
[INFO] [stdout]    --> src/storage/queries.rs:156:15
[INFO] [stdout]     |
[INFO] [stdout] 156 |     pub const SET_ISOLATION_SERIALIZABLE: &str = 
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STREAM_CHUNK_TIMEOUT_SECS` is never used
[INFO] [stdout]   --> src/providers/gemini/provider.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const STREAM_CHUNK_TIMEOUT_SECS: u64 = 30; // Max wait time between chunks
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `has_provider` is never used
[INFO] [stdout]   --> src/providers/registry.rs:81:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl ProviderRegistry {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 81 |     pub fn has_provider(&self, provider_name: &str) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_provider_keyboard` is never used
[INFO] [stdout]   --> src/bot/ui/keyboards.rs:30:8
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub fn build_provider_keyboard(provider_name: &str, display_name: &str, has_key: bool) -> Vec<InlineKeyboardButton> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NO_PROVIDERS` is never used
[INFO] [stdout]   --> src/bot/ui/messages.rs:75:15
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub const NO_PROVIDERS: &str = "❌ 没有可用的模型提供商。";
[INFO] [stdout]    |               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EMPTY_RESPONSE` is never used
[INFO] [stdout]   --> src/bot/ui/messages.rs:78:15
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub const EMPTY_RESPONSE: &str = "❌ 收到空响应。";
[INFO] [stdout]    |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `THINKING` is never used
[INFO] [stdout]   --> src/bot/ui/messages.rs:84:15
[INFO] [stdout]    |
[INFO] [stdout] 84 |     pub const THINKING: &str = "💭 正在思考...";
[INFO] [stdout]    |               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 09s
[INFO] running `Command { std: "docker" "inspect" "b9e6a82e87b97f986e44d5dc982b2df5d6cc7bdb38171f221aa942169524846c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b9e6a82e87b97f986e44d5dc982b2df5d6cc7bdb38171f221aa942169524846c", kill_on_drop: false }`
[INFO] [stdout] b9e6a82e87b97f986e44d5dc982b2df5d6cc7bdb38171f221aa942169524846c
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+0d162b25edd5bf0dba9a22e83b614f1113e90474" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] d2669fe0e43ba229067fd22e73176092be46bc4ff8ed8f60ede3b1219d5e25da
[INFO] running `Command { std: "docker" "start" "-a" "d2669fe0e43ba229067fd22e73176092be46bc4ff8ed8f60ede3b1219d5e25da", kill_on_drop: false }`
[INFO] [stderr]    Compiling KilluaBot v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: method `name` is never used
[INFO] [stdout]   --> src/core/traits.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub trait ModelProvider: Send + Sync {
[INFO] [stdout]    |           ------------- method in this trait
[INFO] [stdout] 11 |     /// Get the provider name
[INFO] [stdout] 12 |     fn name(&self) -> &str;
[INFO] [stdout]    |        ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_conversation`, `delete_conversation`, and `clear_messages` are never used
[INFO] [stdout]   --> src/core/traits.rs:35:14
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub trait ConversationStorage: Send + Sync {
[INFO] [stdout]    |           ------------------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 35 |     async fn get_conversation(&self, id: ConversationId) -> Result<ConversationInfo>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     async fn delete_conversation(&self, id: ConversationId) -> Result<()>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     async fn clear_messages(&self, conversation_id: ConversationId) -> Result<()>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Image` and `Video` are never constructed
[INFO] [stdout]   --> src/core/types.rs:96:5
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub enum ResponseChunk {
[INFO] [stdout]    |          ------------- variants in this enum
[INFO] [stdout] 95 |     Text(String),
[INFO] [stdout] 96 |     Image { data: Vec<u8>, mime_type: String },
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 97 |     Video { data: Vec<u8>, mime_type: String },
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ResponseChunk` 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: variant `NotFound` is never constructed
[INFO] [stdout]   --> src/core/error.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum BotError {
[INFO] [stdout]    |          -------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 27 |     NotFound(String),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BotError` 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 `DELETE` is never used
[INFO] [stdout]   --> src/storage/queries.rs:29:15
[INFO] [stdout]    |
[INFO] [stdout] 29 |     pub const DELETE: &str = "DELETE FROM conversations WHERE id = $1";
[INFO] [stdout]    |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UPDATE_TIMESTAMP` is never used
[INFO] [stdout]   --> src/storage/queries.rs:31:15
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub const UPDATE_TIMESTAMP: &str = r#"
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DELETE_BY_CONVERSATION` is never used
[INFO] [stdout]   --> src/storage/queries.rs:53:15
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pub const DELETE_BY_CONVERSATION: &str = r#"
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `COUNT_BY_CONVERSATION` is never used
[INFO] [stdout]   --> src/storage/queries.rs:57:15
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub const COUNT_BY_CONVERSATION: &str = r#"
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DELETE_BY_MESSAGE` is never used
[INFO] [stdout]   --> src/storage/queries.rs:86:15
[INFO] [stdout]    |
[INFO] [stdout] 86 |     pub const DELETE_BY_MESSAGE: &str = r#"
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DELETE` is never used
[INFO] [stdout]    --> src/storage/queries.rs:104:15
[INFO] [stdout]     |
[INFO] [stdout] 104 |     pub const DELETE: &str = r#"
[INFO] [stdout]     |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LIST_BY_USER` is never used
[INFO] [stdout]    --> src/storage/queries.rs:109:15
[INFO] [stdout]     |
[INFO] [stdout] 109 |     pub const LIST_BY_USER: &str = r#"
[INFO] [stdout]     |               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LONG_QUERIES` is never used
[INFO] [stdout]    --> src/storage/queries.rs:122:15
[INFO] [stdout]     |
[INFO] [stdout] 122 |     pub const LONG_QUERIES: &str = r#"
[INFO] [stdout]     |               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LOCKS` is never used
[INFO] [stdout]    --> src/storage/queries.rs:127:15
[INFO] [stdout]     |
[INFO] [stdout] 127 |     pub const LOCKS: &str = r#"
[INFO] [stdout]     |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CONNECTION_COUNT` is never used
[INFO] [stdout]    --> src/storage/queries.rs:132:15
[INFO] [stdout]     |
[INFO] [stdout] 132 |     pub const CONNECTION_COUNT: &str = r#"
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TABLE_SIZES` is never used
[INFO] [stdout]    --> src/storage/queries.rs:137:15
[INFO] [stdout]     |
[INFO] [stdout] 137 |     pub const TABLE_SIZES: &str = r#"
[INFO] [stdout]     |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SET_ISOLATION_REPEATABLE_READ` is never used
[INFO] [stdout]    --> src/storage/queries.rs:153:15
[INFO] [stdout]     |
[INFO] [stdout] 153 |     pub const SET_ISOLATION_REPEATABLE_READ: &str = 
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SET_ISOLATION_SERIALIZABLE` is never used
[INFO] [stdout]    --> src/storage/queries.rs:156:15
[INFO] [stdout]     |
[INFO] [stdout] 156 |     pub const SET_ISOLATION_SERIALIZABLE: &str = 
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STREAM_CHUNK_TIMEOUT_SECS` is never used
[INFO] [stdout]   --> src/providers/gemini/provider.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const STREAM_CHUNK_TIMEOUT_SECS: u64 = 30; // Max wait time between chunks
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `has_provider` is never used
[INFO] [stdout]   --> src/providers/registry.rs:81:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl ProviderRegistry {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 81 |     pub fn has_provider(&self, provider_name: &str) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_provider_keyboard` is never used
[INFO] [stdout]   --> src/bot/ui/keyboards.rs:30:8
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub fn build_provider_keyboard(provider_name: &str, display_name: &str, has_key: bool) -> Vec<InlineKeyboardButton> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NO_PROVIDERS` is never used
[INFO] [stdout]   --> src/bot/ui/messages.rs:75:15
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub const NO_PROVIDERS: &str = "❌ 没有可用的模型提供商。";
[INFO] [stdout]    |               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EMPTY_RESPONSE` is never used
[INFO] [stdout]   --> src/bot/ui/messages.rs:78:15
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub const EMPTY_RESPONSE: &str = "❌ 收到空响应。";
[INFO] [stdout]    |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `THINKING` is never used
[INFO] [stdout]   --> src/bot/ui/messages.rs:84:15
[INFO] [stdout]    |
[INFO] [stdout] 84 |     pub const THINKING: &str = "💭 正在思考...";
[INFO] [stdout]    |               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 10.10s
[INFO] running `Command { std: "docker" "inspect" "d2669fe0e43ba229067fd22e73176092be46bc4ff8ed8f60ede3b1219d5e25da", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d2669fe0e43ba229067fd22e73176092be46bc4ff8ed8f60ede3b1219d5e25da", kill_on_drop: false }`
[INFO] [stdout] d2669fe0e43ba229067fd22e73176092be46bc4ff8ed8f60ede3b1219d5e25da
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+0d162b25edd5bf0dba9a22e83b614f1113e90474" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 925b7d0870a85fef5c7caf35312e8fd55fe6b1b9435a0c7bf842cd43668e1b0b
[INFO] running `Command { std: "docker" "start" "-a" "925b7d0870a85fef5c7caf35312e8fd55fe6b1b9435a0c7bf842cd43668e1b0b", kill_on_drop: false }`
[INFO] [stderr] warning: method `name` is never used
[INFO] [stderr]   --> src/core/traits.rs:12:8
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub trait ModelProvider: Send + Sync {
[INFO] [stderr]    |           ------------- method in this trait
[INFO] [stderr] 11 |     /// Get the provider name
[INFO] [stderr] 12 |     fn name(&self) -> &str;
[INFO] [stderr]    |        ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: methods `get_conversation`, `delete_conversation`, and `clear_messages` are never used
[INFO] [stderr]   --> src/core/traits.rs:35:14
[INFO] [stderr]    |
[INFO] [stderr] 30 | pub trait ConversationStorage: Send + Sync {
[INFO] [stderr]    |           ------------------- methods in this trait
[INFO] [stderr] ...
[INFO] [stderr] 35 |     async fn get_conversation(&self, id: ConversationId) -> Result<ConversationInfo>;
[INFO] [stderr]    |              ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 41 |     async fn delete_conversation(&self, id: ConversationId) -> Result<()>;
[INFO] [stderr]    |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 51 |     async fn clear_messages(&self, conversation_id: ConversationId) -> Result<()>;
[INFO] [stderr]    |              ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variants `Image` and `Video` are never constructed
[INFO] [stderr]   --> src/core/types.rs:96:5
[INFO] [stderr]    |
[INFO] [stderr] 94 | pub enum ResponseChunk {
[INFO] [stderr]    |          ------------- variants in this enum
[INFO] [stderr] 95 |     Text(String),
[INFO] [stderr] 96 |     Image { data: Vec<u8>, mime_type: String },
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr] 97 |     Video { data: Vec<u8>, mime_type: String },
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ResponseChunk` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: variant `NotFound` is never constructed
[INFO] [stderr]   --> src/core/error.rs:27:5
[INFO] [stderr]    |
[INFO] [stderr]  4 | pub enum BotError {
[INFO] [stderr]    |          -------- variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 27 |     NotFound(String),
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `BotError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: constant `DELETE` is never used
[INFO] [stderr]   --> src/storage/queries.rs:29:15
[INFO] [stderr]    |
[INFO] [stderr] 29 |     pub const DELETE: &str = "DELETE FROM conversations WHERE id = $1";
[INFO] [stderr]    |               ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `UPDATE_TIMESTAMP` is never used
[INFO] [stderr]   --> src/storage/queries.rs:31:15
[INFO] [stderr]    |
[INFO] [stderr] 31 |     pub const UPDATE_TIMESTAMP: &str = r#"
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `DELETE_BY_CONVERSATION` is never used
[INFO] [stderr]   --> src/storage/queries.rs:53:15
[INFO] [stderr]    |
[INFO] [stderr] 53 |     pub const DELETE_BY_CONVERSATION: &str = r#"
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `COUNT_BY_CONVERSATION` is never used
[INFO] [stderr]   --> src/storage/queries.rs:57:15
[INFO] [stderr]    |
[INFO] [stderr] 57 |     pub const COUNT_BY_CONVERSATION: &str = r#"
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `DELETE_BY_MESSAGE` is never used
[INFO] [stderr]   --> src/storage/queries.rs:86:15
[INFO] [stderr]    |
[INFO] [stderr] 86 |     pub const DELETE_BY_MESSAGE: &str = r#"
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `DELETE` is never used
[INFO] [stderr]    --> src/storage/queries.rs:104:15
[INFO] [stderr]     |
[INFO] [stderr] 104 |     pub const DELETE: &str = r#"
[INFO] [stderr]     |               ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `LIST_BY_USER` is never used
[INFO] [stderr]    --> src/storage/queries.rs:109:15
[INFO] [stderr]     |
[INFO] [stderr] 109 |     pub const LIST_BY_USER: &str = r#"
[INFO] [stderr]     |               ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `LONG_QUERIES` is never used
[INFO] [stderr]    --> src/storage/queries.rs:122:15
[INFO] [stderr]     |
[INFO] [stderr] 122 |     pub const LONG_QUERIES: &str = r#"
[INFO] [stderr]     |               ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `LOCKS` is never used
[INFO] [stderr]    --> src/storage/queries.rs:127:15
[INFO] [stderr]     |
[INFO] [stderr] 127 |     pub const LOCKS: &str = r#"
[INFO] [stderr]     |               ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `CONNECTION_COUNT` is never used
[INFO] [stderr]    --> src/storage/queries.rs:132:15
[INFO] [stderr]     |
[INFO] [stderr] 132 |     pub const CONNECTION_COUNT: &str = r#"
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `TABLE_SIZES` is never used
[INFO] [stderr]    --> src/storage/queries.rs:137:15
[INFO] [stderr]     |
[INFO] [stderr] 137 |     pub const TABLE_SIZES: &str = r#"
[INFO] [stderr]     |               ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SET_ISOLATION_REPEATABLE_READ` is never used
[INFO] [stderr]    --> src/storage/queries.rs:153:15
[INFO] [stderr]     |
[INFO] [stderr] 153 |     pub const SET_ISOLATION_REPEATABLE_READ: &str = 
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SET_ISOLATION_SERIALIZABLE` is never used
[INFO] [stderr]    --> src/storage/queries.rs:156:15
[INFO] [stderr]     |
[INFO] [stderr] 156 |     pub const SET_ISOLATION_SERIALIZABLE: &str = 
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `STREAM_CHUNK_TIMEOUT_SECS` is never used
[INFO] [stderr]   --> src/providers/gemini/provider.rs:10:7
[INFO] [stderr]    |
[INFO] [stderr] 10 | const STREAM_CHUNK_TIMEOUT_SECS: u64 = 30; // Max wait time between chunks
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `has_provider` is never used
[INFO] [stderr]   --> src/providers/registry.rs:81:12
[INFO] [stderr]    |
[INFO] [stderr] 24 | impl ProviderRegistry {
[INFO] [stderr]    | --------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 81 |     pub fn has_provider(&self, provider_name: &str) -> bool {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `build_provider_keyboard` is never used
[INFO] [stderr]   --> src/bot/ui/keyboards.rs:30:8
[INFO] [stderr]    |
[INFO] [stderr] 30 | pub fn build_provider_keyboard(provider_name: &str, display_name: &str, has_key: bool) -> Vec<InlineKeyboardButton> {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `NO_PROVIDERS` is never used
[INFO] [stderr]   --> src/bot/ui/messages.rs:75:15
[INFO] [stderr]    |
[INFO] [stderr] 75 |     pub const NO_PROVIDERS: &str = "❌ 没有可用的模型提供商。";
[INFO] [stderr]    |               ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `EMPTY_RESPONSE` is never used
[INFO] [stderr]   --> src/bot/ui/messages.rs:78:15
[INFO] [stderr]    |
[INFO] [stderr] 78 |     pub const EMPTY_RESPONSE: &str = "❌ 收到空响应。";
[INFO] [stderr]    |               ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `THINKING` is never used
[INFO] [stderr]   --> src/bot/ui/messages.rs:84:15
[INFO] [stderr]    |
[INFO] [stderr] 84 |     pub const THINKING: &str = "💭 正在思考...";
[INFO] [stderr]    |               ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `KilluaBot` (bin "KilluaBot" test) generated 23 warnings
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.32s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/KilluaBot-3fcbee6c18cc461b)
[INFO] [stdout] 
[INFO] [stdout] running 2 tests
[INFO] [stdout] test storage::queries::tests::test_queries_are_valid_sql ... ok
[INFO] [stdout] test storage::queries::tests::test_queries_use_parameters ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "925b7d0870a85fef5c7caf35312e8fd55fe6b1b9435a0c7bf842cd43668e1b0b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "925b7d0870a85fef5c7caf35312e8fd55fe6b1b9435a0c7bf842cd43668e1b0b", kill_on_drop: false }`
[INFO] [stdout] 925b7d0870a85fef5c7caf35312e8fd55fe6b1b9435a0c7bf842cd43668e1b0b
