[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] testing myg133/real_trans against try#33835004928d3bf65db4d4712e1330766263b0bd for pr-155739
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmyg133%2Freal_trans" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-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-4-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/myg133/real_trans on toolchain 33835004928d3bf65db4d4712e1330766263b0bd
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+33835004928d3bf65db4d4712e1330766263b0bd" "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" "+33835004928d3bf65db4d4712e1330766263b0bd" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+33835004928d3bf65db4d4712e1330766263b0bd" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 1c7b0bb2021c0e717fb978f7f76f7df54d428c1661750e72ee8f5c5ed2991724
[INFO] running `Command { std: "docker" "start" "-a" "1c7b0bb2021c0e717fb978f7f76f7df54d428c1661750e72ee8f5c5ed2991724", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1c7b0bb2021c0e717fb978f7f76f7df54d428c1661750e72ee8f5c5ed2991724", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1c7b0bb2021c0e717fb978f7f76f7df54d428c1661750e72ee8f5c5ed2991724", kill_on_drop: false }`
[INFO] [stdout] 1c7b0bb2021c0e717fb978f7f76f7df54d428c1661750e72ee8f5c5ed2991724
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+33835004928d3bf65db4d4712e1330766263b0bd" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 320f1176ff98aba07f6d4a7d6358ef6c55b849f0e07ecaa1c23962ef0c69d19f
[INFO] running `Command { std: "docker" "start" "-a" "320f1176ff98aba07f6d4a7d6358ef6c55b849f0e07ecaa1c23962ef0c69d19f", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.180
[INFO] [stderr]    Compiling unicode-ident v1.0.22
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]    Compiling zmij v1.0.17
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling alsa-sys v0.3.1
[INFO] [stderr]    Compiling socket2 v0.6.2
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling alsa v0.9.1
[INFO] [stderr]    Compiling cpal v0.15.3
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling real_trans v0.1.0 (/opt/rustwide/workdir)
[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<AsrResult> {
[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] [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<Mutex<VecDeque<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: 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<Mutex<Vec<AudioSample>>>,
[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<Mutex<Vad>>,
[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<Arc<AsyncMutex<TranslationPipeline>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 25 |     /// 接收端：系统环回 -> 物理耳机
[INFO] [stdout] 26 |     inbound_pipeline: Option<Arc<AsyncMutex<TranslationPipeline>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     outbound_buffer: Arc<AsyncMutex<VecDeque<AudioSample>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 42 |     inbound_buffer: Arc<AsyncMutex<VecDeque<AudioSample>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[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: `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] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 22.88s
[INFO] running `Command { std: "docker" "inspect" "320f1176ff98aba07f6d4a7d6358ef6c55b849f0e07ecaa1c23962ef0c69d19f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "320f1176ff98aba07f6d4a7d6358ef6c55b849f0e07ecaa1c23962ef0c69d19f", kill_on_drop: false }`
[INFO] [stdout] 320f1176ff98aba07f6d4a7d6358ef6c55b849f0e07ecaa1c23962ef0c69d19f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+33835004928d3bf65db4d4712e1330766263b0bd" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] f1ab6bdc83fe0c09b902775701435e11e42869ca1d73964289e23ba96bb0f7b5
[INFO] running `Command { std: "docker" "start" "-a" "f1ab6bdc83fe0c09b902775701435e11e42869ca1d73964289e23ba96bb0f7b5", kill_on_drop: false }`
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling real_trans v0.1.0 (/opt/rustwide/workdir)
[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<AsrResult> {
[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] [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<Mutex<VecDeque<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: 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<Mutex<Vec<AudioSample>>>,
[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<Mutex<Vad>>,
[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<Arc<AsyncMutex<TranslationPipeline>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 25 |     /// 接收端：系统环回 -> 物理耳机
[INFO] [stdout] 26 |     inbound_pipeline: Option<Arc<AsyncMutex<TranslationPipeline>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     outbound_buffer: Arc<AsyncMutex<VecDeque<AudioSample>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 42 |     inbound_buffer: Arc<AsyncMutex<VecDeque<AudioSample>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling tokio-test v0.4.5
[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 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: 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: `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: 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: 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: 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: 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: 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<Vec<AudioSample>, Box<dyn std::error::Error>> {
[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: `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]   --> 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/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: 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: 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]    --> 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<AsrResult> {
[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<Mutex<VecDeque<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: 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<Mutex<Vec<AudioSample>>>,
[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<Mutex<Vad>>,
[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<Arc<AsyncMutex<TranslationPipeline>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 25 |     /// 接收端：系统环回 -> 物理耳机
[INFO] [stdout] 26 |     inbound_pipeline: Option<Arc<AsyncMutex<TranslationPipeline>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     outbound_buffer: Arc<AsyncMutex<VecDeque<AudioSample>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 42 |     inbound_buffer: Arc<AsyncMutex<VecDeque<AudioSample>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 14.45s
[INFO] running `Command { std: "docker" "inspect" "f1ab6bdc83fe0c09b902775701435e11e42869ca1d73964289e23ba96bb0f7b5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f1ab6bdc83fe0c09b902775701435e11e42869ca1d73964289e23ba96bb0f7b5", kill_on_drop: false }`
[INFO] [stdout] f1ab6bdc83fe0c09b902775701435e11e42869ca1d73964289e23ba96bb0f7b5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+33835004928d3bf65db4d4712e1330766263b0bd" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] aedf7683192c5e3a6166474d7941621790b6a39ede60c531c2b461d94306a4ad
[INFO] running `Command { std: "docker" "start" "-a" "aedf7683192c5e3a6166474d7941621790b6a39ede60c531c2b461d94306a4ad", kill_on_drop: false }`
[INFO] [stderr] warning: unused imports: `Arc` and `Mutex`
[INFO] [stderr]  --> src/io/audio_device.rs:4:17
[INFO] [stderr]   |
[INFO] [stderr] 4 | use std::sync::{Arc, Mutex};
[INFO] [stderr]   |                 ^^^  ^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::time::Duration`
[INFO] [stderr]  --> src/io/audio_device.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | use std::time::Duration;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `tokio::sync::mpsc`
[INFO] [stderr]  --> src/io/audio_device.rs:6:5
[INFO] [stderr]   |
[INFO] [stderr] 6 | use tokio::sync::mpsc;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Duration` and `sleep`
[INFO] [stderr]  --> src/io/virtual_audio_device.rs:6:19
[INFO] [stderr]   |
[INFO] [stderr] 6 | use tokio::time::{sleep, Duration};
[INFO] [stderr]   |                   ^^^^^  ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::time::Instant`
[INFO] [stderr]  --> src/io/audio_capture.rs:6:5
[INFO] [stderr]   |
[INFO] [stderr] 6 | use std::time::Instant;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `tokio::sync::mpsc`
[INFO] [stderr]  --> src/io/audio_capture.rs:7:5
[INFO] [stderr]   |
[INFO] [stderr] 7 | use tokio::sync::mpsc;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Duration` and `interval`
[INFO] [stderr]  --> src/io/audio_capture.rs:8:19
[INFO] [stderr]   |
[INFO] [stderr] 8 | use tokio::time::{interval, Duration};
[INFO] [stderr]   |                   ^^^^^^^^  ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `SAMPLES_PER_FRAME`
[INFO] [stderr]   --> src/io/audio_capture.rs:11:26
[INFO] [stderr]    |
[INFO] [stderr] 11 | use crate::{AudioSample, SAMPLES_PER_FRAME};
[INFO] [stderr]    |                          ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `FRAME_SIZE_MS` and `SAMPLE_RATE`
[INFO] [stderr]  --> src/engine/vad.rs:6:26
[INFO] [stderr]   |
[INFO] [stderr] 6 | use crate::{AudioSample, SAMPLE_RATE, FRAME_SIZE_MS};
[INFO] [stderr]   |                          ^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `SAMPLE_RATE`
[INFO] [stderr]  --> src/engine/asr.rs:6:26
[INFO] [stderr]   |
[INFO] [stderr] 6 | use crate::{AudioSample, SAMPLE_RATE};
[INFO] [stderr]   |                          ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `tokio::sync::mpsc`
[INFO] [stderr]  --> src/engine/translation_pipeline.rs:7:5
[INFO] [stderr]   |
[INFO] [stderr] 7 | use tokio::sync::mpsc;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Duration` and `interval`
[INFO] [stderr]  --> src/engine/translation_pipeline.rs:8:19
[INFO] [stderr]   |
[INFO] [stderr] 8 | use tokio::time::{interval, Duration};
[INFO] [stderr]   |                   ^^^^^^^^  ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `SAMPLES_PER_FRAME`
[INFO] [stderr]   --> src/engine/translation_pipeline.rs:13:26
[INFO] [stderr]    |
[INFO] [stderr] 13 | use crate::{AudioSample, SAMPLES_PER_FRAME};
[INFO] [stderr]    |                          ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `tokio::sync::Mutex as AsyncMutex`
[INFO] [stderr]  --> src/bidirectional_translator.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | use tokio::sync::Mutex as AsyncMutex;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `tokio::sync::oneshot`
[INFO] [stderr]  --> src/bidirectional_translator.rs:7:5
[INFO] [stderr]   |
[INFO] [stderr] 7 | use tokio::sync::oneshot;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `SAMPLES_PER_FRAME`, `TranslationCallback`, and `TranslationResult`
[INFO] [stderr]   --> src/bidirectional_translator.rs:9:57
[INFO] [stderr]    |
[INFO] [stderr]  9 |     engine::translation_pipeline::{TranslationPipeline, TranslationResult, TranslationCallback},
[INFO] [stderr]    |                                                         ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 10 |     io::audio_capture::AudioCapture,
[INFO] [stderr] 11 |     AudioSample, SAMPLES_PER_FRAME
[INFO] [stderr]    |                  ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `tokio::sync::mpsc`
[INFO] [stderr]  --> src/virtual_audio_manager.rs:6:5
[INFO] [stderr]   |
[INFO] [stderr] 6 | use tokio::sync::mpsc;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `MockAudioDevice`
[INFO] [stderr]  --> src/virtual_audio_manager.rs:7:44
[INFO] [stderr]   |
[INFO] [stderr] 7 | use crate::io::audio_device::{AudioDevice, MockAudioDevice, AudioSample};
[INFO] [stderr]   |                                            ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `TranslationDirection`
[INFO] [stderr]  --> src/virtual_audio_manager.rs:9:85
[INFO] [stderr]   |
[INFO] [stderr] 9 | use crate::bidirectional_translator::{BidirectionalTranslator, BidirectionalResult, TranslationDirection};
[INFO] [stderr]   |                                                                                     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Duration` and `sleep`
[INFO] [stderr]  --> src/audio_switchboard.rs:7:19
[INFO] [stderr]   |
[INFO] [stderr] 7 | use tokio::time::{sleep, Duration};
[INFO] [stderr]   |                   ^^^^^  ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/audio_switchboard.rs:206:17
[INFO] [stderr]     |
[INFO] [stderr] 206 |             let mut receiver = receiver_opt.take(); // 移动receiver的所有权
[INFO] [stderr]     |                 ----^^^^^^^^
[INFO] [stderr]     |                 |
[INFO] [stderr]     |                 help: remove this `mut`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `audio_data`
[INFO] [stderr]   --> src/engine/asr.rs:81:37
[INFO] [stderr]    |
[INFO] [stderr] 81 |     pub fn process_audio(&mut self, audio_data: &[AudioSample]) -> Vec<AsrResult> {
[INFO] [stderr]    |                                     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_audio_data`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `audio_frame`
[INFO] [stderr]    --> src/engine/asr.rs:111:37
[INFO] [stderr]     |
[INFO] [stderr] 111 |     pub fn process_frame(&mut self, audio_frame: &[AudioSample]) -> AsrResult {
[INFO] [stderr]     |                                     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_audio_frame`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/engine/mt.rs:101:13
[INFO] [stderr]     |
[INFO] [stderr] 101 |         let mut result = MtResult {
[INFO] [stderr]     |             ----^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `asr_clone`
[INFO] [stderr]   --> src/engine/translation_pipeline.rs:80:13
[INFO] [stderr]    |
[INFO] [stderr] 80 |         let asr_clone = Arc::clone(&self.asr);
[INFO] [stderr]    |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_asr_clone`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `pipeline_self`
[INFO] [stderr]   --> src/engine/translation_pipeline.rs:81:13
[INFO] [stderr]    |
[INFO] [stderr] 81 |         let pipeline_self = Arc::new(Mutex::new(self as *mut TranslationPipeline));
[INFO] [stderr]    |             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pipeline_self`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `direction`
[INFO] [stderr]    --> src/bidirectional_translator.rs:105:13
[INFO] [stderr]     |
[INFO] [stderr] 105 |         let direction = self.current_direction.clone();
[INFO] [stderr]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_direction`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `is_final`
[INFO] [stderr]    --> src/bidirectional_translator.rs:148:89
[INFO] [stderr]     |
[INFO] [stderr] 148 |         self.audio_capture.lock().unwrap().set_data_callback(Box::new(move |audio_data, is_final| {
[INFO] [stderr]     |                                                                                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_final`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/virtual_audio_manager.rs:214:13
[INFO] [stderr]     |
[INFO] [stderr] 214 |         let mut audio_manager = VirtualAudioManager::new(Arc::clone(&translator))?;
[INFO] [stderr]     |             ----^^^^^^^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `translator_clone`
[INFO] [stderr]    --> src/virtual_audio_manager.rs:225:13
[INFO] [stderr]     |
[INFO] [stderr] 225 |         let translator_clone = Arc::clone(&self.translator);
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_translator_clone`
[INFO] [stderr] 
[INFO] [stderr] warning: field `input_buffer` is never read
[INFO] [stderr]   --> src/io/virtual_audio_device.rs:18:5
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub struct VirtualAudioDevice {
[INFO] [stderr]    |            ------------------ field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 18 |     input_buffer: Arc<Mutex<VecDeque<AudioSample>>>,
[INFO] [stderr]    |     ^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field `sample_buffer` is never read
[INFO] [stderr]   --> src/io/audio_capture.rs:23:5
[INFO] [stderr]    |
[INFO] [stderr] 17 | pub struct AudioCapture {
[INFO] [stderr]    |            ------------ field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 23 |     sample_buffer: Arc<Mutex<Vec<AudioSample>>>,
[INFO] [stderr]    |     ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `vad` is never read
[INFO] [stderr]   --> src/engine/translation_pipeline.rs:34:5
[INFO] [stderr]    |
[INFO] [stderr] 31 | pub struct TranslationPipeline {
[INFO] [stderr]    |            ------------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 34 |     vad: Arc<Mutex<Vad>>,
[INFO] [stderr]    |     ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `outbound_pipeline`, `inbound_pipeline`, `outbound_buffer`, and `inbound_buffer` are never read
[INFO] [stderr]   --> src/audio_switchboard.rs:24:5
[INFO] [stderr]    |
[INFO] [stderr] 22 | pub struct AudioSwitchboard {
[INFO] [stderr]    |            ---------------- fields in this struct
[INFO] [stderr] 23 |     /// 发送端：物理麦克风 -> 虚拟麦克风
[INFO] [stderr] 24 |     outbound_pipeline: Option<Arc<AsyncMutex<TranslationPipeline>>>,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 25 |     /// 接收端：系统环回 -> 物理耳机
[INFO] [stderr] 26 |     inbound_pipeline: Option<Arc<AsyncMutex<TranslationPipeline>>>,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 41 |     outbound_buffer: Arc<AsyncMutex<VecDeque<AudioSample>>>,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 42 |     inbound_buffer: Arc<AsyncMutex<VecDeque<AudioSample>>>,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `real_trans` (lib) generated 34 warnings (run `cargo fix --lib -p real_trans` to apply 30 suggestions)
[INFO] [stderr] warning: unused import: `TranslationDirection`
[INFO] [stderr]  --> examples/full_demo.rs:7:53
[INFO] [stderr]   |
[INFO] [stderr] 7 |     bidirectional_translator::{BidirectionalResult, TranslationDirection},
[INFO] [stderr]   |                                                     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `TranslationDirection`
[INFO] [stderr]   --> examples/module_tests/full_integration_test.rs:12:78
[INFO] [stderr]    |
[INFO] [stderr] 12 |     bidirectional_translator::{BidirectionalTranslator, BidirectionalResult, TranslationDirection}
[INFO] [stderr]    |                                                                              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> examples/module_tests/full_integration_test.rs:94:21
[INFO] [stderr]    |
[INFO] [stderr] 94 |                 let mut proc = processor.lock().unwrap();
[INFO] [stderr]    |                     ----^^^^
[INFO] [stderr]    |                     |
[INFO] [stderr]    |                     help: remove this `mut`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: method `load_from_file` is never used
[INFO] [stderr]   --> examples/module_tests/full_integration_test.rs:46:8
[INFO] [stderr]    |
[INFO] [stderr] 20 | impl AudioProcessor {
[INFO] [stderr]    | ------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 46 |     fn load_from_file(&self, filename: &str) -> Result<Vec<AudioSample>, Box<dyn std::error::Error>> {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `TranslationDirection`
[INFO] [stderr]   --> examples/module_tests/input_with_translation_test.rs:12:78
[INFO] [stderr]    |
[INFO] [stderr] 12 |     bidirectional_translator::{BidirectionalTranslator, BidirectionalResult, TranslationDirection}
[INFO] [stderr]    |                                                                              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> examples/module_tests/input_with_translation_test.rs:106:13
[INFO] [stderr]     |
[INFO] [stderr] 106 |         let mut recorder_lock = recorder.lock().unwrap();
[INFO] [stderr]     |             ----^^^^^^^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `recorder_clone`
[INFO] [stderr]   --> examples/module_tests/input_with_translation_test.rs:68:9
[INFO] [stderr]    |
[INFO] [stderr] 68 |     let recorder_clone = Arc::clone(&recorder);
[INFO] [stderr]    |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_recorder_clone`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `i`
[INFO] [stderr]   --> examples/module_tests/input_with_translation_test.rs:86:9
[INFO] [stderr]    |
[INFO] [stderr] 86 |     for i in 0..5 {
[INFO] [stderr]    |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `AudioSample`
[INFO] [stderr]  --> src/main.rs:5:31
[INFO] [stderr]   |
[INFO] [stderr] 5 | use real_trans::audio_types::{AudioSample, SAMPLES_PER_FRAME};
[INFO] [stderr]   |                               ^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: method `record_audio` is never used
[INFO] [stderr]   --> examples/module_tests/input_test.rs:22:8
[INFO] [stderr]    |
[INFO] [stderr] 15 | impl AudioRecorder {
[INFO] [stderr]    | ------------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 22 |     fn record_audio(&self, audio_data: &[AudioSample]) {
[INFO] [stderr]    |        ^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::sync::Arc`
[INFO] [stderr]  --> bins/integration_test.rs:3:5
[INFO] [stderr]   |
[INFO] [stderr] 3 | use std::sync::Arc;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `TranslationDirection`
[INFO] [stderr]  --> bins/integration_test.rs:7:53
[INFO] [stderr]   |
[INFO] [stderr] 7 |     bidirectional_translator::{BidirectionalResult, TranslationDirection},
[INFO] [stderr]   |                                                     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Arc` and `Mutex`
[INFO] [stderr]  --> examples/module_tests/output_test.rs:6:17
[INFO] [stderr]   |
[INFO] [stderr] 6 | use std::sync::{Arc, Mutex};
[INFO] [stderr]   |                 ^^^  ^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::path::PathBuf`
[INFO] [stderr]  --> examples/simple_demo.rs:3:5
[INFO] [stderr]   |
[INFO] [stderr] 3 | use std::path::PathBuf;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `TranslationDirection`
[INFO] [stderr]  --> examples/simple_demo.rs:7:53
[INFO] [stderr]   |
[INFO] [stderr] 7 |     bidirectional_translator::{BidirectionalResult, TranslationDirection},
[INFO] [stderr]   |                                                     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `real_trans` (example "full_demo") generated 1 warning (run `cargo fix --example "full_demo" -p real_trans` to apply 1 suggestion)
[INFO] [stderr] warning: `real_trans` (example "full_integration_test") generated 3 warnings (run `cargo fix --example "full_integration_test" -p real_trans` to apply 2 suggestions)
[INFO] [stderr] warning: `real_trans` (example "input_with_translation_test") generated 4 warnings (run `cargo fix --example "input_with_translation_test" -p real_trans` to apply 4 suggestions)
[INFO] [stderr] warning: `real_trans` (bin "real_trans" test) generated 1 warning (run `cargo fix --bin "real_trans" -p real_trans --tests` to apply 1 suggestion)
[INFO] [stderr] warning: `real_trans` (example "input_test") generated 1 warning
[INFO] [stderr] warning: `real_trans` (bin "integration_test" test) generated 2 warnings (run `cargo fix --bin "integration_test" -p real_trans --tests` to apply 2 suggestions)
[INFO] [stderr] warning: `real_trans` (example "output_test") generated 1 warning (run `cargo fix --example "output_test" -p real_trans` to apply 1 suggestion)
[INFO] [stderr] warning: `real_trans` (example "simple_demo") generated 2 warnings (run `cargo fix --example "simple_demo" -p real_trans` to apply 2 suggestions)
[INFO] [stderr] warning: unused variable: `device_arc`
[INFO] [stderr]    --> src/io/virtual_audio_device.rs:165:13
[INFO] [stderr]     |
[INFO] [stderr] 165 |         let device_arc = Arc::new(Mutex::new(device));
[INFO] [stderr]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_device_arc`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `callback_flag`
[INFO] [stderr]    --> src/io/virtual_audio_device.rs:169:13
[INFO] [stderr]     |
[INFO] [stderr] 169 |         let callback_flag = Arc::clone(&callback_called);
[INFO] [stderr]     |             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_callback_flag`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `audio_data`
[INFO] [stderr]   --> src/engine/asr.rs:81:37
[INFO] [stderr]    |
[INFO] [stderr] 81 |     pub fn process_audio(&mut self, audio_data: &[AudioSample]) -> Vec<AsrResult> {
[INFO] [stderr]    |                                     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_audio_data`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> examples/list_audio_devices.rs:18:16
[INFO] [stderr]    |
[INFO] [stderr] 18 |             Ok(mut devices) => {
[INFO] [stderr]    |                ----^^^^^^^
[INFO] [stderr]    |                |
[INFO] [stderr]    |                help: remove this `mut`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> examples/list_audio_devices.rs:51:16
[INFO] [stderr]    |
[INFO] [stderr] 51 |             Ok(mut devices) => {
[INFO] [stderr]    |                ----^^^^^^^
[INFO] [stderr]    |                |
[INFO] [stderr]    |                help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: `real_trans` (lib test) generated 36 warnings (33 duplicates) (run `cargo fix --lib -p real_trans --tests` to apply 3 suggestions)
[INFO] [stderr] warning: `real_trans` (example "list_audio_devices") generated 2 warnings (run `cargo fix --example "list_audio_devices" -p real_trans` to apply 2 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.21s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/real_trans-c14018f7766c0077)
[INFO] [stdout] 
[INFO] [stdout] running 19 tests
[INFO] [stdout] test core::ring_buffer::tests::test_ring_buffer ... ok
[INFO] [stdout] test engine::asr::tests::test_asr_creation ... ok
[INFO] [stdout] test audio_switchboard::tests::test_audio_switchboard_creation ... ok
[INFO] [stdout] test engine::mt::tests::test_mt_creation ... ok
[INFO] [stdout] test audio_types::tests::test_audio_constants ... ok
[INFO] [stdout] test engine::translation_pipeline::tests::test_translation_pipeline_creation ... ok
[INFO] [stdout] test engine::vad::tests::test_vad_creation ... ok
[INFO] [stdout] test engine::tts::tests::test_tts_creation ... ok
[INFO] [stdout] test engine::mt::tests::test_mt_translate ... ok
[INFO] [stdout] test bidirectional_translator::tests::test_bidirectional_translator_creation ... ok
[INFO] [stdout] test engine::vad::tests::test_vad_process_frame ... ok
[INFO] [stdout] test io::virtual_audio_device::tests::test_virtual_audio_device_callbacks ... ok
[INFO] [stdout] test io::virtual_audio_device::tests::test_virtual_audio_device_creation ... ok
[INFO] [stdout] test audio_switchboard::tests::test_audio_switchboard_lifecycle ... ok
[INFO] [stdout] test virtual_audio_manager::tests::test_virtual_audio_manager_creation ... ok
[INFO] [stdout] test tests::audio_simulation::tests::test_read_audio_file ... FAILED
[INFO] [stdout] test tests::audio_simulation::tests::test_audio_simulation_setup ... FAILED
[INFO] [stdout] test bidirectional_translator::tests::test_language_pair_update ... ok
[INFO] [stdout] test virtual_audio_manager::tests::test_app_context_creation has been running for over 60 seconds
[ERROR] error running command: no output for 300 seconds
[INFO] running `Command { std: "docker" "inspect" "aedf7683192c5e3a6166474d7941621790b6a39ede60c531c2b461d94306a4ad", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "aedf7683192c5e3a6166474d7941621790b6a39ede60c531c2b461d94306a4ad", kill_on_drop: false }`
[INFO] [stdout] aedf7683192c5e3a6166474d7941621790b6a39ede60c531c2b461d94306a4ad
