[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] checking KilluaSSR/KilluaBot against master#59fd4ef94daa991e6797b5aa6127e824f3067def for pr-145108-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKilluaSSR%2FKilluaBot" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/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-6-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/KilluaSSR/KilluaBot on toolchain 59fd4ef94daa991e6797b5aa6127e824f3067def
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+59fd4ef94daa991e6797b5aa6127e824f3067def" "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" "+59fd4ef94daa991e6797b5aa6127e824f3067def" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+59fd4ef94daa991e6797b5aa6127e824f3067def" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] bd87dd99e633894d8fa411de1da20c8caf950cf2820d1c54d415eb96a6cef24d
[INFO] running `Command { std: "docker" "start" "-a" "bd87dd99e633894d8fa411de1da20c8caf950cf2820d1c54d415eb96a6cef24d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "bd87dd99e633894d8fa411de1da20c8caf950cf2820d1c54d415eb96a6cef24d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "bd87dd99e633894d8fa411de1da20c8caf950cf2820d1c54d415eb96a6cef24d", kill_on_drop: false }`
[INFO] [stdout] bd87dd99e633894d8fa411de1da20c8caf950cf2820d1c54d415eb96a6cef24d
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+59fd4ef94daa991e6797b5aa6127e824f3067def" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 7d2bf32a55bac80bb90e3c6bd6577a645536db6bcdf986809f1c150df954e6a7
[INFO] running `Command { std: "docker" "start" "-a" "7d2bf32a55bac80bb90e3c6bd6577a645536db6bcdf986809f1c150df954e6a7", kill_on_drop: false }`
[INFO] [stderr]    Compiling find-msvc-tools v0.1.4
[INFO] [stderr]    Compiling stable_deref_trait v1.2.1
[INFO] [stderr]    Compiling quote v1.0.41
[INFO] [stderr]     Checking mio v1.1.0
[INFO] [stderr]    Compiling writeable v0.6.2
[INFO] [stderr]    Compiling litemap v0.8.1
[INFO] [stderr]     Checking bitflags v2.10.0
[INFO] [stderr]    Compiling icu_normalizer_data v2.1.1
[INFO] [stderr]    Compiling icu_properties_data v2.1.1
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]     Checking crypto-common v0.1.6
[INFO] [stderr]    Compiling openssl v0.10.74
[INFO] [stderr]    Compiling getrandom v0.2.16
[INFO] [stderr]    Compiling object v0.32.2
[INFO] [stderr]    Compiling indexmap v2.12.0
[INFO] [stderr]    Compiling cc v1.2.44
[INFO] [stderr]    Compiling syn v2.0.108
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling unicode-normalization v0.1.25
[INFO] [stderr]    Compiling erasable v1.3.0
[INFO] [stderr]    Compiling unicode-properties v0.1.4
[INFO] [stderr]    Compiling md-5 v0.10.6
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling home v0.5.12
[INFO] [stderr]    Compiling tokio v1.48.0
[INFO] [stderr]    Compiling hkdf v0.12.4
[INFO] [stderr]     Checking rustls-pki-types v1.13.0
[INFO] [stderr]    Compiling stringprep v0.1.5
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling include_dir_macros v0.7.4
[INFO] [stderr]    Compiling proc-macro-error-attr2 v2.0.0
[INFO] [stderr]     Checking bytemuck v1.24.0
[INFO] [stderr]     Checking chrono v0.4.42
[INFO] [stderr]     Checking uuid v1.18.1
[INFO] [stderr]     Checking rc-box v1.3.0
[INFO] [stderr]    Compiling include_dir v0.7.4
[INFO] [stderr]     Checking is-terminal v0.4.17
[INFO] [stderr]     Checking rgb v0.8.52
[INFO] [stderr]     Checking takecell v0.1.1
[INFO] [stderr]     Checking take_mut v0.2.2
[INFO] [stderr]     Checking winnow v0.7.13
[INFO] [stderr]     Checking humantime v2.3.0
[INFO] [stderr]    Compiling proc-macro-error2 v2.0.1
[INFO] [stderr]     Checking colored v3.0.0
[INFO] [stderr]     Checking inventory v0.3.21
[INFO] [stderr]     Checking env_logger v0.10.2
[INFO] [stderr]    Compiling openssl-sys v0.9.110
[INFO] [stderr]    Compiling stacker v0.1.22
[INFO] [stderr]     Checking pretty_env_logger v0.5.0
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]    Compiling ar_archive_writer v0.2.0
[INFO] [stderr]    Compiling tokio-stream v0.1.17
[INFO] [stderr]    Compiling psm v0.1.28
[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 zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.30
[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 thiserror v2.0.17
[INFO] [stderr]     Checking pin-project v1.1.10
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]    Compiling darling_macro v0.21.3
[INFO] [stderr]     Checking derive_more v1.0.0
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling darling v0.21.3
[INFO] [stderr]    Compiling serde_with_macros v3.15.1
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking serde_with v3.15.1
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling itertools v0.10.5
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]     Checking futures-intrusive v0.5.0
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]     Checking icu_properties v2.1.1
[INFO] [stderr]     Checking tokio-util v0.7.16
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking tower v0.5.2
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]    Compiling aquamarine v0.6.0
[INFO] [stderr]     Checking dptree v0.5.1
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking url v2.5.7
[INFO] [stderr]     Checking h2 v0.4.12
[INFO] [stderr]     Checking tower-http v0.6.6
[INFO] [stderr]     Checking sqlx-core v0.8.6
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking sqlx-postgres v0.8.6
[INFO] [stderr]     Checking hyper v1.7.0
[INFO] [stderr]     Checking hyper-util v0.1.17
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking reqwest v0.12.24
[INFO] [stderr]     Checking teloxide-core v0.13.0
[INFO] [stderr]    Compiling sqlx-macros-core v0.8.6
[INFO] [stderr]    Compiling sqlx-macros v0.8.6
[INFO] [stderr]     Checking sqlx v0.8.6
[INFO] [stderr]     Checking teloxide v0.17.0
[INFO] [stderr]     Checking 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] [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 1m 20s
[INFO] running `Command { std: "docker" "inspect" "7d2bf32a55bac80bb90e3c6bd6577a645536db6bcdf986809f1c150df954e6a7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7d2bf32a55bac80bb90e3c6bd6577a645536db6bcdf986809f1c150df954e6a7", kill_on_drop: false }`
[INFO] [stdout] 7d2bf32a55bac80bb90e3c6bd6577a645536db6bcdf986809f1c150df954e6a7
