[INFO] cloning repository https://github.com/myg133/real_trans [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/myg133/real_trans" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmyg133%2Freal_trans", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmyg133%2Freal_trans'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] d772d68e40acca2e305930f75cbff7d3f631b3e4 [INFO] checking myg133/real_trans against try#54cf65b8d066c082e536455049b95943cf30378f for pr-151920 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmyg133%2Freal_trans" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/myg133/real_trans [INFO] removed 0 missing examples [INFO] finished tweaking git repo https://github.com/myg133/real_trans [INFO] tweaked toml for git repo https://github.com/myg133/real_trans written to /workspace/builds/worker-0-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/myg133/real_trans on toolchain 54cf65b8d066c082e536455049b95943cf30378f [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+54cf65b8d066c082e536455049b95943cf30378f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/myg133/real_trans 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" "+54cf65b8d066c082e536455049b95943cf30378f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/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:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+54cf65b8d066c082e536455049b95943cf30378f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 41aecaf04422027936ac0efdcd36ddf486d2f8b96896951672be04a4614fdd71 [INFO] running `Command { std: "docker" "start" "-a" "41aecaf04422027936ac0efdcd36ddf486d2f8b96896951672be04a4614fdd71", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "41aecaf04422027936ac0efdcd36ddf486d2f8b96896951672be04a4614fdd71", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "41aecaf04422027936ac0efdcd36ddf486d2f8b96896951672be04a4614fdd71", kill_on_drop: false }` [INFO] [stdout] 41aecaf04422027936ac0efdcd36ddf486d2f8b96896951672be04a4614fdd71 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/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:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+54cf65b8d066c082e536455049b95943cf30378f" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 8f0589ea0973c5428473405459d08eaa34f2ee29e0a0b7eaee25e28a3f300a5e [INFO] running `Command { std: "docker" "start" "-a" "8f0589ea0973c5428473405459d08eaa34f2ee29e0a0b7eaee25e28a3f300a5e", kill_on_drop: false }` [INFO] [stderr] Compiling zmij v1.0.17 [INFO] [stderr] Compiling alsa-sys v0.3.1 [INFO] [stderr] Compiling syn v2.0.114 [INFO] [stderr] Checking serde_json v1.0.149 [INFO] [stderr] Checking alsa v0.9.1 [INFO] [stderr] Checking cpal v0.15.3 [INFO] [stderr] Compiling tokio-macros v2.6.0 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Checking tokio v1.49.0 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Checking serde v1.0.228 [INFO] [stderr] Checking real_trans v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Checking tokio-stream v0.1.18 [INFO] [stdout] warning: unused imports: `Arc` and `Mutex` [INFO] [stdout] --> src/io/audio_device.rs:4:17 [INFO] [stdout] | [INFO] [stdout] 4 | use std::sync::{Arc, Mutex}; [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: `std::time::Duration` [INFO] [stdout] --> src/io/audio_device.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc` [INFO] [stdout] --> src/io/audio_device.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use tokio::sync::mpsc; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Duration` and `sleep` [INFO] [stdout] --> src/io/virtual_audio_device.rs:6:19 [INFO] [stdout] | [INFO] [stdout] 6 | use tokio::time::{sleep, Duration}; [INFO] [stdout] | ^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time::Instant` [INFO] [stdout] --> src/io/audio_capture.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use std::time::Instant; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc` [INFO] [stdout] --> src/io/audio_capture.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use tokio::sync::mpsc; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Duration` and `interval` [INFO] [stdout] --> src/io/audio_capture.rs:8:19 [INFO] [stdout] | [INFO] [stdout] 8 | use tokio::time::{interval, Duration}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SAMPLES_PER_FRAME` [INFO] [stdout] --> src/io/audio_capture.rs:11:26 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::{AudioSample, SAMPLES_PER_FRAME}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `FRAME_SIZE_MS` and `SAMPLE_RATE` [INFO] [stdout] --> src/engine/vad.rs:6:26 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::{AudioSample, SAMPLE_RATE, FRAME_SIZE_MS}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SAMPLE_RATE` [INFO] [stdout] --> src/engine/asr.rs:6:26 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::{AudioSample, SAMPLE_RATE}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc` [INFO] [stdout] --> src/engine/translation_pipeline.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use tokio::sync::mpsc; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Duration` and `interval` [INFO] [stdout] --> src/engine/translation_pipeline.rs:8:19 [INFO] [stdout] | [INFO] [stdout] 8 | use tokio::time::{interval, Duration}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SAMPLES_PER_FRAME` [INFO] [stdout] --> src/engine/translation_pipeline.rs:13:26 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::{AudioSample, SAMPLES_PER_FRAME}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::Mutex as AsyncMutex` [INFO] [stdout] --> src/bidirectional_translator.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use tokio::sync::Mutex as AsyncMutex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::oneshot` [INFO] [stdout] --> src/bidirectional_translator.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use tokio::sync::oneshot; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `SAMPLES_PER_FRAME`, `TranslationCallback`, and `TranslationResult` [INFO] [stdout] --> src/bidirectional_translator.rs:9:57 [INFO] [stdout] | [INFO] [stdout] 9 | engine::translation_pipeline::{TranslationPipeline, TranslationResult, TranslationCallback}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 10 | io::audio_capture::AudioCapture, [INFO] [stdout] 11 | AudioSample, SAMPLES_PER_FRAME [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc` [INFO] [stdout] --> src/virtual_audio_manager.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use tokio::sync::mpsc; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `MockAudioDevice` [INFO] [stdout] --> src/virtual_audio_manager.rs:7:44 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::io::audio_device::{AudioDevice, MockAudioDevice, AudioSample}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TranslationDirection` [INFO] [stdout] --> src/virtual_audio_manager.rs:9:85 [INFO] [stdout] | [INFO] [stdout] 9 | use crate::bidirectional_translator::{BidirectionalTranslator, BidirectionalResult, TranslationDirection}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Duration` and `sleep` [INFO] [stdout] --> src/audio_switchboard.rs:7:19 [INFO] [stdout] | [INFO] [stdout] 7 | use tokio::time::{sleep, Duration}; [INFO] [stdout] | ^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/audio_switchboard.rs:206:17 [INFO] [stdout] | [INFO] [stdout] 206 | let mut receiver = receiver_opt.take(); // 移动receiver的所有权 [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: `audio_data` [INFO] [stdout] --> src/engine/asr.rs:81:37 [INFO] [stdout] | [INFO] [stdout] 81 | pub fn process_audio(&mut self, audio_data: &[AudioSample]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_audio_data` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `audio_frame` [INFO] [stdout] --> src/engine/asr.rs:111:37 [INFO] [stdout] | [INFO] [stdout] 111 | pub fn process_frame(&mut self, audio_frame: &[AudioSample]) -> AsrResult { [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_audio_frame` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/engine/mt.rs:101:13 [INFO] [stdout] | [INFO] [stdout] 101 | let mut result = MtResult { [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `asr_clone` [INFO] [stdout] --> src/engine/translation_pipeline.rs:80:13 [INFO] [stdout] | [INFO] [stdout] 80 | let asr_clone = Arc::clone(&self.asr); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_asr_clone` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pipeline_self` [INFO] [stdout] --> src/engine/translation_pipeline.rs:81:13 [INFO] [stdout] | [INFO] [stdout] 81 | let pipeline_self = Arc::new(Mutex::new(self as *mut TranslationPipeline)); [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pipeline_self` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `direction` [INFO] [stdout] --> src/bidirectional_translator.rs:105:13 [INFO] [stdout] | [INFO] [stdout] 105 | let direction = self.current_direction.clone(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_direction` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `is_final` [INFO] [stdout] --> src/bidirectional_translator.rs:148:89 [INFO] [stdout] | [INFO] [stdout] 148 | self.audio_capture.lock().unwrap().set_data_callback(Box::new(move |audio_data, is_final| { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_final` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/virtual_audio_manager.rs:214:13 [INFO] [stdout] | [INFO] [stdout] 214 | let mut audio_manager = VirtualAudioManager::new(Arc::clone(&translator))?; [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `translator_clone` [INFO] [stdout] --> src/virtual_audio_manager.rs:225:13 [INFO] [stdout] | [INFO] [stdout] 225 | let translator_clone = Arc::clone(&self.translator); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_translator_clone` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking tokio-test v0.4.5 [INFO] [stdout] warning: field `input_buffer` is never read [INFO] [stdout] --> src/io/virtual_audio_device.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct VirtualAudioDevice { [INFO] [stdout] | ------------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 18 | input_buffer: Arc>>, [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 `sample_buffer` is never read [INFO] [stdout] --> src/io/audio_capture.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 17 | pub struct AudioCapture { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 23 | sample_buffer: Arc>>, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `vad` is never read [INFO] [stdout] --> src/engine/translation_pipeline.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 31 | pub struct TranslationPipeline { [INFO] [stdout] | ------------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 34 | vad: Arc>, [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `outbound_pipeline`, `inbound_pipeline`, `outbound_buffer`, and `inbound_buffer` are never read [INFO] [stdout] --> src/audio_switchboard.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 22 | pub struct AudioSwitchboard { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] 23 | /// 发送端:物理麦克风 -> 虚拟麦克风 [INFO] [stdout] 24 | outbound_pipeline: Option>>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 25 | /// 接收端:系统环回 -> 物理耳机 [INFO] [stdout] 26 | inbound_pipeline: Option>>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 41 | outbound_buffer: Arc>>, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 42 | inbound_buffer: Arc>>, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `AudioSample` [INFO] [stdout] --> src/main.rs:5:31 [INFO] [stdout] | [INFO] [stdout] 5 | use real_trans::audio_types::{AudioSample, SAMPLES_PER_FRAME}; [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: `std::sync::Arc` [INFO] [stdout] --> bins/integration_test.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::sync::Arc; [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: `TranslationDirection` [INFO] [stdout] --> bins/integration_test.rs:7:53 [INFO] [stdout] | [INFO] [stdout] 7 | bidirectional_translator::{BidirectionalResult, TranslationDirection}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TranslationDirection` [INFO] [stdout] --> examples/module_tests/input_with_translation_test.rs:12:78 [INFO] [stdout] | [INFO] [stdout] 12 | bidirectional_translator::{BidirectionalTranslator, BidirectionalResult, TranslationDirection} [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: `AudioSample` [INFO] [stdout] --> src/main.rs:5:31 [INFO] [stdout] | [INFO] [stdout] 5 | use real_trans::audio_types::{AudioSample, SAMPLES_PER_FRAME}; [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: `std::sync::Arc` [INFO] [stdout] --> bins/integration_test.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::sync::Arc; [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: `TranslationDirection` [INFO] [stdout] --> bins/integration_test.rs:7:53 [INFO] [stdout] | [INFO] [stdout] 7 | bidirectional_translator::{BidirectionalResult, TranslationDirection}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::PathBuf` [INFO] [stdout] --> examples/simple_demo.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::path::PathBuf; [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: `TranslationDirection` [INFO] [stdout] --> examples/simple_demo.rs:7:53 [INFO] [stdout] | [INFO] [stdout] 7 | bidirectional_translator::{BidirectionalResult, TranslationDirection}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TranslationDirection` [INFO] [stdout] --> examples/full_demo.rs:7:53 [INFO] [stdout] | [INFO] [stdout] 7 | bidirectional_translator::{BidirectionalResult, TranslationDirection}, [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: `TranslationDirection` [INFO] [stdout] --> examples/module_tests/full_integration_test.rs:12:78 [INFO] [stdout] | [INFO] [stdout] 12 | bidirectional_translator::{BidirectionalTranslator, BidirectionalResult, TranslationDirection} [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> examples/list_audio_devices.rs:18:16 [INFO] [stdout] | [INFO] [stdout] 18 | Ok(mut devices) => { [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] --> examples/list_audio_devices.rs:51:16 [INFO] [stdout] | [INFO] [stdout] 51 | Ok(mut devices) => { [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `record_audio` is never used [INFO] [stdout] --> examples/module_tests/input_test.rs:22:8 [INFO] [stdout] | [INFO] [stdout] 15 | impl AudioRecorder { [INFO] [stdout] | ------------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 22 | fn record_audio(&self, audio_data: &[AudioSample]) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> examples/module_tests/input_with_translation_test.rs:106:13 [INFO] [stdout] | [INFO] [stdout] 106 | let mut recorder_lock = recorder.lock().unwrap(); [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: `recorder_clone` [INFO] [stdout] --> examples/module_tests/input_with_translation_test.rs:68:9 [INFO] [stdout] | [INFO] [stdout] 68 | let recorder_clone = Arc::clone(&recorder); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_recorder_clone` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> examples/module_tests/input_with_translation_test.rs:86:9 [INFO] [stdout] | [INFO] [stdout] 86 | for i in 0..5 { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> examples/module_tests/full_integration_test.rs:94:21 [INFO] [stdout] | [INFO] [stdout] 94 | let mut proc = processor.lock().unwrap(); [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: method `load_from_file` is never used [INFO] [stdout] --> examples/module_tests/full_integration_test.rs:46:8 [INFO] [stdout] | [INFO] [stdout] 20 | impl AudioProcessor { [INFO] [stdout] | ------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 46 | fn load_from_file(&self, filename: &str) -> Result, Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Arc` and `Mutex` [INFO] [stdout] --> src/io/audio_device.rs:4:17 [INFO] [stdout] | [INFO] [stdout] 4 | use std::sync::{Arc, Mutex}; [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: `std::time::Duration` [INFO] [stdout] --> src/io/audio_device.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc` [INFO] [stdout] --> src/io/audio_device.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use tokio::sync::mpsc; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Duration` and `sleep` [INFO] [stdout] --> src/io/virtual_audio_device.rs:6:19 [INFO] [stdout] | [INFO] [stdout] 6 | use tokio::time::{sleep, Duration}; [INFO] [stdout] | ^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time::Instant` [INFO] [stdout] --> src/io/audio_capture.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use std::time::Instant; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc` [INFO] [stdout] --> src/io/audio_capture.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use tokio::sync::mpsc; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Duration` and `interval` [INFO] [stdout] --> src/io/audio_capture.rs:8:19 [INFO] [stdout] | [INFO] [stdout] 8 | use tokio::time::{interval, Duration}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SAMPLES_PER_FRAME` [INFO] [stdout] --> src/io/audio_capture.rs:11:26 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::{AudioSample, SAMPLES_PER_FRAME}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `FRAME_SIZE_MS` and `SAMPLE_RATE` [INFO] [stdout] --> src/engine/vad.rs:6:26 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::{AudioSample, SAMPLE_RATE, FRAME_SIZE_MS}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SAMPLE_RATE` [INFO] [stdout] --> src/engine/asr.rs:6:26 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::{AudioSample, SAMPLE_RATE}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc` [INFO] [stdout] --> src/engine/translation_pipeline.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use tokio::sync::mpsc; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Duration` and `interval` [INFO] [stdout] --> src/engine/translation_pipeline.rs:8:19 [INFO] [stdout] | [INFO] [stdout] 8 | use tokio::time::{interval, Duration}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SAMPLES_PER_FRAME` [INFO] [stdout] --> src/engine/translation_pipeline.rs:13:26 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::{AudioSample, SAMPLES_PER_FRAME}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::Mutex as AsyncMutex` [INFO] [stdout] --> src/bidirectional_translator.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use tokio::sync::Mutex as AsyncMutex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::oneshot` [INFO] [stdout] --> src/bidirectional_translator.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use tokio::sync::oneshot; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `SAMPLES_PER_FRAME`, `TranslationCallback`, and `TranslationResult` [INFO] [stdout] --> src/bidirectional_translator.rs:9:57 [INFO] [stdout] | [INFO] [stdout] 9 | engine::translation_pipeline::{TranslationPipeline, TranslationResult, TranslationCallback}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 10 | io::audio_capture::AudioCapture, [INFO] [stdout] 11 | AudioSample, SAMPLES_PER_FRAME [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc` [INFO] [stdout] --> src/virtual_audio_manager.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use tokio::sync::mpsc; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `MockAudioDevice` [INFO] [stdout] --> src/virtual_audio_manager.rs:7:44 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::io::audio_device::{AudioDevice, MockAudioDevice, AudioSample}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TranslationDirection` [INFO] [stdout] --> src/virtual_audio_manager.rs:9:85 [INFO] [stdout] | [INFO] [stdout] 9 | use crate::bidirectional_translator::{BidirectionalTranslator, BidirectionalResult, TranslationDirection}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Duration` and `sleep` [INFO] [stdout] --> src/audio_switchboard.rs:7:19 [INFO] [stdout] | [INFO] [stdout] 7 | use tokio::time::{sleep, Duration}; [INFO] [stdout] | ^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Arc` and `Mutex` [INFO] [stdout] --> examples/module_tests/output_test.rs:6:17 [INFO] [stdout] | [INFO] [stdout] 6 | use std::sync::{Arc, Mutex}; [INFO] [stdout] | ^^^ ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/audio_switchboard.rs:206:17 [INFO] [stdout] | [INFO] [stdout] 206 | let mut receiver = receiver_opt.take(); // 移动receiver的所有权 [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: `device_arc` [INFO] [stdout] --> src/io/virtual_audio_device.rs:165:13 [INFO] [stdout] | [INFO] [stdout] 165 | let device_arc = Arc::new(Mutex::new(device)); [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_device_arc` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `callback_flag` [INFO] [stdout] --> src/io/virtual_audio_device.rs:169:13 [INFO] [stdout] | [INFO] [stdout] 169 | let callback_flag = Arc::clone(&callback_called); [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_callback_flag` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `audio_data` [INFO] [stdout] --> src/engine/asr.rs:81:37 [INFO] [stdout] | [INFO] [stdout] 81 | pub fn process_audio(&mut self, audio_data: &[AudioSample]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_audio_data` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `audio_frame` [INFO] [stdout] --> src/engine/asr.rs:111:37 [INFO] [stdout] | [INFO] [stdout] 111 | pub fn process_frame(&mut self, audio_frame: &[AudioSample]) -> AsrResult { [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_audio_frame` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/engine/mt.rs:101:13 [INFO] [stdout] | [INFO] [stdout] 101 | let mut result = MtResult { [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `asr_clone` [INFO] [stdout] --> src/engine/translation_pipeline.rs:80:13 [INFO] [stdout] | [INFO] [stdout] 80 | let asr_clone = Arc::clone(&self.asr); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_asr_clone` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pipeline_self` [INFO] [stdout] --> src/engine/translation_pipeline.rs:81:13 [INFO] [stdout] | [INFO] [stdout] 81 | let pipeline_self = Arc::new(Mutex::new(self as *mut TranslationPipeline)); [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pipeline_self` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `direction` [INFO] [stdout] --> src/bidirectional_translator.rs:105:13 [INFO] [stdout] | [INFO] [stdout] 105 | let direction = self.current_direction.clone(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_direction` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `is_final` [INFO] [stdout] --> src/bidirectional_translator.rs:148:89 [INFO] [stdout] | [INFO] [stdout] 148 | self.audio_capture.lock().unwrap().set_data_callback(Box::new(move |audio_data, is_final| { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_final` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/virtual_audio_manager.rs:214:13 [INFO] [stdout] | [INFO] [stdout] 214 | let mut audio_manager = VirtualAudioManager::new(Arc::clone(&translator))?; [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `translator_clone` [INFO] [stdout] --> src/virtual_audio_manager.rs:225:13 [INFO] [stdout] | [INFO] [stdout] 225 | let translator_clone = Arc::clone(&self.translator); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_translator_clone` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `input_buffer` is never read [INFO] [stdout] --> src/io/virtual_audio_device.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct VirtualAudioDevice { [INFO] [stdout] | ------------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 18 | input_buffer: Arc>>, [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 `sample_buffer` is never read [INFO] [stdout] --> src/io/audio_capture.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 17 | pub struct AudioCapture { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 23 | sample_buffer: Arc>>, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `vad` is never read [INFO] [stdout] --> src/engine/translation_pipeline.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 31 | pub struct TranslationPipeline { [INFO] [stdout] | ------------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 34 | vad: Arc>, [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `outbound_pipeline`, `inbound_pipeline`, `outbound_buffer`, and `inbound_buffer` are never read [INFO] [stdout] --> src/audio_switchboard.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 22 | pub struct AudioSwitchboard { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] 23 | /// 发送端:物理麦克风 -> 虚拟麦克风 [INFO] [stdout] 24 | outbound_pipeline: Option>>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 25 | /// 接收端:系统环回 -> 物理耳机 [INFO] [stdout] 26 | inbound_pipeline: Option>>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 41 | outbound_buffer: Arc>>, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 42 | inbound_buffer: Arc>>, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 6.40s [INFO] running `Command { std: "docker" "inspect" "8f0589ea0973c5428473405459d08eaa34f2ee29e0a0b7eaee25e28a3f300a5e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "8f0589ea0973c5428473405459d08eaa34f2ee29e0a0b7eaee25e28a3f300a5e", kill_on_drop: false }` [INFO] [stdout] 8f0589ea0973c5428473405459d08eaa34f2ee29e0a0b7eaee25e28a3f300a5e