[INFO] cloning repository https://github.com/mmahdi-sz/rostam
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/mmahdi-sz/rostam" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmmahdi-sz%2Frostam", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmmahdi-sz%2Frostam'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] cbdec352d7305f14c247fb19a55fe55849569070
[INFO] checking mmahdi-sz/rostam against try#d8be25549d5418405531341b4be6d8538fc3c42e for pr-156160-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmmahdi-sz%2Frostam" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/mmahdi-sz/rostam
[INFO] finished tweaking git repo https://github.com/mmahdi-sz/rostam
[INFO] tweaked toml for git repo https://github.com/mmahdi-sz/rostam written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/mmahdi-sz/rostam on toolchain d8be25549d5418405531341b4be6d8538fc3c42e
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+d8be25549d5418405531341b4be6d8538fc3c42e" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/mmahdi-sz/rostam 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" "+d8be25549d5418405531341b4be6d8538fc3c42e" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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:fd22e2154e7db748230f413534f3a6d034160c9d2b7c14b90fba4e9bfc1a36d4" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 65b7d9537b216c19ba360c95cdd9e0bc1259a57bb2f287975eea47b2659cb432
[INFO] running `Command { std: "docker" "start" "65b7d9537b216c19ba360c95cdd9e0bc1259a57bb2f287975eea47b2659cb432", 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" "65b7d9537b216c19ba360c95cdd9e0bc1259a57bb2f287975eea47b2659cb432" "/opt/rustwide/cargo-home/bin/cargo" "+d8be25549d5418405531341b4be6d8538fc3c42e" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "65b7d9537b216c19ba360c95cdd9e0bc1259a57bb2f287975eea47b2659cb432", 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" "65b7d9537b216c19ba360c95cdd9e0bc1259a57bb2f287975eea47b2659cb432" "/opt/rustwide/cargo-home/bin/cargo" "+d8be25549d5418405531341b4be6d8538fc3c42e" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling shlex v2.0.1
[INFO] [stderr]     Checking memchr v2.8.1
[INFO] [stderr]    Compiling zerocopy v0.8.50
[INFO] [stderr]    Compiling fs_extra v1.3.0
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling dunce v1.0.5
[INFO] [stderr]     Checking mio v1.2.1
[INFO] [stderr]     Checking socket2 v0.6.4
[INFO] [stderr]    Compiling aws-lc-rs v1.17.0
[INFO] [stderr]     Checking typenum v1.20.1
[INFO] [stderr]     Checking http v1.4.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling displaydoc v0.2.6
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]     Checking siphasher v1.0.3
[INFO] [stderr]    Compiling rustls v0.23.40
[INFO] [stderr]    Compiling autocfg v1.5.1
[INFO] [stderr]     Checking cmov v0.5.4
[INFO] [stderr]     Checking log v0.4.30
[INFO] [stderr]     Checking ctutils v0.4.2
[INFO] [stderr]     Checking const-oid v0.10.2
[INFO] [stderr]    Compiling phf_shared v0.11.3
[INFO] [stderr]     Checking rand_core v0.10.1
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking chacha20 v0.10.0
[INFO] [stderr]     Checking getrandom v0.4.2
[INFO] [stderr]     Checking tokio v1.52.3
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking unicode-normalization v0.1.25
[INFO] [stderr]     Checking webpki-roots v1.0.7
[INFO] [stderr]     Checking unicode-bidi v0.3.18
[INFO] [stderr]     Checking unicase v2.9.0
[INFO] [stderr]     Checking bitflags v2.11.1
[INFO] [stderr]     Checking unicode-properties v0.1.4
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]     Checking rand v0.10.1
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]     Checking rustls-native-certs v0.8.3
[INFO] [stderr]     Checking fallible-iterator v0.2.0
[INFO] [stderr]    Compiling bon-macros v3.9.1
[INFO] [stderr]     Checking stringprep v0.1.5
[INFO] [stderr]    Compiling serde_with_macros v3.20.0
[INFO] [stderr]     Checking phf_shared v0.12.1
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]     Checking hybrid-array v0.4.12
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]     Checking zerofrom v0.1.8
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking phf_shared v0.13.1
[INFO] [stderr]     Checking yoke v0.8.2
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]     Checking inotify-sys v0.1.5
[INFO] [stderr]    Compiling chrono-tz v0.10.4
[INFO] [stderr]     Checking zerovec v0.11.6
[INFO] [stderr]     Checking zerotrie v0.2.4
[INFO] [stderr]     Checking either v1.16.0
[INFO] [stderr]    Compiling cc v1.2.63
[INFO] [stderr]    Compiling macro_rules_attribute-proc_macro v0.2.2
[INFO] [stderr]     Checking chrono v0.4.44
[INFO] [stderr]     Checking itertools v0.13.0
[INFO] [stderr]     Checking phf v0.13.1
[INFO] [stderr]     Checking inotify v0.9.6
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]     Checking phf v0.11.3
[INFO] [stderr]     Checking phf v0.12.1
[INFO] [stderr]     Checking block-buffer v0.12.0
[INFO] [stderr]     Checking crypto-common v0.2.2
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking arc-swap v1.9.1
[INFO] [stderr]     Checking mio v0.8.11
[INFO] [stderr]     Checking macro_rules_attribute v0.2.2
[INFO] [stderr]     Checking filetime v0.2.29
[INFO] [stderr]     Checking serde_with v3.20.0
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]     Checking whoami v2.1.2
[INFO] [stderr]     Checking tinystr v0.8.3
[INFO] [stderr]     Checking potential_utf v0.1.5
[INFO] [stderr]     Checking vosk-sys v0.2.0
[INFO] [stderr]     Checking icu_locale_core v2.2.0
[INFO] [stderr]    Compiling ros-telegram-bot v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Checking icu_collections v2.2.0
[INFO] [stderr]     Checking vosk v0.3.1
[INFO] [stderr]     Checking notify v6.1.1
[INFO] [stderr]     Checking hound v3.5.1
[INFO] [stderr]     Checking futures-executor v0.3.32
[INFO] [stderr]    Compiling cmake v0.1.58
[INFO] [stderr]     Checking futures v0.3.32
[INFO] [stderr]     Checking digest v0.11.3
[INFO] [stderr]     Checking sha2 v0.11.0
[INFO] [stderr]     Checking hmac v0.13.0
[INFO] [stderr]     Checking md-5 v0.11.0
[INFO] [stderr]    Compiling aws-lc-sys v0.41.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]     Checking icu_provider v2.2.0
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]     Checking icu_properties v2.2.0
[INFO] [stderr]     Checking postgres-protocol v0.6.11
[INFO] [stderr]     Checking postgres-types v0.2.13
[INFO] [stderr]     Checking idna_adapter v1.2.2
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking bon v3.9.1
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]     Checking hyper v1.10.1
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]     Checking tower-http v0.6.11
[INFO] [stderr]    Compiling rand v0.8.6
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking combine v4.6.7
[INFO] [stderr]     Checking tokio-postgres v0.7.17
[INFO] [stderr]    Compiling phf_generator v0.11.3
[INFO] [stderr]    Compiling phf_codegen v0.11.3
[INFO] [stderr]    Compiling unicode_names2_generator v2.0.0
[INFO] [stderr]    Compiling unicode_names2 v2.0.0
[INFO] [stderr]     Checking redis v0.27.6
[INFO] [stderr]     Checking rustls-webpki v0.103.13
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking rustls-platform-verifier v0.7.0
[INFO] [stderr]     Checking hyper-rustls v0.27.9
[INFO] [stderr]     Checking reqwest v0.13.4
[INFO] [stderr]     Checking reqwest v0.12.28
[INFO] [stderr]     Checking frankenstein v0.50.0
[INFO] [stdout] warning: unused import: `config::CB_STT_CANCEL`
[INFO] [stdout]   --> src/app/dispatch.rs:21:18
[INFO] [stdout]    |
[INFO] [stdout] 21 | use crate::stt::{config::CB_STT_CANCEL, handle::{enter_stt_config, handle_stt_audio, handle_stt_callback}};
[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 macro definition: `answer_and_get_msg`
[INFO] [stdout]    --> src/app/dispatch.rs:277:18
[INFO] [stdout]     |
[INFO] [stdout] 277 |     macro_rules! answer_and_get_msg {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_macros)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `config::CB_STT_CANCEL`
[INFO] [stdout]   --> src/app/dispatch.rs:21:18
[INFO] [stdout]    |
[INFO] [stdout] 21 | use crate::stt::{config::CB_STT_CANCEL, handle::{enter_stt_config, handle_stt_audio, handle_stt_callback}};
[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 macro definition: `answer_and_get_msg`
[INFO] [stdout]    --> src/app/dispatch.rs:277:18
[INFO] [stdout]     |
[INFO] [stdout] 277 |     macro_rules! answer_and_get_msg {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_macros)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `InlineKeyboardButton`
[INFO] [stdout]    --> src/asr/handle.rs:382:31
[INFO] [stdout]     |
[INFO] [stdout] 382 |     use frankenstein::types::{InlineKeyboardButton, InlineKeyboardMarkup};
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `btn_success`
[INFO] [stdout]   --> src/bot.rs:12:72
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::emoji::panel::{btn_icon, btn_icon_danger, btn_icon_success, btn_success};
[INFO] [stdout]    |                                                                        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CookiePoolStatus` and `SelectedCookie`
[INFO] [stdout]   --> src/cookie_pool/mod.rs:10:46
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use types::{CookieSource, CooldownEntry, SelectedCookie, CookiePoolStatus, CookiePoolSnapshot};
[INFO] [stdout]    |                                              ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `InlineKeyboardButton`
[INFO] [stdout]    --> src/asr/handle.rs:382:31
[INFO] [stdout]     |
[INFO] [stdout] 382 |     use frankenstein::types::{InlineKeyboardButton, InlineKeyboardMarkup};
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `btn_success`
[INFO] [stdout]   --> src/bot.rs:12:72
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::emoji::panel::{btn_icon, btn_icon_danger, btn_icon_success, btn_success};
[INFO] [stdout]    |                                                                        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CookiePoolStatus` and `SelectedCookie`
[INFO] [stdout]   --> src/cookie_pool/mod.rs:10:46
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use types::{CookieSource, CooldownEntry, SelectedCookie, CookiePoolStatus, CookiePoolSnapshot};
[INFO] [stdout]    |                                              ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `format_cookie_status`, `format_duration`, and `format_selected_cookie`
[INFO] [stdout]   --> src/cookie_pool/mod.rs:12:18
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use format::{format_cookie_status, format_selected_cookie, format_no_cookie_available, format_duration};
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^                              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EmojiEntry`
[INFO] [stdout]  --> src/emoji/cache/mod.rs:9:29
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use types::{EmojiCache, EmojiEntry};
[INFO] [stdout]   |                             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ReplyKeyboardRemove`
[INFO] [stdout]   --> src/emoji/handler/callback.rs:14:22
[INFO] [stdout]    |
[INFO] [stdout] 14 |         ReplyMarkup, ReplyKeyboardRemove,
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `entities_for_text`
[INFO] [stdout]   --> src/emoji/handler/callback.rs:20:19
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::i18n::{entities_for_text, t, tf};
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `format_cookie_status`, `format_duration`, and `format_selected_cookie`
[INFO] [stdout]   --> src/cookie_pool/mod.rs:12:18
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use format::{format_cookie_status, format_selected_cookie, format_no_cookie_available, format_duration};
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^                              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EmojiEntry`
[INFO] [stdout]  --> src/emoji/cache/mod.rs:9:29
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use types::{EmojiCache, EmojiEntry};
[INFO] [stdout]   |                             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ReplyKeyboardRemove`
[INFO] [stdout]   --> src/emoji/handler/callback.rs:14:22
[INFO] [stdout]    |
[INFO] [stdout] 14 |         ReplyMarkup, ReplyKeyboardRemove,
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `entities_for_text`
[INFO] [stdout]   --> src/emoji/handler/callback.rs:20:19
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::i18n::{entities_for_text, t, tf};
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tf`
[INFO] [stdout]  --> src/emoji/handler/flow_emojis.rs:8:22
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::i18n::{t, tf};
[INFO] [stdout]   |                      ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tf`
[INFO] [stdout]  --> src/emoji/handler/flow_emojis.rs:8:22
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::i18n::{t, tf};
[INFO] [stdout]   |                      ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `send_with_ents`
[INFO] [stdout]   --> src/emoji/handler/flow_emojis.rs:14:62
[INFO] [stdout]    |
[INFO] [stdout] 14 |     helpers::{filter_duplicates, send_all_duplicate_message, send_with_ents},
[INFO] [stdout]    |                                                              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tf`
[INFO] [stdout]  --> src/emoji/handler/flow_import.rs:8:22
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::i18n::{t, tf};
[INFO] [stdout]   |                      ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `send_with_ents`
[INFO] [stdout]   --> src/emoji/handler/flow_emojis.rs:14:62
[INFO] [stdout]    |
[INFO] [stdout] 14 |     helpers::{filter_duplicates, send_all_duplicate_message, send_with_ents},
[INFO] [stdout]    |                                                              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::i18n::t`
[INFO] [stdout]  --> src/emoji/handler/list.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::i18n::t;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `send_with_ents`
[INFO] [stdout]   --> src/emoji/handler/pack_ops.rs:11:34
[INFO] [stdout]    |
[INFO] [stdout] 11 | use super::helpers::{edit_panel, send_with_ents};
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tf`
[INFO] [stdout]  --> src/emoji/handler/flow_import.rs:8:22
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::i18n::{t, tf};
[INFO] [stdout]   |                      ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ImportResult`, `ParsedItem`, `ParsedPack`, and `ParsedSql`
[INFO] [stdout]  --> src/emoji/import/mod.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub use types::{ParsedPack, ParsedItem, ParsedSql, ImportAnalysis, ImportResult};
[INFO] [stdout]   |                 ^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `btn_danger`
[INFO] [stdout]  --> src/emoji/panel/keyboards.rs:8:50
[INFO] [stdout]   |
[INFO] [stdout] 8 | use super::buttons::{btn, btn_icon, btn_success, btn_danger};
[INFO] [stdout]   |                                                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `btn_danger`
[INFO] [stdout]  --> src/emoji/panel/mod.rs:7:63
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use buttons::{btn, btn_icon, btn_icon_plain, btn_success, btn_danger, btn_icon_success, btn_icon_danger};
[INFO] [stdout]   |                                                               ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::i18n::t`
[INFO] [stdout]  --> src/emoji/handler/list.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::i18n::t;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `send_with_ents`
[INFO] [stdout]   --> src/emoji/handler/pack_ops.rs:11:34
[INFO] [stdout]    |
[INFO] [stdout] 11 | use super::helpers::{edit_panel, send_with_ents};
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `remove_reply_keyboard`
[INFO] [stdout]   --> src/emoji/panel/mod.rs:11:52
[INFO] [stdout]    |
[INFO] [stdout] 11 |     cancel_reply_keyboard, import_choice_keyboard, remove_reply_keyboard,
[INFO] [stdout]    |                                                    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `render_pack_list_entry`
[INFO] [stdout]   --> src/emoji/panel/mod.rs:15:45
[INFO] [stdout]    |
[INFO] [stdout] 15 |     format_pending_emojis, build_list_page, render_pack_list_entry,
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ImportResult`, `ParsedItem`, `ParsedPack`, and `ParsedSql`
[INFO] [stdout]  --> src/emoji/import/mod.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub use types::{ParsedPack, ParsedItem, ParsedSql, ImportAnalysis, ImportResult};
[INFO] [stdout]   |                 ^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_default_pack`
[INFO] [stdout]  --> src/emoji/store/mod.rs:5:60
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use pack::{create_pack, find_pack_by_name, list_packs, get_default_pack, set_default_pack, set_pack_alias, delete_pack};
[INFO] [stdout]   |                                                            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `render_template`
[INFO] [stdout]  --> src/emoji/store/mod.rs:7:35
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use export::{export_user_sql, render_template};
[INFO] [stdout]   |                                   ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EmojiItem` and `EmojiPack`
[INFO] [stdout]   --> src/emoji/mod.rs:10:17
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use store::{EmojiItem, EmojiPack};
[INFO] [stdout]    |                 ^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `emoji_map::EMOJI_MAP`
[INFO] [stdout]  --> src/i18n/mod.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub use emoji_map::EMOJI_MAP;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AnswerCallbackQueryParams` and `ParseMode`
[INFO] [stdout]   --> src/separation/handle.rs:7:23
[INFO] [stdout]    |
[INFO] [stdout]  7 |     AsyncTelegramApi, ParseMode,
[INFO] [stdout]    |                       ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 10 |         AnswerCallbackQueryParams, DeleteMessageParams, EditMessageTextParams,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::youtube::log_trace`
[INFO] [stdout]   --> src/separation/handle.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use crate::youtube::log_trace;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error::SeparationError`
[INFO] [stdout]  --> src/separation/mod.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub use error::SeparationError;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SeparationMode` and `SeparationResult`
[INFO] [stdout]  --> src/separation/mod.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use types::{SeparationMode, SeparationResult};
[INFO] [stdout]   |                 ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `btn_danger`
[INFO] [stdout]  --> src/emoji/panel/keyboards.rs:8:50
[INFO] [stdout]   |
[INFO] [stdout] 8 | use super::buttons::{btn, btn_icon, btn_success, btn_danger};
[INFO] [stdout]   |                                                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `btn_danger`
[INFO] [stdout]  --> src/emoji/panel/mod.rs:7:63
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use buttons::{btn, btn_icon, btn_icon_plain, btn_success, btn_danger, btn_icon_success, btn_icon_danger};
[INFO] [stdout]   |                                                               ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `remove_reply_keyboard`
[INFO] [stdout]   --> src/emoji/panel/mod.rs:11:52
[INFO] [stdout]    |
[INFO] [stdout] 11 |     cancel_reply_keyboard, import_choice_keyboard, remove_reply_keyboard,
[INFO] [stdout]    |                                                    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `render_pack_list_entry`
[INFO] [stdout]   --> src/emoji/panel/mod.rs:15:45
[INFO] [stdout]    |
[INFO] [stdout] 15 |     format_pending_emojis, build_list_page, render_pack_list_entry,
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_default_pack`
[INFO] [stdout]  --> src/emoji/store/mod.rs:5:60
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use pack::{create_pack, find_pack_by_name, list_packs, get_default_pack, set_default_pack, set_pack_alias, delete_pack};
[INFO] [stdout]   |                                                            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `render_template`
[INFO] [stdout]  --> src/emoji/store/mod.rs:7:35
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use export::{export_user_sql, render_template};
[INFO] [stdout]   |                                   ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EmojiItem` and `EmojiPack`
[INFO] [stdout]   --> src/emoji/mod.rs:10:17
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use store::{EmojiItem, EmojiPack};
[INFO] [stdout]    |                 ^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `emoji_map::EMOJI_MAP`
[INFO] [stdout]  --> src/i18n/mod.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub use emoji_map::EMOJI_MAP;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AnswerCallbackQueryParams` and `ParseMode`
[INFO] [stdout]   --> src/separation/handle.rs:7:23
[INFO] [stdout]    |
[INFO] [stdout]  7 |     AsyncTelegramApi, ParseMode,
[INFO] [stdout]    |                       ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 10 |         AnswerCallbackQueryParams, DeleteMessageParams, EditMessageTextParams,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::youtube::log_trace`
[INFO] [stdout]   --> src/separation/handle.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use crate::youtube::log_trace;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error::SeparationError`
[INFO] [stdout]  --> src/separation/mod.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub use error::SeparationError;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SeparationMode` and `SeparationResult`
[INFO] [stdout]  --> src/separation/mod.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use types::{SeparationMode, SeparationResult};
[INFO] [stdout]   |                 ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `client::separate_audio`
[INFO] [stdout]  --> src/separation/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use client::separate_audio;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CB_AI_SEP`
[INFO] [stdout]   --> src/separation/mod.rs:11:20
[INFO] [stdout]    |
[INFO] [stdout] 11 |     CB_SEP_PREFIX, CB_AI_SEP,
[INFO] [stdout]    |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ActionCount`, `ActiveUsers`, `DownloadStats`, `ErrorRow`, `Periods`, and `UserStats`
[INFO] [stdout]  --> src/stats/mod.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     UserStats, DownloadStats, get_user_stats, get_download_stats, fmt_bytes,
[INFO] [stdout]   |     ^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 4 |     Periods, FeatureStats, get_feature_stats, ActiveUsers, get_active_users, fmt_secs,
[INFO] [stdout]   |     ^^^^^^^                                   ^^^^^^^^^^^
[INFO] [stdout] 5 |     ActionCount, get_action_breakdown, ErrorRow, get_recent_errors, count_recent_errors,
[INFO] [stdout]   |     ^^^^^^^^^^^                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `btn_icon`
[INFO] [stdout]   --> src/upscale/handle.rs:17:27
[INFO] [stdout]    |
[INFO] [stdout] 17 | use crate::emoji::panel::{btn_icon, btn_icon_plain, btn_icon_success, btn_icon_danger};
[INFO] [stdout]    |                           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::youtube::log_trace`
[INFO] [stdout]   --> src/upscale/handle.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::youtube::log_trace;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `client::separate_audio`
[INFO] [stdout]  --> src/separation/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use client::separate_audio;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CB_AI_SEP`
[INFO] [stdout]   --> src/separation/mod.rs:11:20
[INFO] [stdout]    |
[INFO] [stdout] 11 |     CB_SEP_PREFIX, CB_AI_SEP,
[INFO] [stdout]    |                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ActionCount`, `ActiveUsers`, `DownloadStats`, `ErrorRow`, `Periods`, and `UserStats`
[INFO] [stdout]  --> src/stats/mod.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     UserStats, DownloadStats, get_user_stats, get_download_stats, fmt_bytes,
[INFO] [stdout]   |     ^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 4 |     Periods, FeatureStats, get_feature_stats, ActiveUsers, get_active_users, fmt_secs,
[INFO] [stdout]   |     ^^^^^^^                                   ^^^^^^^^^^^
[INFO] [stdout] 5 |     ActionCount, get_action_breakdown, ErrorRow, get_recent_errors, count_recent_errors,
[INFO] [stdout]   |     ^^^^^^^^^^^                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]  --> src/youtube/download/split.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::path::PathBuf;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `pick_default_audio` and `pick_default_codec`
[INFO] [stdout]   --> src/youtube/download/mod.rs:14:64
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use selection_helpers::{codecs_for_height, init_selection, pick_default_audio, pick_default_codec, with_selection};
[INFO] [stdout]    |                                                                ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `take_request`
[INFO] [stdout]   --> src/youtube/download/mod.rs:15:45
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use store::{get_request, store_request, take_request};
[INFO] [stdout]    |                                             ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `t`
[INFO] [stdout]  --> src/youtube/selection/handlers.rs:4:38
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::i18n::{entities_for_text, t, tf};
[INFO] [stdout]   |                                      ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::rank`
[INFO] [stdout]   --> src/youtube/handle.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::rank;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `FetchError` and `VideoInfo`
[INFO] [stdout]   --> src/youtube/mod.rs:13:17
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use types::{VideoInfo, FetchError};
[INFO] [stdout]    |                 ^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `fetch::fetch_video_info`
[INFO] [stdout]   --> src/youtube/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use fetch::fetch_video_info;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `build_caption`, `build_description_blockquotes`, `format_count`, `format_duration`, and `format_upload_date`
[INFO] [stdout]   --> src/youtube/mod.rs:17:25
[INFO] [stdout]    |
[INFO] [stdout] 17 |     escape_markdown_v2, format_duration, format_count,
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 18 |     format_upload_date, build_caption, build_description_blockquotes,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `jalali::gregorian_to_jalali`
[INFO] [stdout]   --> src/youtube/mod.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub use jalali::gregorian_to_jalali;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `btn_icon`
[INFO] [stdout]   --> src/upscale/handle.rs:17:27
[INFO] [stdout]    |
[INFO] [stdout] 17 | use crate::emoji::panel::{btn_icon, btn_icon_plain, btn_icon_success, btn_icon_danger};
[INFO] [stdout]    |                           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::youtube::log_trace`
[INFO] [stdout]   --> src/upscale/handle.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::youtube::log_trace;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]  --> src/youtube/download/split.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::path::PathBuf;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `pick_default_audio` and `pick_default_codec`
[INFO] [stdout]   --> src/youtube/download/mod.rs:14:64
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use selection_helpers::{codecs_for_height, init_selection, pick_default_audio, pick_default_codec, with_selection};
[INFO] [stdout]    |                                                                ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `take_request`
[INFO] [stdout]   --> src/youtube/download/mod.rs:15:45
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use store::{get_request, store_request, take_request};
[INFO] [stdout]    |                                             ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `t`
[INFO] [stdout]  --> src/youtube/selection/handlers.rs:4:38
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::i18n::{entities_for_text, t, tf};
[INFO] [stdout]   |                                      ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::rank`
[INFO] [stdout]   --> src/youtube/handle.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::rank;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `FetchError` and `VideoInfo`
[INFO] [stdout]   --> src/youtube/mod.rs:13:17
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use types::{VideoInfo, FetchError};
[INFO] [stdout]    |                 ^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `fetch::fetch_video_info`
[INFO] [stdout]   --> src/youtube/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use fetch::fetch_video_info;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `build_caption`, `build_description_blockquotes`, `format_count`, `format_duration`, and `format_upload_date`
[INFO] [stdout]   --> src/youtube/mod.rs:17:25
[INFO] [stdout]    |
[INFO] [stdout] 17 |     escape_markdown_v2, format_duration, format_count,
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 18 |     format_upload_date, build_caption, build_description_blockquotes,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `jalali::gregorian_to_jalali`
[INFO] [stdout]   --> src/youtube/mod.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub use jalali::gregorian_to_jalali;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/modules/cookie_refresher.rs:171:9
[INFO] [stdout]     |
[INFO] [stdout] 171 |     let mut child = Command::new("sudo")
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/modules/cookie_refresher.rs:171:9
[INFO] [stdout]     |
[INFO] [stdout] 171 |     let mut child = Command::new("sudo")
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `flow_clear_tx`
[INFO] [stdout]   --> src/app/dispatch.rs:66:77
[INFO] [stdout]    |
[INFO] [stdout] 66 |     let AppState { api, cookie_pool, database, flow_manager, rate_limit_tx, flow_clear_tx } = state;
[INFO] [stdout]    |                                                                             ^^^^^^^^^^^^^ help: try ignoring the field: `flow_clear_tx: _`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `r`
[INFO] [stdout]   --> src/emoji/handler/callback.rs:67:17
[INFO] [stdout]    |
[INFO] [stdout] 67 |             let r = send_with_ents(api, chat_id, t("emoji.add_prompt"),
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_r`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `flow_clear_tx`
[INFO] [stdout]   --> src/app/dispatch.rs:66:77
[INFO] [stdout]    |
[INFO] [stdout] 66 |     let AppState { api, cookie_pool, database, flow_manager, rate_limit_tx, flow_clear_tx } = state;
[INFO] [stdout]    |                                                                             ^^^^^^^^^^^^^ help: try ignoring the field: `flow_clear_tx: _`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `flow_manager`
[INFO] [stdout]    --> src/upscale/handle.rs:263:5
[INFO] [stdout]     |
[INFO] [stdout] 263 |     flow_manager: &mut FlowManager,
[INFO] [stdout]     |     ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_flow_manager`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `r`
[INFO] [stdout]   --> src/emoji/handler/callback.rs:67:17
[INFO] [stdout]    |
[INFO] [stdout] 67 |             let r = send_with_ents(api, chat_id, t("emoji.add_prompt"),
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_r`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `flow_manager`
[INFO] [stdout]    --> src/upscale/handle.rs:263:5
[INFO] [stdout]     |
[INFO] [stdout] 263 |     flow_manager: &mut FlowManager,
[INFO] [stdout]     |     ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_flow_manager`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `i` is never read
[INFO] [stdout]    --> src/separation/client.rs:208:49
[INFO] [stdout]     |
[INFO] [stdout] 208 |         if i + 3 >= s.len() || s[i+3] == b'=' { i += 4; break; }
[INFO] [stdout]     |                                                 ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `i` is never read
[INFO] [stdout]    --> src/separation/client.rs:204:49
[INFO] [stdout]     |
[INFO] [stdout] 204 |         if i + 2 >= s.len() || s[i+2] == b'=' { i += 4; break; }
[INFO] [stdout]     |                                                 ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `byte_rate`
[INFO] [stdout]   --> src/stt/vosk.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 23 |     let byte_rate = u32::from_le_bytes([header[28], header[29], header[30], header[31]]);
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_byte_rate`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `i` is never read
[INFO] [stdout]    --> src/separation/client.rs:208:49
[INFO] [stdout]     |
[INFO] [stdout] 208 |         if i + 3 >= s.len() || s[i+3] == b'=' { i += 4; break; }
[INFO] [stdout]     |                                                 ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `i` is never read
[INFO] [stdout]    --> src/separation/client.rs:204:49
[INFO] [stdout]     |
[INFO] [stdout] 204 |         if i + 2 >= s.len() || s[i+2] == b'=' { i += 4; break; }
[INFO] [stdout]     |                                                 ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `TrafficDaily`, `TrafficMonthly`, `SttWeekly`, and `AiChatMonthly` are never constructed
[INFO] [stdout]   --> src/rank/quota.rs:6:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub enum QuotaKind {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout]  6 |     TrafficDaily,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]  7 |     TrafficMonthly,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]  8 |     SttWeekly,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 12 |     AiChatMonthly,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `QuotaKind` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `playlist_limit`, `can_subtitle_hardcode`, and `ai_chat_monthly_toomar` are never used
[INFO] [stdout]    --> src/rank/types.rs:131:12
[INFO] [stdout]     |
[INFO] [stdout]  11 | impl Rank {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn playlist_limit(&self) -> Option<u32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn can_subtitle_hardcode(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub fn ai_chat_monthly_toomar(&self) -> Option<u32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `cookies_file` is never read
[INFO] [stdout]   --> src/cookie_pool/types.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct SelectedCookie {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub cookies_file: PathBuf,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SelectedCookie` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `last_used_cookie` is never read
[INFO] [stdout]   --> src/cookie_pool/types.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct CookiePoolStatus {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub last_used_cookie: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CookiePoolStatus` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `cooldown` is never read
[INFO] [stdout]   --> src/cookie_pool/pool.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct CookiePool {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 17 |     cooldown: Duration,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `mark_rate_limited` is never used
[INFO] [stdout]   --> src/cookie_pool/pool.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl CookiePool {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn mark_rate_limited(&mut self, cookie_id: &str) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_cookie_status` is never used
[INFO] [stdout]  --> src/cookie_pool/format.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn format_cookie_status(status: &CookiePoolStatus) -> String {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_selected_cookie` is never used
[INFO] [stdout]   --> src/cookie_pool/format.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn format_selected_cookie(cookie: &SelectedCookie) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `prompt_msg_id` is never read
[INFO] [stdout]   --> src/emoji/flow.rs:33:65
[INFO] [stdout]    |
[INFO] [stdout] 33 |     AwaitingSeparationMode { file_id: String, filename: String, prompt_msg_id: Option<i32>, is_video: bool },
[INFO] [stdout]    |     ---------------------- field in this variant                ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FlowState` 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 `AwaitingRedeemGenArgs` is never constructed
[INFO] [stdout]   --> src/emoji/flow.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum FlowState {
[INFO] [stdout]    |          --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 40 |     AwaitingRedeemGenArgs,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FlowState` 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: field `smart_name` is never read
[INFO] [stdout]   --> src/emoji/import/types.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct ParsedItem {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 14 |     pub smart_name: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ParsedItem` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `btn_danger` is never used
[INFO] [stdout]   --> src/emoji/panel/buttons.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub fn btn_danger(text: &str, callback_data: &str) -> InlineKeyboardButton {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `remove_reply_keyboard` is never used
[INFO] [stdout]    --> src/emoji/panel/keyboards.rs:148:8
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub fn remove_reply_keyboard() -> ReplyKeyboardRemove {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_pack_list_entry` is never used
[INFO] [stdout]   --> src/emoji/panel/format.rs:95:8
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub fn render_pack_list_entry(pack: &EmojiPack, items: &[EmojiItem]) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `owner_user_id` is never read
[INFO] [stdout]   --> src/emoji/store/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct EmojiPack {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] 11 |     pub id: i32,
[INFO] [stdout] 12 |     pub owner_user_id: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EmojiPack` 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: fields `pack_id` and `position` are never read
[INFO] [stdout]   --> src/emoji/store/mod.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct EmojiItem {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 21 |     pub id: i32,
[INFO] [stdout] 22 |     pub pack_id: i32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub position: i32,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EmojiItem` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_default_pack` is never used
[INFO] [stdout]   --> src/emoji/store/pack.rs:41:14
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub async fn get_default_pack(client: &Client, owner: i64) -> Result<Option<EmojiPack>, tokio_postgres::Error> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_template` is never used
[INFO] [stdout]   --> src/emoji/store/export.rs:63:14
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub async fn render_template(client: &Client, owner: i64, template: &str) -> Result<String, tokio_postgres::Error> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `elapsed_secs` is never read
[INFO] [stdout]   --> src/gemini_watermark/remove.rs:86:5
[INFO] [stdout]    |
[INFO] [stdout] 81 | struct GwtRun {
[INFO] [stdout]    |        ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 86 |     elapsed_secs: f64,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GwtRun` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `max_uses` and `used_count` are never read
[INFO] [stdout]   --> src/redeem/store.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct RedeemCodeRow {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 12 |     pub max_uses: i32,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 13 |     pub used_count: i32,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CB_AI_SEP` is never used
[INFO] [stdout]   --> src/separation/handle.rs:34:11
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub const CB_AI_SEP: &str = "ai:sep";
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `byte_rate`
[INFO] [stdout]   --> src/stt/vosk.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 23 |     let byte_rate = u32::from_le_bytes([header[28], header[29], header[30], header[31]]);
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_byte_rate`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/youtube/selection/handlers.rs:358:17
[INFO] [stdout]     |
[INFO] [stdout] 358 |                 crate::bot::send_text(api, message.chat.id, &label).await;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 358 |                 let _ = crate::bot::send_text(api, message.chat.id, &label).await;
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `TrafficDaily`, `TrafficMonthly`, `SttWeekly`, and `AiChatMonthly` are never constructed
[INFO] [stdout]   --> src/rank/quota.rs:6:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub enum QuotaKind {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout]  6 |     TrafficDaily,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]  7 |     TrafficMonthly,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]  8 |     SttWeekly,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 12 |     AiChatMonthly,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `QuotaKind` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `playlist_limit`, `can_subtitle_hardcode`, and `ai_chat_monthly_toomar` are never used
[INFO] [stdout]    --> src/rank/types.rs:131:12
[INFO] [stdout]     |
[INFO] [stdout]  11 | impl Rank {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn playlist_limit(&self) -> Option<u32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn can_subtitle_hardcode(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub fn ai_chat_monthly_toomar(&self) -> Option<u32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `cookies_file` is never read
[INFO] [stdout]   --> src/cookie_pool/types.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct SelectedCookie {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub cookies_file: PathBuf,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SelectedCookie` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `last_used_cookie` is never read
[INFO] [stdout]   --> src/cookie_pool/types.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct CookiePoolStatus {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub last_used_cookie: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CookiePoolStatus` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `cooldown` is never read
[INFO] [stdout]   --> src/cookie_pool/pool.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct CookiePool {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 17 |     cooldown: Duration,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `mark_rate_limited` is never used
[INFO] [stdout]   --> src/cookie_pool/pool.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl CookiePool {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn mark_rate_limited(&mut self, cookie_id: &str) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_cookie_status` is never used
[INFO] [stdout]  --> src/cookie_pool/format.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn format_cookie_status(status: &CookiePoolStatus) -> String {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_selected_cookie` is never used
[INFO] [stdout]   --> src/cookie_pool/format.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn format_selected_cookie(cookie: &SelectedCookie) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `prompt_msg_id` is never read
[INFO] [stdout]   --> src/emoji/flow.rs:33:65
[INFO] [stdout]    |
[INFO] [stdout] 33 |     AwaitingSeparationMode { file_id: String, filename: String, prompt_msg_id: Option<i32>, is_video: bool },
[INFO] [stdout]    |     ---------------------- field in this variant                ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FlowState` 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 `AwaitingRedeemGenArgs` is never constructed
[INFO] [stdout]   --> src/emoji/flow.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum FlowState {
[INFO] [stdout]    |          --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 40 |     AwaitingRedeemGenArgs,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FlowState` 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: field `smart_name` is never read
[INFO] [stdout]   --> src/emoji/import/types.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct ParsedItem {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 14 |     pub smart_name: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ParsedItem` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `btn_danger` is never used
[INFO] [stdout]   --> src/emoji/panel/buttons.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub fn btn_danger(text: &str, callback_data: &str) -> InlineKeyboardButton {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `remove_reply_keyboard` is never used
[INFO] [stdout]    --> src/emoji/panel/keyboards.rs:148:8
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub fn remove_reply_keyboard() -> ReplyKeyboardRemove {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_pack_list_entry` is never used
[INFO] [stdout]   --> src/emoji/panel/format.rs:95:8
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub fn render_pack_list_entry(pack: &EmojiPack, items: &[EmojiItem]) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `owner_user_id` is never read
[INFO] [stdout]   --> src/emoji/store/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct EmojiPack {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] 11 |     pub id: i32,
[INFO] [stdout] 12 |     pub owner_user_id: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EmojiPack` 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: fields `pack_id` and `position` are never read
[INFO] [stdout]   --> src/emoji/store/mod.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct EmojiItem {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 21 |     pub id: i32,
[INFO] [stdout] 22 |     pub pack_id: i32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub position: i32,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EmojiItem` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_default_pack` is never used
[INFO] [stdout]   --> src/emoji/store/pack.rs:41:14
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub async fn get_default_pack(client: &Client, owner: i64) -> Result<Option<EmojiPack>, tokio_postgres::Error> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_template` is never used
[INFO] [stdout]   --> src/emoji/store/export.rs:63:14
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub async fn render_template(client: &Client, owner: i64, template: &str) -> Result<String, tokio_postgres::Error> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `elapsed_secs` is never read
[INFO] [stdout]   --> src/gemini_watermark/remove.rs:86:5
[INFO] [stdout]    |
[INFO] [stdout] 81 | struct GwtRun {
[INFO] [stdout]    |        ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 86 |     elapsed_secs: f64,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GwtRun` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `max_uses` and `used_count` are never read
[INFO] [stdout]   --> src/redeem/store.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct RedeemCodeRow {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 12 |     pub max_uses: i32,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 13 |     pub used_count: i32,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CB_AI_SEP` is never used
[INFO] [stdout]   --> src/separation/handle.rs:34:11
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub const CB_AI_SEP: &str = "ai:sep";
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/youtube/selection/handlers.rs:358:17
[INFO] [stdout]     |
[INFO] [stdout] 358 |                 crate::bot::send_text(api, message.chat.id, &label).await;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 358 |                 let _ = crate::bot::send_text(api, message.chat.id, &label).await;
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 08s
[INFO] running `Command { std: "docker" "inspect" "65b7d9537b216c19ba360c95cdd9e0bc1259a57bb2f287975eea47b2659cb432", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "65b7d9537b216c19ba360c95cdd9e0bc1259a57bb2f287975eea47b2659cb432", kill_on_drop: false }`
[INFO] [stdout] 65b7d9537b216c19ba360c95cdd9e0bc1259a57bb2f287975eea47b2659cb432
