[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 { [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 { [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 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 505 | pub async fn delete_tweet(&self, tweet_id: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 547 | pub async fn follow(&self, user_id: &str) -> Result { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 556 | pub async fn unfollow(&self, user_id: &str) -> Result { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 565 | pub async fn block(&self, user_id: &str) -> Result { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 571 | pub async fn unblock(&self, user_id: &str) -> Result { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 623 | pub async fn delete_dm(&self, message_id: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 666 | pub async fn get_public_keys(&self, user_ids: &[&str]) -> Result { [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, [INFO] [stdout] 66 | pub cursor_top: Option, [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; [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; [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 { [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 { [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 { [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> { [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 { [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 { [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 { [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> { [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 { [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, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 150 | pub shared_tweet_url: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 153 | pub ciphertext: Option>, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 154 | /// Sender's signing key version from field 7.9.2. [INFO] [stdout] 155 | pub sender_key_version: Option, [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, [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 { [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 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 505 | pub async fn delete_tweet(&self, tweet_id: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 547 | pub async fn follow(&self, user_id: &str) -> Result { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 556 | pub async fn unfollow(&self, user_id: &str) -> Result { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 565 | pub async fn block(&self, user_id: &str) -> Result { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 571 | pub async fn unblock(&self, user_id: &str) -> Result { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 623 | pub async fn delete_dm(&self, message_id: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 666 | pub async fn get_public_keys(&self, user_ids: &[&str]) -> Result { [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, [INFO] [stdout] 66 | pub cursor_top: Option, [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; [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; [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 { [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 { [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 { [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> { [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 { [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 { [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 { [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> { [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 { [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, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 150 | pub shared_tweet_url: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 153 | pub ciphertext: Option>, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 154 | /// Sender's signing key version from field 7.9.2. [INFO] [stdout] 155 | pub sender_key_version: Option, [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, [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