[INFO] cloning repository https://github.com/aka0503zhou-droid/vidcompare
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/aka0503zhou-droid/vidcompare" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Faka0503zhou-droid%2Fvidcompare", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Faka0503zhou-droid%2Fvidcompare'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 0ab936152e80efeda841e6fc7a69995e134951b2
[INFO] checking aka0503zhou-droid/vidcompare against master#2aabf3ce0569dd7c8c2d2a27944850056dcf2566 for pr-156508
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Faka0503zhou-droid%2Fvidcompare" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/aka0503zhou-droid/vidcompare
[INFO] finished tweaking git repo https://github.com/aka0503zhou-droid/vidcompare
[INFO] tweaked toml for git repo https://github.com/aka0503zhou-droid/vidcompare written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/aka0503zhou-droid/vidcompare on toolchain 2aabf3ce0569dd7c8c2d2a27944850056dcf2566
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+2aabf3ce0569dd7c8c2d2a27944850056dcf2566" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/aka0503zhou-droid/vidcompare 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" "+2aabf3ce0569dd7c8c2d2a27944850056dcf2566" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: unused manifest key: profile.release.libvmaf-rs
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded filetime v0.2.28
[INFO] [stderr]   Downloaded ashpd v0.8.1
[INFO] [stderr]   Downloaded tar v0.4.45
[INFO] [stderr]   Downloaded deflate64 v0.1.12
[INFO] [stderr]   Downloaded ecolor v0.29.1
[INFO] [stderr]   Downloaded emath v0.29.1
[INFO] [stderr]   Downloaded epaint v0.29.1
[INFO] [stderr]   Downloaded epaint_default_fonts v0.29.1
[INFO] [stderr]   Downloaded egui v0.29.1
[INFO] [stderr]   Downloaded accesskit v0.16.3
[INFO] [stderr]   Downloaded xattr v1.6.1
[INFO] [stderr]   Downloaded rfd v0.14.1
[INFO] [stderr]   Downloaded egui_plot v0.29.0
[INFO] [stderr]   Downloaded quick-xml v0.39.4
[INFO] [stderr]   Downloaded accesskit_winit v0.22.4
[INFO] [stderr]   Downloaded orbclient v0.3.54
[INFO] [stderr]   Downloaded egui_glow v0.29.1
[INFO] [stderr]   Downloaded egui-winit v0.29.1
[INFO] [stderr]   Downloaded accesskit_atspi_common v0.9.3
[INFO] [stderr]   Downloaded accesskit_windows v0.23.2
[INFO] [stderr]   Downloaded egui-wgpu v0.29.1
[INFO] [stderr]   Downloaded accesskit_unix v0.12.3
[INFO] [stderr]   Downloaded accesskit_consumer v0.24.3
[INFO] [stderr]   Downloaded accesskit_macos v0.17.4
[INFO] [stderr]   Downloaded eframe v0.29.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+2aabf3ce0569dd7c8c2d2a27944850056dcf2566" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] c7bfb86a42d40af15dddf887c7497d7d8bd9ebeee5f7f86a8ba4b32ad7f36550
[INFO] running `Command { std: "docker" "start" "-a" "c7bfb86a42d40af15dddf887c7497d7d8bd9ebeee5f7f86a8ba4b32ad7f36550", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c7bfb86a42d40af15dddf887c7497d7d8bd9ebeee5f7f86a8ba4b32ad7f36550", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c7bfb86a42d40af15dddf887c7497d7d8bd9ebeee5f7f86a8ba4b32ad7f36550", kill_on_drop: false }`
[INFO] [stdout] c7bfb86a42d40af15dddf887c7497d7d8bd9ebeee5f7f86a8ba4b32ad7f36550
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+2aabf3ce0569dd7c8c2d2a27944850056dcf2566" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] d969a885297c52bf4926ecf3655b038038cbcef51a4c00d44271ad9abc278abf
[INFO] running `Command { std: "docker" "start" "-a" "d969a885297c52bf4926ecf3655b038038cbcef51a4c00d44271ad9abc278abf", kill_on_drop: false }`
[INFO] [stderr] warning: unused manifest key: profile.release.libvmaf-rs
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]     Checking polling v3.11.0
[INFO] [stderr]    Compiling zvariant_utils v2.1.0
[INFO] [stderr]    Compiling enumflags2_derive v0.7.12
[INFO] [stderr]    Compiling wayland-sys v0.31.11
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking parking v2.2.1
[INFO] [stderr]     Checking generic-array v0.14.7
[INFO] [stderr]     Checking concurrent-queue v2.5.0
[INFO] [stderr]     Checking zerofrom v0.1.7
[INFO] [stderr]    Compiling quick-xml v0.39.4
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling bytemuck_derive v1.10.2
[INFO] [stderr]     Checking yoke v0.8.2
[INFO] [stderr]     Checking futures-lite v2.6.1
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]     Checking zerovec v0.11.6
[INFO] [stderr]     Checking zerotrie v0.2.4
[INFO] [stderr]    Compiling zvariant_derive v4.2.0
[INFO] [stderr]     Checking event-listener v5.4.1
[INFO] [stderr]     Checking endi v1.1.1
[INFO] [stderr]     Checking async-task v4.7.1
[INFO] [stderr]     Checking piper v0.2.5
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]    Compiling async-io v2.6.0
[INFO] [stderr]    Compiling nix v0.29.0
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking async-executor v1.14.0
[INFO] [stderr]     Checking crypto-common v0.1.7
[INFO] [stderr]     Checking event-listener-strategy v0.5.4
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking tinystr v0.8.3
[INFO] [stderr]     Checking potential_utf v0.1.5
[INFO] [stderr]    Compiling enumflags2 v0.7.12
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]     Checking async-channel v2.5.0
[INFO] [stderr]     Checking async-lock v3.4.2
[INFO] [stderr]     Checking async-broadcast v0.7.2
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]     Checking icu_collections v2.2.0
[INFO] [stderr]     Checking icu_locale_core v2.2.0
[INFO] [stderr]     Checking bytemuck v1.25.0
[INFO] [stderr]    Compiling quick-xml v0.30.0
[INFO] [stderr]    Compiling zbus_macros v4.4.0
[INFO] [stderr]     Checking blocking v1.6.2
[INFO] [stderr]     Checking rand v0.8.6
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]     Checking xdg-home v1.3.0
[INFO] [stderr]     Checking ordered-stream v0.2.0
[INFO] [stderr]    Compiling wayland-scanner v0.31.10
[INFO] [stderr]    Compiling khronos_api v3.1.0
[INFO] [stderr]     Checking async-fs v2.2.0
[INFO] [stderr]     Checking errno v0.3.14
[INFO] [stderr]     Checking socket2 v0.6.3
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]     Checking mio v1.2.0
[INFO] [stderr]    Compiling cc v1.2.62
[INFO] [stderr]    Compiling xml-rs v0.8.28
[INFO] [stderr]     Checking accesskit v0.16.3
[INFO] [stderr]     Checking calloop v0.13.0
[INFO] [stderr]     Checking simd-adler32 v0.3.9
[INFO] [stderr]     Checking icu_provider v2.2.0
[INFO] [stderr]    Compiling zvariant v4.2.0
[INFO] [stderr]     Checking tiny-skia-path v0.11.4
[INFO] [stderr]     Checking x11-dl v2.21.0
[INFO] [stderr]     Checking emath v0.29.1
[INFO] [stderr]     Checking icu_properties v2.2.0
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]     Checking tokio v1.52.3
[INFO] [stderr]     Checking gethostname v1.1.0
[INFO] [stderr]     Checking hashbrown v0.17.1
[INFO] [stderr]     Checking ecolor v0.29.1
[INFO] [stderr]     Checking x11rb v0.13.2
[INFO] [stderr]    Compiling gl_generator v0.14.0
[INFO] [stderr]     Checking tiny-skia v0.11.4
[INFO] [stderr]     Checking immutable-chunkmap v2.1.2
[INFO] [stderr]     Checking indexmap v2.14.0
[INFO] [stderr]     Checking epaint_default_fonts v0.29.1
[INFO] [stderr]    Compiling openssl v0.10.79
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking epaint v0.29.1
[INFO] [stderr]     Checking accesskit_consumer v0.24.3
[INFO] [stderr]     Checking calloop v0.14.4
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]     Checking idna_adapter v1.2.2
[INFO] [stderr]    Compiling glutin_egl_sys v0.7.1
[INFO] [stderr]    Compiling glutin_glx_sys v0.6.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]     Checking flate2 v1.1.9
[INFO] [stderr]    Compiling glutin v0.32.3
[INFO] [stderr]     Checking openssl-probe v0.2.1
[INFO] [stderr]     Checking egui v0.29.1
[INFO] [stderr]    Compiling zstd-safe v7.2.4
[INFO] [stderr]    Compiling wayland-backend v0.3.15
[INFO] [stderr]    Compiling openssl-sys v0.9.115
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]    Compiling zstd-sys v2.0.16+zstd.1.5.7
[INFO] [stderr]    Compiling bzip2-sys v0.1.13+1.0.8
[INFO] [stderr]    Compiling lzma-sys v0.1.20
[INFO] [stderr]    Compiling libsqlite3-sys v0.30.1
[INFO] [stderr]     Checking fdeflate v0.3.7
[INFO] [stderr]     Checking inout v0.1.4
[INFO] [stderr]    Compiling glutin-winit v0.5.0
[INFO] [stderr]     Checking sync_wrapper v1.0.2
[INFO] [stderr]     Checking ipnet v2.12.0
[INFO] [stderr]     Checking pxfm v0.1.29
[INFO] [stderr]     Checking crc-catalog v2.5.0
[INFO] [stderr]     Checking webbrowser v1.2.1
[INFO] [stderr]     Checking wayland-client v0.31.14
[INFO] [stderr]     Checking wayland-csd-frame v0.3.0
[INFO] [stderr]     Checking crc v3.4.0
[INFO] [stderr]     Checking cipher v0.4.4
[INFO] [stderr]     Checking png v0.18.1
[INFO] [stderr]     Checking arboard v3.6.1
[INFO] [stderr]     Checking async-net v2.0.0
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]    Compiling zbus_names v3.0.0
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]    Compiling zip v2.4.2
[INFO] [stderr]    Compiling rfd v0.14.1
[INFO] [stderr]     Checking byteorder-lite v0.1.0
[INFO] [stderr]    Compiling zbus_xml v4.0.0
[INFO] [stderr]     Checking bumpalo v3.20.2
[INFO] [stderr]     Checking lzma-rs v0.3.0
[INFO] [stderr]     Checking bzip2 v0.5.2
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking zopfli v0.8.3
[INFO] [stderr]     Checking time v0.3.47
[INFO] [stderr]     Checking dirs-sys v0.4.1
[INFO] [stderr]     Checking pbkdf2 v0.12.2
[INFO] [stderr]    Compiling zbus-lockstep v0.4.4
[INFO] [stderr]     Checking aes v0.8.4
[INFO] [stderr]     Checking h2 v0.4.14
[INFO] [stderr]     Checking hashlink v0.9.1
[INFO] [stderr]     Checking xz2 v0.1.7
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking wayland-protocols v0.32.12
[INFO] [stderr]     Checking wayland-cursor v0.31.14
[INFO] [stderr]     Checking calloop-wayland-source v0.3.0
[INFO] [stderr]     Checking calloop-wayland-source v0.4.1
[INFO] [stderr]     Checking tower-http v0.6.10
[INFO] [stderr]     Checking egui_glow v0.29.1
[INFO] [stderr]    Compiling zbus-lockstep-macros v0.4.4
[INFO] [stderr]     Checking rustls-pki-types v1.14.1
[INFO] [stderr]     Checking csv-core v0.1.13
[INFO] [stderr]     Checking xattr v1.6.1
[INFO] [stderr]     Checking filetime v0.2.28
[INFO] [stderr]     Checking encoding_rs v0.8.35
[INFO] [stderr]     Checking deflate64 v0.1.12
[INFO] [stderr]     Checking fallible-streaming-iterator v0.1.9
[INFO] [stderr]     Checking fallible-iterator v0.3.0
[INFO] [stderr]     Checking pollster v0.3.0
[INFO] [stderr]     Checking rayon v1.12.0
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]     Checking tar v0.4.45
[INFO] [stderr]     Checking chrono v0.4.44
[INFO] [stderr]     Checking csv v1.4.0
[INFO] [stderr]     Checking egui_plot v0.29.0
[INFO] [stderr]     Checking serde_json v1.0.149
[INFO] [stderr]     Checking dirs v5.0.1
[INFO] [stderr]     Checking num_cpus v1.17.0
[INFO] [stderr]     Checking moxcms v0.8.1
[INFO] [stderr]     Checking zbus v4.4.0
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking hyper v1.9.0
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking image v0.25.10
[INFO] [stderr]     Checking wayland-protocols-wlr v0.3.12
[INFO] [stderr]     Checking wayland-protocols-plasma v0.3.12
[INFO] [stderr]     Checking wayland-protocols-misc v0.3.12
[INFO] [stderr]     Checking wayland-protocols-experimental v20250721.0.1
[INFO] [stderr]     Checking atspi-common v0.6.0
[INFO] [stderr]     Checking ashpd v0.8.1
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking reqwest v0.12.28
[INFO] [stderr]     Checking zstd v0.13.3
[INFO] [stderr]     Checking smithay-client-toolkit v0.19.2
[INFO] [stderr]     Checking smithay-client-toolkit v0.20.0
[INFO] [stderr]     Checking sctk-adwaita v0.10.1
[INFO] [stderr]     Checking smithay-clipboard v0.7.3
[INFO] [stderr]     Checking winit v0.30.13
[INFO] [stderr]     Checking rusqlite v0.32.1
[INFO] [stderr]     Checking atspi-proxies v0.6.0
[INFO] [stderr]     Checking accesskit_atspi_common v0.9.3
[INFO] [stderr]     Checking atspi-connection v0.6.0
[INFO] [stderr]     Checking atspi v0.22.0
[INFO] [stderr]     Checking accesskit_unix v0.12.3
[INFO] [stderr]     Checking accesskit_winit v0.22.4
[INFO] [stderr]     Checking egui-winit v0.29.1
[INFO] [stderr]     Checking eframe v0.29.1
[INFO] [stderr]     Checking vidcompare v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `VideoInfo`
[INFO] [stdout]    --> src/engine/metrics.rs:520:45
[INFO] [stdout]     |
[INFO] [stdout] 520 |     use super::super::decoder::{OwnedFrame, VideoInfo};
[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: `crate::engine::ProcessingStatus`
[INFO] [stdout]    --> src/export/exporters.rs:333:9
[INFO] [stdout]     |
[INFO] [stdout] 333 |     use crate::engine::ProcessingStatus;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: falling back to `f32` as the trait bound `f32: From<f64>` is not satisfied
[INFO] [stdout]    --> src/gui.rs:955:47
[INFO] [stdout]     |
[INFO] [stdout] 955 |                     .stroke(egui::Stroke::new(1.0, C_BORDER)),
[INFO] [stdout]     |                                               ^^^ help: explicitly specify the type as `f32`: `1.0_f32`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #154024 <https://github.com/rust-lang/rust/issues/154024>
[INFO] [stdout]     = note: `#[warn(float_literal_f32_fallback)]` (part of `#[warn(future_incompatible)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: falling back to `f32` as the trait bound `f32: From<f64>` is not satisfied
[INFO] [stdout]    --> src/gui.rs:955:47
[INFO] [stdout]     |
[INFO] [stdout] 955 |                     .stroke(egui::Stroke::new(1.0, C_BORDER)),
[INFO] [stdout]     |                                               ^^^ help: explicitly specify the type as `f32`: `1.0_f32`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #154024 <https://github.com/rust-lang/rust/issues/154024>
[INFO] [stdout]     = note: `#[warn(float_literal_f32_fallback)]` (part of `#[warn(future_incompatible)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/gui.rs:917:13
[INFO] [stdout]     |
[INFO] [stdout] 917 |         let mut fonts = egui::FontDefinitions::default();
[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]    --> src/gui.rs:917:13
[INFO] [stdout]     |
[INFO] [stdout] 917 |         let mut fonts = egui::FontDefinitions::default();
[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: fields `compute_msssim`, `vmaf_frames`, `threads`, and `use_libvmaf` are never read
[INFO] [stdout]   --> src/config.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct ComputeConfig {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub compute_msssim: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub vmaf_frames: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 62 |     /// 并行处理线程数 (0 = 自动)
[INFO] [stdout] 63 |     pub threads: u32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 64 |     /// 是否使用 libvmaf (需要系统安装)
[INFO] [stdout] 65 |     pub use_libvmaf: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ComputeConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_ui` is never used
[INFO] [stdout]   --> src/config.rs:93:12
[INFO] [stdout]    |
[INFO] [stdout] 91 | impl ComputeConfig {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 92 |     /// 从 UI 选项创建配置
[INFO] [stdout] 93 |     pub fn from_ui(
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `open` is never used
[INFO] [stdout]   --> src/db/mod.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl Database {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn open<P: AsRef<Path>>(path: P) -> Result<Self, rusqlite::Error> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/db/repository.rs:49:12
[INFO] [stdout]     |
[INFO] [stdout]   9 | impl Database {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  49 |     pub fn insert_records(&self, records: &[ComparisonRecord]) -> Result<Vec<ComparisonRecord>, rusqlite::Error> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn get_records_by_status(&self, status: &str) -> Result<Vec<ComparisonRecord>, rusqlite::Error> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn get_records_by_date_range(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn search_by_filename(&self, pattern: &str) -> Result<Vec<ComparisonRecord>, rusqlite::Error> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn update_record(&self, record: &ComparisonRecord) -> Result<bool, rusqlite::Error> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub fn delete_record(&self, id: i64) -> Result<bool, rusqlite::Error> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |     pub fn get_stats(&self) -> Result<Stats, rusqlite::Error> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Stats` is never constructed
[INFO] [stdout]    --> src/db/repository.rs:263:12
[INFO] [stdout]     |
[INFO] [stdout] 263 | pub struct Stats {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `reference` is never read
[INFO] [stdout]   --> src/engine/mod.rs:84:9
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub struct FilePair {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 83 |     pub index: u32,
[INFO] [stdout] 84 |     pub reference: Option<VideoFile>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FilePair` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `ProgressCallback` is never used
[INFO] [stdout]    --> src/engine/mod.rs:204:10
[INFO] [stdout]     |
[INFO] [stdout] 204 | pub type ProgressCallback = dyn Fn(usize, usize, &str, f64, Option<f64>) + Send + Sync;
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `find_unmatched_distorted` is never used
[INFO] [stdout]    --> src/engine/matcher.rs:109:12
[INFO] [stdout]     |
[INFO] [stdout]  20 | impl Matcher {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn find_unmatched_distorted(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `D3d11va` is never constructed
[INFO] [stdout]   --> src/engine/decoder.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum GpuBackend {
[INFO] [stdout]    |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 17 |     D3d11va,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GpuBackend` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `gpu_device` is never read
[INFO] [stdout]    --> src/engine/decoder.rs:160:9
[INFO] [stdout]     |
[INFO] [stdout] 152 | pub struct DecoderConfig {
[INFO] [stdout]     |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub gpu_device: u32,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DecoderConfig` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `frame_num` is never read
[INFO] [stdout]    --> src/engine/decoder.rs:191:9
[INFO] [stdout]     |
[INFO] [stdout] 179 | pub struct OwnedFrame {
[INFO] [stdout]     |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub frame_num: u32,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `OwnedFrame` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `data_size` is never used
[INFO] [stdout]    --> src/engine/decoder.rs:196:12
[INFO] [stdout]     |
[INFO] [stdout] 194 | impl OwnedFrame {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] 195 |     /// 获取 YUV 数据的大小
[INFO] [stdout] 196 |     pub fn data_size(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `size` is never read
[INFO] [stdout]    --> src/engine/decoder.rs:233:5
[INFO] [stdout]     |
[INFO] [stdout] 227 | struct FormatInfo {
[INFO] [stdout]     |        ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 233 |     size: Option<String>,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `FormatInfo` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `is_nvenc_available` is never used
[INFO] [stdout]    --> src/engine/decoder.rs:280:12
[INFO] [stdout]     |
[INFO] [stdout] 253 | impl VideoDecoder {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 280 |     pub fn is_nvenc_available() -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decode_parallel` is never used
[INFO] [stdout]    --> src/engine/decoder.rs:613:8
[INFO] [stdout]     |
[INFO] [stdout] 613 | pub fn decode_parallel<P: AsRef<Path>>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `calculate_plane`, and `calculate_video_psnr` are never used
[INFO] [stdout]   --> src/engine/metrics.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl PsnrCalculator {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 20 |     pub fn new(max_value: f32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn calculate_plane(&self, ref_data: &[u8], dist_data: &[u8]) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 90 |     pub fn calculate_video_psnr(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `k1` and `k2` are never read
[INFO] [stdout]    --> src/engine/metrics.rs:113:9
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub struct SsimCalculator {
[INFO] [stdout]     |            -------------- fields in this struct
[INFO] [stdout] 112 |     /// 线性系数 (通常为 1，但 VMAF 使用动态值)
[INFO] [stdout] 113 |     pub k1: f32,
[INFO] [stdout]     |         ^^
[INFO] [stdout] 114 |     pub k2: f32,
[INFO] [stdout]     |         ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `calculate_video_ssim` is never used
[INFO] [stdout]    --> src/engine/metrics.rs:256:12
[INFO] [stdout]     |
[INFO] [stdout] 128 | impl SsimCalculator {
[INFO] [stdout]     | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 256 |     pub fn calculate_video_ssim(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `model_path` and `thread_count` are never read
[INFO] [stdout]    --> src/engine/metrics.rs:284:9
[INFO] [stdout]     |
[INFO] [stdout] 282 | pub struct VmafCalculator {
[INFO] [stdout]     |            -------------- fields in this struct
[INFO] [stdout] 283 |     /// 模型路径 (如果使用 libvmaf)
[INFO] [stdout] 284 |     pub model_path: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 285 |     /// 是否使用多线程
[INFO] [stdout] 286 |     pub thread_count: usize,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `calculate_with_libvmaf` and `calculate_video_vmaf` are never used
[INFO] [stdout]    --> src/engine/metrics.rs:304:12
[INFO] [stdout]     |
[INFO] [stdout] 298 | impl VmafCalculator {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 304 |     pub fn calculate_with_libvmaf(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 433 |     pub fn calculate_video_vmaf(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MetricsStats` is never constructed
[INFO] [stdout]    --> src/engine/metrics.rs:454:12
[INFO] [stdout]     |
[INFO] [stdout] 454 | pub struct MetricsStats {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_all_metrics` is never used
[INFO] [stdout]    --> src/engine/metrics.rs:470:8
[INFO] [stdout]     |
[INFO] [stdout] 470 | pub fn calculate_all_metrics(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `throughput_fps` is never read
[INFO] [stdout]   --> src/engine/pipeline.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct ProcessResult {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub throughput_fps: f32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ProcessResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `throughput_string` is never used
[INFO] [stdout]   --> src/engine/pipeline.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl ProcessResult {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 21 |     /// 获取处理速度描述
[INFO] [stdout] 22 |     pub fn throughput_string(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `process_batch`, `process_batch_parallel`, and `process_batch_sequential` are never used
[INFO] [stdout]    --> src/engine/pipeline.rs:155:12
[INFO] [stdout]     |
[INFO] [stdout]  36 | impl Pipeline {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn process_batch(&self, pairs: &[FilePair]) -> Vec<ProcessResult> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 218 |     pub fn process_batch_parallel<F>(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn process_batch_sequential<F>(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Progress` is never constructed
[INFO] [stdout]    --> src/engine/pipeline.rs:464:12
[INFO] [stdout]     |
[INFO] [stdout] 464 | pub struct Progress {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `percentage`, `eta_string`, and `throughput_string` are never used
[INFO] [stdout]    --> src/engine/pipeline.rs:475:12
[INFO] [stdout]     |
[INFO] [stdout] 474 | impl Progress {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] 475 |     pub fn percentage(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 483 |     pub fn eta_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 498 |     pub fn throughput_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `D3d11va` is never constructed
[INFO] [stdout]   --> src/engine/ffmpeg_manager.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum GpuAccel {
[INFO] [stdout]    |          -------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 20 |     D3d11va,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GpuAccel` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `JohnVanSickle` and `Custom` are never constructed
[INFO] [stdout]   --> src/engine/ffmpeg_manager.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub enum FfmpegSource {
[INFO] [stdout]    |          ------------ variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 41 |     JohnVanSickle,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     Custom(PathBuf),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FfmpegSource` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `gpu_name` is never read
[INFO] [stdout]   --> src/engine/ffmpeg_manager.rs:99:5
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub struct FfmpegManager {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 99 |     gpu_name: String,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/engine/ffmpeg_manager.rs:369:12
[INFO] [stdout]     |
[INFO] [stdout] 104 | impl FfmpegManager {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 369 |     pub fn get_dir(&self) -> Option<&Path> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 374 |     pub fn gpu_accel(&self) -> &GpuAccel {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 379 |     pub fn gpu_name(&self) -> &str {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 389 |     pub fn is_available(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 400 |     pub fn build_decode_command<P: AsRef<Path>>(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 451 |     pub fn build_probe_command<P: AsRef<Path>>(&self, path: P) -> std::process::Command {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 465 |     pub fn get_probed_executable(&self) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_progress` is never used
[INFO] [stdout]   --> src/engine/ffmpeg_filter.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn get_progress() -> (u32, u32, u32, u32) {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Html` is never constructed
[INFO] [stdout]   --> src/export/exporters.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub enum ExportFormat {
[INFO] [stdout]    |          ------------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 14 |     Html,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ExportFormat` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `extension` is never used
[INFO] [stdout]   --> src/export/exporters.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl ExportFormat {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] 18 |     pub fn extension(&self) -> &str {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `time` is never read
[INFO] [stdout]   --> src/gui.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 44 | struct SmoothProgressBar {
[INFO] [stdout]    |        ----------------- field in this struct
[INFO] [stdout] 45 |     progress: f32,
[INFO] [stdout] 46 |     time: f32,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `started_at`, `frame_count`, `pair_current`, `pair_total`, and `pair_eta_ms` are never read
[INFO] [stdout]    --> src/gui.rs:163:9
[INFO] [stdout]     |
[INFO] [stdout] 152 | pub struct ProgressShared {
[INFO] [stdout]     |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub started_at: Mutex<u64>,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 164 |     pub frame_count: AtomicU32,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 165 |     pub pair_current: AtomicU32,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 166 |     pub pair_total: AtomicU32,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 167 |     pub pair_eta_ms: AtomicU64,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `label` is never used
[INFO] [stdout]    --> src/gui.rs:216:8
[INFO] [stdout]     |
[INFO] [stdout] 215 | impl SortCol {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] 216 |     fn label(&self) -> &str {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `do_export` is never used
[INFO] [stdout]    --> src/gui.rs:820:8
[INFO] [stdout]     |
[INFO] [stdout] 294 | impl VidCompareApp {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 820 |     fn do_export(&self, fmt: ExportFormat) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VmafModelInfo` is never constructed
[INFO] [stdout]   --> src/runtime.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct VmafModelInfo {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VMAF_MODELS` is never used
[INFO] [stdout]   --> src/runtime.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub const VMAF_MODELS: &[VmafModelInfo] = &[
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_vmaf_cache_dir` is never used
[INFO] [stdout]   --> src/runtime.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub fn get_vmaf_cache_dir() -> PathBuf {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_vmaf_model_path` is never used
[INFO] [stdout]   --> src/runtime.rs:63:8
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub fn get_vmaf_model_path(model_name: &str) -> Option<PathBuf> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ensure_vmaf_model` is never used
[INFO] [stdout]   --> src/runtime.rs:76:8
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub fn ensure_vmaf_model(model_name: &str) -> Option<PathBuf> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ensure_all_vmaf_models` is never used
[INFO] [stdout]    --> src/runtime.rs:117:8
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub fn ensure_all_vmaf_models() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ensure_cache_dirs` is never used
[INFO] [stdout]    --> src/runtime.rs:126:8
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub fn ensure_cache_dirs() -> std::io::Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `compute_msssim`, `vmaf_frames`, `threads`, and `use_libvmaf` are never read
[INFO] [stdout]   --> src/config.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct ComputeConfig {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub compute_msssim: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub vmaf_frames: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 62 |     /// 并行处理线程数 (0 = 自动)
[INFO] [stdout] 63 |     pub threads: u32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 64 |     /// 是否使用 libvmaf (需要系统安装)
[INFO] [stdout] 65 |     pub use_libvmaf: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ComputeConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_ui` is never used
[INFO] [stdout]   --> src/config.rs:93:12
[INFO] [stdout]    |
[INFO] [stdout] 91 | impl ComputeConfig {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 92 |     /// 从 UI 选项创建配置
[INFO] [stdout] 93 |     pub fn from_ui(
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `open` is never used
[INFO] [stdout]   --> src/db/mod.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl Database {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn open<P: AsRef<Path>>(path: P) -> Result<Self, rusqlite::Error> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/db/repository.rs:49:12
[INFO] [stdout]     |
[INFO] [stdout]   9 | impl Database {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  49 |     pub fn insert_records(&self, records: &[ComparisonRecord]) -> Result<Vec<ComparisonRecord>, rusqlite::Error> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn get_records_by_status(&self, status: &str) -> Result<Vec<ComparisonRecord>, rusqlite::Error> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn get_records_by_date_range(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn search_by_filename(&self, pattern: &str) -> Result<Vec<ComparisonRecord>, rusqlite::Error> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn update_record(&self, record: &ComparisonRecord) -> Result<bool, rusqlite::Error> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub fn delete_record(&self, id: i64) -> Result<bool, rusqlite::Error> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |     pub fn get_stats(&self) -> Result<Stats, rusqlite::Error> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Stats` is never constructed
[INFO] [stdout]    --> src/db/repository.rs:263:12
[INFO] [stdout]     |
[INFO] [stdout] 263 | pub struct Stats {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `reference` is never read
[INFO] [stdout]   --> src/engine/mod.rs:84:9
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub struct FilePair {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 83 |     pub index: u32,
[INFO] [stdout] 84 |     pub reference: Option<VideoFile>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FilePair` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `ProgressCallback` is never used
[INFO] [stdout]    --> src/engine/mod.rs:204:10
[INFO] [stdout]     |
[INFO] [stdout] 204 | pub type ProgressCallback = dyn Fn(usize, usize, &str, f64, Option<f64>) + Send + Sync;
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `find_unmatched_distorted` is never used
[INFO] [stdout]    --> src/engine/matcher.rs:109:12
[INFO] [stdout]     |
[INFO] [stdout]  20 | impl Matcher {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn find_unmatched_distorted(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `strip_extension` is never used
[INFO] [stdout]    --> src/engine/matcher.rs:132:8
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub fn strip_extension(filename: &str) -> &str {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_compression_suffix` is never used
[INFO] [stdout]    --> src/engine/matcher.rs:149:8
[INFO] [stdout]     |
[INFO] [stdout] 149 | pub fn has_compression_suffix(filename: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_base_name` is never used
[INFO] [stdout]    --> src/engine/matcher.rs:157:8
[INFO] [stdout]     |
[INFO] [stdout] 157 | pub fn get_base_name(filename: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `D3d11va` is never constructed
[INFO] [stdout]   --> src/engine/decoder.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum GpuBackend {
[INFO] [stdout]    |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 17 |     D3d11va,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GpuBackend` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `gpu_device` is never read
[INFO] [stdout]    --> src/engine/decoder.rs:160:9
[INFO] [stdout]     |
[INFO] [stdout] 152 | pub struct DecoderConfig {
[INFO] [stdout]     |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub gpu_device: u32,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DecoderConfig` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `y`, `u`, `v`, `width`, `height`, and `frame_num` are never read
[INFO] [stdout]    --> src/engine/decoder.rs:181:9
[INFO] [stdout]     |
[INFO] [stdout] 179 | pub struct OwnedFrame {
[INFO] [stdout]     |            ---------- fields in this struct
[INFO] [stdout] 180 |     /// Y 分量 (亮度)
[INFO] [stdout] 181 |     pub y: Vec<u8>,
[INFO] [stdout]     |         ^
[INFO] [stdout] 182 |     /// U 分量 (蓝色差)
[INFO] [stdout] 183 |     pub u: Vec<u8>,
[INFO] [stdout]     |         ^
[INFO] [stdout] 184 |     /// V 分量 (红色差)
[INFO] [stdout] 185 |     pub v: Vec<u8>,
[INFO] [stdout]     |         ^
[INFO] [stdout] 186 |     /// 帧宽度
[INFO] [stdout] 187 |     pub width: u32,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 188 |     /// 帧高度
[INFO] [stdout] 189 |     pub height: u32,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 190 |     /// 帧序号
[INFO] [stdout] 191 |     pub frame_num: u32,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `OwnedFrame` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `data_size` is never used
[INFO] [stdout]    --> src/engine/decoder.rs:196:12
[INFO] [stdout]     |
[INFO] [stdout] 194 | impl OwnedFrame {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] 195 |     /// 获取 YUV 数据的大小
[INFO] [stdout] 196 |     pub fn data_size(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `size` is never read
[INFO] [stdout]    --> src/engine/decoder.rs:233:5
[INFO] [stdout]     |
[INFO] [stdout] 227 | struct FormatInfo {
[INFO] [stdout]     |        ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 233 |     size: Option<String>,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `FormatInfo` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `is_nvenc_available` is never used
[INFO] [stdout]    --> src/engine/decoder.rs:280:12
[INFO] [stdout]     |
[INFO] [stdout] 253 | impl VideoDecoder {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 280 |     pub fn is_nvenc_available() -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decode_parallel` is never used
[INFO] [stdout]    --> src/engine/decoder.rs:613:8
[INFO] [stdout]     |
[INFO] [stdout] 613 | pub fn decode_parallel<P: AsRef<Path>>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PsnrCalculator` is never constructed
[INFO] [stdout]  --> src/engine/metrics.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct PsnrCalculator {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `calculate_frame`, `calculate_plane`, `calculate_mse`, and `calculate_video_psnr` are never used
[INFO] [stdout]   --> src/engine/metrics.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl PsnrCalculator {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 20 |     pub fn new(max_value: f32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn calculate_frame(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn calculate_plane(&self, ref_data: &[u8], dist_data: &[u8]) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn calculate_mse(&self, ref_data: &[u8], dist_data: &[u8]) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 90 |     pub fn calculate_video_psnr(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SsimCalculator` is never constructed
[INFO] [stdout]    --> src/engine/metrics.rs:111:12
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub struct SsimCalculator {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `calculate_frame`, `calculate_plane_ssim`, `calculate_block_ssim`, and `calculate_video_ssim` are never used
[INFO] [stdout]    --> src/engine/metrics.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 128 | impl SsimCalculator {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 129 |     pub fn new(block_size: u32, k1: f32, k2: f32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn calculate_frame(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn calculate_plane_ssim(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 197 |     fn calculate_block_ssim(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     pub fn calculate_video_ssim(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VmafCalculator` is never constructed
[INFO] [stdout]    --> src/engine/metrics.rs:282:12
[INFO] [stdout]     |
[INFO] [stdout] 282 | pub struct VmafCalculator {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `calculate_with_libvmaf`, `estimate_vmaf`, and `calculate_video_vmaf` are never used
[INFO] [stdout]    --> src/engine/metrics.rs:299:12
[INFO] [stdout]     |
[INFO] [stdout] 298 | impl VmafCalculator {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 299 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 304 |     pub fn calculate_with_libvmaf(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 416 |     pub fn estimate_vmaf(&self, psnr: f32, ssim: f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 433 |     pub fn calculate_video_vmaf(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MetricsStats` is never constructed
[INFO] [stdout]    --> src/engine/metrics.rs:454:12
[INFO] [stdout]     |
[INFO] [stdout] 454 | pub struct MetricsStats {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_all_metrics` is never used
[INFO] [stdout]    --> src/engine/metrics.rs:470:8
[INFO] [stdout]     |
[INFO] [stdout] 470 | pub fn calculate_all_metrics(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `throughput_fps` is never read
[INFO] [stdout]   --> src/engine/pipeline.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct ProcessResult {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub throughput_fps: f32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ProcessResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `throughput_string` is never used
[INFO] [stdout]   --> src/engine/pipeline.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl ProcessResult {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 21 |     /// 获取处理速度描述
[INFO] [stdout] 22 |     pub fn throughput_string(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `process_batch`, `process_batch_parallel`, and `process_batch_sequential` are never used
[INFO] [stdout]    --> src/engine/pipeline.rs:155:12
[INFO] [stdout]     |
[INFO] [stdout]  36 | impl Pipeline {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn process_batch(&self, pairs: &[FilePair]) -> Vec<ProcessResult> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 218 |     pub fn process_batch_parallel<F>(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn process_batch_sequential<F>(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Progress` is never constructed
[INFO] [stdout]    --> src/engine/pipeline.rs:464:12
[INFO] [stdout]     |
[INFO] [stdout] 464 | pub struct Progress {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `percentage`, `eta_string`, and `throughput_string` are never used
[INFO] [stdout]    --> src/engine/pipeline.rs:475:12
[INFO] [stdout]     |
[INFO] [stdout] 474 | impl Progress {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] 475 |     pub fn percentage(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 483 |     pub fn eta_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 498 |     pub fn throughput_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `D3d11va` is never constructed
[INFO] [stdout]   --> src/engine/ffmpeg_manager.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum GpuAccel {
[INFO] [stdout]    |          -------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 20 |     D3d11va,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GpuAccel` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `JohnVanSickle` and `Custom` are never constructed
[INFO] [stdout]   --> src/engine/ffmpeg_manager.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub enum FfmpegSource {
[INFO] [stdout]    |          ------------ variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 41 |     JohnVanSickle,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     Custom(PathBuf),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FfmpegSource` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `gpu_name` is never read
[INFO] [stdout]   --> src/engine/ffmpeg_manager.rs:99:5
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub struct FfmpegManager {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 99 |     gpu_name: String,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/engine/ffmpeg_manager.rs:369:12
[INFO] [stdout]     |
[INFO] [stdout] 104 | impl FfmpegManager {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 369 |     pub fn get_dir(&self) -> Option<&Path> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 374 |     pub fn gpu_accel(&self) -> &GpuAccel {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 379 |     pub fn gpu_name(&self) -> &str {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 389 |     pub fn is_available(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 400 |     pub fn build_decode_command<P: AsRef<Path>>(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 451 |     pub fn build_probe_command<P: AsRef<Path>>(&self, path: P) -> std::process::Command {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 465 |     pub fn get_probed_executable(&self) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_progress` is never used
[INFO] [stdout]   --> src/engine/ffmpeg_filter.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn get_progress() -> (u32, u32, u32, u32) {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Html` is never constructed
[INFO] [stdout]   --> src/export/exporters.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub enum ExportFormat {
[INFO] [stdout]    |          ------------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 14 |     Html,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ExportFormat` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `extension` is never used
[INFO] [stdout]   --> src/export/exporters.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl ExportFormat {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] 18 |     pub fn extension(&self) -> &str {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `time` is never read
[INFO] [stdout]   --> src/gui.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 44 | struct SmoothProgressBar {
[INFO] [stdout]    |        ----------------- field in this struct
[INFO] [stdout] 45 |     progress: f32,
[INFO] [stdout] 46 |     time: f32,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `started_at`, `frame_count`, `pair_current`, `pair_total`, and `pair_eta_ms` are never read
[INFO] [stdout]    --> src/gui.rs:163:9
[INFO] [stdout]     |
[INFO] [stdout] 152 | pub struct ProgressShared {
[INFO] [stdout]     |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub started_at: Mutex<u64>,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 164 |     pub frame_count: AtomicU32,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 165 |     pub pair_current: AtomicU32,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 166 |     pub pair_total: AtomicU32,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 167 |     pub pair_eta_ms: AtomicU64,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `label` is never used
[INFO] [stdout]    --> src/gui.rs:216:8
[INFO] [stdout]     |
[INFO] [stdout] 215 | impl SortCol {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] 216 |     fn label(&self) -> &str {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `do_export` is never used
[INFO] [stdout]    --> src/gui.rs:820:8
[INFO] [stdout]     |
[INFO] [stdout] 294 | impl VidCompareApp {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 820 |     fn do_export(&self, fmt: ExportFormat) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VmafModelInfo` is never constructed
[INFO] [stdout]   --> src/runtime.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct VmafModelInfo {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VMAF_MODELS` is never used
[INFO] [stdout]   --> src/runtime.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub const VMAF_MODELS: &[VmafModelInfo] = &[
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_vmaf_cache_dir` is never used
[INFO] [stdout]   --> src/runtime.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub fn get_vmaf_cache_dir() -> PathBuf {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_vmaf_model_path` is never used
[INFO] [stdout]   --> src/runtime.rs:63:8
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub fn get_vmaf_model_path(model_name: &str) -> Option<PathBuf> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ensure_vmaf_model` is never used
[INFO] [stdout]   --> src/runtime.rs:76:8
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub fn ensure_vmaf_model(model_name: &str) -> Option<PathBuf> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ensure_all_vmaf_models` is never used
[INFO] [stdout]    --> src/runtime.rs:117:8
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub fn ensure_all_vmaf_models() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ensure_cache_dirs` is never used
[INFO] [stdout]    --> src/runtime.rs:126:8
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub fn ensure_cache_dirs() -> std::io::Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 41.88s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: ashpd v0.8.1
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 5`
[INFO] running `Command { std: "docker" "inspect" "d969a885297c52bf4926ecf3655b038038cbcef51a4c00d44271ad9abc278abf", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d969a885297c52bf4926ecf3655b038038cbcef51a4c00d44271ad9abc278abf", kill_on_drop: false }`
[INFO] [stdout] d969a885297c52bf4926ecf3655b038038cbcef51a4c00d44271ad9abc278abf
