[INFO] cloning repository https://github.com/sadministrator/ziggurat [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/sadministrator/ziggurat" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsadministrator%2Fziggurat", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsadministrator%2Fziggurat'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] ae512a0188a61ce8cab48cf7fdd581c461367e04 [INFO] checking sadministrator/ziggurat against master#779e19d8baa3e3625bd4fc5c85cbb2ad47b43155 for pr-147589-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsadministrator%2Fziggurat" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/sadministrator/ziggurat [INFO] finished tweaking git repo https://github.com/sadministrator/ziggurat [INFO] tweaked toml for git repo https://github.com/sadministrator/ziggurat written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/sadministrator/ziggurat on toolchain 779e19d8baa3e3625bd4fc5c85cbb2ad47b43155 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/sadministrator/ziggurat 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" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded upon v0.7.1 [INFO] [stderr] Downloaded tl v0.7.8 [INFO] [stderr] Downloaded epub-builder v0.7.4 [INFO] [stderr] Downloaded epub v2.1.2 [INFO] [stderr] Downloaded lopdf v0.34.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 8d07c31defe299aa3ad1a7d47614baaf33f6cdb36d9bd2024cb6b1bd1adaf7bd [INFO] running `Command { std: "docker" "start" "-a" "8d07c31defe299aa3ad1a7d47614baaf33f6cdb36d9bd2024cb6b1bd1adaf7bd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "8d07c31defe299aa3ad1a7d47614baaf33f6cdb36d9bd2024cb6b1bd1adaf7bd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "8d07c31defe299aa3ad1a7d47614baaf33f6cdb36d9bd2024cb6b1bd1adaf7bd", kill_on_drop: false }` [INFO] [stdout] 8d07c31defe299aa3ad1a7d47614baaf33f6cdb36d9bd2024cb6b1bd1adaf7bd [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] a460a209265b153caa781bdb0d2dfb4b6ba139ec0204cac2698e32cc05a6a7de [INFO] running `Command { std: "docker" "start" "-a" "a460a209265b153caa781bdb0d2dfb4b6ba139ec0204cac2698e32cc05a6a7de", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.159 [INFO] [stderr] Checking bytes v1.7.2 [INFO] [stderr] Compiling syn v2.0.79 [INFO] [stderr] Compiling cc v1.1.28 [INFO] [stderr] Checking hashbrown v0.15.0 [INFO] [stderr] Checking tracing-core v0.1.32 [INFO] [stderr] Checking miniz_oxide v0.8.0 [INFO] [stderr] Checking http v1.1.0 [INFO] [stderr] Compiling openssl v0.10.66 [INFO] [stderr] Checking flate2 v1.0.34 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling indexmap v2.6.0 [INFO] [stderr] Compiling rustix v0.38.37 [INFO] [stderr] Checking signal-hook-registry v1.4.2 [INFO] [stderr] Checking mio v1.0.2 [INFO] [stderr] Checking parking_lot_core v0.9.10 [INFO] [stderr] Checking socket2 v0.5.7 [INFO] [stderr] Checking parking_lot v0.12.3 [INFO] [stderr] Compiling toml_edit v0.22.22 [INFO] [stderr] Checking signal-hook v0.3.17 [INFO] [stderr] Checking http-body v1.0.1 [INFO] [stderr] Checking mio v0.8.11 [INFO] [stderr] Compiling openssl-sys v0.9.103 [INFO] [stderr] Checking unicode-normalization v0.1.24 [INFO] [stderr] Compiling zip v1.1.4 [INFO] [stderr] Checking unicode-bidi v0.3.17 [INFO] [stderr] Checking chrono v0.4.38 [INFO] [stderr] Checking signal-hook-mio v0.2.4 [INFO] [stderr] Compiling native-tls v0.2.12 [INFO] [stderr] Checking regex-automata v0.4.8 [INFO] [stderr] Checking digest v0.10.7 [INFO] [stderr] Checking idna v0.5.0 [INFO] [stderr] Checking getrandom v0.2.15 [INFO] [stderr] Checking either v1.13.0 [INFO] [stderr] Checking rustls-pki-types v1.9.0 [INFO] [stderr] Checking rayon v1.10.0 [INFO] [stderr] Checking url v2.5.2 [INFO] [stderr] Checking rustls-pemfile v2.2.0 [INFO] [stderr] Checking zip v0.6.6 [INFO] [stderr] Checking nom v7.1.3 [INFO] [stderr] Checking uuid v1.10.0 [INFO] [stderr] Checking eyre v0.6.12 [INFO] [stderr] Checking crossterm v0.25.0 [INFO] [stderr] Checking md-5 v0.10.6 [INFO] [stderr] Checking tracing-log v0.2.0 [INFO] [stderr] Compiling proc-macro-crate v3.2.0 [INFO] [stderr] Checking tempfile v3.13.0 [INFO] [stderr] Checking sync_wrapper v1.0.1 [INFO] [stderr] Checking thread_local v1.1.8 [INFO] [stderr] Checking ipnet v2.10.1 [INFO] [stderr] Checking weezl v0.1.8 [INFO] [stderr] Checking xml-rs v0.8.22 [INFO] [stderr] Checking tui v0.19.0 [INFO] [stderr] Checking regex v1.11.0 [INFO] [stderr] Checking tracing-subscriber v0.3.18 [INFO] [stderr] Checking crossterm v0.28.1 [INFO] [stderr] Checking tl v0.7.8 [INFO] [stderr] Checking lopdf v0.34.0 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling tokio-macros v2.4.0 [INFO] [stderr] Compiling tracing-attributes v0.1.27 [INFO] [stderr] Compiling serde_derive v1.0.210 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling num_enum_derive v0.7.3 [INFO] [stderr] Compiling thiserror-impl v1.0.64 [INFO] [stderr] Checking tokio v1.40.0 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Checking num_enum v0.7.3 [INFO] [stderr] Compiling clap_derive v4.5.18 [INFO] [stderr] Checking thiserror v1.0.64 [INFO] [stderr] Checking tracing v0.1.40 [INFO] [stderr] Checking epub v2.1.2 [INFO] [stderr] Checking clap v4.5.20 [INFO] [stderr] Checking serde v1.0.210 [INFO] [stderr] Checking http-body-util v0.1.2 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Checking futures v0.3.31 [INFO] [stderr] Checking tokio-util v0.7.12 [INFO] [stderr] Checking tokio-native-tls v0.3.1 [INFO] [stderr] Checking h2 v0.4.6 [INFO] [stderr] Checking upon v0.7.1 [INFO] [stderr] Checking serde_json v1.0.128 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking epub-builder v0.7.4 [INFO] [stderr] Checking hyper v1.4.1 [INFO] [stderr] Checking hyper-util v0.1.9 [INFO] [stderr] Checking hyper-tls v0.6.0 [INFO] [stderr] Checking reqwest v0.12.8 [INFO] [stderr] Checking ziggurat v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused imports: `google::translate_text` and `llm::translate` [INFO] [stdout] --> src/main.rs:15:17 [INFO] [stdout] | [INFO] [stdout] 15 | use providers::{google::translate_text, llm::translate}; [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 imports: `google::translate_text` and `llm::translate` [INFO] [stdout] --> src/main.rs:15:17 [INFO] [stdout] | [INFO] [stdout] 15 | use providers::{google::translate_text, llm::translate}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable statement [INFO] [stdout] --> src/frontend/tui.rs:228:13 [INFO] [stdout] | [INFO] [stdout] 210 | / match state.selected_option { [INFO] [stdout] 211 | | MenuOption::Providers => { [INFO] [stdout] 212 | | match &state.selected_provider { [INFO] [stdout] 213 | | ProviderOption::Add => { [INFO] [stdout] ... | [INFO] [stdout] 225 | | MenuOption::Language => todo!(), [INFO] [stdout] 226 | | }; [INFO] [stdout] | |_____________- any code following this `match` expression is unreachable, as all arms diverge [INFO] [stdout] 227 | [INFO] [stdout] 228 | let mut buffer = String::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable statement [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable statement [INFO] [stdout] --> src/frontend/tui.rs:228:13 [INFO] [stdout] | [INFO] [stdout] 210 | / match state.selected_option { [INFO] [stdout] 211 | | MenuOption::Providers => { [INFO] [stdout] 212 | | match &state.selected_provider { [INFO] [stdout] 213 | | ProviderOption::Add => { [INFO] [stdout] ... | [INFO] [stdout] 225 | | MenuOption::Language => todo!(), [INFO] [stdout] 226 | | }; [INFO] [stdout] | |_____________- any code following this `match` expression is unreachable, as all arms diverge [INFO] [stdout] 227 | [INFO] [stdout] 228 | let mut buffer = String::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable statement [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable statement [INFO] [stdout] --> src/main.rs:64:5 [INFO] [stdout] | [INFO] [stdout] 54 | / loop { [INFO] [stdout] 55 | | render_app_state(&mut terminal, app_state.clone())?; [INFO] [stdout] 56 | | [INFO] [stdout] 57 | | if let Event::Key(key) = event::read()? { [INFO] [stdout] ... | [INFO] [stdout] 61 | | terminal.flush()?; [INFO] [stdout] 62 | | } [INFO] [stdout] | |_____- any code following this expression is unreachable [INFO] [stdout] 63 | [INFO] [stdout] 64 | disable_raw_mode()?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ unreachable statement [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable statement [INFO] [stdout] --> src/main.rs:64:5 [INFO] [stdout] | [INFO] [stdout] 54 | / loop { [INFO] [stdout] 55 | | render_app_state(&mut terminal, app_state.clone())?; [INFO] [stdout] 56 | | [INFO] [stdout] 57 | | if let Event::Key(key) = event::read()? { [INFO] [stdout] ... | [INFO] [stdout] 61 | | terminal.flush()?; [INFO] [stdout] 62 | | } [INFO] [stdout] | |_____- any code following this expression is unreachable [INFO] [stdout] 63 | [INFO] [stdout] 64 | disable_raw_mode()?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ unreachable statement [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/frontend/tui.rs:217:63 [INFO] [stdout] | [INFO] [stdout] 217 | ProviderOption::Entry(ProviderEntry { name, provider }) => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `name: _` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `provider` [INFO] [stdout] --> src/frontend/tui.rs:217:69 [INFO] [stdout] | [INFO] [stdout] 217 | ProviderOption::Entry(ProviderEntry { name, provider }) => { [INFO] [stdout] | ^^^^^^^^ help: try ignoring the field: `provider: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `buffer` [INFO] [stdout] --> src/frontend/tui.rs:228:17 [INFO] [stdout] | [INFO] [stdout] 228 | let mut buffer = String::new(); [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_buffer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/frontend/tui.rs:229:13 [INFO] [stdout] | [INFO] [stdout] 229 | io::stdin().read_line(&mut buffer)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/frontend/tui.rs:217:63 [INFO] [stdout] | [INFO] [stdout] 217 | ProviderOption::Entry(ProviderEntry { name, provider }) => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `name: _` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `provider` [INFO] [stdout] --> src/frontend/tui.rs:217:69 [INFO] [stdout] | [INFO] [stdout] 217 | ProviderOption::Entry(ProviderEntry { name, provider }) => { [INFO] [stdout] | ^^^^^^^^ help: try ignoring the field: `provider: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `buffer` [INFO] [stdout] --> src/frontend/tui.rs:228:17 [INFO] [stdout] | [INFO] [stdout] 228 | let mut buffer = String::new(); [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_buffer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/frontend/tui.rs:229:13 [INFO] [stdout] | [INFO] [stdout] 229 | io::stdin().read_line(&mut buffer)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:52:9 [INFO] [stdout] | [INFO] [stdout] 52 | let mut app_state = Arc::new(Mutex::new(AppState::new())); [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/main.rs:64:5 [INFO] [stdout] | [INFO] [stdout] 64 | disable_raw_mode()?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/main.rs:65:5 [INFO] [stdout] | [INFO] [stdout] 65 | execute!(terminal.backend_mut(), LeaveAlternateScreen)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `args` [INFO] [stdout] --> src/main.rs:67:9 [INFO] [stdout] | [INFO] [stdout] 67 | let args = Args::parse(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_args` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `api_key` [INFO] [stdout] --> src/main.rs:68:9 [INFO] [stdout] | [INFO] [stdout] 68 | let api_key = if let Some(key) = args.api_key { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_api_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/main.rs:68:31 [INFO] [stdout] | [INFO] [stdout] 68 | let api_key = if let Some(key) = args.api_key { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `path` [INFO] [stdout] --> src/main.rs:70:24 [INFO] [stdout] | [INFO] [stdout] 70 | } else if let Some(path) = args.config { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `contents` [INFO] [stdout] --> src/main.rs:71:13 [INFO] [stdout] | [INFO] [stdout] 71 | let contents = fs::read_to_string(path)?; [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_contents` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/main.rs:71:24 [INFO] [stdout] | [INFO] [stdout] 71 | let contents = fs::read_to_string(path)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `config` [INFO] [stdout] --> src/main.rs:72:13 [INFO] [stdout] | [INFO] [stdout] 72 | let config: Value = serde_json::from_str(&contents)?; [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/main.rs:72:29 [INFO] [stdout] | [INFO] [stdout] 72 | let config: Value = serde_json::from_str(&contents)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/main.rs:74:9 [INFO] [stdout] | [INFO] [stdout] 74 | / config["api_key"] [INFO] [stdout] 75 | | .as_str() [INFO] [stdout] 76 | | .ok_or(eyre!("No API key value in config file"))? [INFO] [stdout] | |_____________________________________________________________^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/main.rs:80:9 [INFO] [stdout] | [INFO] [stdout] 80 | env::var("ZIGGURAT_API_KEY")? [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `request_options` [INFO] [stdout] --> src/main.rs:82:9 [INFO] [stdout] | [INFO] [stdout] 82 | let request_options = RequestOptions::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_request_options` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `subscriber` [INFO] [stdout] --> src/main.rs:84:9 [INFO] [stdout] | [INFO] [stdout] 84 | let subscriber = FmtSubscriber::builder() [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_subscriber` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/main.rs:91:5 [INFO] [stdout] | [INFO] [stdout] 91 | tracing::subscriber::set_global_default(subscriber)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `file_type` [INFO] [stdout] --> src/main.rs:93:9 [INFO] [stdout] | [INFO] [stdout] 93 | let file_type = get_file_type(&args.input)?; [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/main.rs:93:21 [INFO] [stdout] | [INFO] [stdout] 93 | let file_type = get_file_type(&args.input)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `doc` [INFO] [stdout] --> src/main.rs:103:17 [INFO] [stdout] | [INFO] [stdout] 103 | let doc = read_pdf(&args.input)?; [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_doc` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/main.rs:103:23 [INFO] [stdout] | [INFO] [stdout] 103 | let doc = read_pdf(&args.input)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pdf_options` [INFO] [stdout] --> src/main.rs:104:17 [INFO] [stdout] | [INFO] [stdout] 104 | let pdf_options = PdfOptions::default(); [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pdf_options` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `edited` [INFO] [stdout] --> src/main.rs:105:17 [INFO] [stdout] | [INFO] [stdout] 105 | let edited = edit_pdf(doc, request_options, pdf_options, |snippets| { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_edited` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/main.rs:105:26 [INFO] [stdout] | [INFO] [stdout] 105 | let edited = edit_pdf(doc, request_options, pdf_options, |snippets| { [INFO] [stdout] | __________________________^ [INFO] [stdout] 106 | | // translate_text(snippets, args.to.clone(), api_key.clone()) [INFO] [stdout] 107 | | std::future::ready(Ok(snippets)) [INFO] [stdout] 108 | | }) [INFO] [stdout] 109 | | .await?; [INFO] [stdout] | |___________________^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/main.rs:110:13 [INFO] [stdout] | [INFO] [stdout] 110 | write_pdf(edited, &args.output)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `doc` [INFO] [stdout] --> src/main.rs:113:17 [INFO] [stdout] | [INFO] [stdout] 113 | let doc = read_epub(&args.input)?; [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_doc` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/main.rs:113:23 [INFO] [stdout] | [INFO] [stdout] 113 | let doc = read_epub(&args.input)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `edited` [INFO] [stdout] --> src/main.rs:114:17 [INFO] [stdout] | [INFO] [stdout] 114 | let edited = edit_epub(doc, request_options, |snippets| { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_edited` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/main.rs:114:26 [INFO] [stdout] | [INFO] [stdout] 114 | let edited = edit_epub(doc, request_options, |snippets| { [INFO] [stdout] | __________________________^ [INFO] [stdout] 115 | | // translate_text(snippets, args.to.clone(), api_key.clone()) [INFO] [stdout] 116 | | std::future::ready(Ok(snippets)) [INFO] [stdout] 117 | | }) [INFO] [stdout] 118 | | .await?; [INFO] [stdout] | |___________________^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/main.rs:119:13 [INFO] [stdout] | [INFO] [stdout] 119 | write_epub(edited, &args.output)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `GoogleTranslate` and `Llm` are never constructed [INFO] [stdout] --> src/frontend/cli.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 5 | pub enum Provider { [INFO] [stdout] | -------- variants in this enum [INFO] [stdout] 6 | GoogleTranslate { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 10 | Llm { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `V2` and `V3` are never constructed [INFO] [stdout] --> src/frontend/cli.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 17 | pub enum ApiVersion { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] 18 | V2, [INFO] [stdout] | ^^ [INFO] [stdout] 19 | V3 { project_id: String }, [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Entry` is never constructed [INFO] [stdout] --> src/frontend/tui.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 29 | enum ProviderOption { [INFO] [stdout] | -------------- variant in this enum [INFO] [stdout] 30 | Add, [INFO] [stdout] 31 | Entry(ProviderEntry), [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `confirmed_provider_idx`, `config_path`, `input_file`, `output_file`, and `language_code` are never read [INFO] [stdout] --> src/frontend/tui.rs:88:5 [INFO] [stdout] | [INFO] [stdout] 85 | pub struct AppState { [INFO] [stdout] | -------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 88 | confirmed_provider_idx: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 89 | providers: Vec, [INFO] [stdout] 90 | config_path: Option, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 91 | input_file: String, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 92 | output_file: String, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 93 | language_code: String, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TranslateRequest` is never constructed [INFO] [stdout] --> src/providers/google.rs:9:8 [INFO] [stdout] | [INFO] [stdout] 9 | struct TranslateRequest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TranslateResponse` is never constructed [INFO] [stdout] --> src/providers/google.rs:15:8 [INFO] [stdout] | [INFO] [stdout] 15 | struct TranslateResponse { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TranslateData` is never constructed [INFO] [stdout] --> src/providers/google.rs:20:8 [INFO] [stdout] | [INFO] [stdout] 20 | struct TranslateData { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Translation` is never constructed [INFO] [stdout] --> src/providers/google.rs:25:8 [INFO] [stdout] | [INFO] [stdout] 25 | struct Translation { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `translate_pdf` is never used [INFO] [stdout] --> src/providers/google.rs:30:10 [INFO] [stdout] | [INFO] [stdout] 30 | async fn translate_pdf( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `translate_text` is never used [INFO] [stdout] --> src/providers/google.rs:78:14 [INFO] [stdout] | [INFO] [stdout] 78 | pub async fn translate_text( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_whitespace` is never used [INFO] [stdout] --> src/providers/google.rs:114:4 [INFO] [stdout] | [INFO] [stdout] 114 | fn is_whitespace(snippet: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Request` is never constructed [INFO] [stdout] --> src/providers/llm.rs:6:8 [INFO] [stdout] | [INFO] [stdout] 6 | struct Request { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Response` is never constructed [INFO] [stdout] --> src/providers/llm.rs:13:8 [INFO] [stdout] | [INFO] [stdout] 13 | struct Response { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Choice` is never constructed [INFO] [stdout] --> src/providers/llm.rs:22:8 [INFO] [stdout] | [INFO] [stdout] 22 | struct Choice { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Logprobs` is never constructed [INFO] [stdout] --> src/providers/llm.rs:30:8 [INFO] [stdout] | [INFO] [stdout] 30 | struct Logprobs { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `send_request` is never used [INFO] [stdout] --> src/providers/llm.rs:35:10 [INFO] [stdout] | [INFO] [stdout] 35 | async fn send_request(endpoint: &str, api_key: &str, request: &Request) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `translate` is never used [INFO] [stdout] --> src/providers/llm.rs:57:14 [INFO] [stdout] | [INFO] [stdout] 57 | pub async fn translate(snippet: &str, to: &str, endpoint: &str, api_key: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/frontend/tui.rs:262:23 [INFO] [stdout] | [INFO] [stdout] 262 | fn styled_list(title: &str, items: Vec, is_selected: bool) -> List { [INFO] [stdout] | ^^^^ the lifetime is elided here ^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 262 | fn styled_list(title: &str, items: Vec, is_selected: bool) -> List<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:52:9 [INFO] [stdout] | [INFO] [stdout] 52 | let mut app_state = Arc::new(Mutex::new(AppState::new())); [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/main.rs:64:5 [INFO] [stdout] | [INFO] [stdout] 64 | disable_raw_mode()?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/main.rs:65:5 [INFO] [stdout] | [INFO] [stdout] 65 | execute!(terminal.backend_mut(), LeaveAlternateScreen)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `args` [INFO] [stdout] --> src/main.rs:67:9 [INFO] [stdout] | [INFO] [stdout] 67 | let args = Args::parse(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_args` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `api_key` [INFO] [stdout] --> src/main.rs:68:9 [INFO] [stdout] | [INFO] [stdout] 68 | let api_key = if let Some(key) = args.api_key { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_api_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/main.rs:68:31 [INFO] [stdout] | [INFO] [stdout] 68 | let api_key = if let Some(key) = args.api_key { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `path` [INFO] [stdout] --> src/main.rs:70:24 [INFO] [stdout] | [INFO] [stdout] 70 | } else if let Some(path) = args.config { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `contents` [INFO] [stdout] --> src/main.rs:71:13 [INFO] [stdout] | [INFO] [stdout] 71 | let contents = fs::read_to_string(path)?; [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_contents` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/main.rs:71:24 [INFO] [stdout] | [INFO] [stdout] 71 | let contents = fs::read_to_string(path)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `config` [INFO] [stdout] --> src/main.rs:72:13 [INFO] [stdout] | [INFO] [stdout] 72 | let config: Value = serde_json::from_str(&contents)?; [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/main.rs:72:29 [INFO] [stdout] | [INFO] [stdout] 72 | let config: Value = serde_json::from_str(&contents)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/main.rs:74:9 [INFO] [stdout] | [INFO] [stdout] 74 | / config["api_key"] [INFO] [stdout] 75 | | .as_str() [INFO] [stdout] 76 | | .ok_or(eyre!("No API key value in config file"))? [INFO] [stdout] | |_____________________________________________________________^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/main.rs:80:9 [INFO] [stdout] | [INFO] [stdout] 80 | env::var("ZIGGURAT_API_KEY")? [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `request_options` [INFO] [stdout] --> src/main.rs:82:9 [INFO] [stdout] | [INFO] [stdout] 82 | let request_options = RequestOptions::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_request_options` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `subscriber` [INFO] [stdout] --> src/main.rs:84:9 [INFO] [stdout] | [INFO] [stdout] 84 | let subscriber = FmtSubscriber::builder() [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_subscriber` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/main.rs:91:5 [INFO] [stdout] | [INFO] [stdout] 91 | tracing::subscriber::set_global_default(subscriber)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `file_type` [INFO] [stdout] --> src/main.rs:93:9 [INFO] [stdout] | [INFO] [stdout] 93 | let file_type = get_file_type(&args.input)?; [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/main.rs:93:21 [INFO] [stdout] | [INFO] [stdout] 93 | let file_type = get_file_type(&args.input)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `doc` [INFO] [stdout] --> src/main.rs:103:17 [INFO] [stdout] | [INFO] [stdout] 103 | let doc = read_pdf(&args.input)?; [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_doc` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/main.rs:103:23 [INFO] [stdout] | [INFO] [stdout] 103 | let doc = read_pdf(&args.input)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pdf_options` [INFO] [stdout] --> src/main.rs:104:17 [INFO] [stdout] | [INFO] [stdout] 104 | let pdf_options = PdfOptions::default(); [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pdf_options` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `edited` [INFO] [stdout] --> src/main.rs:105:17 [INFO] [stdout] | [INFO] [stdout] 105 | let edited = edit_pdf(doc, request_options, pdf_options, |snippets| { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_edited` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/main.rs:105:26 [INFO] [stdout] | [INFO] [stdout] 105 | let edited = edit_pdf(doc, request_options, pdf_options, |snippets| { [INFO] [stdout] | __________________________^ [INFO] [stdout] 106 | | // translate_text(snippets, args.to.clone(), api_key.clone()) [INFO] [stdout] 107 | | std::future::ready(Ok(snippets)) [INFO] [stdout] 108 | | }) [INFO] [stdout] 109 | | .await?; [INFO] [stdout] | |___________________^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/main.rs:110:13 [INFO] [stdout] | [INFO] [stdout] 110 | write_pdf(edited, &args.output)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `doc` [INFO] [stdout] --> src/main.rs:113:17 [INFO] [stdout] | [INFO] [stdout] 113 | let doc = read_epub(&args.input)?; [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_doc` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/main.rs:113:23 [INFO] [stdout] | [INFO] [stdout] 113 | let doc = read_epub(&args.input)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `edited` [INFO] [stdout] --> src/main.rs:114:17 [INFO] [stdout] | [INFO] [stdout] 114 | let edited = edit_epub(doc, request_options, |snippets| { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_edited` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/main.rs:114:26 [INFO] [stdout] | [INFO] [stdout] 114 | let edited = edit_epub(doc, request_options, |snippets| { [INFO] [stdout] | __________________________^ [INFO] [stdout] 115 | | // translate_text(snippets, args.to.clone(), api_key.clone()) [INFO] [stdout] 116 | | std::future::ready(Ok(snippets)) [INFO] [stdout] 117 | | }) [INFO] [stdout] 118 | | .await?; [INFO] [stdout] | |___________________^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/main.rs:119:13 [INFO] [stdout] | [INFO] [stdout] 119 | write_epub(edited, &args.output)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `GoogleTranslate` and `Llm` are never constructed [INFO] [stdout] --> src/frontend/cli.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 5 | pub enum Provider { [INFO] [stdout] | -------- variants in this enum [INFO] [stdout] 6 | GoogleTranslate { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 10 | Llm { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `V2` and `V3` are never constructed [INFO] [stdout] --> src/frontend/cli.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 17 | pub enum ApiVersion { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] 18 | V2, [INFO] [stdout] | ^^ [INFO] [stdout] 19 | V3 { project_id: String }, [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Entry` is never constructed [INFO] [stdout] --> src/frontend/tui.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 29 | enum ProviderOption { [INFO] [stdout] | -------------- variant in this enum [INFO] [stdout] 30 | Add, [INFO] [stdout] 31 | Entry(ProviderEntry), [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `confirmed_provider_idx`, `config_path`, `input_file`, `output_file`, and `language_code` are never read [INFO] [stdout] --> src/frontend/tui.rs:88:5 [INFO] [stdout] | [INFO] [stdout] 85 | pub struct AppState { [INFO] [stdout] | -------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 88 | confirmed_provider_idx: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 89 | providers: Vec, [INFO] [stdout] 90 | config_path: Option, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 91 | input_file: String, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 92 | output_file: String, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 93 | language_code: String, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TranslateRequest` is never constructed [INFO] [stdout] --> src/providers/google.rs:9:8 [INFO] [stdout] | [INFO] [stdout] 9 | struct TranslateRequest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TranslateResponse` is never constructed [INFO] [stdout] --> src/providers/google.rs:15:8 [INFO] [stdout] | [INFO] [stdout] 15 | struct TranslateResponse { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TranslateData` is never constructed [INFO] [stdout] --> src/providers/google.rs:20:8 [INFO] [stdout] | [INFO] [stdout] 20 | struct TranslateData { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Translation` is never constructed [INFO] [stdout] --> src/providers/google.rs:25:8 [INFO] [stdout] | [INFO] [stdout] 25 | struct Translation { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `translate_pdf` is never used [INFO] [stdout] --> src/providers/google.rs:30:10 [INFO] [stdout] | [INFO] [stdout] 30 | async fn translate_pdf( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `translate_text` is never used [INFO] [stdout] --> src/providers/google.rs:78:14 [INFO] [stdout] | [INFO] [stdout] 78 | pub async fn translate_text( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_whitespace` is never used [INFO] [stdout] --> src/providers/google.rs:114:4 [INFO] [stdout] | [INFO] [stdout] 114 | fn is_whitespace(snippet: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Request` is never constructed [INFO] [stdout] --> src/providers/llm.rs:6:8 [INFO] [stdout] | [INFO] [stdout] 6 | struct Request { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Response` is never constructed [INFO] [stdout] --> src/providers/llm.rs:13:8 [INFO] [stdout] | [INFO] [stdout] 13 | struct Response { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Choice` is never constructed [INFO] [stdout] --> src/providers/llm.rs:22:8 [INFO] [stdout] | [INFO] [stdout] 22 | struct Choice { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Logprobs` is never constructed [INFO] [stdout] --> src/providers/llm.rs:30:8 [INFO] [stdout] | [INFO] [stdout] 30 | struct Logprobs { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `send_request` is never used [INFO] [stdout] --> src/providers/llm.rs:35:10 [INFO] [stdout] | [INFO] [stdout] 35 | async fn send_request(endpoint: &str, api_key: &str, request: &Request) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `translate` is never used [INFO] [stdout] --> src/providers/llm.rs:57:14 [INFO] [stdout] | [INFO] [stdout] 57 | pub async fn translate(snippet: &str, to: &str, endpoint: &str, api_key: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/frontend/tui.rs:262:23 [INFO] [stdout] | [INFO] [stdout] 262 | fn styled_list(title: &str, items: Vec, is_selected: bool) -> List { [INFO] [stdout] | ^^^^ the lifetime is elided here ^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 262 | fn styled_list(title: &str, items: Vec, is_selected: bool) -> List<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 12s [INFO] running `Command { std: "docker" "inspect" "a460a209265b153caa781bdb0d2dfb4b6ba139ec0204cac2698e32cc05a6a7de", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a460a209265b153caa781bdb0d2dfb4b6ba139ec0204cac2698e32cc05a6a7de", kill_on_drop: false }` [INFO] [stdout] a460a209265b153caa781bdb0d2dfb4b6ba139ec0204cac2698e32cc05a6a7de