[INFO] cloning repository https://github.com/qianlvzhe/translation-cli [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/qianlvzhe/translation-cli" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fqianlvzhe%2Ftranslation-cli", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fqianlvzhe%2Ftranslation-cli'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] ce3a049ba2e475af4294912dbb26327ef8a8ecb5 [INFO] checking qianlvzhe/translation-cli against master#779e19d8baa3e3625bd4fc5c85cbb2ad47b43155 for pr-147589-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fqianlvzhe%2Ftranslation-cli" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/qianlvzhe/translation-cli [INFO] finished tweaking git repo https://github.com/qianlvzhe/translation-cli [INFO] tweaked toml for git repo https://github.com/qianlvzhe/translation-cli written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/qianlvzhe/translation-cli 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/qianlvzhe/translation-cli 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 markup5ever_rcdom v0.4.0-unofficial [INFO] [stderr] Downloaded html5ever v0.35.0 [INFO] [stderr] Downloaded html5ever v0.28.0 [INFO] [stderr] Downloaded url v2.5.6 [INFO] [stderr] Downloaded monolith v2.10.1 [INFO] [stderr] Downloaded markup5ever v0.13.0 [INFO] [stderr] Downloaded xml5ever v0.19.0 [INFO] [stderr] Downloaded web_atoms v0.1.3 [INFO] [stderr] Downloaded markup5ever_rcdom v0.35.0+unofficial [INFO] [stderr] Downloaded cssparser v0.35.0 [INFO] [stderr] Downloaded xml5ever v0.35.0 [INFO] [stderr] Downloaded redb v2.6.3 [INFO] [stderr] Downloaded match_token v0.35.0 [INFO] [stderr] Downloaded compression-codecs v0.4.28 [INFO] [stderr] Downloaded async-compression v0.4.28 [INFO] [stderr] Downloaded compression-core v0.4.28 [INFO] [stderr] Downloaded markup5ever v0.35.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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] ea8fb3c5463abcd7efe61b643b856a2c024b7200884ffcfe825b4d5642836fb9 [INFO] running `Command { std: "docker" "start" "-a" "ea8fb3c5463abcd7efe61b643b856a2c024b7200884ffcfe825b4d5642836fb9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "ea8fb3c5463abcd7efe61b643b856a2c024b7200884ffcfe825b4d5642836fb9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ea8fb3c5463abcd7efe61b643b856a2c024b7200884ffcfe825b4d5642836fb9", kill_on_drop: false }` [INFO] [stdout] ea8fb3c5463abcd7efe61b643b856a2c024b7200884ffcfe825b4d5642836fb9 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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] 461a03276165d42dfedfd10c97986b14d5a2038c923ecb388d94d72f1b27d0fd [INFO] running `Command { std: "docker" "start" "-a" "461a03276165d42dfedfd10c97986b14d5a2038c923ecb388d94d72f1b27d0fd", kill_on_drop: false }` [INFO] [stderr] Compiling serde v1.0.219 [INFO] [stderr] Compiling cc v1.2.34 [INFO] [stderr] Checking precomputed-hash v0.1.1 [INFO] [stderr] Checking tracing-core v0.1.34 [INFO] [stderr] Compiling string_cache_codegen v0.5.4 [INFO] [stderr] Checking mio v1.0.4 [INFO] [stderr] Checking tendril v0.4.3 [INFO] [stderr] Compiling tokio-macros v2.5.0 [INFO] [stderr] Compiling phf_macros v0.11.3 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Checking bitflags v2.9.3 [INFO] [stderr] Checking potential_utf v0.1.2 [INFO] [stderr] Compiling html5ever v0.28.0 [INFO] [stderr] Checking compression-core v0.4.28 [INFO] [stderr] Compiling redb v2.6.3 [INFO] [stderr] Checking dtoa v1.0.10 [INFO] [stderr] Compiling match_token v0.35.0 [INFO] [stderr] Checking compression-codecs v0.4.28 [INFO] [stderr] Checking icu_collections v2.0.0 [INFO] [stderr] Compiling cssparser-macros v0.6.1 [INFO] [stderr] Checking dtoa-short v0.3.5 [INFO] [stderr] Compiling clap_derive v4.5.45 [INFO] [stderr] Checking sha2 v0.10.9 [INFO] [stderr] Checking tracing v0.1.41 [INFO] [stderr] Checking tracing-log v0.2.0 [INFO] [stderr] Checking clap_builder v4.5.44 [INFO] [stderr] Checking icu_normalizer v2.0.0 [INFO] [stderr] Checking icu_properties v2.0.1 [INFO] [stderr] Compiling web_atoms v0.1.3 [INFO] [stderr] Compiling markup5ever v0.13.0 [INFO] [stderr] Checking tokio v1.47.1 [INFO] [stderr] Checking atty v0.2.14 [INFO] [stderr] Checking thread_local v1.1.9 [INFO] [stderr] Checking tracing-subscriber v0.3.19 [INFO] [stderr] Checking phf v0.11.3 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Checking cssparser v0.35.0 [INFO] [stderr] Compiling openssl-sys v0.9.109 [INFO] [stderr] Compiling openssl v0.10.73 [INFO] [stderr] Compiling native-tls v0.2.14 [INFO] [stderr] Checking idna_adapter v1.2.1 [INFO] [stderr] Checking idna v1.1.0 [INFO] [stderr] Checking clap v4.5.45 [INFO] [stderr] Checking url v2.5.6 [INFO] [stderr] Checking string_cache v0.8.9 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking serde_json v1.0.143 [INFO] [stderr] Checking chrono v0.4.41 [INFO] [stderr] Checking xml5ever v0.19.0 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Checking markup5ever v0.35.0 [INFO] [stderr] Checking html5ever v0.35.0 [INFO] [stderr] Checking xml5ever v0.35.0 [INFO] [stderr] Checking futures v0.3.31 [INFO] [stderr] Checking markup5ever_rcdom v0.4.0-unofficial [INFO] [stderr] Checking markup5ever_rcdom v0.35.0+unofficial [INFO] [stderr] Checking tokio-util v0.7.16 [INFO] [stderr] Checking tower v0.5.2 [INFO] [stderr] Checking async-compression v0.4.28 [INFO] [stderr] Checking tokio-native-tls v0.3.1 [INFO] [stderr] Checking tower-http v0.6.6 [INFO] [stderr] Checking h2 v0.4.12 [INFO] [stderr] Checking hyper v1.7.0 [INFO] [stderr] Checking hyper-util v0.1.16 [INFO] [stderr] Checking hyper-tls v0.6.0 [INFO] [stderr] Checking reqwest v0.12.23 [INFO] [stderr] Checking monolith v2.10.1 [INFO] [stderr] Checking translation-cli v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `error::TranslationError` [INFO] [stdout] --> src/main.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 25 | use error::TranslationError; [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: `error::TranslationError` [INFO] [stdout] --> src/main.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 25 | use error::TranslationError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `BACKUP_API_URLS` is never used [INFO] [stdout] --> src/api_constants.rs:14:15 [INFO] [stdout] | [INFO] [stdout] 14 | pub const BACKUP_API_URLS: &[&str] = &[ [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DEFAULT_TARGET_LANG` is never used [INFO] [stdout] --> src/api_constants.rs:24:15 [INFO] [stdout] | [INFO] [stdout] 24 | pub const DEFAULT_TARGET_LANG: &str = "zh"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DEFAULT_MAX_RETRIES` is never used [INFO] [stdout] --> src/api_constants.rs:41:15 [INFO] [stdout] | [INFO] [stdout] 41 | pub const DEFAULT_MAX_RETRIES: usize = 3; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DEFAULT_CONCURRENT_BATCHES` is never used [INFO] [stdout] --> src/api_constants.rs:44:15 [INFO] [stdout] | [INFO] [stdout] 44 | pub const DEFAULT_CONCURRENT_BATCHES: usize = 5; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `REQUEST_TIMEOUT_SECONDS` is never used [INFO] [stdout] --> src/api_constants.rs:47:15 [INFO] [stdout] | [INFO] [stdout] 47 | pub const REQUEST_TIMEOUT_SECONDS: u64 = 30; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DEFAULT_CRAWL_TIMEOUT` is never used [INFO] [stdout] --> src/api_constants.rs:53:15 [INFO] [stdout] | [INFO] [stdout] 53 | pub const DEFAULT_CRAWL_TIMEOUT: u64 = 30; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DEFAULT_USER_AGENT` is never used [INFO] [stdout] --> src/api_constants.rs:56:15 [INFO] [stdout] | [INFO] [stdout] 56 | pub const DEFAULT_USER_AGENT: &str = "Mozilla/5.0 (compatible; TranslationCLI/0.2.0; +https://github.com/translation-cli)"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_CRAWL_RETRIES` is never used [INFO] [stdout] --> src/api_constants.rs:59:15 [INFO] [stdout] | [INFO] [stdout] 59 | pub const MAX_CRAWL_RETRIES: usize = 3; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `RETRY_DELAY_BASE_MS` is never used [INFO] [stdout] --> src/api_constants.rs:62:15 [INFO] [stdout] | [INFO] [stdout] 62 | pub const RETRY_DELAY_BASE_MS: u64 = 1000; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_PAGE_SIZE_BYTES` is never used [INFO] [stdout] --> src/api_constants.rs:65:15 [INFO] [stdout] | [INFO] [stdout] 65 | pub const MAX_PAGE_SIZE_BYTES: usize = 50 * 1024 * 1024; // 50MB [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `NETWORK_ERROR` is never used [INFO] [stdout] --> src/api_constants.rs:71:15 [INFO] [stdout] | [INFO] [stdout] 71 | pub const NETWORK_ERROR: &str = "网络连接失败,请检查网络连接或API地址"; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `AUTH_ERROR` is never used [INFO] [stdout] --> src/api_constants.rs:74:15 [INFO] [stdout] | [INFO] [stdout] 74 | pub const AUTH_ERROR: &str = "API认证失败,请检查API密钥或令牌"; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `UNSUPPORTED_LANGUAGE` is never used [INFO] [stdout] --> src/api_constants.rs:77:15 [INFO] [stdout] | [INFO] [stdout] 77 | pub const UNSUPPORTED_LANGUAGE: &str = "不支持的目标语言"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FILE_READ_ERROR` is never used [INFO] [stdout] --> src/api_constants.rs:80:15 [INFO] [stdout] | [INFO] [stdout] 80 | pub const FILE_READ_ERROR: &str = "无法读取输入文件"; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FILE_WRITE_ERROR` is never used [INFO] [stdout] --> src/api_constants.rs:83:15 [INFO] [stdout] | [INFO] [stdout] 83 | pub const FILE_WRITE_ERROR: &str = "无法写入输出文件"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HTML_PARSE_ERROR` is never used [INFO] [stdout] --> src/api_constants.rs:86:15 [INFO] [stdout] | [INFO] [stdout] 86 | pub const HTML_PARSE_ERROR: &str = "HTML内容解析失败"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SUB_SECOND_TARGET_MS` is never used [INFO] [stdout] --> src/api_constants.rs:92:15 [INFO] [stdout] | [INFO] [stdout] 92 | pub const SUB_SECOND_TARGET_MS: u128 = 1000; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MEMORY_WARNING_THRESHOLD_BYTES` is never used [INFO] [stdout] --> src/api_constants.rs:95:15 [INFO] [stdout] | [INFO] [stdout] 95 | pub const MEMORY_WARNING_THRESHOLD_BYTES: usize = 100 * 1024 * 1024; // 100MB [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_CONCURRENT_CONNECTIONS` is never used [INFO] [stdout] --> src/api_constants.rs:98:15 [INFO] [stdout] | [INFO] [stdout] 98 | pub const MAX_CONCURRENT_CONNECTIONS: usize = 10; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `target_lang`, `api_url`, `batch_size`, `max_retries`, and `is_cache_enabled` are never used [INFO] [stdout] --> src/config.rs:64:12 [INFO] [stdout] | [INFO] [stdout] 44 | impl LocalTranslationConfig { [INFO] [stdout] | --------------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 64 | pub fn target_lang(&self) -> &str { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | pub fn api_url(&self) -> &str { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 74 | pub fn batch_size(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 79 | pub fn max_retries(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub fn is_cache_enabled(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `HtmlParse`, `TranslationApi`, `Configuration`, `InputValidation`, and `TempFileManagement` are never constructed [INFO] [stdout] --> src/error.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 15 | pub enum TranslationError { [INFO] [stdout] | ---------------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 25 | HtmlParse { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 41 | TranslationApi { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | Configuration { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 59 | InputValidation { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 67 | TempFileManagement { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TranslationError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `Result` is never used [INFO] [stdout] --> src/error.rs:126:10 [INFO] [stdout] | [INFO] [stdout] 126 | pub type Result = std::result::Result; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `validate_input_file` is never used [INFO] [stdout] --> src/utils.rs:117:8 [INFO] [stdout] | [INFO] [stdout] 117 | pub fn validate_input_file(path: &PathBuf) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `calculate_content_hash` is never used [INFO] [stdout] --> src/utils.rs:223:8 [INFO] [stdout] | [INFO] [stdout] 223 | pub fn calculate_content_hash(content: &str) -> u64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `crawl_url_to_file` is never used [INFO] [stdout] --> src/web_crawler.rs:279:14 [INFO] [stdout] | [INFO] [stdout] 279 | pub async fn crawl_url_to_file>( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `crawl_url_to_string` is never used [INFO] [stdout] --> src/web_crawler.rs:289:14 [INFO] [stdout] | [INFO] [stdout] 289 | pub async fn crawl_url_to_string(url: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_valid_api_url` is never used [INFO] [stdout] --> src/api_constants.rs:118:8 [INFO] [stdout] | [INFO] [stdout] 118 | pub fn is_valid_api_url(url: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_supported_language` is never used [INFO] [stdout] --> src/api_constants.rs:123:8 [INFO] [stdout] | [INFO] [stdout] 123 | pub fn is_supported_language(lang: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `BACKUP_API_URLS` is never used [INFO] [stdout] --> src/api_constants.rs:14:15 [INFO] [stdout] | [INFO] [stdout] 14 | pub const BACKUP_API_URLS: &[&str] = &[ [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DEFAULT_TARGET_LANG` is never used [INFO] [stdout] --> src/api_constants.rs:24:15 [INFO] [stdout] | [INFO] [stdout] 24 | pub const DEFAULT_TARGET_LANG: &str = "zh"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SUPPORTED_LANGUAGES` is never used [INFO] [stdout] --> src/api_constants.rs:27:15 [INFO] [stdout] | [INFO] [stdout] 27 | pub const SUPPORTED_LANGUAGES: &[&str] = &[ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DEFAULT_MAX_RETRIES` is never used [INFO] [stdout] --> src/api_constants.rs:41:15 [INFO] [stdout] | [INFO] [stdout] 41 | pub const DEFAULT_MAX_RETRIES: usize = 3; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DEFAULT_CONCURRENT_BATCHES` is never used [INFO] [stdout] --> src/api_constants.rs:44:15 [INFO] [stdout] | [INFO] [stdout] 44 | pub const DEFAULT_CONCURRENT_BATCHES: usize = 5; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `REQUEST_TIMEOUT_SECONDS` is never used [INFO] [stdout] --> src/api_constants.rs:47:15 [INFO] [stdout] | [INFO] [stdout] 47 | pub const REQUEST_TIMEOUT_SECONDS: u64 = 30; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DEFAULT_CRAWL_TIMEOUT` is never used [INFO] [stdout] --> src/api_constants.rs:53:15 [INFO] [stdout] | [INFO] [stdout] 53 | pub const DEFAULT_CRAWL_TIMEOUT: u64 = 30; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DEFAULT_USER_AGENT` is never used [INFO] [stdout] --> src/api_constants.rs:56:15 [INFO] [stdout] | [INFO] [stdout] 56 | pub const DEFAULT_USER_AGENT: &str = "Mozilla/5.0 (compatible; TranslationCLI/0.2.0; +https://github.com/translation-cli)"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_CRAWL_RETRIES` is never used [INFO] [stdout] --> src/api_constants.rs:59:15 [INFO] [stdout] | [INFO] [stdout] 59 | pub const MAX_CRAWL_RETRIES: usize = 3; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `RETRY_DELAY_BASE_MS` is never used [INFO] [stdout] --> src/api_constants.rs:62:15 [INFO] [stdout] | [INFO] [stdout] 62 | pub const RETRY_DELAY_BASE_MS: u64 = 1000; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_PAGE_SIZE_BYTES` is never used [INFO] [stdout] --> src/api_constants.rs:65:15 [INFO] [stdout] | [INFO] [stdout] 65 | pub const MAX_PAGE_SIZE_BYTES: usize = 50 * 1024 * 1024; // 50MB [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `NETWORK_ERROR` is never used [INFO] [stdout] --> src/api_constants.rs:71:15 [INFO] [stdout] | [INFO] [stdout] 71 | pub const NETWORK_ERROR: &str = "网络连接失败,请检查网络连接或API地址"; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `AUTH_ERROR` is never used [INFO] [stdout] --> src/api_constants.rs:74:15 [INFO] [stdout] | [INFO] [stdout] 74 | pub const AUTH_ERROR: &str = "API认证失败,请检查API密钥或令牌"; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `UNSUPPORTED_LANGUAGE` is never used [INFO] [stdout] --> src/api_constants.rs:77:15 [INFO] [stdout] | [INFO] [stdout] 77 | pub const UNSUPPORTED_LANGUAGE: &str = "不支持的目标语言"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FILE_READ_ERROR` is never used [INFO] [stdout] --> src/api_constants.rs:80:15 [INFO] [stdout] | [INFO] [stdout] 80 | pub const FILE_READ_ERROR: &str = "无法读取输入文件"; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FILE_WRITE_ERROR` is never used [INFO] [stdout] --> src/api_constants.rs:83:15 [INFO] [stdout] | [INFO] [stdout] 83 | pub const FILE_WRITE_ERROR: &str = "无法写入输出文件"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HTML_PARSE_ERROR` is never used [INFO] [stdout] --> src/api_constants.rs:86:15 [INFO] [stdout] | [INFO] [stdout] 86 | pub const HTML_PARSE_ERROR: &str = "HTML内容解析失败"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SUB_SECOND_TARGET_MS` is never used [INFO] [stdout] --> src/api_constants.rs:92:15 [INFO] [stdout] | [INFO] [stdout] 92 | pub const SUB_SECOND_TARGET_MS: u128 = 1000; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MEMORY_WARNING_THRESHOLD_BYTES` is never used [INFO] [stdout] --> src/api_constants.rs:95:15 [INFO] [stdout] | [INFO] [stdout] 95 | pub const MEMORY_WARNING_THRESHOLD_BYTES: usize = 100 * 1024 * 1024; // 100MB [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_CONCURRENT_CONNECTIONS` is never used [INFO] [stdout] --> src/api_constants.rs:98:15 [INFO] [stdout] | [INFO] [stdout] 98 | pub const MAX_CONCURRENT_CONNECTIONS: usize = 10; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `target_lang`, `api_url`, `batch_size`, `max_retries`, and `is_cache_enabled` are never used [INFO] [stdout] --> src/config.rs:64:12 [INFO] [stdout] | [INFO] [stdout] 44 | impl LocalTranslationConfig { [INFO] [stdout] | --------------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 64 | pub fn target_lang(&self) -> &str { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | pub fn api_url(&self) -> &str { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 74 | pub fn batch_size(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 79 | pub fn max_retries(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub fn is_cache_enabled(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `TranslationError` is never used [INFO] [stdout] --> src/error.rs:15:10 [INFO] [stdout] | [INFO] [stdout] 15 | pub enum TranslationError { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `Result` is never used [INFO] [stdout] --> src/error.rs:126:10 [INFO] [stdout] | [INFO] [stdout] 126 | pub type Result = std::result::Result; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `validate_input_file` is never used [INFO] [stdout] --> src/utils.rs:117:8 [INFO] [stdout] | [INFO] [stdout] 117 | pub fn validate_input_file(path: &PathBuf) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `calculate_content_hash` is never used [INFO] [stdout] --> src/utils.rs:223:8 [INFO] [stdout] | [INFO] [stdout] 223 | pub fn calculate_content_hash(content: &str) -> u64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `output_to` and `user_agent` are never used [INFO] [stdout] --> src/web_crawler.rs:159:12 [INFO] [stdout] | [INFO] [stdout] 63 | impl WebCrawler { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 159 | pub fn output_to>(mut self, path: P) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 173 | pub fn user_agent(mut self, user_agent: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `crawl_url_to_file` is never used [INFO] [stdout] --> src/web_crawler.rs:279:14 [INFO] [stdout] | [INFO] [stdout] 279 | pub async fn crawl_url_to_file>( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `crawl_url_to_string` is never used [INFO] [stdout] --> src/web_crawler.rs:289:14 [INFO] [stdout] | [INFO] [stdout] 289 | pub async fn crawl_url_to_string(url: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/temp_manager.rs:93:12 [INFO] [stdout] | [INFO] [stdout] 50 | impl TempManager { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 93 | pub fn create_temp_dir(&mut self, name: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 123 | pub fn copy_to_temp>(&mut self, source_path: P, suffix: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 143 | pub fn move_to_temp>(&mut self, source_path: P, suffix: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 188 | pub fn get_work_dir(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 194 | pub fn list_temp_files(&self) -> &[PathBuf] { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 199 | pub fn list_temp_dirs(&self) -> &[PathBuf] { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 204 | pub fn cleanup_file>(&mut self, path: P) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 220 | pub fn cleanup_dir>(&mut self, path: P) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_temp_file_with_content` is never used [INFO] [stdout] --> src/temp_manager.rs:325:8 [INFO] [stdout] | [INFO] [stdout] 325 | pub fn create_temp_file_with_content(content: &str, suffix: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_temp_work_dir` is never used [INFO] [stdout] --> src/temp_manager.rs:331:8 [INFO] [stdout] | [INFO] [stdout] 331 | pub fn create_temp_work_dir() -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 30.25s [INFO] running `Command { std: "docker" "inspect" "461a03276165d42dfedfd10c97986b14d5a2038c923ecb388d94d72f1b27d0fd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "461a03276165d42dfedfd10c97986b14d5a2038c923ecb388d94d72f1b27d0fd", kill_on_drop: false }` [INFO] [stdout] 461a03276165d42dfedfd10c97986b14d5a2038c923ecb388d94d72f1b27d0fd