[INFO] cloning repository https://github.com/wenzu404/tui-x
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/wenzu404/tui-x" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwenzu404%2Ftui-x", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwenzu404%2Ftui-x'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] c80a2c0d54b52a2845f5f8ddbd867e3cb34daee6
[INFO] checking wenzu404/tui-x against try#d8be25549d5418405531341b4be6d8538fc3c42e for pr-156160-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwenzu404%2Ftui-x" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/wenzu404/tui-x
[INFO] finished tweaking git repo https://github.com/wenzu404/tui-x
[INFO] tweaked toml for git repo https://github.com/wenzu404/tui-x written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/wenzu404/tui-x 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/wenzu404/tui-x 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-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:fd22e2154e7db748230f413534f3a6d034160c9d2b7c14b90fba4e9bfc1a36d4" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 12117f8254006a6bf910e54b76b9d7711d5135204698d5e3b521d980fc586eca
[INFO] running `Command { std: "docker" "start" "12117f8254006a6bf910e54b76b9d7711d5135204698d5e3b521d980fc586eca", 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" "12117f8254006a6bf910e54b76b9d7711d5135204698d5e3b521d980fc586eca" "/opt/rustwide/cargo-home/bin/cargo" "+d8be25549d5418405531341b4be6d8538fc3c42e" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "12117f8254006a6bf910e54b76b9d7711d5135204698d5e3b521d980fc586eca", 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" "12117f8254006a6bf910e54b76b9d7711d5135204698d5e3b521d980fc586eca" "/opt/rustwide/cargo-home/bin/cargo" "+d8be25549d5418405531341b4be6d8538fc3c42e" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling zeroize_derive v1.4.3
[INFO] [stderr]    Compiling siphasher v1.0.2
[INFO] [stderr]     Checking yoke v0.8.1
[INFO] [stderr]    Compiling zerocopy v0.8.42
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]    Compiling zerocopy-derive v0.8.42
[INFO] [stderr]     Checking mio v1.1.1
[INFO] [stderr]    Compiling equator-macro v0.4.2
[INFO] [stderr]    Compiling phf_shared v0.11.3
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]    Compiling phf_generator v0.11.3
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling phf_codegen v0.11.3
[INFO] [stderr]     Checking ff v0.13.1
[INFO] [stderr]     Checking zeroize v1.8.2
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]     Checking generic-array v0.14.7
[INFO] [stderr]     Checking der v0.7.10
[INFO] [stderr]     Checking equator v0.4.2
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]     Checking aligned-vec v0.6.4
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]     Checking group v0.13.0
[INFO] [stderr]     Checking tokio v1.50.0
[INFO] [stderr]     Checking crypto-common v0.1.7
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking inout v0.1.4
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking spki v0.7.3
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]     Checking cipher v0.4.4
[INFO] [stderr]     Checking universal-hash v0.5.1
[INFO] [stderr]     Checking v_frame v0.3.9
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]     Checking icu_properties v2.1.2
[INFO] [stderr]     Checking rustls-pki-types v1.14.0
[INFO] [stderr]    Compiling phf_macros v0.11.3
[INFO] [stderr]     Checking rayon v1.11.0
[INFO] [stderr]     Checking num-rational v0.4.2
[INFO] [stderr]     Checking as-slice v0.2.1
[INFO] [stderr]    Compiling built v0.8.0
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling av-scenechange v0.14.1
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking aligned v0.4.3
[INFO] [stderr]    Compiling rav1e v0.8.1
[INFO] [stderr]     Checking phf v0.11.3
[INFO] [stderr]     Checking pkcs8 v0.10.2
[INFO] [stderr]    Compiling string_cache_codegen v0.5.4
[INFO] [stderr]    Compiling arg_enum_proc_macro v0.3.4
[INFO] [stderr]    Compiling profiling-procmacros v1.0.17
[INFO] [stderr]     Checking core2 v0.4.0
[INFO] [stderr]     Checking nom v8.0.0
[INFO] [stderr]     Checking y4m v0.8.0
[INFO] [stderr]    Compiling rustls v0.23.37
[INFO] [stderr]     Checking quick-error v2.0.1
[INFO] [stderr]    Compiling pastey v0.1.1
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]     Checking maybe-rayon v0.1.1
[INFO] [stderr]     Checking rustls-webpki v0.103.9
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking sec1 v0.7.3
[INFO] [stderr]    Compiling markup5ever v0.14.1
[INFO] [stderr]     Checking bitstream-io v4.9.0
[INFO] [stderr]     Checking profiling v1.0.17
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking hkdf v0.12.4
[INFO] [stderr]     Checking crypto-bigint v0.5.5
[INFO] [stderr]    Compiling curve25519-dalek v4.1.3
[INFO] [stderr]    Compiling num-derive v0.4.2
[INFO] [stderr]    Compiling fax_derive v0.2.0
[INFO] [stderr]    Compiling simd_helpers v0.1.0
[INFO] [stderr]    Compiling cookie v0.18.1
[INFO] [stderr]     Checking zune-core v0.5.1
[INFO] [stderr]     Checking unicode-width v0.2.0
[INFO] [stderr]    Compiling instability v0.3.12
[INFO] [stderr]     Checking linux-raw-sys v0.4.15
[INFO] [stderr]    Compiling noop_proc_macro v0.3.0
[INFO] [stderr]     Checking weezl v0.1.12
[INFO] [stderr]     Checking imgref v1.12.0
[INFO] [stderr]     Checking dtoa v1.0.11
[INFO] [stderr]     Checking loop9 v0.1.5
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]     Checking dtoa-short v0.3.5
[INFO] [stderr]     Checking hyper v1.8.1
[INFO] [stderr]     Checking time v0.3.47
[INFO] [stderr]     Checking half v2.7.1
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]     Checking elliptic-curve v0.13.8
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]     Checking fax v0.2.6
[INFO] [stderr]     Checking zune-jpeg v0.5.13
[INFO] [stderr]     Checking signal-hook-mio v0.2.5
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]     Checking av1-grain v0.2.5
[INFO] [stderr]     Checking string_cache v0.8.9
[INFO] [stderr]     Checking polyval v0.6.2
[INFO] [stderr]     Checking castaway v0.2.4
[INFO] [stderr]     Checking avif-serialize v0.8.8
[INFO] [stderr]     Checking aead v0.5.2
[INFO] [stderr]    Compiling selectors v0.26.0
[INFO] [stderr]     Checking zune-inflate v0.2.54
[INFO] [stderr]     Checking itertools v0.13.0
[INFO] [stderr]    Compiling cssparser-macros v0.6.1
[INFO] [stderr]     Checking psl-types v2.0.11
[INFO] [stderr]     Checking unicode-segmentation v1.12.0
[INFO] [stderr]     Checking bytemuck v1.25.0
[INFO] [stderr]     Checking color_quant v1.1.0
[INFO] [stderr]     Checking rgb v0.8.53
[INFO] [stderr]     Checking unicode-width v0.1.14
[INFO] [stderr]     Checking lebe v0.5.3
[INFO] [stderr]     Checking bit_field v0.10.3
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking crossterm v0.28.1
[INFO] [stderr]     Checking strum v0.26.3
[INFO] [stderr]     Checking exr v1.74.0
[INFO] [stderr]     Checking gif v0.14.1
[INFO] [stderr]     Checking cssparser v0.34.0
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking image-webp v0.2.4
[INFO] [stderr]     Checking unicode-truncate v1.1.0
[INFO] [stderr]     Checking compact_str v0.8.1
[INFO] [stderr]     Checking qoi v0.4.1
[INFO] [stderr]     Checking publicsuffix v2.3.0
[INFO] [stderr]     Checking moxcms v0.8.1
[INFO] [stderr]     Checking tiff v0.11.3
[INFO] [stderr]     Checking ghash v0.5.1
[INFO] [stderr]     Checking serde_json v1.0.149
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking rand_core v0.9.5
[INFO] [stderr]     Checking lru v0.12.5
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking poly1305 v0.8.0
[INFO] [stderr]     Checking webpki-roots v1.0.6
[INFO] [stderr]     Checking ctr v0.9.2
[INFO] [stderr]     Checking aes v0.8.4
[INFO] [stderr]     Checking chacha20 v0.9.1
[INFO] [stderr]     Checking rfc6979 v0.4.0
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking blake2 v0.10.6
[INFO] [stderr]     Checking signature v2.2.0
[INFO] [stderr]    Compiling snow v0.9.6
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]    Compiling derive_more v0.99.20
[INFO] [stderr]    Compiling match_token v0.1.0
[INFO] [stderr]    Compiling ratatui-image v9.0.0
[INFO] [stderr]     Checking outref v0.5.2
[INFO] [stderr]     Checking cassowary v0.3.0
[INFO] [stderr]     Checking ciborium-io v0.2.2
[INFO] [stderr]     Checking vsimd v0.8.0
[INFO] [stderr]     Checking option-ext v0.2.0
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]     Checking dirs-sys v0.5.0
[INFO] [stderr]     Checking ciborium-ll v0.2.2
[INFO] [stderr]     Checking ratatui v0.29.0
[INFO] [stderr]     Checking html5ever v0.29.1
[INFO] [stderr]     Checking tower-http v0.6.8
[INFO] [stderr]     Checking base64-simd v0.8.0
[INFO] [stderr]     Checking aes-gcm v0.10.3
[INFO] [stderr]     Checking cookie_store v0.22.1
[INFO] [stderr]     Checking ecdsa v0.16.9
[INFO] [stderr]     Checking ravif v0.13.0
[INFO] [stderr]     Checking chacha20poly1305 v0.10.1
[INFO] [stderr]     Checking hyper-rustls v0.27.7
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking primeorder v0.13.6
[INFO] [stderr]     Checking getopts v0.2.24
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking futures-executor v0.3.32
[INFO] [stderr]     Checking password-hash v0.5.0
[INFO] [stderr]     Checking icy_sixel v0.1.3
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]     Checking scraper v0.22.0
[INFO] [stderr]     Checking argon2 v0.5.3
[INFO] [stderr]     Checking image v0.25.10
[INFO] [stderr]     Checking chrono v0.4.44
[INFO] [stderr]     Checking reqwest v0.12.28
[INFO] [stderr]     Checking futures v0.3.32
[INFO] [stderr]     Checking p256 v0.13.2
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]     Checking ciborium v0.2.2
[INFO] [stderr]     Checking dirs v6.0.0
[INFO] [stderr]     Checking x25519-dalek v2.0.1
[INFO] [stderr]     Checking tui-x v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `Context` and `Result`
[INFO] [stdout]  --> src/api/xchat.rs:3:14
[INFO] [stdout]   |
[INFO] [stdout] 3 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^  ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `KeyModifiers`
[INFO] [stdout]  --> src/app.rs:2:33
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crossterm::event::{KeyCode, KeyModifiers};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Context` and `Result`
[INFO] [stdout]  --> src/api/xchat.rs:3:14
[INFO] [stdout]   |
[INFO] [stdout] 3 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^  ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `KeyModifiers`
[INFO] [stdout]  --> src/app.rs:2:33
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crossterm::event::{KeyCode, KeyModifiers};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/app.rs:185:13
[INFO] [stdout]     |
[INFO] [stdout] 185 |         let mut app = App {
[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/app.rs:185:13
[INFO] [stdout]     |
[INFO] [stdout] 185 |         let mut app = App {
[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 `uuid` is assigned to, but never used
[INFO] [stdout]    --> src/api/xchat.rs:166:9
[INFO] [stdout]     |
[INFO] [stdout] 166 |     let mut uuid = String::new();
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_uuid` instead
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `uuid` is never read
[INFO] [stdout]    --> src/api/xchat.rs:188:37
[INFO] [stdout]     |
[INFO] [stdout] 188 |             (THRIFT_STRING, 2) => { uuid = reader.read_string()?; }
[INFO] [stdout]     |                                     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/api/xchat.rs:299:9
[INFO] [stdout]     |
[INFO] [stdout] 299 |     let mut depth = 0;
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start_pos`
[INFO] [stdout]    --> src/api/xchat.rs:298:9
[INFO] [stdout]     |
[INFO] [stdout] 298 |     let start_pos = reader.pos;
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_start_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `depth`
[INFO] [stdout]    --> src/api/xchat.rs:299:9
[INFO] [stdout]     |
[INFO] [stdout] 299 |     let mut depth = 0;
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_depth`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tweet_count`
[INFO] [stdout]    --> src/app.rs:992:19
[INFO] [stdout]     |
[INFO] [stdout] 992 |         let (tab, tweet_count, selected, cursor_bottom) = {
[INFO] [stdout]     |                   ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tweet_count`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `selected`
[INFO] [stdout]    --> src/app.rs:992:32
[INFO] [stdout]     |
[INFO] [stdout] 992 |         let (tab, tweet_count, selected, cursor_bottom) = {
[INFO] [stdout]     |                                ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_selected`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `total_before_replies`
[INFO] [stdout]   --> src/tui/views/tweet_detail.rs:29:13
[INFO] [stdout]    |
[INFO] [stdout] 29 |         let total_before_replies = self.parents.len() + 1; // parents + main
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_total_before_replies`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `API_V2_BASE` is never used
[INFO] [stdout]   --> src/api/client.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const API_V2_BASE: &str = "https://x.com/i/api/2";
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `encrypted_secret_commitment` is never read
[INFO] [stdout]    --> src/api/juicebox.rs:803:5
[INFO] [stdout]     |
[INFO] [stdout] 800 | struct Recover3Result {
[INFO] [stdout]     |        -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 803 |     encrypted_secret_commitment: [u8; 16],
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `remaining` is never used
[INFO] [stdout]   --> src/api/xchat.rs:30:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl<'a> ThriftReader<'a> {
[INFO] [stdout]    | ------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 30 |     fn remaining(&self) -> usize {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `user_id` is never read
[INFO] [stdout]   --> src/app.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 35 |     UserTweets {
[INFO] [stdout]    |     ---------- field in this variant
[INFO] [stdout] 36 |         response: TimelineResponse,
[INFO] [stdout] 37 |         user_id: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `DmMessages` is never constructed
[INFO] [stdout]   --> src/app.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | enum ApiResult {
[INFO] [stdout]    |      --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 41 |     DmMessages {
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `tweet_id` is never read
[INFO] [stdout]   --> src/app.rs:93:9
[INFO] [stdout]    |
[INFO] [stdout] 92 |     TweetDetail {
[INFO] [stdout]    |     ----------- field in this variant
[INFO] [stdout] 93 |         tweet_id: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `screen_name` is never read
[INFO] [stdout]    --> src/app.rs:101:9
[INFO] [stdout]     |
[INFO] [stdout] 100 |     Profile {
[INFO] [stdout]     |     ------- field in this variant
[INFO] [stdout] 101 |         screen_name: String,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/app.rs:1326:25
[INFO] [stdout]      |
[INFO] [stdout] 1326 |                         drop(input);
[INFO] [stdout]      |                         ^^^^^-----^
[INFO] [stdout]      |                              |
[INFO] [stdout]      |                              argument has type `&mut text_input::TextInput`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(dropping_references)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1326 -                         drop(input);
[INFO] [stdout] 1326 +                         let _ = input;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/app.rs:1401:21
[INFO] [stdout]      |
[INFO] [stdout] 1401 |                     drop(input);
[INFO] [stdout]      |                     ^^^^^-----^
[INFO] [stdout]      |                          |
[INFO] [stdout]      |                          argument has type `&mut text_input::TextInput`
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1401 -                     drop(input);
[INFO] [stdout] 1401 +                     let _ = input;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/app.rs:1402:21
[INFO] [stdout]      |
[INFO] [stdout] 1402 |                     drop(conversation_id);
[INFO] [stdout]      |                     ^^^^^---------------^
[INFO] [stdout]      |                          |
[INFO] [stdout]      |                          argument has type `&mut std::string::String`
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1402 -                     drop(conversation_id);
[INFO] [stdout] 1402 +                     let _ = conversation_id;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/app.rs:1422:21
[INFO] [stdout]      |
[INFO] [stdout] 1422 |                     drop(input);
[INFO] [stdout]      |                     ^^^^^-----^
[INFO] [stdout]      |                          |
[INFO] [stdout]      |                          argument has type `&mut text_input::TextInput`
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1422 -                     drop(input);
[INFO] [stdout] 1422 +                     let _ = input;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/app.rs:1423:21
[INFO] [stdout]      |
[INFO] [stdout] 1423 |                     drop(conversation_id);
[INFO] [stdout]      |                     ^^^^^---------------^
[INFO] [stdout]      |                          |
[INFO] [stdout]      |                          argument has type `&mut std::string::String`
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1423 -                     drop(conversation_id);
[INFO] [stdout] 1423 +                     let _ = conversation_id;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/app.rs:1449:17
[INFO] [stdout]      |
[INFO] [stdout] 1449 |                 drop(tweet);
[INFO] [stdout]      |                 ^^^^^-----^
[INFO] [stdout]      |                      |
[INFO] [stdout]      |                      argument has type `&mut models::Tweet`
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1449 -                 drop(tweet);
[INFO] [stdout] 1449 +                 let _ = tweet;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/app.rs:1471:17
[INFO] [stdout]      |
[INFO] [stdout] 1471 |                 drop(tweet);
[INFO] [stdout]      |                 ^^^^^-----^
[INFO] [stdout]      |                      |
[INFO] [stdout]      |                      argument has type `&mut models::Tweet`
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1471 -                 drop(tweet);
[INFO] [stdout] 1471 +                 let _ = tweet;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/app.rs:1491:17
[INFO] [stdout]      |
[INFO] [stdout] 1491 |                 drop(tweet);
[INFO] [stdout]      |                 ^^^^^-----^
[INFO] [stdout]      |                      |
[INFO] [stdout]      |                      argument has type `&mut models::Tweet`
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1491 -                 drop(tweet);
[INFO] [stdout] 1491 +                 let _ = tweet;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `uuid` is assigned to, but never used
[INFO] [stdout]    --> src/api/xchat.rs:166:9
[INFO] [stdout]     |
[INFO] [stdout] 166 |     let mut uuid = String::new();
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_uuid` instead
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `uuid` is never read
[INFO] [stdout]    --> src/api/xchat.rs:188:37
[INFO] [stdout]     |
[INFO] [stdout] 188 |             (THRIFT_STRING, 2) => { uuid = reader.read_string()?; }
[INFO] [stdout]     |                                     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/api/xchat.rs:299:9
[INFO] [stdout]     |
[INFO] [stdout] 299 |     let mut depth = 0;
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start_pos`
[INFO] [stdout]    --> src/api/xchat.rs:298:9
[INFO] [stdout]     |
[INFO] [stdout] 298 |     let start_pos = reader.pos;
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_start_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `depth`
[INFO] [stdout]    --> src/api/xchat.rs:299:9
[INFO] [stdout]     |
[INFO] [stdout] 299 |     let mut depth = 0;
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_depth`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tweet_count`
[INFO] [stdout]    --> src/app.rs:992:19
[INFO] [stdout]     |
[INFO] [stdout] 992 |         let (tab, tweet_count, selected, cursor_bottom) = {
[INFO] [stdout]     |                   ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tweet_count`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `selected`
[INFO] [stdout]    --> src/app.rs:992:32
[INFO] [stdout]     |
[INFO] [stdout] 992 |         let (tab, tweet_count, selected, cursor_bottom) = {
[INFO] [stdout]     |                                ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_selected`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `total_before_replies`
[INFO] [stdout]   --> src/tui/views/tweet_detail.rs:29:13
[INFO] [stdout]    |
[INFO] [stdout] 29 |         let total_before_replies = self.parents.len() + 1; // parents + main
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_total_before_replies`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `API_V2_BASE` is never used
[INFO] [stdout]   --> src/api/client.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const API_V2_BASE: &str = "https://x.com/i/api/2";
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `encrypted_secret_commitment` is never read
[INFO] [stdout]    --> src/api/juicebox.rs:803:5
[INFO] [stdout]     |
[INFO] [stdout] 800 | struct Recover3Result {
[INFO] [stdout]     |        -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 803 |     encrypted_secret_commitment: [u8; 16],
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `remaining` is never used
[INFO] [stdout]   --> src/api/xchat.rs:30:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl<'a> ThriftReader<'a> {
[INFO] [stdout]    | ------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 30 |     fn remaining(&self) -> usize {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `user_id` is never read
[INFO] [stdout]   --> src/app.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 35 |     UserTweets {
[INFO] [stdout]    |     ---------- field in this variant
[INFO] [stdout] 36 |         response: TimelineResponse,
[INFO] [stdout] 37 |         user_id: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `DmMessages` is never constructed
[INFO] [stdout]   --> src/app.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | enum ApiResult {
[INFO] [stdout]    |      --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 41 |     DmMessages {
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `tweet_id` is never read
[INFO] [stdout]   --> src/app.rs:93:9
[INFO] [stdout]    |
[INFO] [stdout] 92 |     TweetDetail {
[INFO] [stdout]    |     ----------- field in this variant
[INFO] [stdout] 93 |         tweet_id: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `screen_name` is never read
[INFO] [stdout]    --> src/app.rs:101:9
[INFO] [stdout]     |
[INFO] [stdout] 100 |     Profile {
[INFO] [stdout]     |     ------- field in this variant
[INFO] [stdout] 101 |         screen_name: String,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/app.rs:1326:25
[INFO] [stdout]      |
[INFO] [stdout] 1326 |                         drop(input);
[INFO] [stdout]      |                         ^^^^^-----^
[INFO] [stdout]      |                              |
[INFO] [stdout]      |                              argument has type `&mut text_input::TextInput`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(dropping_references)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1326 -                         drop(input);
[INFO] [stdout] 1326 +                         let _ = input;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/app.rs:1401:21
[INFO] [stdout]      |
[INFO] [stdout] 1401 |                     drop(input);
[INFO] [stdout]      |                     ^^^^^-----^
[INFO] [stdout]      |                          |
[INFO] [stdout]      |                          argument has type `&mut text_input::TextInput`
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1401 -                     drop(input);
[INFO] [stdout] 1401 +                     let _ = input;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/app.rs:1402:21
[INFO] [stdout]      |
[INFO] [stdout] 1402 |                     drop(conversation_id);
[INFO] [stdout]      |                     ^^^^^---------------^
[INFO] [stdout]      |                          |
[INFO] [stdout]      |                          argument has type `&mut std::string::String`
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1402 -                     drop(conversation_id);
[INFO] [stdout] 1402 +                     let _ = conversation_id;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/app.rs:1422:21
[INFO] [stdout]      |
[INFO] [stdout] 1422 |                     drop(input);
[INFO] [stdout]      |                     ^^^^^-----^
[INFO] [stdout]      |                          |
[INFO] [stdout]      |                          argument has type `&mut text_input::TextInput`
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1422 -                     drop(input);
[INFO] [stdout] 1422 +                     let _ = input;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/app.rs:1423:21
[INFO] [stdout]      |
[INFO] [stdout] 1423 |                     drop(conversation_id);
[INFO] [stdout]      |                     ^^^^^---------------^
[INFO] [stdout]      |                          |
[INFO] [stdout]      |                          argument has type `&mut std::string::String`
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1423 -                     drop(conversation_id);
[INFO] [stdout] 1423 +                     let _ = conversation_id;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/app.rs:1449:17
[INFO] [stdout]      |
[INFO] [stdout] 1449 |                 drop(tweet);
[INFO] [stdout]      |                 ^^^^^-----^
[INFO] [stdout]      |                      |
[INFO] [stdout]      |                      argument has type `&mut models::Tweet`
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1449 -                 drop(tweet);
[INFO] [stdout] 1449 +                 let _ = tweet;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/app.rs:1471:17
[INFO] [stdout]      |
[INFO] [stdout] 1471 |                 drop(tweet);
[INFO] [stdout]      |                 ^^^^^-----^
[INFO] [stdout]      |                      |
[INFO] [stdout]      |                      argument has type `&mut models::Tweet`
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1471 -                 drop(tweet);
[INFO] [stdout] 1471 +                 let _ = tweet;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/app.rs:1491:17
[INFO] [stdout]      |
[INFO] [stdout] 1491 |                 drop(tweet);
[INFO] [stdout]      |                 ^^^^^-----^
[INFO] [stdout]      |                      |
[INFO] [stdout]      |                      argument has type `&mut models::Tweet`
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1491 -                 drop(tweet);
[INFO] [stdout] 1491 +                 let _ = tweet;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `headers`
[INFO] [stdout]   --> examples/test_dm.rs:47:9
[INFO] [stdout]    |
[INFO] [stdout] 47 |     let headers = resp.headers().clone();
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_headers`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 0 arguments were supplied
[INFO] [stdout]    --> examples/test_dm2.rs:14:23
[INFO] [stdout]     |
[INFO] [stdout]  14 |     let data = client.dm_inbox().await?;
[INFO] [stdout]     |                       ^^^^^^^^-- argument #1 of type `Option<&str>` is missing
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/api/client.rs:579:18
[INFO] [stdout]     |
[INFO] [stdout] 579 |     pub async fn dm_inbox(&self, cursor: Option<&str>) -> Result<Value> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] help: provide the argument
[INFO] [stdout]     |
[INFO] [stdout]  14 |     let data = client.dm_inbox(/* Option<&str> */).await?;
[INFO] [stdout]     |                                ++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Context` and `Result`
[INFO] [stdout]  --> src/api/xchat.rs:3:14
[INFO] [stdout]   |
[INFO] [stdout] 3 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^  ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `models::*`
[INFO] [stdout]   --> src/api/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use models::*;
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `KeyModifiers`
[INFO] [stdout]  --> src/app.rs:2:33
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crossterm::event::{KeyCode, KeyModifiers};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0061`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `tui-x` (example "test_dm2") due to 1 previous error
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: unused imports: `Context` and `Result`
[INFO] [stdout]  --> src/api/xchat.rs:3:14
[INFO] [stdout]   |
[INFO] [stdout] 3 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^  ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `models::*`
[INFO] [stdout]   --> src/api/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use models::*;
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `KeyModifiers`
[INFO] [stdout]  --> src/app.rs:2:33
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crossterm::event::{KeyCode, KeyModifiers};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/app.rs:185:13
[INFO] [stdout]     |
[INFO] [stdout] 185 |         let mut app = App {
[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/app.rs:185:13
[INFO] [stdout]     |
[INFO] [stdout] 185 |         let mut app = App {
[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 `uuid` is assigned to, but never used
[INFO] [stdout]    --> src/api/xchat.rs:166:9
[INFO] [stdout]     |
[INFO] [stdout] 166 |     let mut uuid = String::new();
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_uuid` instead
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `uuid` is never read
[INFO] [stdout]    --> src/api/xchat.rs:188:37
[INFO] [stdout]     |
[INFO] [stdout] 188 |             (THRIFT_STRING, 2) => { uuid = reader.read_string()?; }
[INFO] [stdout]     |                                     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/api/xchat.rs:299:9
[INFO] [stdout]     |
[INFO] [stdout] 299 |     let mut depth = 0;
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start_pos`
[INFO] [stdout]    --> src/api/xchat.rs:298:9
[INFO] [stdout]     |
[INFO] [stdout] 298 |     let start_pos = reader.pos;
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_start_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `depth`
[INFO] [stdout]    --> src/api/xchat.rs:299:9
[INFO] [stdout]     |
[INFO] [stdout] 299 |     let mut depth = 0;
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_depth`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tweet_count`
[INFO] [stdout]    --> src/app.rs:992:19
[INFO] [stdout]     |
[INFO] [stdout] 992 |         let (tab, tweet_count, selected, cursor_bottom) = {
[INFO] [stdout]     |                   ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tweet_count`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `selected`
[INFO] [stdout]    --> src/app.rs:992:32
[INFO] [stdout]     |
[INFO] [stdout] 992 |         let (tab, tweet_count, selected, cursor_bottom) = {
[INFO] [stdout]     |                                ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_selected`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `total_before_replies`
[INFO] [stdout]   --> src/tui/views/tweet_detail.rs:29:13
[INFO] [stdout]    |
[INFO] [stdout] 29 |         let total_before_replies = self.parents.len() + 1; // parents + main
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_total_before_replies`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `API_V2_BASE` is never used
[INFO] [stdout]   --> src/api/client.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const API_V2_BASE: &str = "https://x.com/i/api/2";
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/api/client.rs:250:14
[INFO] [stdout]     |
[INFO] [stdout]  26 | impl XClient {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 250 |     async fn rest_post(&self, path: &str, form: &[(&str, &str)]) -> Result<Value> {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 332 |     pub async fn search(
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 439 |     pub async fn bookmarks(&self, count: u32, cursor: Option<&str>) -> Result<TimelineResponse> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 505 |     pub async fn delete_tweet(&self, tweet_id: &str) -> Result<Value> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 547 |     pub async fn follow(&self, user_id: &str) -> Result<Value> {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 556 |     pub async fn unfollow(&self, user_id: &str) -> Result<Value> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 565 |     pub async fn block(&self, user_id: &str) -> Result<Value> {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 571 |     pub async fn unblock(&self, user_id: &str) -> Result<Value> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 623 |     pub async fn delete_dm(&self, message_id: &str) -> Result<Value> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 666 |     pub async fn get_public_keys(&self, user_ids: &[&str]) -> Result<Value> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UPLOAD_URL` is never used
[INFO] [stdout]  --> src/api/endpoints.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub const UPLOAD_URL: &str = "https://upload.twitter.com/i/media/upload.json";
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DM_INBOX_URL` is never used
[INFO] [stdout]  --> src/api/endpoints.rs:4:11
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub const DM_INBOX_URL: &str = "https://x.com/i/api/1.1/dm/inbox_initial_state.json";
[INFO] [stdout]   |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TRENDING_URL` is never used
[INFO] [stdout]  --> src/api/endpoints.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const TRENDING_URL: &str = "https://x.com/i/api/2/guide.json";
[INFO] [stdout]   |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `cursor_top` is never read
[INFO] [stdout]   --> src/api/models.rs:66:9
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub struct TimelineResponse {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] 65 |     pub tweets: Vec<Tweet>,
[INFO] [stdout] 66 |     pub cursor_top: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TimelineResponse` 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 `with_jitter` is never used
[INFO] [stdout]  --> src/api/rate_limit.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn with_jitter(base_ms: u64) -> Duration {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Blake2sMac128` is never used
[INFO] [stdout]   --> src/api/juicebox.rs:22:6
[INFO] [stdout]    |
[INFO] [stdout] 22 | type Blake2sMac128 = Blake2sMac<U16>;
[INFO] [stdout]    |      ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Blake2sMac256` is never used
[INFO] [stdout]   --> src/api/juicebox.rs:23:6
[INFO] [stdout]    |
[INFO] [stdout] 23 | type Blake2sMac256 = Blake2sMac<U32>;
[INFO] [stdout]    |      ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RealmConfig` is never constructed
[INFO] [stdout]   --> src/api/juicebox.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct RealmConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `JuiceboxConfig` is never constructed
[INFO] [stdout]   --> src/api/juicebox.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct JuiceboxConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_public_keys_response` is never used
[INFO] [stdout]   --> src/api/juicebox.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl JuiceboxConfig {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 46 |     /// Parse from the GetPublicKeys GraphQL response.
[INFO] [stdout] 47 |     pub fn from_public_keys_response(data: &serde_json::Value, user_id: &str) -> Option<Self> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `stretch_pin` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:161:8
[INFO] [stdout]     |
[INFO] [stdout] 161 | pub fn stretch_pin(
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_be4` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:198:4
[INFO] [stdout]     |
[INFO] [stdout] 198 | fn to_be4(len: usize) -> [u8; 4] {
[INFO] [stdout]     |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cbor_encode` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:203:4
[INFO] [stdout]     |
[INFO] [stdout] 203 | fn cbor_encode(val: &CborValue) -> Vec<u8> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cbor_decode` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:210:4
[INFO] [stdout]     |
[INFO] [stdout] 210 | fn cbor_decode(data: &[u8]) -> Result<CborValue> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cbor_get_bytes` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:215:4
[INFO] [stdout]     |
[INFO] [stdout] 215 | fn cbor_get_bytes<'a>(map: &'a [(CborValue, CborValue)], key: &str) -> Option<&'a Vec<u8>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cbor_get_u64` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:229:4
[INFO] [stdout]     |
[INFO] [stdout] 229 | fn cbor_get_u64(map: &[(CborValue, CborValue)], key: &str) -> Option<u64> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cbor_get_map` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:243:4
[INFO] [stdout]     |
[INFO] [stdout] 243 | fn cbor_get_map<'a>(
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cbor_unwrap_ok` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:260:4
[INFO] [stdout]     |
[INFO] [stdout] 260 | fn cbor_unwrap_ok(val: &CborValue) -> Result<&Vec<(CborValue, CborValue)>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_hardware_request` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:284:4
[INFO] [stdout]     |
[INFO] [stdout] 284 | fn build_hardware_request(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decode_hardware_response` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:358:4
[INFO] [stdout]     |
[INFO] [stdout] 358 | fn decode_hardware_response(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_realm_request` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:420:10
[INFO] [stdout]     |
[INFO] [stdout] 420 | async fn send_realm_request(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_recover1_cbor` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:482:4
[INFO] [stdout]     |
[INFO] [stdout] 482 | fn build_recover1_cbor() -> CborValue {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_recover1_response` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:489:4
[INFO] [stdout]     |
[INFO] [stdout] 489 | fn parse_recover1_response(val: &CborValue) -> Result<[u8; 16]> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `phase1_get_version` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:503:10
[INFO] [stdout]     |
[INFO] [stdout] 503 | async fn phase1_get_version(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `oprf_blind` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:538:4
[INFO] [stdout]     |
[INFO] [stdout] 538 | fn oprf_blind(access_key: &[u8; 32]) -> (CompressedRistretto, Scalar) {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_recover2_cbor` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:554:4
[INFO] [stdout]     |
[INFO] [stdout] 554 | fn build_recover2_cbor(version: &[u8; 16], blinded_input: &CompressedRistretto) -> CborValue {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Recover2Result` is never constructed
[INFO] [stdout]    --> src/api/juicebox.rs:571:8
[INFO] [stdout]     |
[INFO] [stdout] 571 | struct Recover2Result {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_recover2_response` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:578:4
[INFO] [stdout]     |
[INFO] [stdout] 578 | fn parse_recover2_response(val: &CborValue) -> Result<Recover2Result> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lagrange_coefficient` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:613:4
[INFO] [stdout]     |
[INFO] [stdout] 613 | fn lagrange_coefficient(i: u64, indices: &[u64]) -> Scalar {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lagrange_interpolate_points` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:630:4
[INFO] [stdout]     |
[INFO] [stdout] 630 | fn lagrange_interpolate_points(shares: &[(u64, RistrettoPoint)]) -> RistrettoPoint {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lagrange_interpolate_scalars` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:642:4
[INFO] [stdout]     |
[INFO] [stdout] 642 | fn lagrange_interpolate_scalars(shares: &[(u64, Scalar)]) -> Scalar {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `oprf_finalize` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:654:4
[INFO] [stdout]     |
[INFO] [stdout] 654 | fn oprf_finalize(
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `phase2_oprf` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:693:10
[INFO] [stdout]     |
[INFO] [stdout] 693 | async fn phase2_oprf(
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_unlock_key_tag` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:765:4
[INFO] [stdout]     |
[INFO] [stdout] 765 | fn compute_unlock_key_tag(unlock_key: &[u8; 32], realm_id: &[u8; 16]) -> Result<[u8; 16]> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_recover3_cbor` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:783:4
[INFO] [stdout]     |
[INFO] [stdout] 783 | fn build_recover3_cbor(version: &[u8; 16], unlock_key_tag: &[u8; 16]) -> CborValue {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Recover3Result` is never constructed
[INFO] [stdout]    --> src/api/juicebox.rs:800:8
[INFO] [stdout]     |
[INFO] [stdout] 800 | struct Recover3Result {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_recover3_response` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:806:4
[INFO] [stdout]     |
[INFO] [stdout] 806 | fn parse_recover3_response(val: &CborValue) -> Result<Recover3Result> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `derive_encryption_key` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:844:4
[INFO] [stdout]     |
[INFO] [stdout] 844 | fn derive_encryption_key(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decrypt_secret` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:868:4
[INFO] [stdout]     |
[INFO] [stdout] 868 | fn decrypt_secret(encryption_key: &[u8; 32], encrypted_secret: &[u8]) -> Result<Vec<u8>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `phase3_recover` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:893:10
[INFO] [stdout]     |
[INFO] [stdout] 893 | async fn phase3_recover(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `recover_private_key` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:963:14
[INFO] [stdout]     |
[INFO] [stdout] 963 | pub async fn recover_private_key(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decode_to_slice` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:127:12
[INFO] [stdout]     |
[INFO] [stdout] 127 |     pub fn decode_to_slice(hex: &str, out: &mut [u8]) -> Option<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encode` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:139:12
[INFO] [stdout]     |
[INFO] [stdout] 139 |     pub fn encode(data: &[u8]) -> String {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `from_hex_digit` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:147:8
[INFO] [stdout]     |
[INFO] [stdout] 147 |     fn from_hex_digit(b: u8) -> Option<u8> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `remaining` is never used
[INFO] [stdout]   --> src/api/xchat.rs:30:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl<'a> ThriftReader<'a> {
[INFO] [stdout]    | ------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 30 |     fn remaining(&self) -> usize {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `conversation_id`, `shared_tweet_id`, `shared_tweet_url`, `ciphertext`, `sender_key_version`, and `sender_signing_key` are never read
[INFO] [stdout]    --> src/api/xchat.rs:146:9
[INFO] [stdout]     |
[INFO] [stdout] 143 | pub struct XChatMessageEvent {
[INFO] [stdout]     |            ----------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub conversation_id: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub shared_tweet_id: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 150 |     pub shared_tweet_url: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub ciphertext: Option<Vec<u8>>,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 154 |     /// Sender's signing key version from field 7.9.2.
[INFO] [stdout] 155 |     pub sender_key_version: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 156 |     /// Sender's signing public key from field 7.9.4 (DER-encoded SPKI).
[INFO] [stdout] 157 |     pub sender_signing_key: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `XChatMessageEvent` 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 `user_id` is never read
[INFO] [stdout]   --> src/app.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 35 |     UserTweets {
[INFO] [stdout]    |     ---------- field in this variant
[INFO] [stdout] 36 |         response: TimelineResponse,
[INFO] [stdout] 37 |         user_id: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `DmMessages` is never constructed
[INFO] [stdout]   --> src/app.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | enum ApiResult {
[INFO] [stdout]    |      --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 41 |     DmMessages {
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `tweet_id` is never read
[INFO] [stdout]   --> src/app.rs:93:9
[INFO] [stdout]    |
[INFO] [stdout] 92 |     TweetDetail {
[INFO] [stdout]    |     ----------- field in this variant
[INFO] [stdout] 93 |         tweet_id: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `screen_name` is never read
[INFO] [stdout]    --> src/app.rs:101:9
[INFO] [stdout]     |
[INFO] [stdout] 100 |     Profile {
[INFO] [stdout]     |     ------- field in this variant
[INFO] [stdout] 101 |         screen_name: String,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `save`, `add_account`, `remove_account`, and `set_default` are never used
[INFO] [stdout]   --> src/auth/store.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl AuthStore {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn save(&self) -> Result<()> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn add_account(&mut self, name: String, creds: Credentials) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn remove_account(&mut self, name: &str) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn set_default(&mut self, name: String) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `save` is never used
[INFO] [stdout]   --> src/config/mod.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl Config {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn save(&self) -> Result<()> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `request_thumbnail` is never used
[INFO] [stdout]   --> src/tui/image_cache.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl ImageCache {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub fn request_thumbnail(&mut self, url: &str) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `YELLOW`, `username`, and `bookmark` are never used
[INFO] [stdout]   --> src/tui/theme.rs:15:15
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl Theme {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 15 |     pub const YELLOW: Color = Color::Rgb(255, 212, 0);  // Bookmark
[INFO] [stdout]    |               ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn username() -> Style {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn bookmark() -> Style {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/app.rs:1326:25
[INFO] [stdout]      |
[INFO] [stdout] 1326 |                         drop(input);
[INFO] [stdout]      |                         ^^^^^-----^
[INFO] [stdout]      |                              |
[INFO] [stdout]      |                              argument has type `&mut text_input::TextInput`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(dropping_references)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1326 -                         drop(input);
[INFO] [stdout] 1326 +                         let _ = input;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/app.rs:1401:21
[INFO] [stdout]      |
[INFO] [stdout] 1401 |                     drop(input);
[INFO] [stdout]      |                     ^^^^^-----^
[INFO] [stdout]      |                          |
[INFO] [stdout]      |                          argument has type `&mut text_input::TextInput`
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1401 -                     drop(input);
[INFO] [stdout] 1401 +                     let _ = input;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/app.rs:1402:21
[INFO] [stdout]      |
[INFO] [stdout] 1402 |                     drop(conversation_id);
[INFO] [stdout]      |                     ^^^^^---------------^
[INFO] [stdout]      |                          |
[INFO] [stdout]      |                          argument has type `&mut std::string::String`
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1402 -                     drop(conversation_id);
[INFO] [stdout] 1402 +                     let _ = conversation_id;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/app.rs:1422:21
[INFO] [stdout]      |
[INFO] [stdout] 1422 |                     drop(input);
[INFO] [stdout]      |                     ^^^^^-----^
[INFO] [stdout]      |                          |
[INFO] [stdout]      |                          argument has type `&mut text_input::TextInput`
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1422 -                     drop(input);
[INFO] [stdout] 1422 +                     let _ = input;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/app.rs:1423:21
[INFO] [stdout]      |
[INFO] [stdout] 1423 |                     drop(conversation_id);
[INFO] [stdout]      |                     ^^^^^---------------^
[INFO] [stdout]      |                          |
[INFO] [stdout]      |                          argument has type `&mut std::string::String`
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1423 -                     drop(conversation_id);
[INFO] [stdout] 1423 +                     let _ = conversation_id;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/app.rs:1449:17
[INFO] [stdout]      |
[INFO] [stdout] 1449 |                 drop(tweet);
[INFO] [stdout]      |                 ^^^^^-----^
[INFO] [stdout]      |                      |
[INFO] [stdout]      |                      argument has type `&mut models::Tweet`
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1449 -                 drop(tweet);
[INFO] [stdout] 1449 +                 let _ = tweet;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/app.rs:1471:17
[INFO] [stdout]      |
[INFO] [stdout] 1471 |                 drop(tweet);
[INFO] [stdout]      |                 ^^^^^-----^
[INFO] [stdout]      |                      |
[INFO] [stdout]      |                      argument has type `&mut models::Tweet`
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1471 -                 drop(tweet);
[INFO] [stdout] 1471 +                 let _ = tweet;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/app.rs:1491:17
[INFO] [stdout]      |
[INFO] [stdout] 1491 |                 drop(tweet);
[INFO] [stdout]      |                 ^^^^^-----^
[INFO] [stdout]      |                      |
[INFO] [stdout]      |                      argument has type `&mut models::Tweet`
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1491 -                 drop(tweet);
[INFO] [stdout] 1491 +                 let _ = tweet;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `uuid` is assigned to, but never used
[INFO] [stdout]    --> src/api/xchat.rs:166:9
[INFO] [stdout]     |
[INFO] [stdout] 166 |     let mut uuid = String::new();
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_uuid` instead
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `uuid` is never read
[INFO] [stdout]    --> src/api/xchat.rs:188:37
[INFO] [stdout]     |
[INFO] [stdout] 188 |             (THRIFT_STRING, 2) => { uuid = reader.read_string()?; }
[INFO] [stdout]     |                                     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/api/xchat.rs:299:9
[INFO] [stdout]     |
[INFO] [stdout] 299 |     let mut depth = 0;
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start_pos`
[INFO] [stdout]    --> src/api/xchat.rs:298:9
[INFO] [stdout]     |
[INFO] [stdout] 298 |     let start_pos = reader.pos;
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_start_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `depth`
[INFO] [stdout]    --> src/api/xchat.rs:299:9
[INFO] [stdout]     |
[INFO] [stdout] 299 |     let mut depth = 0;
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_depth`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tweet_count`
[INFO] [stdout]    --> src/app.rs:992:19
[INFO] [stdout]     |
[INFO] [stdout] 992 |         let (tab, tweet_count, selected, cursor_bottom) = {
[INFO] [stdout]     |                   ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tweet_count`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `selected`
[INFO] [stdout]    --> src/app.rs:992:32
[INFO] [stdout]     |
[INFO] [stdout] 992 |         let (tab, tweet_count, selected, cursor_bottom) = {
[INFO] [stdout]     |                                ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_selected`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `total_before_replies`
[INFO] [stdout]   --> src/tui/views/tweet_detail.rs:29:13
[INFO] [stdout]    |
[INFO] [stdout] 29 |         let total_before_replies = self.parents.len() + 1; // parents + main
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_total_before_replies`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `API_V2_BASE` is never used
[INFO] [stdout]   --> src/api/client.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const API_V2_BASE: &str = "https://x.com/i/api/2";
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/api/client.rs:250:14
[INFO] [stdout]     |
[INFO] [stdout]  26 | impl XClient {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 250 |     async fn rest_post(&self, path: &str, form: &[(&str, &str)]) -> Result<Value> {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 332 |     pub async fn search(
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 439 |     pub async fn bookmarks(&self, count: u32, cursor: Option<&str>) -> Result<TimelineResponse> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 505 |     pub async fn delete_tweet(&self, tweet_id: &str) -> Result<Value> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 547 |     pub async fn follow(&self, user_id: &str) -> Result<Value> {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 556 |     pub async fn unfollow(&self, user_id: &str) -> Result<Value> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 565 |     pub async fn block(&self, user_id: &str) -> Result<Value> {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 571 |     pub async fn unblock(&self, user_id: &str) -> Result<Value> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 623 |     pub async fn delete_dm(&self, message_id: &str) -> Result<Value> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 666 |     pub async fn get_public_keys(&self, user_ids: &[&str]) -> Result<Value> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UPLOAD_URL` is never used
[INFO] [stdout]  --> src/api/endpoints.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub const UPLOAD_URL: &str = "https://upload.twitter.com/i/media/upload.json";
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DM_INBOX_URL` is never used
[INFO] [stdout]  --> src/api/endpoints.rs:4:11
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub const DM_INBOX_URL: &str = "https://x.com/i/api/1.1/dm/inbox_initial_state.json";
[INFO] [stdout]   |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TRENDING_URL` is never used
[INFO] [stdout]  --> src/api/endpoints.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const TRENDING_URL: &str = "https://x.com/i/api/2/guide.json";
[INFO] [stdout]   |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `cursor_top` is never read
[INFO] [stdout]   --> src/api/models.rs:66:9
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub struct TimelineResponse {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] 65 |     pub tweets: Vec<Tweet>,
[INFO] [stdout] 66 |     pub cursor_top: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TimelineResponse` 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 `with_jitter` is never used
[INFO] [stdout]  --> src/api/rate_limit.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn with_jitter(base_ms: u64) -> Duration {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Blake2sMac128` is never used
[INFO] [stdout]   --> src/api/juicebox.rs:22:6
[INFO] [stdout]    |
[INFO] [stdout] 22 | type Blake2sMac128 = Blake2sMac<U16>;
[INFO] [stdout]    |      ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Blake2sMac256` is never used
[INFO] [stdout]   --> src/api/juicebox.rs:23:6
[INFO] [stdout]    |
[INFO] [stdout] 23 | type Blake2sMac256 = Blake2sMac<U32>;
[INFO] [stdout]    |      ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RealmConfig` is never constructed
[INFO] [stdout]   --> src/api/juicebox.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct RealmConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `JuiceboxConfig` is never constructed
[INFO] [stdout]   --> src/api/juicebox.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct JuiceboxConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_public_keys_response` is never used
[INFO] [stdout]   --> src/api/juicebox.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl JuiceboxConfig {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 46 |     /// Parse from the GetPublicKeys GraphQL response.
[INFO] [stdout] 47 |     pub fn from_public_keys_response(data: &serde_json::Value, user_id: &str) -> Option<Self> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `stretch_pin` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:161:8
[INFO] [stdout]     |
[INFO] [stdout] 161 | pub fn stretch_pin(
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_be4` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:198:4
[INFO] [stdout]     |
[INFO] [stdout] 198 | fn to_be4(len: usize) -> [u8; 4] {
[INFO] [stdout]     |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cbor_encode` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:203:4
[INFO] [stdout]     |
[INFO] [stdout] 203 | fn cbor_encode(val: &CborValue) -> Vec<u8> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cbor_decode` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:210:4
[INFO] [stdout]     |
[INFO] [stdout] 210 | fn cbor_decode(data: &[u8]) -> Result<CborValue> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cbor_get_bytes` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:215:4
[INFO] [stdout]     |
[INFO] [stdout] 215 | fn cbor_get_bytes<'a>(map: &'a [(CborValue, CborValue)], key: &str) -> Option<&'a Vec<u8>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cbor_get_u64` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:229:4
[INFO] [stdout]     |
[INFO] [stdout] 229 | fn cbor_get_u64(map: &[(CborValue, CborValue)], key: &str) -> Option<u64> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cbor_get_map` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:243:4
[INFO] [stdout]     |
[INFO] [stdout] 243 | fn cbor_get_map<'a>(
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cbor_unwrap_ok` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:260:4
[INFO] [stdout]     |
[INFO] [stdout] 260 | fn cbor_unwrap_ok(val: &CborValue) -> Result<&Vec<(CborValue, CborValue)>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_hardware_request` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:284:4
[INFO] [stdout]     |
[INFO] [stdout] 284 | fn build_hardware_request(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decode_hardware_response` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:358:4
[INFO] [stdout]     |
[INFO] [stdout] 358 | fn decode_hardware_response(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_realm_request` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:420:10
[INFO] [stdout]     |
[INFO] [stdout] 420 | async fn send_realm_request(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_recover1_cbor` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:482:4
[INFO] [stdout]     |
[INFO] [stdout] 482 | fn build_recover1_cbor() -> CborValue {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_recover1_response` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:489:4
[INFO] [stdout]     |
[INFO] [stdout] 489 | fn parse_recover1_response(val: &CborValue) -> Result<[u8; 16]> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `phase1_get_version` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:503:10
[INFO] [stdout]     |
[INFO] [stdout] 503 | async fn phase1_get_version(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `oprf_blind` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:538:4
[INFO] [stdout]     |
[INFO] [stdout] 538 | fn oprf_blind(access_key: &[u8; 32]) -> (CompressedRistretto, Scalar) {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_recover2_cbor` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:554:4
[INFO] [stdout]     |
[INFO] [stdout] 554 | fn build_recover2_cbor(version: &[u8; 16], blinded_input: &CompressedRistretto) -> CborValue {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Recover2Result` is never constructed
[INFO] [stdout]    --> src/api/juicebox.rs:571:8
[INFO] [stdout]     |
[INFO] [stdout] 571 | struct Recover2Result {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_recover2_response` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:578:4
[INFO] [stdout]     |
[INFO] [stdout] 578 | fn parse_recover2_response(val: &CborValue) -> Result<Recover2Result> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lagrange_coefficient` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:613:4
[INFO] [stdout]     |
[INFO] [stdout] 613 | fn lagrange_coefficient(i: u64, indices: &[u64]) -> Scalar {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lagrange_interpolate_points` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:630:4
[INFO] [stdout]     |
[INFO] [stdout] 630 | fn lagrange_interpolate_points(shares: &[(u64, RistrettoPoint)]) -> RistrettoPoint {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lagrange_interpolate_scalars` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:642:4
[INFO] [stdout]     |
[INFO] [stdout] 642 | fn lagrange_interpolate_scalars(shares: &[(u64, Scalar)]) -> Scalar {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `oprf_finalize` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:654:4
[INFO] [stdout]     |
[INFO] [stdout] 654 | fn oprf_finalize(
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `phase2_oprf` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:693:10
[INFO] [stdout]     |
[INFO] [stdout] 693 | async fn phase2_oprf(
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_unlock_key_tag` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:765:4
[INFO] [stdout]     |
[INFO] [stdout] 765 | fn compute_unlock_key_tag(unlock_key: &[u8; 32], realm_id: &[u8; 16]) -> Result<[u8; 16]> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_recover3_cbor` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:783:4
[INFO] [stdout]     |
[INFO] [stdout] 783 | fn build_recover3_cbor(version: &[u8; 16], unlock_key_tag: &[u8; 16]) -> CborValue {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Recover3Result` is never constructed
[INFO] [stdout]    --> src/api/juicebox.rs:800:8
[INFO] [stdout]     |
[INFO] [stdout] 800 | struct Recover3Result {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_recover3_response` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:806:4
[INFO] [stdout]     |
[INFO] [stdout] 806 | fn parse_recover3_response(val: &CborValue) -> Result<Recover3Result> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `derive_encryption_key` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:844:4
[INFO] [stdout]     |
[INFO] [stdout] 844 | fn derive_encryption_key(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decrypt_secret` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:868:4
[INFO] [stdout]     |
[INFO] [stdout] 868 | fn decrypt_secret(encryption_key: &[u8; 32], encrypted_secret: &[u8]) -> Result<Vec<u8>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `phase3_recover` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:893:10
[INFO] [stdout]     |
[INFO] [stdout] 893 | async fn phase3_recover(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `recover_private_key` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:963:14
[INFO] [stdout]     |
[INFO] [stdout] 963 | pub async fn recover_private_key(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decode_to_slice` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:127:12
[INFO] [stdout]     |
[INFO] [stdout] 127 |     pub fn decode_to_slice(hex: &str, out: &mut [u8]) -> Option<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encode` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:139:12
[INFO] [stdout]     |
[INFO] [stdout] 139 |     pub fn encode(data: &[u8]) -> String {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `from_hex_digit` is never used
[INFO] [stdout]    --> src/api/juicebox.rs:147:8
[INFO] [stdout]     |
[INFO] [stdout] 147 |     fn from_hex_digit(b: u8) -> Option<u8> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `remaining` is never used
[INFO] [stdout]   --> src/api/xchat.rs:30:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl<'a> ThriftReader<'a> {
[INFO] [stdout]    | ------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 30 |     fn remaining(&self) -> usize {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `conversation_id`, `shared_tweet_id`, `shared_tweet_url`, `ciphertext`, `sender_key_version`, and `sender_signing_key` are never read
[INFO] [stdout]    --> src/api/xchat.rs:146:9
[INFO] [stdout]     |
[INFO] [stdout] 143 | pub struct XChatMessageEvent {
[INFO] [stdout]     |            ----------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub conversation_id: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub shared_tweet_id: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 150 |     pub shared_tweet_url: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub ciphertext: Option<Vec<u8>>,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 154 |     /// Sender's signing key version from field 7.9.2.
[INFO] [stdout] 155 |     pub sender_key_version: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 156 |     /// Sender's signing public key from field 7.9.4 (DER-encoded SPKI).
[INFO] [stdout] 157 |     pub sender_signing_key: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `XChatMessageEvent` 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 `user_id` is never read
[INFO] [stdout]   --> src/app.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 35 |     UserTweets {
[INFO] [stdout]    |     ---------- field in this variant
[INFO] [stdout] 36 |         response: TimelineResponse,
[INFO] [stdout] 37 |         user_id: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `DmMessages` is never constructed
[INFO] [stdout]   --> src/app.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | enum ApiResult {
[INFO] [stdout]    |      --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 41 |     DmMessages {
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `tweet_id` is never read
[INFO] [stdout]   --> src/app.rs:93:9
[INFO] [stdout]    |
[INFO] [stdout] 92 |     TweetDetail {
[INFO] [stdout]    |     ----------- field in this variant
[INFO] [stdout] 93 |         tweet_id: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `screen_name` is never read
[INFO] [stdout]    --> src/app.rs:101:9
[INFO] [stdout]     |
[INFO] [stdout] 100 |     Profile {
[INFO] [stdout]     |     ------- field in this variant
[INFO] [stdout] 101 |         screen_name: String,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `save`, `add_account`, `remove_account`, and `set_default` are never used
[INFO] [stdout]   --> src/auth/store.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl AuthStore {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn save(&self) -> Result<()> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn add_account(&mut self, name: String, creds: Credentials) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn remove_account(&mut self, name: &str) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn set_default(&mut self, name: String) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `save` is never used
[INFO] [stdout]   --> src/config/mod.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl Config {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn save(&self) -> Result<()> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `request_thumbnail` is never used
[INFO] [stdout]   --> src/tui/image_cache.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl ImageCache {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub fn request_thumbnail(&mut self, url: &str) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `YELLOW`, `username`, and `bookmark` are never used
[INFO] [stdout]   --> src/tui/theme.rs:15:15
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl Theme {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 15 |     pub const YELLOW: Color = Color::Rgb(255, 212, 0);  // Bookmark
[INFO] [stdout]    |               ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn username() -> Style {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn bookmark() -> Style {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/app.rs:1326:25
[INFO] [stdout]      |
[INFO] [stdout] 1326 |                         drop(input);
[INFO] [stdout]      |                         ^^^^^-----^
[INFO] [stdout]      |                              |
[INFO] [stdout]      |                              argument has type `&mut text_input::TextInput`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(dropping_references)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1326 -                         drop(input);
[INFO] [stdout] 1326 +                         let _ = input;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/app.rs:1401:21
[INFO] [stdout]      |
[INFO] [stdout] 1401 |                     drop(input);
[INFO] [stdout]      |                     ^^^^^-----^
[INFO] [stdout]      |                          |
[INFO] [stdout]      |                          argument has type `&mut text_input::TextInput`
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1401 -                     drop(input);
[INFO] [stdout] 1401 +                     let _ = input;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/app.rs:1402:21
[INFO] [stdout]      |
[INFO] [stdout] 1402 |                     drop(conversation_id);
[INFO] [stdout]      |                     ^^^^^---------------^
[INFO] [stdout]      |                          |
[INFO] [stdout]      |                          argument has type `&mut std::string::String`
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1402 -                     drop(conversation_id);
[INFO] [stdout] 1402 +                     let _ = conversation_id;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/app.rs:1422:21
[INFO] [stdout]      |
[INFO] [stdout] 1422 |                     drop(input);
[INFO] [stdout]      |                     ^^^^^-----^
[INFO] [stdout]      |                          |
[INFO] [stdout]      |                          argument has type `&mut text_input::TextInput`
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1422 -                     drop(input);
[INFO] [stdout] 1422 +                     let _ = input;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/app.rs:1423:21
[INFO] [stdout]      |
[INFO] [stdout] 1423 |                     drop(conversation_id);
[INFO] [stdout]      |                     ^^^^^---------------^
[INFO] [stdout]      |                          |
[INFO] [stdout]      |                          argument has type `&mut std::string::String`
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1423 -                     drop(conversation_id);
[INFO] [stdout] 1423 +                     let _ = conversation_id;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/app.rs:1449:17
[INFO] [stdout]      |
[INFO] [stdout] 1449 |                 drop(tweet);
[INFO] [stdout]      |                 ^^^^^-----^
[INFO] [stdout]      |                      |
[INFO] [stdout]      |                      argument has type `&mut models::Tweet`
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1449 -                 drop(tweet);
[INFO] [stdout] 1449 +                 let _ = tweet;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/app.rs:1471:17
[INFO] [stdout]      |
[INFO] [stdout] 1471 |                 drop(tweet);
[INFO] [stdout]      |                 ^^^^^-----^
[INFO] [stdout]      |                      |
[INFO] [stdout]      |                      argument has type `&mut models::Tweet`
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1471 -                 drop(tweet);
[INFO] [stdout] 1471 +                 let _ = tweet;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/app.rs:1491:17
[INFO] [stdout]      |
[INFO] [stdout] 1491 |                 drop(tweet);
[INFO] [stdout]      |                 ^^^^^-----^
[INFO] [stdout]      |                      |
[INFO] [stdout]      |                      argument has type `&mut models::Tweet`
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1491 -                 drop(tweet);
[INFO] [stdout] 1491 +                 let _ = tweet;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "12117f8254006a6bf910e54b76b9d7711d5135204698d5e3b521d980fc586eca", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "12117f8254006a6bf910e54b76b9d7711d5135204698d5e3b521d980fc586eca", kill_on_drop: false }`
[INFO] [stdout] 12117f8254006a6bf910e54b76b9d7711d5135204698d5e3b521d980fc586eca
