[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 beta-2026-03-05 for beta-1.95-1
[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 beta-2026-03-05
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-03-05" "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" "+beta-2026-03-05" "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" "+beta-2026-03-05" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 2e091b3a003affa36145eae7761fe622a8ffb3dc2f8e968abaa1a8364a7a5bef
[INFO] running `Command { std: "docker" "start" "-a" "2e091b3a003affa36145eae7761fe622a8ffb3dc2f8e968abaa1a8364a7a5bef", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2e091b3a003affa36145eae7761fe622a8ffb3dc2f8e968abaa1a8364a7a5bef", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2e091b3a003affa36145eae7761fe622a8ffb3dc2f8e968abaa1a8364a7a5bef", kill_on_drop: false }`
[INFO] [stdout] 2e091b3a003affa36145eae7761fe622a8ffb3dc2f8e968abaa1a8364a7a5bef
[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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+beta-2026-03-05" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] ff4af7be9ab1eb1bf1c35970888cad47decf7abd7f716e6669448f4896b57e40
[INFO] running `Command { std: "docker" "start" "-a" "ff4af7be9ab1eb1bf1c35970888cad47decf7abd7f716e6669448f4896b57e40", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.180
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling unicode-ident v1.0.22
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling pkg-config v0.3.32
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling scopeguard v1.2.0
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling zmij v1.0.17
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling cpal v0.15.3
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling anyhow v1.0.100
[INFO] [stderr]    Compiling bitflags v2.10.0
[INFO] [stderr]    Compiling lock_api v0.4.14
[INFO] [stderr]    Compiling pin-project-lite v0.2.16
[INFO] [stderr]    Compiling itoa v1.0.17
[INFO] [stderr]    Compiling dasp_sample v0.11.0
[INFO] [stderr]    Compiling memchr v2.7.6
[INFO] [stderr]    Compiling bytes v1.11.0
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling alsa-sys v0.3.1
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]    Compiling errno v0.3.14
[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 tokio-macros v2.6.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling tokio v1.49.0
[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: `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] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 15.78s
[INFO] running `Command { std: "docker" "inspect" "ff4af7be9ab1eb1bf1c35970888cad47decf7abd7f716e6669448f4896b57e40", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ff4af7be9ab1eb1bf1c35970888cad47decf7abd7f716e6669448f4896b57e40", kill_on_drop: false }`
[INFO] [stdout] ff4af7be9ab1eb1bf1c35970888cad47decf7abd7f716e6669448f4896b57e40
[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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+beta-2026-03-05" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] b8be8125d55fed871973dc0deb3954ddd8b0304bc7adae1de896a64150d3409e
[INFO] running `Command { std: "docker" "start" "-a" "b8be8125d55fed871973dc0deb3954ddd8b0304bc7adae1de896a64150d3409e", kill_on_drop: false }`
[INFO] [stderr]    Compiling futures-core v0.3.31
[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: `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 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: `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: 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: 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: 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: `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: 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<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: 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 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: `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 11.96s
[INFO] running `Command { std: "docker" "inspect" "b8be8125d55fed871973dc0deb3954ddd8b0304bc7adae1de896a64150d3409e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b8be8125d55fed871973dc0deb3954ddd8b0304bc7adae1de896a64150d3409e", kill_on_drop: false }`
[INFO] [stdout] b8be8125d55fed871973dc0deb3954ddd8b0304bc7adae1de896a64150d3409e
[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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+beta-2026-03-05" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 29e20116cc9f7d731c15d70084c362ffd3952baf502a7723298ae1d873451eaf
[INFO] running `Command { std: "docker" "start" "-a" "29e20116cc9f7d731c15d70084c362ffd3952baf502a7723298ae1d873451eaf", 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: `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: `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: 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` (example "list_audio_devices") generated 2 warnings (run `cargo fix --example "list_audio_devices" -p real_trans` to apply 2 suggestions)
[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: `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: 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: `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: 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 "output_test") generated 1 warning (run `cargo fix --example "output_test" -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_test") generated 1 warning
[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 "simple_demo") generated 2 warnings (run `cargo fix --example "simple_demo" -p real_trans` to apply 2 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 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: `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` (lib test) generated 36 warnings (33 duplicates) (run `cargo fix --lib -p real_trans --tests` to apply 3 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.13s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/real_trans-d3587c8f7f6e7195)
[INFO] [stdout] 
[INFO] [stdout] running 19 tests
[INFO] [stdout] test audio_switchboard::tests::test_audio_switchboard_lifecycle ... ok
[INFO] [stdout] test engine::translation_pipeline::tests::test_translation_pipeline_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 bidirectional_translator::tests::test_language_pair_update ... ok
[INFO] [stdout] test engine::mt::tests::test_mt_translate ... ok
[INFO] [stdout] test engine::tts::tests::test_tts_creation ... ok
[INFO] [stdout] test audio_types::tests::test_audio_constants ... ok
[INFO] [stdout] test io::virtual_audio_device::tests::test_virtual_audio_device_creation ... ok
[INFO] [stdout] test engine::vad::tests::test_vad_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 engine::asr::tests::test_asr_creation ... ok
[INFO] [stdout] test core::ring_buffer::tests::test_ring_buffer ... ok
[INFO] [stdout] test bidirectional_translator::tests::test_bidirectional_translator_creation ... ok
[INFO] [stdout] test virtual_audio_manager::tests::test_virtual_audio_manager_creation ... ok
[INFO] [stdout] test tests::audio_simulation::tests::test_audio_simulation_setup ... FAILED
[INFO] [stdout] test tests::audio_simulation::tests::test_read_audio_file ... FAILED
[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" "29e20116cc9f7d731c15d70084c362ffd3952baf502a7723298ae1d873451eaf", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "29e20116cc9f7d731c15d70084c362ffd3952baf502a7723298ae1d873451eaf", kill_on_drop: false }`
[INFO] [stdout] 29e20116cc9f7d731c15d70084c362ffd3952baf502a7723298ae1d873451eaf
