[INFO] fetching crate mcraw-tui 0.2.4...
[INFO] checking mcraw-tui-0.2.4 against e4d5758286bf2cf6f415802f2cf861747a7c6c8c for pr-152972
[INFO] extracting crate mcraw-tui 0.2.4 into /workspace/builds/worker-7-tc2/source
[INFO] started tweaking crates.io crate mcraw-tui 0.2.4
[INFO] removed 0 missing examples
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate mcraw-tui 0.2.4
[INFO] tweaked toml for crates.io crate mcraw-tui 0.2.4 written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate mcraw-tui 0.2.4 on toolchain e4d5758286bf2cf6f415802f2cf861747a7c6c8c
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+e4d5758286bf2cf6f415802f2cf861747a7c6c8c" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate mcraw-tui 0.2.4 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" "+e4d5758286bf2cf6f415802f2cf861747a7c6c8c" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 15c50404f2e12055bb5abb20790e16f6ccb0de2f9627b305b29c39a1c9613ec8
[INFO] running `Command { std: "docker" "start" "15c50404f2e12055bb5abb20790e16f6ccb0de2f9627b305b29c39a1c9613ec8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "15c50404f2e12055bb5abb20790e16f6ccb0de2f9627b305b29c39a1c9613ec8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "15c50404f2e12055bb5abb20790e16f6ccb0de2f9627b305b29c39a1c9613ec8" "/opt/rustwide/cargo-home/bin/cargo" "+e4d5758286bf2cf6f415802f2cf861747a7c6c8c" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "15c50404f2e12055bb5abb20790e16f6ccb0de2f9627b305b29c39a1c9613ec8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "15c50404f2e12055bb5abb20790e16f6ccb0de2f9627b305b29c39a1c9613ec8" "/opt/rustwide/cargo-home/bin/cargo" "+e4d5758286bf2cf6f415802f2cf861747a7c6c8c" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]     Checking log v0.4.32
[INFO] [stderr]     Checking smallvec v1.15.2
[INFO] [stderr]     Checking bitflags v2.13.0
[INFO] [stderr]    Compiling naga v24.0.0
[INFO] [stderr]    Compiling bytemuck_derive v1.10.2
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling cc v1.2.64
[INFO] [stderr]    Compiling wgpu-hal v24.0.4
[INFO] [stderr]    Compiling palette v0.7.6
[INFO] [stderr]     Checking rand_core v0.9.5
[INFO] [stderr]     Checking pxfm v0.1.29
[INFO] [stderr]     Checking serde_json v1.0.150
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]    Compiling palette_derive v0.7.6
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking mio v1.2.1
[INFO] [stderr]     Checking khronos-egl v6.0.0
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking gpu-descriptor-types v0.2.0
[INFO] [stderr]     Checking gpu-alloc-types v0.3.0
[INFO] [stderr]     Checking spirv v0.3.0+sdk-1.3.268.0
[INFO] [stderr]     Checking gpu-descriptor v0.3.2
[INFO] [stderr]     Checking wgpu-types v24.0.0
[INFO] [stderr]     Checking ordered-float v4.6.0
[INFO] [stderr]     Checking gpu-alloc v0.6.0
[INFO] [stderr]    Compiling ref-cast-impl v1.0.25
[INFO] [stderr]    Compiling wgpu-core v24.0.5
[INFO] [stderr]     Checking fast-srgb8 v1.0.0
[INFO] [stderr]     Checking rustix v0.38.44
[INFO] [stderr]     Checking bitvec v1.1.1
[INFO] [stderr]     Checking signal-hook-mio v0.2.5
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking rand v0.9.4
[INFO] [stderr]     Checking rand_xoshiro v0.7.0
[INFO] [stderr]     Checking ref-cast v1.0.25
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking ordered-float v5.3.0
[INFO] [stderr]    Compiling wgpu v24.0.5
[INFO] [stderr]     Checking time v0.3.49
[INFO] [stderr]     Checking compact_str v0.8.2
[INFO] [stderr]     Checking unicode-truncate v1.1.0
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]     Checking memmap2 v0.9.10
[INFO] [stderr]    Compiling mcraw-tui v0.2.4 (/opt/rustwide/workdir)
[INFO] [stderr]     Checking jpeg-decoder v0.3.2
[INFO] [stderr]     Checking tokio v1.52.3
[INFO] [stderr]     Checking uuid v1.23.3
[INFO] [stderr]    Compiling libmimalloc-sys v0.1.49
[INFO] [stderr]     Checking bytemuck v1.25.0
[INFO] [stderr]     Checking crossterm v0.28.1
[INFO] [stderr]     Checking strum v0.26.3
[INFO] [stderr]     Checking tiff v0.9.1
[INFO] [stderr]     Checking safe_arch v0.9.3
[INFO] [stderr]     Checking safe_arch v0.7.4
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]     Checking wide v0.8.3
[INFO] [stderr]     Checking wide v0.7.33
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling instability v0.3.12
[INFO] [stderr]     Checking moxcms v0.8.1
[INFO] [stderr]     Checking mimalloc v0.1.52
[INFO] [stderr]     Checking clap v4.6.1
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking ratatui v0.29.0
[INFO] [stderr]     Checking tracing-serde v0.2.0
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]     Checking motioncam-decoder v0.1.2
[INFO] [stderr]     Checking tracing-appender v0.2.5
[INFO] [stderr]     Checking image v0.25.10
[INFO] [stderr]     Checking quantette v0.5.1
[INFO] [stderr]     Checking icy_sixel v0.5.0
[INFO] [stdout] warning: unnecessary parentheses around index expression
[INFO] [stdout]     --> src/ui.rs:1416:28
[INFO] [stdout]      |
[INFO] [stdout] 1416 |             let c = dither[((i + anim_offset as usize) % 4)];
[INFO] [stdout]      |                            ^                              ^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1416 -             let c = dither[((i + anim_offset as usize) % 4)];
[INFO] [stdout] 1416 +             let c = dither[(i + anim_offset as usize) % 4];
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Write`
[INFO] [stdout]    --> src/file_browser.rs:244:13
[INFO] [stdout]     |
[INFO] [stdout] 244 |         use std::io::Write;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around index expression
[INFO] [stdout]     --> src/ui.rs:1416:28
[INFO] [stdout]      |
[INFO] [stdout] 1416 |             let c = dither[((i + anim_offset as usize) % 4)];
[INFO] [stdout]      |                            ^                              ^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1416 -             let c = dither[((i + anim_offset as usize) % 4)];
[INFO] [stdout] 1416 +             let c = dither[(i + anim_offset as usize) % 4];
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: overflow evaluating the requirement `{closure@src/pipeline.rs:348:9: 348:30}: Send`
[INFO] [stdout]    --> src/pipeline.rs:345:81
[INFO] [stdout]     |
[INFO] [stdout] 345 |     let processor_handle = std::thread::Builder::new().name("processor".into()).spawn({
[INFO] [stdout]     |                                                                                 ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: which requires `(usize, BayerPattern, std::option::Option<LensShadingMap>, LensCorrectionMode, crossbeam_channel::Receiver<FrameSlot>, Arc<std::sync::atomic::Atomic<bool>>, _, _, [f32; 9], [f32; 9], [f32; 9], _, f64, f64, f64, f64, u32, u32, u32, u32, u32, f64, Option<_>, u32, _, u32, u32, Sender<_>): Send`
[INFO] [stdout]     = note: which requires `std::option::Option<RcdPipeline>: Send`
[INFO] [stdout]     = note: which requires `RcdPipeline: Send`
[INFO] [stdout]     = note: which requires `wgpu::BindGroupLayout: Send`
[INFO] [stdout]     = note: which requires `wgpu::dispatch::DispatchBindGroupLayout: Send`
[INFO] [stdout]     = note: which requires `Arc<wgpu::backend::wgpu_core::CoreBindGroupLayout>: Send`
[INFO] [stdout]     = note: which requires `wgpu::backend::wgpu_core::CoreBindGroupLayout: Send`
[INFO] [stdout]     = note: which requires `wgpu::backend::wgpu_core::ContextWgpuCore: Send`
[INFO] [stdout]     = note: which requires `Arc<wgpu::wgpu_core::global::Global>: Send`
[INFO] [stdout]     = note: which requires `wgpu::wgpu_core::global::Global: Send`
[INFO] [stdout]     = note: which requires `Hub: Send`
[INFO] [stdout]     = note: which requires `registry::Registry<Arc<wgpu::wgpu_core::command::CommandBuffer>>: Send`
[INFO] [stdout]     = note: which requires `core::lock::vanilla::RwLock<storage::Storage<Arc<wgpu::wgpu_core::command::CommandBuffer>>>: Send`
[INFO] [stdout]     = note: which requires `lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, storage::Storage<Arc<wgpu::wgpu_core::command::CommandBuffer>>>: Send`
[INFO] [stdout]     = note: which requires `storage::Storage<Arc<wgpu::wgpu_core::command::CommandBuffer>>: Send`
[INFO] [stdout]     = note: and so on...
[INFO] [stdout]     = help: consider adding a manual `impl` of auto traits like `Send` for intermediate types, if auto traits are involved
[INFO] [stdout]     = help: or consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`mcraw_tui`)
[INFO] [stdout]     = note: this lint is attached to the whole crate and can't be disabled on a per-function basis
[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 #159228 <https://github.com/rust-lang/rust/issues/159228>
[INFO] [stdout]     = note: `#[warn(recursion_depth_exceeding_limit)]` (part of `#[warn(future_incompatible)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: overflow evaluating the requirement `{closure@src/pipeline.rs:348:9: 348:30}: Send`
[INFO] [stdout]    --> src/pipeline.rs:345:81
[INFO] [stdout]     |
[INFO] [stdout] 345 |     let processor_handle = std::thread::Builder::new().name("processor".into()).spawn({
[INFO] [stdout]     |                                                                                 ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: which requires `(usize, file::BayerPattern, std::option::Option<LensShadingMap>, LensCorrectionMode, crossbeam_channel::Receiver<FrameSlot>, Arc<std::sync::atomic::Atomic<bool>>, _, _, [f32; 9], [f32; 9], [f32; 9], _, f64, f64, f64, f64, u32, u32, u32, u32, u32, f64, Option<_>, u32, _, u32, u32, Sender<_>): Send`
[INFO] [stdout]     = note: which requires `std::option::Option<RcdPipeline>: Send`
[INFO] [stdout]     = note: which requires `RcdPipeline: Send`
[INFO] [stdout]     = note: which requires `wgpu::BindGroupLayout: Send`
[INFO] [stdout]     = note: which requires `wgpu::dispatch::DispatchBindGroupLayout: Send`
[INFO] [stdout]     = note: which requires `Arc<wgpu::backend::wgpu_core::CoreBindGroupLayout>: Send`
[INFO] [stdout]     = note: which requires `wgpu::backend::wgpu_core::CoreBindGroupLayout: Send`
[INFO] [stdout]     = note: which requires `wgpu::backend::wgpu_core::ContextWgpuCore: Send`
[INFO] [stdout]     = note: which requires `Arc<wgpu::wgpu_core::global::Global>: Send`
[INFO] [stdout]     = note: which requires `wgpu::wgpu_core::global::Global: Send`
[INFO] [stdout]     = note: which requires `Hub: Send`
[INFO] [stdout]     = note: which requires `registry::Registry<Arc<wgpu::wgpu_core::command::CommandBuffer>>: Send`
[INFO] [stdout]     = note: which requires `core::lock::vanilla::RwLock<storage::Storage<Arc<wgpu::wgpu_core::command::CommandBuffer>>>: Send`
[INFO] [stdout]     = note: which requires `lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, storage::Storage<Arc<wgpu::wgpu_core::command::CommandBuffer>>>: Send`
[INFO] [stdout]     = note: which requires `storage::Storage<Arc<wgpu::wgpu_core::command::CommandBuffer>>: Send`
[INFO] [stdout]     = note: and so on...
[INFO] [stdout]     = help: consider adding a manual `impl` of auto traits like `Send` for intermediate types, if auto traits are involved
[INFO] [stdout]     = help: or consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`mcraw_tui`)
[INFO] [stdout]     = note: this lint is attached to the whole crate and can't be disabled on a per-function basis
[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 #159228 <https://github.com/rust-lang/rust/issues/159228>
[INFO] [stdout]     = note: `#[warn(recursion_depth_exceeding_limit)]` (part of `#[warn(future_incompatible)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `base_codec_name` is never read
[INFO] [stdout]   --> src/export.rs:66:43
[INFO] [stdout]    |
[INFO] [stdout] 66 |         let mut base_codec_name: String = String::new();
[INFO] [stdout]    |                                           ^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 85 |                 base_codec_name = prores_encoder.to_string();
[INFO] [stdout]    |                 --------------- `base_codec_name` is overwritten here before the previous value is read
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `base_pix_fmt` is never read
[INFO] [stdout]   --> src/export.rs:67:40
[INFO] [stdout]    |
[INFO] [stdout] 67 |         let mut base_pix_fmt: String = String::new();
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 86 |                 base_pix_fmt = pix_fmt.to_string();
[INFO] [stdout]    |                 ------------ `base_pix_fmt` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `base_codec_name` is never read
[INFO] [stdout]   --> src/export.rs:66:43
[INFO] [stdout]    |
[INFO] [stdout] 66 |         let mut base_codec_name: String = String::new();
[INFO] [stdout]    |                                           ^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 85 |                 base_codec_name = prores_encoder.to_string();
[INFO] [stdout]    |                 --------------- `base_codec_name` is overwritten here before the previous value is read
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `base_pix_fmt` is never read
[INFO] [stdout]   --> src/export.rs:67:40
[INFO] [stdout]    |
[INFO] [stdout] 67 |         let mut base_pix_fmt: String = String::new();
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 86 |                 base_pix_fmt = pix_fmt.to_string();
[INFO] [stdout]    |                 ------------ `base_pix_fmt` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/pipeline.rs:297:168
[INFO] [stdout]     |
[INFO] [stdout] 297 | ...flush(); Some(temp_path) } Err(e) => { let _ = std::fs::remove_file(&temp_path); None } } }
[INFO] [stdout]     |                                   ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `matrix_path` is never read
[INFO] [stdout]    --> src/pipeline.rs:171:27
[INFO] [stdout]     |
[INFO] [stdout] 171 |     let mut matrix_path = "";
[INFO] [stdout]     |                           ^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 188 |         matrix_path = "ForwardMatrix1+2 → D50 (preferred)";
[INFO] [stdout]     |         -------------------------------------------------- `matrix_path` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/pipeline.rs:297:168
[INFO] [stdout]     |
[INFO] [stdout] 297 | ...flush(); Some(temp_path) } Err(e) => { let _ = std::fs::remove_file(&temp_path); None } } }
[INFO] [stdout]     |                                   ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `matrix_path` is never read
[INFO] [stdout]    --> src/pipeline.rs:171:27
[INFO] [stdout]     |
[INFO] [stdout] 171 |     let mut matrix_path = "";
[INFO] [stdout]     |                           ^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 188 |         matrix_path = "ForwardMatrix1+2 → D50 (preferred)";
[INFO] [stdout]     |         -------------------------------------------------- `matrix_path` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `app`
[INFO] [stdout]    --> src/ui.rs:323:54
[INFO] [stdout]     |
[INFO] [stdout] 323 | fn render_empty_state(frame: &mut Frame, area: Rect, app: &App, regions: &mut Vec<ClickRegion>) {
[INFO] [stdout]     |                                                      ^^^ help: if this is intentional, prefix it with an underscore: `_app`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `regions`
[INFO] [stdout]    --> src/ui.rs:323:65
[INFO] [stdout]     |
[INFO] [stdout] 323 | fn render_empty_state(frame: &mut Frame, area: Rect, app: &App, regions: &mut Vec<ClickRegion>) {
[INFO] [stdout]     |                                                                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_regions`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `regions`
[INFO] [stdout]    --> src/ui.rs:415:71
[INFO] [stdout]     |
[INFO] [stdout] 415 | fn render_grade_screen_body(frame: &mut Frame, area: Rect, app: &App, regions: &mut Vec<ClickRegion>) {
[INFO] [stdout]     |                                                                       ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_regions`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `regions`
[INFO] [stdout]    --> src/ui.rs:522:68
[INFO] [stdout]     |
[INFO] [stdout] 522 | fn render_culling_screen(frame: &mut Frame, area: Rect, app: &App, regions: &mut Vec<ClickRegion>) {
[INFO] [stdout]     |                                                                    ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_regions`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `left_inner`
[INFO] [stdout]    --> src/ui.rs:532:9
[INFO] [stdout]     |
[INFO] [stdout] 532 |     let left_inner = horiz[0].height.saturating_sub(2) as usize;
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_left_inner`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `app`
[INFO] [stdout]     --> src/ui.rs:1335:98
[INFO] [stdout]      |
[INFO] [stdout] 1335 | ... Style, value_style: Style, app: &'a App, avail_w: u16) -> Vec<Line<'a>> {
[INFO] [stdout]      |                                ^^^ help: if this is intentional, prefix it with an underscore: `_app`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `avail_w`
[INFO] [stdout]     --> src/ui.rs:1335:112
[INFO] [stdout]      |
[INFO] [stdout] 1335 | ...e: Style, app: &'a App, avail_w: u16) -> Vec<Line<'a>> {
[INFO] [stdout]      |                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_avail_w`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `inner_w`
[INFO] [stdout]     --> src/ui.rs:1341:13
[INFO] [stdout]      |
[INFO] [stdout] 1341 |         let inner_w = (info.width.max(info.height) as f32 / info.width.min(info.height) as f32).round() as usize;
[INFO] [stdout]      |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_inner_w`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `regions`
[INFO] [stdout]     --> src/ui.rs:2073:60
[INFO] [stdout]      |
[INFO] [stdout] 2073 | fn render_status(frame: &mut Frame, app: &App, area: Rect, regions: &mut Vec<ClickRegion>) {
[INFO] [stdout]      |                                                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_regions`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `app`
[INFO] [stdout]    --> src/ui.rs:323:54
[INFO] [stdout]     |
[INFO] [stdout] 323 | fn render_empty_state(frame: &mut Frame, area: Rect, app: &App, regions: &mut Vec<ClickRegion>) {
[INFO] [stdout]     |                                                      ^^^ help: if this is intentional, prefix it with an underscore: `_app`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `regions`
[INFO] [stdout]    --> src/ui.rs:323:65
[INFO] [stdout]     |
[INFO] [stdout] 323 | fn render_empty_state(frame: &mut Frame, area: Rect, app: &App, regions: &mut Vec<ClickRegion>) {
[INFO] [stdout]     |                                                                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_regions`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `regions`
[INFO] [stdout]    --> src/ui.rs:415:71
[INFO] [stdout]     |
[INFO] [stdout] 415 | fn render_grade_screen_body(frame: &mut Frame, area: Rect, app: &App, regions: &mut Vec<ClickRegion>) {
[INFO] [stdout]     |                                                                       ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_regions`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `regions`
[INFO] [stdout]    --> src/ui.rs:522:68
[INFO] [stdout]     |
[INFO] [stdout] 522 | fn render_culling_screen(frame: &mut Frame, area: Rect, app: &App, regions: &mut Vec<ClickRegion>) {
[INFO] [stdout]     |                                                                    ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_regions`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `left_inner`
[INFO] [stdout]    --> src/ui.rs:532:9
[INFO] [stdout]     |
[INFO] [stdout] 532 |     let left_inner = horiz[0].height.saturating_sub(2) as usize;
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_left_inner`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `app`
[INFO] [stdout]     --> src/ui.rs:1335:98
[INFO] [stdout]      |
[INFO] [stdout] 1335 | ... Style, value_style: Style, app: &'a App, avail_w: u16) -> Vec<Line<'a>> {
[INFO] [stdout]      |                                ^^^ help: if this is intentional, prefix it with an underscore: `_app`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `mid_grey_lin` is never read
[INFO] [stdout]    --> src/agx.rs:108:5
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub struct AgxPipeline {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 108 |     mid_grey_lin: f32,
[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 variable: `avail_w`
[INFO] [stdout]     --> src/ui.rs:1335:112
[INFO] [stdout]      |
[INFO] [stdout] 1335 | ...e: Style, app: &'a App, avail_w: u16) -> Vec<Line<'a>> {
[INFO] [stdout]      |                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_avail_w`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `resize_rgba` is never used
[INFO] [stdout]     --> src/app.rs:1090:8
[INFO] [stdout]      |
[INFO] [stdout]  566 | impl App {
[INFO] [stdout]      | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1090 |     fn resize_rgba(&self, src: &[u8], src_w: u32, src_h: u32, dst_w: u32, dst_h: u32) -> Vec<u8> {
[INFO] [stdout]      |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `inner_w`
[INFO] [stdout]     --> src/ui.rs:1341:13
[INFO] [stdout]      |
[INFO] [stdout] 1341 |         let inner_w = (info.width.max(info.height) as f32 / info.width.min(info.height) as f32).round() as usize;
[INFO] [stdout]      |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_inner_w`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `pattern` is never read
[INFO] [stdout]    --> src/color.rs:508:31
[INFO] [stdout]     |
[INFO] [stdout] 508 | pub struct BilinearDemosaic { pattern: BayerPattern }
[INFO] [stdout]     |            ----------------   ^^^^^^^
[INFO] [stdout]     |            |
[INFO] [stdout]     |            field in this struct
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `demosaic`, `agx`, `output_gamma`, and `enable_tonemap` are never read
[INFO] [stdout]    --> src/color.rs:707:32
[INFO] [stdout]     |
[INFO] [stdout] 707 | pub struct AgxKrakenPipeline { demosaic: BilinearDemosaic, agx: AgxPipeline, output_gamma: f32, enable_tonemap: bool }
[INFO] [stdout]     |            -----------------   ^^^^^^^^                    ^^^               ^^^^^^^^^^^^       ^^^^^^^^^^^^^^
[INFO] [stdout]     |            |
[INFO] [stdout]     |            fields in this struct
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `sensor_orientation`, `baseline_exposure`, and `num_segments` are never read
[INFO] [stdout]   --> src/file.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | struct MotionJsonMetadata {
[INFO] [stdout]    |        ------------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 12 |     sensor_orientation: Option<i64>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     baseline_exposure: Option<f64>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     num_segments: Option<i64>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MotionJsonMetadata` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `recording_type` and `use_accurate_timestamp` are never read
[INFO] [stdout]   --> src/file.rs:58:5
[INFO] [stdout]    |
[INFO] [stdout] 56 | struct ExtraData {
[INFO] [stdout]    |        --------- fields in this struct
[INFO] [stdout] 57 |     #[serde(rename = "recordingType", default)]
[INFO] [stdout] 58 |     recording_type: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     use_accurate_timestamp: Option<bool>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ExtraData` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `version_major` and `version_build` are never read
[INFO] [stdout]   --> src/file.rs:76:5
[INFO] [stdout]    |
[INFO] [stdout] 70 | struct BuildMetadata {
[INFO] [stdout]    |        ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 76 |     version_major: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 77 |     #[serde(rename = "version.build", default)]
[INFO] [stdout] 78 |     version_build: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BuildMetadata` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `camera_id` is never read
[INFO] [stdout]   --> src/file.rs:84:5
[INFO] [stdout]    |
[INFO] [stdout] 82 | struct DeviceProfile {
[INFO] [stdout]    |        ------------- field in this struct
[INFO] [stdout] 83 |     #[serde(rename = "cameraId", default)]
[INFO] [stdout] 84 |     camera_id: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DeviceProfile` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `conv_bgl` and `fill_bgl` are never read
[INFO] [stdout]   --> src/gpu.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct RcdPipeline {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 20 |     conv_bgl: wgpu::BindGroupLayout, fill_bgl: wgpu::BindGroupLayout,
[INFO] [stdout]    |     ^^^^^^^^                         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated constants are never used
[INFO] [stdout]   --> src/ui.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl Palette {
[INFO] [stdout]    | ------------ associated constants in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 26 |     const BG_PANEL: Color = Color::Rgb(0x12, 0x17, 0x0F);
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     const ACCENT_MIST: Color = Color::Rgb(0x6D, 0xAE, 0xAE);
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     const WARNING: Color = Color::Rgb(0xE8, 0xA0, 0x35);
[INFO] [stdout]    |           ^^^^^^^
[INFO] [stdout] 42 |     const ERROR: Color = Color::Rgb(0xC4, 0x5C, 0x3C);
[INFO] [stdout]    |           ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     const PROGRESS_BAR_BG: Color = Self::BG_ELEVATED;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 73 |     const PROGRESS_BAR_FG: Color = Self::ACCENT_GREEN;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 74 |     const PANEL_BG: Color = Self::BG_PANEL;
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 75 |     const HEADER_BG: Color = Self::BG_VOID;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 76 |     const HEADER_FG: Color = Self::TEXT_PRIMARY;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `frames_to_timecode` is never used
[INFO] [stdout]     --> src/ui.rs:1293:4
[INFO] [stdout]      |
[INFO] [stdout] 1293 | fn frames_to_timecode(frame: usize, total: usize, fps: f64) -> (String, String) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sprocket_track` is never used
[INFO] [stdout]     --> src/ui.rs:1307:4
[INFO] [stdout]      |
[INFO] [stdout] 1307 | fn sprocket_track(frame: usize, total: usize, width: usize, _prev_playhead: Option<usize>) -> Line<'static> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gradient_slider` is never used
[INFO] [stdout]     --> src/ui.rs:1389:4
[INFO] [stdout]      |
[INFO] [stdout] 1389 | fn gradient_slider(label: &str, label_w: usize, value: f32, lo: f32, hi: f32, display: String,
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_grade_panel` is never used
[INFO] [stdout]     --> src/ui.rs:1433:4
[INFO] [stdout]      |
[INFO] [stdout] 1433 | fn render_grade_panel(frame: &mut Frame, app: &App, area: Rect, border_color: Color) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `regions`
[INFO] [stdout]     --> src/ui.rs:2073:60
[INFO] [stdout]      |
[INFO] [stdout] 2073 | fn render_status(frame: &mut Frame, app: &App, area: Rect, regions: &mut Vec<ClickRegion>) {
[INFO] [stdout]      |                                                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_regions`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `mid_grey_lin` is never read
[INFO] [stdout]    --> src/agx.rs:108:5
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub struct AgxPipeline {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 108 |     mid_grey_lin: f32,
[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 `resize_rgba` is never used
[INFO] [stdout]     --> src/app.rs:1090:8
[INFO] [stdout]      |
[INFO] [stdout]  566 | impl App {
[INFO] [stdout]      | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1090 |     fn resize_rgba(&self, src: &[u8], src_w: u32, src_h: u32, dst_w: u32, dst_h: u32) -> Vec<u8> {
[INFO] [stdout]      |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `pattern` is never read
[INFO] [stdout]    --> src/color.rs:508:31
[INFO] [stdout]     |
[INFO] [stdout] 508 | pub struct BilinearDemosaic { pattern: BayerPattern }
[INFO] [stdout]     |            ----------------   ^^^^^^^
[INFO] [stdout]     |            |
[INFO] [stdout]     |            field in this struct
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `demosaic`, `agx`, `output_gamma`, and `enable_tonemap` are never read
[INFO] [stdout]    --> src/color.rs:707:32
[INFO] [stdout]     |
[INFO] [stdout] 707 | pub struct AgxKrakenPipeline { demosaic: BilinearDemosaic, agx: AgxPipeline, output_gamma: f32, enable_tonemap: bool }
[INFO] [stdout]     |            -----------------   ^^^^^^^^                    ^^^               ^^^^^^^^^^^^       ^^^^^^^^^^^^^^
[INFO] [stdout]     |            |
[INFO] [stdout]     |            fields in this struct
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `sensor_orientation`, `baseline_exposure`, and `num_segments` are never read
[INFO] [stdout]   --> src/file.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | struct MotionJsonMetadata {
[INFO] [stdout]    |        ------------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 12 |     sensor_orientation: Option<i64>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     baseline_exposure: Option<f64>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     num_segments: Option<i64>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MotionJsonMetadata` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `recording_type` and `use_accurate_timestamp` are never read
[INFO] [stdout]   --> src/file.rs:58:5
[INFO] [stdout]    |
[INFO] [stdout] 56 | struct ExtraData {
[INFO] [stdout]    |        --------- fields in this struct
[INFO] [stdout] 57 |     #[serde(rename = "recordingType", default)]
[INFO] [stdout] 58 |     recording_type: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     use_accurate_timestamp: Option<bool>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ExtraData` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `version_major` and `version_build` are never read
[INFO] [stdout]   --> src/file.rs:76:5
[INFO] [stdout]    |
[INFO] [stdout] 70 | struct BuildMetadata {
[INFO] [stdout]    |        ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 76 |     version_major: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 77 |     #[serde(rename = "version.build", default)]
[INFO] [stdout] 78 |     version_build: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BuildMetadata` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `camera_id` is never read
[INFO] [stdout]   --> src/file.rs:84:5
[INFO] [stdout]    |
[INFO] [stdout] 82 | struct DeviceProfile {
[INFO] [stdout]    |        ------------- field in this struct
[INFO] [stdout] 83 |     #[serde(rename = "cameraId", default)]
[INFO] [stdout] 84 |     camera_id: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DeviceProfile` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `conv_bgl` and `fill_bgl` are never read
[INFO] [stdout]   --> src/gpu.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct RcdPipeline {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 20 |     conv_bgl: wgpu::BindGroupLayout, fill_bgl: wgpu::BindGroupLayout,
[INFO] [stdout]    |     ^^^^^^^^                         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated constants are never used
[INFO] [stdout]   --> src/ui.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl Palette {
[INFO] [stdout]    | ------------ associated constants in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 26 |     const BG_PANEL: Color = Color::Rgb(0x12, 0x17, 0x0F);
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     const ACCENT_MIST: Color = Color::Rgb(0x6D, 0xAE, 0xAE);
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     const WARNING: Color = Color::Rgb(0xE8, 0xA0, 0x35);
[INFO] [stdout]    |           ^^^^^^^
[INFO] [stdout] 42 |     const ERROR: Color = Color::Rgb(0xC4, 0x5C, 0x3C);
[INFO] [stdout]    |           ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     const PROGRESS_BAR_BG: Color = Self::BG_ELEVATED;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 73 |     const PROGRESS_BAR_FG: Color = Self::ACCENT_GREEN;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 74 |     const PANEL_BG: Color = Self::BG_PANEL;
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 75 |     const HEADER_BG: Color = Self::BG_VOID;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 76 |     const HEADER_FG: Color = Self::TEXT_PRIMARY;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `frames_to_timecode` is never used
[INFO] [stdout]     --> src/ui.rs:1293:4
[INFO] [stdout]      |
[INFO] [stdout] 1293 | fn frames_to_timecode(frame: usize, total: usize, fps: f64) -> (String, String) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sprocket_track` is never used
[INFO] [stdout]     --> src/ui.rs:1307:4
[INFO] [stdout]      |
[INFO] [stdout] 1307 | fn sprocket_track(frame: usize, total: usize, width: usize, _prev_playhead: Option<usize>) -> Line<'static> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gradient_slider` is never used
[INFO] [stdout]     --> src/ui.rs:1389:4
[INFO] [stdout]      |
[INFO] [stdout] 1389 | fn gradient_slider(label: &str, label_w: usize, value: f32, lo: f32, hi: f32, display: String,
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_grade_panel` is never used
[INFO] [stdout]     --> src/ui.rs:1433:4
[INFO] [stdout]      |
[INFO] [stdout] 1433 | fn render_grade_panel(frame: &mut Frame, app: &App, area: Rect, border_color: Color) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around index expression
[INFO] [stdout]     --> src/ui.rs:1416:28
[INFO] [stdout]      |
[INFO] [stdout] 1416 |             let c = dither[((i + anim_offset as usize) % 4)];
[INFO] [stdout]      |                            ^                              ^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1416 -             let c = dither[((i + anim_offset as usize) % 4)];
[INFO] [stdout] 1416 +             let c = dither[(i + anim_offset as usize) % 4];
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Write`
[INFO] [stdout]    --> src/file_browser.rs:244:13
[INFO] [stdout]     |
[INFO] [stdout] 244 |         use std::io::Write;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around index expression
[INFO] [stdout]     --> src/ui.rs:1416:28
[INFO] [stdout]      |
[INFO] [stdout] 1416 |             let c = dither[((i + anim_offset as usize) % 4)];
[INFO] [stdout]      |                            ^                              ^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1416 -             let c = dither[((i + anim_offset as usize) % 4)];
[INFO] [stdout] 1416 +             let c = dither[(i + anim_offset as usize) % 4];
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: overflow evaluating the requirement `{closure@src/pipeline.rs:348:9: 348:30}: Send`
[INFO] [stdout]    --> src/pipeline.rs:345:81
[INFO] [stdout]     |
[INFO] [stdout] 345 |     let processor_handle = std::thread::Builder::new().name("processor".into()).spawn({
[INFO] [stdout]     |                                                                                 ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: which requires `(usize, BayerPattern, std::option::Option<LensShadingMap>, LensCorrectionMode, crossbeam_channel::Receiver<FrameSlot>, Arc<std::sync::atomic::Atomic<bool>>, _, _, [f32; 9], [f32; 9], [f32; 9], _, f64, f64, f64, f64, u32, u32, u32, u32, u32, f64, Option<_>, u32, _, u32, u32, Sender<_>): Send`
[INFO] [stdout]     = note: which requires `std::option::Option<RcdPipeline>: Send`
[INFO] [stdout]     = note: which requires `RcdPipeline: Send`
[INFO] [stdout]     = note: which requires `wgpu::BindGroupLayout: Send`
[INFO] [stdout]     = note: which requires `wgpu::dispatch::DispatchBindGroupLayout: Send`
[INFO] [stdout]     = note: which requires `Arc<wgpu::backend::wgpu_core::CoreBindGroupLayout>: Send`
[INFO] [stdout]     = note: which requires `wgpu::backend::wgpu_core::CoreBindGroupLayout: Send`
[INFO] [stdout]     = note: which requires `wgpu::backend::wgpu_core::ContextWgpuCore: Send`
[INFO] [stdout]     = note: which requires `Arc<wgpu::wgpu_core::global::Global>: Send`
[INFO] [stdout]     = note: which requires `wgpu::wgpu_core::global::Global: Send`
[INFO] [stdout]     = note: which requires `Hub: Send`
[INFO] [stdout]     = note: which requires `wgpu::wgpu_core::registry::Registry<Arc<wgpu::wgpu_core::command::CommandBuffer>>: Send`
[INFO] [stdout]     = note: which requires `core::lock::vanilla::RwLock<storage::Storage<Arc<wgpu::wgpu_core::command::CommandBuffer>>>: Send`
[INFO] [stdout]     = note: which requires `lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, storage::Storage<Arc<wgpu::wgpu_core::command::CommandBuffer>>>: Send`
[INFO] [stdout]     = note: which requires `storage::Storage<Arc<wgpu::wgpu_core::command::CommandBuffer>>: Send`
[INFO] [stdout]     = note: and so on...
[INFO] [stdout]     = help: consider adding a manual `impl` of auto traits like `Send` for intermediate types, if auto traits are involved
[INFO] [stdout]     = help: or consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`mcraw_tui`)
[INFO] [stdout]     = note: this lint is attached to the whole crate and can't be disabled on a per-function basis
[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 #159228 <https://github.com/rust-lang/rust/issues/159228>
[INFO] [stdout]     = note: `#[warn(recursion_depth_exceeding_limit)]` (part of `#[warn(future_incompatible)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: overflow evaluating the requirement `{closure@src/pipeline.rs:348:9: 348:30}: Send`
[INFO] [stdout]    --> src/pipeline.rs:345:81
[INFO] [stdout]     |
[INFO] [stdout] 345 |     let processor_handle = std::thread::Builder::new().name("processor".into()).spawn({
[INFO] [stdout]     |                                                                                 ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: which requires `(usize, file::BayerPattern, std::option::Option<LensShadingMap>, LensCorrectionMode, crossbeam_channel::Receiver<FrameSlot>, Arc<std::sync::atomic::Atomic<bool>>, _, _, [f32; 9], [f32; 9], [f32; 9], _, f64, f64, f64, f64, u32, u32, u32, u32, u32, f64, Option<_>, u32, _, u32, u32, Sender<_>): Send`
[INFO] [stdout]     = note: which requires `std::option::Option<RcdPipeline>: Send`
[INFO] [stdout]     = note: which requires `RcdPipeline: Send`
[INFO] [stdout]     = note: which requires `wgpu::BindGroupLayout: Send`
[INFO] [stdout]     = note: which requires `wgpu::dispatch::DispatchBindGroupLayout: Send`
[INFO] [stdout]     = note: which requires `Arc<wgpu::backend::wgpu_core::CoreBindGroupLayout>: Send`
[INFO] [stdout]     = note: which requires `wgpu::backend::wgpu_core::CoreBindGroupLayout: Send`
[INFO] [stdout]     = note: which requires `wgpu::backend::wgpu_core::ContextWgpuCore: Send`
[INFO] [stdout]     = note: which requires `Arc<wgpu::wgpu_core::global::Global>: Send`
[INFO] [stdout]     = note: which requires `wgpu::wgpu_core::global::Global: Send`
[INFO] [stdout]     = note: which requires `Hub: Send`
[INFO] [stdout]     = note: which requires `wgpu::wgpu_core::registry::Registry<Arc<wgpu::wgpu_core::command::CommandBuffer>>: Send`
[INFO] [stdout]     = note: which requires `core::lock::vanilla::RwLock<storage::Storage<Arc<wgpu::wgpu_core::command::CommandBuffer>>>: Send`
[INFO] [stdout]     = note: which requires `lock_api::rwlock::RwLock<parking_lot::raw_rwlock::RawRwLock, storage::Storage<Arc<wgpu::wgpu_core::command::CommandBuffer>>>: Send`
[INFO] [stdout]     = note: which requires `storage::Storage<Arc<wgpu::wgpu_core::command::CommandBuffer>>: Send`
[INFO] [stdout]     = note: and so on...
[INFO] [stdout]     = help: consider adding a manual `impl` of auto traits like `Send` for intermediate types, if auto traits are involved
[INFO] [stdout]     = help: or consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`mcraw_tui`)
[INFO] [stdout]     = note: this lint is attached to the whole crate and can't be disabled on a per-function basis
[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 #159228 <https://github.com/rust-lang/rust/issues/159228>
[INFO] [stdout]     = note: `#[warn(recursion_depth_exceeding_limit)]` (part of `#[warn(future_incompatible)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `base_codec_name` is never read
[INFO] [stdout]   --> src/export.rs:66:43
[INFO] [stdout]    |
[INFO] [stdout] 66 |         let mut base_codec_name: String = String::new();
[INFO] [stdout]    |                                           ^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 85 |                 base_codec_name = prores_encoder.to_string();
[INFO] [stdout]    |                 --------------- `base_codec_name` is overwritten here before the previous value is read
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `base_pix_fmt` is never read
[INFO] [stdout]   --> src/export.rs:67:40
[INFO] [stdout]    |
[INFO] [stdout] 67 |         let mut base_pix_fmt: String = String::new();
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 86 |                 base_pix_fmt = pix_fmt.to_string();
[INFO] [stdout]    |                 ------------ `base_pix_fmt` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/pipeline.rs:297:168
[INFO] [stdout]     |
[INFO] [stdout] 297 | ...flush(); Some(temp_path) } Err(e) => { let _ = std::fs::remove_file(&temp_path); None } } }
[INFO] [stdout]     |                                   ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `matrix_path` is never read
[INFO] [stdout]    --> src/pipeline.rs:171:27
[INFO] [stdout]     |
[INFO] [stdout] 171 |     let mut matrix_path = "";
[INFO] [stdout]     |                           ^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 188 |         matrix_path = "ForwardMatrix1+2 → D50 (preferred)";
[INFO] [stdout]     |         -------------------------------------------------- `matrix_path` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `base_codec_name` is never read
[INFO] [stdout]   --> src/export.rs:66:43
[INFO] [stdout]    |
[INFO] [stdout] 66 |         let mut base_codec_name: String = String::new();
[INFO] [stdout]    |                                           ^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 85 |                 base_codec_name = prores_encoder.to_string();
[INFO] [stdout]    |                 --------------- `base_codec_name` is overwritten here before the previous value is read
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `base_pix_fmt` is never read
[INFO] [stdout]   --> src/export.rs:67:40
[INFO] [stdout]    |
[INFO] [stdout] 67 |         let mut base_pix_fmt: String = String::new();
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 86 |                 base_pix_fmt = pix_fmt.to_string();
[INFO] [stdout]    |                 ------------ `base_pix_fmt` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `app`
[INFO] [stdout]    --> src/ui.rs:323:54
[INFO] [stdout]     |
[INFO] [stdout] 323 | fn render_empty_state(frame: &mut Frame, area: Rect, app: &App, regions: &mut Vec<ClickRegion>) {
[INFO] [stdout]     |                                                      ^^^ help: if this is intentional, prefix it with an underscore: `_app`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `regions`
[INFO] [stdout]    --> src/ui.rs:323:65
[INFO] [stdout]     |
[INFO] [stdout] 323 | fn render_empty_state(frame: &mut Frame, area: Rect, app: &App, regions: &mut Vec<ClickRegion>) {
[INFO] [stdout]     |                                                                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_regions`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `regions`
[INFO] [stdout]    --> src/ui.rs:415:71
[INFO] [stdout]     |
[INFO] [stdout] 415 | fn render_grade_screen_body(frame: &mut Frame, area: Rect, app: &App, regions: &mut Vec<ClickRegion>) {
[INFO] [stdout]     |                                                                       ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_regions`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `regions`
[INFO] [stdout]    --> src/ui.rs:522:68
[INFO] [stdout]     |
[INFO] [stdout] 522 | fn render_culling_screen(frame: &mut Frame, area: Rect, app: &App, regions: &mut Vec<ClickRegion>) {
[INFO] [stdout]     |                                                                    ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_regions`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `left_inner`
[INFO] [stdout]    --> src/ui.rs:532:9
[INFO] [stdout]     |
[INFO] [stdout] 532 |     let left_inner = horiz[0].height.saturating_sub(2) as usize;
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_left_inner`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `app`
[INFO] [stdout]     --> src/ui.rs:1335:98
[INFO] [stdout]      |
[INFO] [stdout] 1335 | ... Style, value_style: Style, app: &'a App, avail_w: u16) -> Vec<Line<'a>> {
[INFO] [stdout]      |                                ^^^ help: if this is intentional, prefix it with an underscore: `_app`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `avail_w`
[INFO] [stdout]     --> src/ui.rs:1335:112
[INFO] [stdout]      |
[INFO] [stdout] 1335 | ...e: Style, app: &'a App, avail_w: u16) -> Vec<Line<'a>> {
[INFO] [stdout]      |                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_avail_w`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `inner_w`
[INFO] [stdout]     --> src/ui.rs:1341:13
[INFO] [stdout]      |
[INFO] [stdout] 1341 |         let inner_w = (info.width.max(info.height) as f32 / info.width.min(info.height) as f32).round() as usize;
[INFO] [stdout]      |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_inner_w`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `regions`
[INFO] [stdout]     --> src/ui.rs:2073:60
[INFO] [stdout]      |
[INFO] [stdout] 2073 | fn render_status(frame: &mut Frame, app: &App, area: Rect, regions: &mut Vec<ClickRegion>) {
[INFO] [stdout]      |                                                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_regions`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Gamut` is never used
[INFO] [stdout]   --> src/agx.rs:14:10
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum Gamut {
[INFO] [stdout]    |          ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Transfer` is never used
[INFO] [stdout]   --> src/agx.rs:21:10
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub enum Transfer {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OutputTransfer` is never used
[INFO] [stdout]   --> src/agx.rs:46:10
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub enum OutputTransfer {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AgxConfig` is never constructed
[INFO] [stdout]   --> src/agx.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct AgxConfig {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AgxPipeline` is never constructed
[INFO] [stdout]    --> src/agx.rs:101:12
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub struct AgxPipeline {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `process_pixel`, `process_frame`, and `config` are never used
[INFO] [stdout]    --> src/agx.rs:112:12
[INFO] [stdout]     |
[INFO] [stdout] 111 | impl AgxPipeline {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 112 |     pub fn new(config: AgxConfig) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn process_pixel(&self, r: f32, g: f32, b: f32) -> [f32; 3] {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn process_frame(&self, pixels: &mut [f32]) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn config(&self) -> &AgxConfig {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mat_mul_vec3` is never used
[INFO] [stdout]    --> src/agx.rs:229:4
[INFO] [stdout]     |
[INFO] [stdout] 229 | fn mat_mul_vec3(m: &[f32; 9], v: [f32; 3]) -> [f32; 3] {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Chromaticities` is never constructed
[INFO] [stdout]    --> src/agx.rs:238:8
[INFO] [stdout]     |
[INFO] [stdout] 238 | struct Chromaticities {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gamut_chromaticities` is never used
[INFO] [stdout]    --> src/agx.rs:245:4
[INFO] [stdout]     |
[INFO] [stdout] 245 | fn gamut_chromaticities(g: Gamut) -> Chromaticities {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rgb_to_rgb` is never used
[INFO] [stdout]    --> src/agx.rs:266:4
[INFO] [stdout]     |
[INFO] [stdout] 266 | fn rgb_to_rgb(src: Chromaticities, dst: Chromaticities) -> [f32; 9] {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rgb_to_xyz` is never used
[INFO] [stdout]    --> src/agx.rs:272:4
[INFO] [stdout]     |
[INFO] [stdout] 272 | fn rgb_to_xyz(c: Chromaticities) -> [f32; 9] {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `xyz_to_rgb` is never used
[INFO] [stdout]    --> src/agx.rs:298:4
[INFO] [stdout]     |
[INFO] [stdout] 298 | fn xyz_to_rgb(c: Chromaticities) -> [f32; 9] {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mat_mul_3x3` is never used
[INFO] [stdout]    --> src/agx.rs:302:4
[INFO] [stdout]     |
[INFO] [stdout] 302 | fn mat_mul_3x3(a: &[f32; 9], b: &[f32; 9]) -> [f32; 9] {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `invert_3x3` is never used
[INFO] [stdout]    --> src/agx.rs:312:4
[INFO] [stdout]     |
[INFO] [stdout] 312 | fn invert_3x3(m: &[f32; 9]) -> [f32; 9] {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `inset_primaries` is never used
[INFO] [stdout]    --> src/agx.rs:330:4
[INFO] [stdout]     |
[INFO] [stdout] 330 | fn inset_primaries(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_to_lin` is never used
[INFO] [stdout]    --> src/agx.rs:363:4
[INFO] [stdout]     |
[INFO] [stdout] 363 | fn log_to_lin(v: [f32; 3], tf: Transfer) -> [f32; 3] {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lin_to_log` is never used
[INFO] [stdout]    --> src/agx.rs:521:4
[INFO] [stdout]     |
[INFO] [stdout] 521 | fn lin_to_log(v: [f32; 3], tf: Transfer) -> [f32; 3] {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `inverse_eotf` is never used
[INFO] [stdout]    --> src/agx.rs:680:4
[INFO] [stdout]     |
[INFO] [stdout] 680 | fn inverse_eotf(v: [f32; 3], gamma: f32) -> [f32; 3] {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spowf` is never used
[INFO] [stdout]    --> src/agx.rs:689:4
[INFO] [stdout]     |
[INFO] [stdout] 689 | fn spowf(a: f32, b: f32) -> f32 {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tone_scale` is never used
[INFO] [stdout]    --> src/agx.rs:695:4
[INFO] [stdout]     |
[INFO] [stdout] 695 | fn tone_scale(x: f32, shoulder: f32, toe: f32, slope: f32, lmg: f32, mg: f32, s0: f32, t0: f32) -> f32 {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Info` and `Export` are never constructed
[INFO] [stdout]    --> src/app.rs:279:5
[INFO] [stdout]     |
[INFO] [stdout] 277 | pub enum Screen {
[INFO] [stdout]     |          ------ variants in this enum
[INFO] [stdout] 278 |     Browse,
[INFO] [stdout] 279 |     Info,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 280 |     Export,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Screen` 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: fields `screen` and `encode_jobs` are never read
[INFO] [stdout]    --> src/app.rs:330:9
[INFO] [stdout]     |
[INFO] [stdout] 328 | pub struct App {
[INFO] [stdout]     |            --- fields in this struct
[INFO] [stdout] 329 |     pub running: bool,
[INFO] [stdout] 330 |     pub screen: Screen,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 335 |     pub encode_jobs: Vec<EncodeJob>,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `message` is never read
[INFO] [stdout]    --> src/app.rs:538:9
[INFO] [stdout]     |
[INFO] [stdout] 536 | pub struct PresetNamingState {
[INFO] [stdout]     |            ----------------- field in this struct
[INFO] [stdout] 537 |     pub name: String,
[INFO] [stdout] 538 |     pub message: Option<String>,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `PresetNamingState` 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: associated items `new`, `resize_rgba`, `add_encode_job`, and `scan_mcraw_files_in_folder` are never used
[INFO] [stdout]     --> src/app.rs:703:12
[INFO] [stdout]      |
[INFO] [stdout]  566 | impl App {
[INFO] [stdout]      | -------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  703 |     pub fn new() -> Self {
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1090 |     fn resize_rgba(&self, src: &[u8], src_w: u32, src_h: u32, dst_w: u32, dst_h: u32) -> Vec<u8> {
[INFO] [stdout]      |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2128 |     pub fn add_encode_job(&mut self, format: OutputFormat) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2180 |     pub fn scan_mcraw_files_in_folder(&self, folder: &str) -> Vec<String> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `ToggleHidden` is never constructed
[INFO] [stdout]     --> src/app.rs:2490:5
[INFO] [stdout]      |
[INFO] [stdout] 2485 | pub enum BrowserDirection {
[INFO] [stdout]      |          ---------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 2490 |     ToggleHidden,
[INFO] [stdout]      |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Demosaic` is never used
[INFO] [stdout]  --> src/color.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub trait Demosaic {
[INFO] [stdout]   |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ColorSpaceConverter` is never used
[INFO] [stdout]   --> src/color.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub trait ColorSpaceConverter {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `TransferFunctionProcessor` is never used
[INFO] [stdout]   --> src/color.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub trait TransferFunctionProcessor {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_white_point_chromaticities` is never used
[INFO] [stdout]   --> src/color.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl ColorSpace {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn get_white_point_chromaticities(&self) -> (f32, f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_log_bypass` is never used
[INFO] [stdout]    --> src/color.rs:206:12
[INFO] [stdout]     |
[INFO] [stdout]  87 | impl TransferFunction {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub fn is_log_bypass(&self) -> bool { !matches!(self, TransferFunction::Linear | TransferFunction::Rec709 | TransferFunction::G...
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rec709_eotf` is never used
[INFO] [stdout]    --> src/color.rs:211:18
[INFO] [stdout]     |
[INFO] [stdout] 211 | #[inline] pub fn rec709_eotf(x: f32) -> f32 { if x < 0.0812429 { x / 4.5 } else { ((x + 0.099) / 1.099).powf(1.0 / 0.45) } }
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arri_logc4_oetf` is never used
[INFO] [stdout]    --> src/color.rs:236:8
[INFO] [stdout]     |
[INFO] [stdout] 236 | pub fn arri_logc4_oetf(x: f32) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arri_logc4_eotf` is never used
[INFO] [stdout]    --> src/color.rs:248:8
[INFO] [stdout]     |
[INFO] [stdout] 248 | pub fn arri_logc4_eotf(y: f32) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_ccm` is never used
[INFO] [stdout]    --> src/color.rs:256:18
[INFO] [stdout]     |
[INFO] [stdout] 256 | #[inline] pub fn apply_ccm(r: f32, g: f32, b: f32, ccm: &[f32; 9]) -> [f32; 3] { [r * ccm[0] + g * ccm[1] + b * ccm[2], r * ccm[3] ...
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `camera_to_rec709_matrix` is never used
[INFO] [stdout]    --> src/color.rs:275:8
[INFO] [stdout]     |
[INFO] [stdout] 275 | pub fn camera_to_rec709_matrix(color_matrix: &[f32; 9]) -> [f32; 9] {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rec709_to_xyz` is never used
[INFO] [stdout]    --> src/color.rs:282:8
[INFO] [stdout]     |
[INFO] [stdout] 282 | pub fn rec709_to_xyz() -> [f32; 9] { [0.4124564, 0.3575761, 0.1804375, 0.2126729, 0.7151522, 0.0721750, 0.0193339, 0.1191920, 0.950...
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MCAT16` is never used
[INFO] [stdout]    --> src/color.rs:284:18
[INFO] [stdout]     |
[INFO] [stdout] 284 | pub(crate) const MCAT16: [f32; 9] = [0.401288, 0.650173, -0.051461, -0.250268, 1.204414, 0.045854, -0.002079, 0.048952, 0.953127];
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MCAT16_INV` is never used
[INFO] [stdout]    --> src/color.rs:285:18
[INFO] [stdout]     |
[INFO] [stdout] 285 | pub(crate) const MCAT16_INV: [f32; 9] = [1.86206786, -1.01125463, 0.14918678, 0.38752654, 0.62144744, -0.00897398, -0.01584150, -0....
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `xyz_from_chromaticities` is never used
[INFO] [stdout]    --> src/color.rs:289:8
[INFO] [stdout]     |
[INFO] [stdout] 289 | pub fn xyz_from_chromaticities(x: f32, y: f32) -> [f32; 3] { let z = 1.0 - x - y; [x / y, 1.0, z / y] }
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cat16_adapt` is never used
[INFO] [stdout]    --> src/color.rs:291:8
[INFO] [stdout]     |
[INFO] [stdout] 291 | pub fn cat16_adapt(xyz: &[f32; 3], src_white: &[f32; 3], dst_white: &[f32; 3]) -> [f32; 3] {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_cat16_output_matrix` is never used
[INFO] [stdout]    --> src/color.rs:299:8
[INFO] [stdout]     |
[INFO] [stdout] 299 | pub fn build_cat16_output_matrix(cam_to_xyz: &[f32; 9], scene_white_xyz: &[f32; 3], dst_white: &[f32; 3], xyz_to_output: &[f32; 9])...
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `forward_to_camera_xyz` is never used
[INFO] [stdout]    --> src/color.rs:417:8
[INFO] [stdout]     |
[INFO] [stdout] 417 | pub fn forward_to_camera_xyz(forward_matrix: &[f32; 9]) -> [f32; 9] {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `pattern` is never read
[INFO] [stdout]    --> src/color.rs:508:31
[INFO] [stdout]     |
[INFO] [stdout] 508 | pub struct BilinearDemosaic { pattern: BayerPattern }
[INFO] [stdout]     |            ----------------   ^^^^^^^
[INFO] [stdout]     |            |
[INFO] [stdout]     |            field in this struct
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `process_par` is never used
[INFO] [stdout]    --> src/color.rs:577:12
[INFO] [stdout]     |
[INFO] [stdout] 509 | impl BilinearDemosaic {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 577 |     pub fn process_par(&self, bayer: &[u16], stride_width: u32, offset_x: u32, offset_y: u32, active_width: u32, active_height: u32...
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CcmColorSpaceConverter` is never constructed
[INFO] [stdout]    --> src/color.rs:685:12
[INFO] [stdout]     |
[INFO] [stdout] 685 | pub struct CcmColorSpaceConverter;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/color.rs:686:38
[INFO] [stdout]     |
[INFO] [stdout] 686 | impl CcmColorSpaceConverter { pub fn new() -> Self { CcmColorSpaceConverter } }
[INFO] [stdout]     | ---------------------------          ^^^
[INFO] [stdout]     | |
[INFO] [stdout]     | associated function in this implementation
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Rec709TransferFunction` is never constructed
[INFO] [stdout]    --> src/color.rs:697:12
[INFO] [stdout]     |
[INFO] [stdout] 697 | pub struct Rec709TransferFunction;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/color.rs:698:38
[INFO] [stdout]     |
[INFO] [stdout] 698 | impl Rec709TransferFunction { pub fn new() -> Self { Rec709TransferFunction } }
[INFO] [stdout]     | ---------------------------          ^^^
[INFO] [stdout]     | |
[INFO] [stdout]     | associated function in this implementation
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LinearTransferFunction` is never constructed
[INFO] [stdout]    --> src/color.rs:703:12
[INFO] [stdout]     |
[INFO] [stdout] 703 | pub struct LinearTransferFunction;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/color.rs:704:38
[INFO] [stdout]     |
[INFO] [stdout] 704 | impl LinearTransferFunction { pub fn new() -> Self { LinearTransferFunction } }
[INFO] [stdout]     | ---------------------------          ^^^
[INFO] [stdout]     | |
[INFO] [stdout]     | associated function in this implementation
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AgxKrakenPipeline` is never constructed
[INFO] [stdout]    --> src/color.rs:707:12
[INFO] [stdout]     |
[INFO] [stdout] 707 | pub struct AgxKrakenPipeline { demosaic: BilinearDemosaic, agx: AgxPipeline, output_gamma: f32, enable_tonemap: bool }
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/color.rs:709:12
[INFO] [stdout]     |
[INFO] [stdout] 708 | impl AgxKrakenPipeline {
[INFO] [stdout]     | ---------------------- associated function in this implementation
[INFO] [stdout] 709 |     pub fn new(pattern: BayerPattern) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OutputGamma` is never used
[INFO] [stdout]    --> src/color.rs:717:55
[INFO] [stdout]     |
[INFO] [stdout] 717 | #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum OutputGamma { Srgb, Bt1886, Linear }
[INFO] [stdout]     |                                                       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `gamma` is never used
[INFO] [stdout]    --> src/color.rs:718:27
[INFO] [stdout]     |
[INFO] [stdout] 718 | impl OutputGamma { pub fn gamma(&self) -> f32 { match self { OutputGamma::Srgb => 2.2, OutputGamma::Bt1886 => 2.4, OutputGamma::Lin...
[INFO] [stdout]     | ----------------          ^^^^^
[INFO] [stdout]     | |
[INFO] [stdout]     | method in this implementation
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ColorPipelineConfig` is never constructed
[INFO] [stdout]    --> src/color.rs:720:12
[INFO] [stdout]     |
[INFO] [stdout] 720 | pub struct ColorPipelineConfig {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `broadcast` and `log_output` are never used
[INFO] [stdout]    --> src/color.rs:730:12
[INFO] [stdout]     |
[INFO] [stdout] 729 | impl ColorPipelineConfig {
[INFO] [stdout]     | ------------------------ associated functions in this implementation
[INFO] [stdout] 730 |     pub fn broadcast() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 736 |     pub fn log_output(log_space: TransferFunction, gamut: ColorSpace) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pipeline_convert_to_u16` is never used
[INFO] [stdout]    --> src/color.rs:752:8
[INFO] [stdout]     |
[INFO] [stdout] 752 | pub fn pipeline_convert_to_u16(pixels: &[f32]) -> Vec<u16> { pixels.iter().map(|&v| (v.clamp(0.0, 1.0) * 65535.0) as u16).collect() }
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `highlight_clip` is never used
[INFO] [stdout]    --> src/color.rs:754:8
[INFO] [stdout]     |
[INFO] [stdout] 754 | pub fn highlight_clip(pixels: &mut [f32], threshold: f32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_linear` is never used
[INFO] [stdout]    --> src/color.rs:766:8
[INFO] [stdout]     |
[INFO] [stdout] 766 | pub fn normalize_linear(pixels: &mut [f32], black_level: f64, white_level: f64) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_linear_f32` is never used
[INFO] [stdout]    --> src/color.rs:771:8
[INFO] [stdout]     |
[INFO] [stdout] 771 | pub fn normalize_linear_f32(pixels: &mut [f32], black_level: f32, white_level: f32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_lens_correction_cpu` is never used
[INFO] [stdout]    --> src/color.rs:879:8
[INFO] [stdout]     |
[INFO] [stdout] 879 | pub fn apply_lens_correction_cpu(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `audio_sample_rate_hz` and `num_audio_channels` are never read
[INFO] [stdout]   --> src/decoder.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct ContainerMetadata {
[INFO] [stdout]    |            ----------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub audio_sample_rate_hz: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 32 |     pub num_audio_channels: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ContainerMetadata` 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: fields `timestamp_ns`, `exposure_time`, `iso`, `focal_length`, and `aperture` are never read
[INFO] [stdout]   --> src/decoder.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub struct FrameMetadata {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub timestamp_ns: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 41 |     pub as_shot_neutral: [f32; 3],
[INFO] [stdout] 42 |     pub exposure_time: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 43 |     pub iso: f32,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 44 |     pub focal_length: f32,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 45 |     pub aperture: f32,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FrameMetadata` 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: constant `DC_BITS` is never used
[INFO] [stdout]   --> src/dng_writer.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const DC_BITS: [u8; 16] = [0, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DC_HUFFVAL` is never used
[INFO] [stdout]   --> src/dng_writer.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const DC_HUFFVAL: [u8; 17] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16];
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BitWriter` is never constructed
[INFO] [stdout]   --> src/dng_writer.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | struct BitWriter {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `write_bits`, `flush`, `byte_stuff`, and `into_bytes` are never used
[INFO] [stdout]   --> src/dng_writer.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl BitWriter {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 28 |     fn new() -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     fn write_bits(&mut self, value: u32, count: u32) {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     fn flush(&mut self) {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     fn byte_stuff(&mut self) {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     fn into_bytes(mut self) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_huffman_table` is never used
[INFO] [stdout]   --> src/dng_writer.rs:71:4
[INFO] [stdout]    |
[INFO] [stdout] 71 | fn build_huffman_table(bits: &[u8; 16], huffval: &[u8]) -> (Vec<u32>, Vec<u8>) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encode_jpeg_diff` is never used
[INFO] [stdout]   --> src/dng_writer.rs:91:4
[INFO] [stdout]    |
[INFO] [stdout] 91 | fn encode_jpeg_diff(diff: i32) -> (u32, u32) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_diff` is never used
[INFO] [stdout]    --> src/dng_writer.rs:105:4
[INFO] [stdout]     |
[INFO] [stdout] 105 | fn write_diff(bw: &mut BitWriter, diff: i32, codes: &[u32], sizes: &[u8]) {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compress_lj92` is never used
[INFO] [stdout]    --> src/dng_writer.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub fn compress_lj92(bayer: &[u16], width: usize, height: usize) -> Vec<u8> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pattern_to_cfa` is never used
[INFO] [stdout]    --> src/dng_writer.rs:165:4
[INFO] [stdout]     |
[INFO] [stdout] 165 | fn pattern_to_cfa(pattern: BayerPattern, offset_x: u32, offset_y: u32) -> [u8; 4] {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `stem_from_path` is never used
[INFO] [stdout]    --> src/dng_writer.rs:182:4
[INFO] [stdout]     |
[INFO] [stdout] 182 | fn stem_from_path(path: &str) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `f64_to_srational` is never used
[INFO] [stdout]    --> src/dng_writer.rs:195:4
[INFO] [stdout]     |
[INFO] [stdout] 195 | fn f64_to_srational(v: f64) -> SRational {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `f32_to_srational` is never used
[INFO] [stdout]    --> src/dng_writer.rs:199:4
[INFO] [stdout]     |
[INFO] [stdout] 199 | fn f32_to_srational(v: f32) -> SRational {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `matrix9_as_srational_slice` is never used
[INFO] [stdout]    --> src/dng_writer.rs:203:4
[INFO] [stdout]     |
[INFO] [stdout] 203 | fn matrix9_as_srational_slice(m: &[f64; 9]) -> [SRational; 9] {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `asn_as_srational_slice` is never used
[INFO] [stdout]    --> src/dng_writer.rs:211:4
[INFO] [stdout]     |
[INFO] [stdout] 211 | fn asn_as_srational_slice(asn: [f32; 3]) -> [SRational; 3] {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_gainmap_opcode_blob` is never used
[INFO] [stdout]    --> src/dng_writer.rs:224:8
[INFO] [stdout]     |
[INFO] [stdout] 224 | pub fn build_gainmap_opcode_blob(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DngWriter` is never constructed
[INFO] [stdout]    --> src/dng_writer.rs:296:12
[INFO] [stdout]     |
[INFO] [stdout] 296 | pub struct DngWriter<'a> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `filename`, and `write_to_path` are never used
[INFO] [stdout]    --> src/dng_writer.rs:304:12
[INFO] [stdout]     |
[INFO] [stdout] 303 | impl<'a> DngWriter<'a> {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] 304 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 314 |     pub fn filename(&self, output_dir: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 323 |     pub fn write_to_path<P: AsRef<Path>>(&self, path: P) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `conv_bgl` and `fill_bgl` are never read
[INFO] [stdout]   --> src/gpu.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct RcdPipeline {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 20 |     conv_bgl: wgpu::BindGroupLayout, fill_bgl: wgpu::BindGroupLayout,
[INFO] [stdout]    |     ^^^^^^^^                         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `output_path` is never read
[INFO] [stdout]  --> src/encoder.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 |     DNG { output_path: PathBuf },
[INFO] [stdout]   |     ---   ^^^^^^^^^^^
[INFO] [stdout]   |     |
[INFO] [stdout]   |     field in this variant
[INFO] [stdout]   |
[INFO] [stdout]   = note: `OutputFormat` 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 `output_path` is never read
[INFO] [stdout]  --> src/encoder.rs:8:14
[INFO] [stdout]   |
[INFO] [stdout] 8 |     ProRes { output_path: PathBuf },
[INFO] [stdout]   |     ------   ^^^^^^^^^^^
[INFO] [stdout]   |     |
[INFO] [stdout]   |     field in this variant
[INFO] [stdout]   |
[INFO] [stdout]   = note: `OutputFormat` 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 `output_path` is never read
[INFO] [stdout]  --> src/encoder.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 |     H264 { output_path: PathBuf },
[INFO] [stdout]   |     ----   ^^^^^^^^^^^
[INFO] [stdout]   |     |
[INFO] [stdout]   |     field in this variant
[INFO] [stdout]   |
[INFO] [stdout]   = note: `OutputFormat` 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 `output_path` is never read
[INFO] [stdout]   --> src/encoder.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 |     HEVC { output_path: PathBuf },
[INFO] [stdout]    |     ----   ^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OutputFormat` 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: fields `progress` and `error` are never read
[INFO] [stdout]   --> src/encoder.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct EncodeJob {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub progress: f64,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 27 |     pub error: Option<String>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EncodeJob` 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: methods `is_complete`, `is_failed`, `is_running`, `format_label`, and `output_path` are never used
[INFO] [stdout]   --> src/encoder.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl EncodeJob {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn is_complete(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn is_failed(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn is_running(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn format_label(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn output_path(&self) -> Option<&PathBuf> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `cancel_job` and `list_supported_formats` are never used
[INFO] [stdout]   --> src/encoder.rs:85:18
[INFO] [stdout]    |
[INFO] [stdout] 74 | impl Encoder {
[INFO] [stdout]    | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub async fn cancel_job(&self, _job_id: &str) -> Result<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 90 |     pub async fn list_supported_formats(&self) -> Vec<&'static str> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `kill` is never used
[INFO] [stdout]    --> src/encoder.rs:271:12
[INFO] [stdout]     |
[INFO] [stdout] 107 | impl VideoEncoder {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 271 |     pub fn kill(&mut self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `McrawError` is never used
[INFO] [stdout]  --> src/error.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum McrawError {
[INFO] [stdout]   |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `McrawResult` is never used
[INFO] [stdout]   --> src/error.rs:27:10
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub type McrawResult<T> = std::result::Result<T, McrawError>;
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `sensor_orientation`, `baseline_exposure`, and `num_segments` are never read
[INFO] [stdout]   --> src/file.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | struct MotionJsonMetadata {
[INFO] [stdout]    |        ------------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 12 |     sensor_orientation: Option<i64>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     baseline_exposure: Option<f64>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     num_segments: Option<i64>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MotionJsonMetadata` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `recording_type` and `use_accurate_timestamp` are never read
[INFO] [stdout]   --> src/file.rs:58:5
[INFO] [stdout]    |
[INFO] [stdout] 56 | struct ExtraData {
[INFO] [stdout]    |        --------- fields in this struct
[INFO] [stdout] 57 |     #[serde(rename = "recordingType", default)]
[INFO] [stdout] 58 |     recording_type: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     use_accurate_timestamp: Option<bool>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ExtraData` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `version_major` and `version_build` are never read
[INFO] [stdout]   --> src/file.rs:76:5
[INFO] [stdout]    |
[INFO] [stdout] 70 | struct BuildMetadata {
[INFO] [stdout]    |        ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 76 |     version_major: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 77 |     #[serde(rename = "version.build", default)]
[INFO] [stdout] 78 |     version_build: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BuildMetadata` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `camera_id` is never read
[INFO] [stdout]   --> src/file.rs:84:5
[INFO] [stdout]    |
[INFO] [stdout] 82 | struct DeviceProfile {
[INFO] [stdout]    |        ------------- field in this struct
[INFO] [stdout] 83 |     #[serde(rename = "cameraId", default)]
[INFO] [stdout] 84 |     camera_id: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DeviceProfile` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_u8` is never used
[INFO] [stdout]    --> src/file.rs:119:12
[INFO] [stdout]     |
[INFO] [stdout] 104 | impl BayerPattern {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn to_u8(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `calibration_illuminant` is never read
[INFO] [stdout]    --> src/file.rs:179:9
[INFO] [stdout]     |
[INFO] [stdout] 160 | pub struct CameraMetadata {
[INFO] [stdout]     |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub calibration_illuminant: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `CameraMetadata` 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 `frame_offsets` is never read
[INFO] [stdout]    --> src/file.rs:226:9
[INFO] [stdout]     |
[INFO] [stdout] 212 | pub struct McrawFileInfo {
[INFO] [stdout]     |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 226 |     pub frame_offsets: Vec<u64>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `McrawFileInfo` 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 `duration_seconds` is never used
[INFO] [stdout]    --> src/file.rs:569:12
[INFO] [stdout]     |
[INFO] [stdout] 297 | impl McrawFileInfo {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 569 |     pub fn duration_seconds(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gradient_horizontal` is never used
[INFO] [stdout]   --> src/gradient.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub fn gradient_horizontal(width: u16, stops: &[(Color, f32)]) -> Vec<Color> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RawAdjustments` is never constructed
[INFO] [stdout]  --> src/grading.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct RawAdjustments {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `size` is never read
[INFO] [stdout]   --> src/file_browser.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct FileEntry {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 12 |     pub size: u64,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FileEntry` 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 `selected_file_info` is never used
[INFO] [stdout]    --> src/file_browser.rs:181:12
[INFO] [stdout]     |
[INFO] [stdout]  48 | impl FileBrowser {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn selected_file_info(&self) -> Option<&McrawFileInfo> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_metadata_for_display` is never used
[INFO] [stdout]  --> src/metadata.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn format_metadata_for_display(info: &McrawFileInfo) -> Vec<Line<'static>> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_general_section` is never used
[INFO] [stdout]   --> src/metadata.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub fn format_general_section(info: &McrawFileInfo) -> Vec<Line<'static>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_camera_section` is never used
[INFO] [stdout]   --> src/metadata.rs:49:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub fn format_camera_section(info: &McrawFileInfo) -> Vec<Line<'static>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_video_section` is never used
[INFO] [stdout]    --> src/metadata.rs:100:8
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub fn format_video_section(info: &McrawFileInfo) -> Vec<Line<'static>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_audio_section` is never used
[INFO] [stdout]    --> src/metadata.rs:158:8
[INFO] [stdout]     |
[INFO] [stdout] 158 | pub fn format_audio_section(info: &McrawFileInfo) -> Vec<Line<'static>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_duration` is never used
[INFO] [stdout]    --> src/metadata.rs:200:8
[INFO] [stdout]     |
[INFO] [stdout] 200 | pub fn format_duration(seconds: f64) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_size` is never used
[INFO] [stdout]    --> src/metadata.rs:217:8
[INFO] [stdout]     |
[INFO] [stdout] 217 | pub fn format_size(bytes: u64) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_exposure_time` is never used
[INFO] [stdout]    --> src/metadata.rs:233:8
[INFO] [stdout]     |
[INFO] [stdout] 233 | pub fn format_exposure_time(value: f64) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_capture_date` is never used
[INFO] [stdout]    --> src/metadata.rs:246:8
[INFO] [stdout]     |
[INFO] [stdout] 246 | pub fn format_capture_date(raw: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/pipeline.rs:145:8
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub fn run(info: &McrawFileInfo, output_path: &str) -> Result<()> {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `remove_by_name` is never used
[INFO] [stdout]    --> src/preset.rs:169:12
[INFO] [stdout]     |
[INFO] [stdout]  79 | impl ExportPreset {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn remove_by_name(list: &mut Vec<ExportPreset>, name: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_empty`, `is_loading`, and `is_ready` are never used
[INFO] [stdout]   --> src/preview/mod.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl PreviewState {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] 26 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn is_loading(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn is_ready(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ImageEncoder` is never used
[INFO] [stdout]  --> src/preview/encoders/mod.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait ImageEncoder {
[INFO] [stdout]   |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_params` is never used
[INFO] [stdout]   --> src/preview/pipeline/cache.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl PipelineKey {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 13 |     pub fn from_params(params: &PreviewParams) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get`, `len`, and `is_empty` are never used
[INFO] [stdout]   --> src/preview/pipeline/cache.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl PipelineCache {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn get(&mut self, key: &PipelineKey) -> Option<&wgpu::ComputePipeline> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn len(&self) -> usize {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `queue` is never read
[INFO] [stdout]  --> src/preview/pipeline/device.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct PreviewGpuContext {
[INFO] [stdout]   |            ----------------- field in this struct
[INFO] [stdout] 5 |     pub device: wgpu::Device,
[INFO] [stdout] 6 |     pub queue: wgpu::Queue,
[INFO] [stdout]   |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_shared` is never used
[INFO] [stdout]   --> src/preview/pipeline/device.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl PreviewGpuContext {
[INFO] [stdout]    | ---------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn from_shared(context: &Arc<crate::gpu::GpuContext>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/preview/pipeline/pipeline.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct GpuPreviewPipeline<S = Uninitialized> {
[INFO] [stdout]    |            ------------------ fields in this struct
[INFO] [stdout] 15 |     context: Option<Arc<PreviewGpuContext>>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 16 |     bind_group_layout: Option<wgpu::BindGroupLayout>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 17 |     pipeline_layout: Option<wgpu::PipelineLayout>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 18 |     cache: PipelineCache,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 19 |     bayer_buffer: Option<wgpu::Buffer>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 20 |     output_buffer: Option<wgpu::Buffer>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 21 |     readback_buffer: Option<wgpu::Buffer>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 22 |     uniform_buffer: Option<wgpu::Buffer>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 23 |     hist_buffers: Option<[wgpu::Buffer; 4]>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 24 |     current_bind_group: Option<wgpu::BindGroup>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 25 |     current_width: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 26 |     current_height: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `process_and_readback` and `resize` are never used
[INFO] [stdout]    --> src/preview/pipeline/pipeline.rs:200:12
[INFO] [stdout]     |
[INFO] [stdout] 199 | impl GpuPreviewPipeline<Ready> {
[INFO] [stdout]     | ------------------------------ methods in this implementation
[INFO] [stdout] 200 |     pub fn process_and_readback(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     pub fn resize(&mut self, _width: u32, _height: u32) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FrameKey` is never constructed
[INFO] [stdout]  --> src/preview/state.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct FrameKey {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CachedFrame` is never constructed
[INFO] [stdout]   --> src/preview/state.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct CachedFrame {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `byte_size` is never used
[INFO] [stdout]   --> src/preview/state.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl CachedFrame {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 17 |     pub fn byte_size(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FrameCache` is never constructed
[INFO] [stdout]   --> src/preview/state.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct FrameCache {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/preview/state.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl FrameCache {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 29 |     pub fn new(max_bytes_mb: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn get(&mut self, key: &FrameKey) -> Option<&CachedFrame> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn insert(&mut self, frame: CachedFrame) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn clear(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub fn current_bytes(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub fn len(&self) -> usize {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/stats.rs:66:12
[INFO] [stdout]     |
[INFO] [stdout]  65 | impl PhaseTimer {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  66 |     pub fn new() -> Self { Self::default() }
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     #[inline] pub fn frames(&self) -> u64 { self.frames.load(Ordering::Relaxed) }
[INFO] [stdout]     |                      ^^^^^^
[INFO] [stdout] 102 |     #[inline] pub fn total(&self) -> Duration { Duration::from_nanos(self.acc_ns.load(Ordering::Relaxed)) }
[INFO] [stdout]     |                      ^^^^^
[INFO] [stdout] 103 |     #[inline] pub fn avg(&self) -> Duration {
[INFO] [stdout]     |                      ^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     #[inline] pub fn min(&self) -> Duration {
[INFO] [stdout]     |                      ^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     #[inline] pub fn max(&self) -> Duration {
[INFO] [stdout]     |                      ^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     #[inline] pub fn fps(&self) -> f64 {
[INFO] [stdout]     |                      ^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn snapshot(&self) -> PhaseSnapshot {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `report` is never used
[INFO] [stdout]    --> src/stats.rs:206:12
[INFO] [stdout]     |
[INFO] [stdout] 191 | impl PipelineStats {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub fn report(&self) -> StatsReport {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StatsReport` is never constructed
[INFO] [stdout]    --> src/stats.rs:247:12
[INFO] [stdout]     |
[INFO] [stdout] 247 | pub struct StatsReport {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PhaseSnapshot` is never constructed
[INFO] [stdout]    --> src/stats.rs:262:12
[INFO] [stdout]     |
[INFO] [stdout] 262 | pub struct PhaseSnapshot {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `write_json` and `print_summary` are never used
[INFO] [stdout]    --> src/stats.rs:275:12
[INFO] [stdout]     |
[INFO] [stdout] 271 | impl StatsReport {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn write_json(&self, path: &std::path::Path) -> std::io::Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 286 |     pub fn print_summary(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `aspect_fit` is never used
[INFO] [stdout]   --> src/thumbnail.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn aspect_fit(raw_w: u32, raw_h: u32) -> (u32, u32) {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_params` is never used
[INFO] [stdout]   --> src/thumbnail.rs:33:4
[INFO] [stdout]    |
[INFO] [stdout] 33 | fn build_params(
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `encode_time` is never read
[INFO] [stdout]   --> src/thumbnail.rs:75:9
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub struct CachedThumbnail {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub encode_time: Instant,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CachedThumbnail` 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 `placeholder` is never read
[INFO] [stdout]   --> src/thumbnail.rs:87:9
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub struct ThumbnailCache {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 87 |     pub placeholder: Vec<u8>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `clear` and `len` are never used
[INFO] [stdout]    --> src/thumbnail.rs:144:12
[INFO] [stdout]     |
[INFO] [stdout]  90 | impl ThumbnailCache {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub fn clear(&self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn len(&self) -> usize {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_thumbnail` is never used
[INFO] [stdout]    --> src/thumbnail.rs:206:8
[INFO] [stdout]     |
[INFO] [stdout] 206 | pub fn compute_thumbnail(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated constants are never used
[INFO] [stdout]   --> src/ui.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl Palette {
[INFO] [stdout]    | ------------ associated constants in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 26 |     const BG_PANEL: Color = Color::Rgb(0x12, 0x17, 0x0F);
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     const ACCENT_MIST: Color = Color::Rgb(0x6D, 0xAE, 0xAE);
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     const WARNING: Color = Color::Rgb(0xE8, 0xA0, 0x35);
[INFO] [stdout]    |           ^^^^^^^
[INFO] [stdout] 42 |     const ERROR: Color = Color::Rgb(0xC4, 0x5C, 0x3C);
[INFO] [stdout]    |           ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     const PROGRESS_BAR_BG: Color = Self::BG_ELEVATED;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 73 |     const PROGRESS_BAR_FG: Color = Self::ACCENT_GREEN;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 74 |     const PANEL_BG: Color = Self::BG_PANEL;
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 75 |     const HEADER_BG: Color = Self::BG_VOID;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 76 |     const HEADER_FG: Color = Self::TEXT_PRIMARY;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ClosePopup`, `ToggleHelp`, `BrowserEnter`, `BrowserGoUp`, and `GradeSlider` are never constructed
[INFO] [stdout]    --> src/ui.rs:113:5
[INFO] [stdout]     |
[INFO] [stdout]  90 | pub enum ClickAction {
[INFO] [stdout]     |          ----------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 113 |     ClosePopup,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 114 |     ToggleHelp,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     BrowserEnter,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 118 |     BrowserGoUp,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     GradeSlider(usize),
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ClickAction` 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: function `frames_to_timecode` is never used
[INFO] [stdout]     --> src/ui.rs:1293:4
[INFO] [stdout]      |
[INFO] [stdout] 1293 | fn frames_to_timecode(frame: usize, total: usize, fps: f64) -> (String, String) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sprocket_track` is never used
[INFO] [stdout]     --> src/ui.rs:1307:4
[INFO] [stdout]      |
[INFO] [stdout] 1307 | fn sprocket_track(frame: usize, total: usize, width: usize, _prev_playhead: Option<usize>) -> Line<'static> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gradient_slider` is never used
[INFO] [stdout]     --> src/ui.rs:1389:4
[INFO] [stdout]      |
[INFO] [stdout] 1389 | fn gradient_slider(label: &str, label_w: usize, value: f32, lo: f32, hi: f32, display: String,
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_grade_panel` is never used
[INFO] [stdout]     --> src/ui.rs:1433:4
[INFO] [stdout]      |
[INFO] [stdout] 1433 | fn render_grade_panel(frame: &mut Frame, app: &App, area: Rect, border_color: Color) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/pipeline.rs:297:168
[INFO] [stdout]     |
[INFO] [stdout] 297 | ...flush(); Some(temp_path) } Err(e) => { let _ = std::fs::remove_file(&temp_path); None } } }
[INFO] [stdout]     |                                   ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `matrix_path` is never read
[INFO] [stdout]    --> src/pipeline.rs:171:27
[INFO] [stdout]     |
[INFO] [stdout] 171 |     let mut matrix_path = "";
[INFO] [stdout]     |                           ^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 188 |         matrix_path = "ForwardMatrix1+2 → D50 (preferred)";
[INFO] [stdout]     |         -------------------------------------------------- `matrix_path` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `app`
[INFO] [stdout]    --> src/ui.rs:323:54
[INFO] [stdout]     |
[INFO] [stdout] 323 | fn render_empty_state(frame: &mut Frame, area: Rect, app: &App, regions: &mut Vec<ClickRegion>) {
[INFO] [stdout]     |                                                      ^^^ help: if this is intentional, prefix it with an underscore: `_app`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `regions`
[INFO] [stdout]    --> src/ui.rs:323:65
[INFO] [stdout]     |
[INFO] [stdout] 323 | fn render_empty_state(frame: &mut Frame, area: Rect, app: &App, regions: &mut Vec<ClickRegion>) {
[INFO] [stdout]     |                                                                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_regions`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `regions`
[INFO] [stdout]    --> src/ui.rs:415:71
[INFO] [stdout]     |
[INFO] [stdout] 415 | fn render_grade_screen_body(frame: &mut Frame, area: Rect, app: &App, regions: &mut Vec<ClickRegion>) {
[INFO] [stdout]     |                                                                       ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_regions`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `regions`
[INFO] [stdout]    --> src/ui.rs:522:68
[INFO] [stdout]     |
[INFO] [stdout] 522 | fn render_culling_screen(frame: &mut Frame, area: Rect, app: &App, regions: &mut Vec<ClickRegion>) {
[INFO] [stdout]     |                                                                    ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_regions`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `left_inner`
[INFO] [stdout]    --> src/ui.rs:532:9
[INFO] [stdout]     |
[INFO] [stdout] 532 |     let left_inner = horiz[0].height.saturating_sub(2) as usize;
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_left_inner`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `app`
[INFO] [stdout]     --> src/ui.rs:1335:98
[INFO] [stdout]      |
[INFO] [stdout] 1335 | ... Style, value_style: Style, app: &'a App, avail_w: u16) -> Vec<Line<'a>> {
[INFO] [stdout]      |                                ^^^ help: if this is intentional, prefix it with an underscore: `_app`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `avail_w`
[INFO] [stdout]     --> src/ui.rs:1335:112
[INFO] [stdout]      |
[INFO] [stdout] 1335 | ...e: Style, app: &'a App, avail_w: u16) -> Vec<Line<'a>> {
[INFO] [stdout]      |                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_avail_w`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `inner_w`
[INFO] [stdout]     --> src/ui.rs:1341:13
[INFO] [stdout]      |
[INFO] [stdout] 1341 |         let inner_w = (info.width.max(info.height) as f32 / info.width.min(info.height) as f32).round() as usize;
[INFO] [stdout]      |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_inner_w`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `regions`
[INFO] [stdout]     --> src/ui.rs:2073:60
[INFO] [stdout]      |
[INFO] [stdout] 2073 | fn render_status(frame: &mut Frame, app: &App, area: Rect, regions: &mut Vec<ClickRegion>) {
[INFO] [stdout]      |                                                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_regions`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `P3D60`, `BlackmagicWg`, and `EGamut` are never constructed
[INFO] [stdout]   --> src/agx.rs:15:22
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum Gamut {
[INFO] [stdout]    |          ----- variants in this enum
[INFO] [stdout] 15 |     Ap0, Ap1, P3D65, P3D60, Rec2020, Rec709,
[INFO] [stdout]    |                      ^^^^^
[INFO] [stdout] 16 |     Awg3, Awg4, Rwg, SGamut3, SGamut3Cine,
[INFO] [stdout] 17 |     BlackmagicWg, CanonCinema, DaVinciWg, EGamut,
[INFO] [stdout]    |     ^^^^^^^^^^^^                          ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Gamut` 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: multiple variants are never constructed
[INFO] [stdout]   --> src/agx.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub enum Transfer {
[INFO] [stdout]    |          -------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 26 |     RedLog3G10,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 27 |     SonySLog3,
[INFO] [stdout] 28 |     SonySLog2,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 29 |     BmFilmGen5,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 30 |     CanonLog3,
[INFO] [stdout] 31 |     CanonLog2,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 32 |     DaVinciIntermediate,
[INFO] [stdout] 33 |     FilmlightTLog,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     FLog2C,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 38 |     AppleLog2,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     DNG,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 42 |     DI,
[INFO] [stdout]    |     ^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Transfer` 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 `Linear` and `Bt1886InverseEotf` are never constructed
[INFO] [stdout]   --> src/agx.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub enum OutputTransfer {
[INFO] [stdout]    |          -------------- variants in this enum
[INFO] [stdout] 47 |     Linear,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 48 |     SrgbInverseEotf,
[INFO] [stdout] 49 |     Bt1886InverseEotf,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OutputTransfer` 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 `mid_grey_lin` is never read
[INFO] [stdout]    --> src/agx.rs:108:5
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub struct AgxPipeline {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 108 |     mid_grey_lin: f32,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `process_frame` and `config` are never used
[INFO] [stdout]    --> src/agx.rs:214:12
[INFO] [stdout]     |
[INFO] [stdout] 111 | impl AgxPipeline {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn process_frame(&self, pixels: &mut [f32]) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn config(&self) -> &AgxConfig {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Info` and `Export` are never constructed
[INFO] [stdout]    --> src/app.rs:279:5
[INFO] [stdout]     |
[INFO] [stdout] 277 | pub enum Screen {
[INFO] [stdout]     |          ------ variants in this enum
[INFO] [stdout] 278 |     Browse,
[INFO] [stdout] 279 |     Info,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 280 |     Export,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Screen` 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: fields `screen` and `encode_jobs` are never read
[INFO] [stdout]    --> src/app.rs:330:9
[INFO] [stdout]     |
[INFO] [stdout] 328 | pub struct App {
[INFO] [stdout]     |            --- fields in this struct
[INFO] [stdout] 329 |     pub running: bool,
[INFO] [stdout] 330 |     pub screen: Screen,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 335 |     pub encode_jobs: Vec<EncodeJob>,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `message` is never read
[INFO] [stdout]    --> src/app.rs:538:9
[INFO] [stdout]     |
[INFO] [stdout] 536 | pub struct PresetNamingState {
[INFO] [stdout]     |            ----------------- field in this struct
[INFO] [stdout] 537 |     pub name: String,
[INFO] [stdout] 538 |     pub message: Option<String>,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `PresetNamingState` 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: associated items `new`, `resize_rgba`, `add_encode_job`, and `scan_mcraw_files_in_folder` are never used
[INFO] [stdout]     --> src/app.rs:703:12
[INFO] [stdout]      |
[INFO] [stdout]  566 | impl App {
[INFO] [stdout]      | -------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  703 |     pub fn new() -> Self {
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1090 |     fn resize_rgba(&self, src: &[u8], src_w: u32, src_h: u32, dst_w: u32, dst_h: u32) -> Vec<u8> {
[INFO] [stdout]      |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2128 |     pub fn add_encode_job(&mut self, format: OutputFormat) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2180 |     pub fn scan_mcraw_files_in_folder(&self, folder: &str) -> Vec<String> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `ToggleHidden` is never constructed
[INFO] [stdout]     --> src/app.rs:2490:5
[INFO] [stdout]      |
[INFO] [stdout] 2485 | pub enum BrowserDirection {
[INFO] [stdout]      |          ---------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 2490 |     ToggleHidden,
[INFO] [stdout]      |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Demosaic` is never used
[INFO] [stdout]  --> src/color.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub trait Demosaic {
[INFO] [stdout]   |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ColorSpaceConverter` is never used
[INFO] [stdout]   --> src/color.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub trait ColorSpaceConverter {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `TransferFunctionProcessor` is never used
[INFO] [stdout]   --> src/color.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub trait TransferFunctionProcessor {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_white_point_chromaticities` is never used
[INFO] [stdout]   --> src/color.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl ColorSpace {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn get_white_point_chromaticities(&self) -> (f32, f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_log_bypass` is never used
[INFO] [stdout]    --> src/color.rs:206:12
[INFO] [stdout]     |
[INFO] [stdout]  87 | impl TransferFunction {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub fn is_log_bypass(&self) -> bool { !matches!(self, TransferFunction::Linear | TransferFunction::Rec709 | TransferFunction::G...
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rec709_eotf` is never used
[INFO] [stdout]    --> src/color.rs:211:18
[INFO] [stdout]     |
[INFO] [stdout] 211 | #[inline] pub fn rec709_eotf(x: f32) -> f32 { if x < 0.0812429 { x / 4.5 } else { ((x + 0.099) / 1.099).powf(1.0 / 0.45) } }
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_ccm` is never used
[INFO] [stdout]    --> src/color.rs:256:18
[INFO] [stdout]     |
[INFO] [stdout] 256 | #[inline] pub fn apply_ccm(r: f32, g: f32, b: f32, ccm: &[f32; 9]) -> [f32; 3] { [r * ccm[0] + g * ccm[1] + b * ccm[2], r * ccm[3] ...
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `camera_to_rec709_matrix` is never used
[INFO] [stdout]    --> src/color.rs:275:8
[INFO] [stdout]     |
[INFO] [stdout] 275 | pub fn camera_to_rec709_matrix(color_matrix: &[f32; 9]) -> [f32; 9] {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rec709_to_xyz` is never used
[INFO] [stdout]    --> src/color.rs:282:8
[INFO] [stdout]     |
[INFO] [stdout] 282 | pub fn rec709_to_xyz() -> [f32; 9] { [0.4124564, 0.3575761, 0.1804375, 0.2126729, 0.7151522, 0.0721750, 0.0193339, 0.1191920, 0.950...
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MCAT16` is never used
[INFO] [stdout]    --> src/color.rs:284:18
[INFO] [stdout]     |
[INFO] [stdout] 284 | pub(crate) const MCAT16: [f32; 9] = [0.401288, 0.650173, -0.051461, -0.250268, 1.204414, 0.045854, -0.002079, 0.048952, 0.953127];
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MCAT16_INV` is never used
[INFO] [stdout]    --> src/color.rs:285:18
[INFO] [stdout]     |
[INFO] [stdout] 285 | pub(crate) const MCAT16_INV: [f32; 9] = [1.86206786, -1.01125463, 0.14918678, 0.38752654, 0.62144744, -0.00897398, -0.01584150, -0....
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `xyz_from_chromaticities` is never used
[INFO] [stdout]    --> src/color.rs:289:8
[INFO] [stdout]     |
[INFO] [stdout] 289 | pub fn xyz_from_chromaticities(x: f32, y: f32) -> [f32; 3] { let z = 1.0 - x - y; [x / y, 1.0, z / y] }
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cat16_adapt` is never used
[INFO] [stdout]    --> src/color.rs:291:8
[INFO] [stdout]     |
[INFO] [stdout] 291 | pub fn cat16_adapt(xyz: &[f32; 3], src_white: &[f32; 3], dst_white: &[f32; 3]) -> [f32; 3] {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_cat16_output_matrix` is never used
[INFO] [stdout]    --> src/color.rs:299:8
[INFO] [stdout]     |
[INFO] [stdout] 299 | pub fn build_cat16_output_matrix(cam_to_xyz: &[f32; 9], scene_white_xyz: &[f32; 3], dst_white: &[f32; 3], xyz_to_output: &[f32; 9])...
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `forward_to_camera_xyz` is never used
[INFO] [stdout]    --> src/color.rs:417:8
[INFO] [stdout]     |
[INFO] [stdout] 417 | pub fn forward_to_camera_xyz(forward_matrix: &[f32; 9]) -> [f32; 9] {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `pattern` is never read
[INFO] [stdout]    --> src/color.rs:508:31
[INFO] [stdout]     |
[INFO] [stdout] 508 | pub struct BilinearDemosaic { pattern: BayerPattern }
[INFO] [stdout]     |            ----------------   ^^^^^^^
[INFO] [stdout]     |            |
[INFO] [stdout]     |            field in this struct
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `process_par` is never used
[INFO] [stdout]    --> src/color.rs:577:12
[INFO] [stdout]     |
[INFO] [stdout] 509 | impl BilinearDemosaic {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 577 |     pub fn process_par(&self, bayer: &[u16], stride_width: u32, offset_x: u32, offset_y: u32, active_width: u32, active_height: u32...
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CcmColorSpaceConverter` is never constructed
[INFO] [stdout]    --> src/color.rs:685:12
[INFO] [stdout]     |
[INFO] [stdout] 685 | pub struct CcmColorSpaceConverter;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/color.rs:686:38
[INFO] [stdout]     |
[INFO] [stdout] 686 | impl CcmColorSpaceConverter { pub fn new() -> Self { CcmColorSpaceConverter } }
[INFO] [stdout]     | ---------------------------          ^^^
[INFO] [stdout]     | |
[INFO] [stdout]     | associated function in this implementation
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Rec709TransferFunction` is never constructed
[INFO] [stdout]    --> src/color.rs:697:12
[INFO] [stdout]     |
[INFO] [stdout] 697 | pub struct Rec709TransferFunction;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/color.rs:698:38
[INFO] [stdout]     |
[INFO] [stdout] 698 | impl Rec709TransferFunction { pub fn new() -> Self { Rec709TransferFunction } }
[INFO] [stdout]     | ---------------------------          ^^^
[INFO] [stdout]     | |
[INFO] [stdout]     | associated function in this implementation
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LinearTransferFunction` is never constructed
[INFO] [stdout]    --> src/color.rs:703:12
[INFO] [stdout]     |
[INFO] [stdout] 703 | pub struct LinearTransferFunction;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/color.rs:704:38
[INFO] [stdout]     |
[INFO] [stdout] 704 | impl LinearTransferFunction { pub fn new() -> Self { LinearTransferFunction } }
[INFO] [stdout]     | ---------------------------          ^^^
[INFO] [stdout]     | |
[INFO] [stdout]     | associated function in this implementation
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AgxKrakenPipeline` is never constructed
[INFO] [stdout]    --> src/color.rs:707:12
[INFO] [stdout]     |
[INFO] [stdout] 707 | pub struct AgxKrakenPipeline { demosaic: BilinearDemosaic, agx: AgxPipeline, output_gamma: f32, enable_tonemap: bool }
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/color.rs:709:12
[INFO] [stdout]     |
[INFO] [stdout] 708 | impl AgxKrakenPipeline {
[INFO] [stdout]     | ---------------------- associated function in this implementation
[INFO] [stdout] 709 |     pub fn new(pattern: BayerPattern) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OutputGamma` is never used
[INFO] [stdout]    --> src/color.rs:717:55
[INFO] [stdout]     |
[INFO] [stdout] 717 | #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum OutputGamma { Srgb, Bt1886, Linear }
[INFO] [stdout]     |                                                       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `gamma` is never used
[INFO] [stdout]    --> src/color.rs:718:27
[INFO] [stdout]     |
[INFO] [stdout] 718 | impl OutputGamma { pub fn gamma(&self) -> f32 { match self { OutputGamma::Srgb => 2.2, OutputGamma::Bt1886 => 2.4, OutputGamma::Lin...
[INFO] [stdout]     | ----------------          ^^^^^
[INFO] [stdout]     | |
[INFO] [stdout]     | method in this implementation
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ColorPipelineConfig` is never constructed
[INFO] [stdout]    --> src/color.rs:720:12
[INFO] [stdout]     |
[INFO] [stdout] 720 | pub struct ColorPipelineConfig {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `broadcast` and `log_output` are never used
[INFO] [stdout]    --> src/color.rs:730:12
[INFO] [stdout]     |
[INFO] [stdout] 729 | impl ColorPipelineConfig {
[INFO] [stdout]     | ------------------------ associated functions in this implementation
[INFO] [stdout] 730 |     pub fn broadcast() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 736 |     pub fn log_output(log_space: TransferFunction, gamut: ColorSpace) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pipeline_convert_to_u16` is never used
[INFO] [stdout]    --> src/color.rs:752:8
[INFO] [stdout]     |
[INFO] [stdout] 752 | pub fn pipeline_convert_to_u16(pixels: &[f32]) -> Vec<u16> { pixels.iter().map(|&v| (v.clamp(0.0, 1.0) * 65535.0) as u16).collect() }
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `highlight_clip` is never used
[INFO] [stdout]    --> src/color.rs:754:8
[INFO] [stdout]     |
[INFO] [stdout] 754 | pub fn highlight_clip(pixels: &mut [f32], threshold: f32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_linear` is never used
[INFO] [stdout]    --> src/color.rs:766:8
[INFO] [stdout]     |
[INFO] [stdout] 766 | pub fn normalize_linear(pixels: &mut [f32], black_level: f64, white_level: f64) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_linear_f32` is never used
[INFO] [stdout]    --> src/color.rs:771:8
[INFO] [stdout]     |
[INFO] [stdout] 771 | pub fn normalize_linear_f32(pixels: &mut [f32], black_level: f32, white_level: f32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_lens_correction_cpu` is never used
[INFO] [stdout]    --> src/color.rs:879:8
[INFO] [stdout]     |
[INFO] [stdout] 879 | pub fn apply_lens_correction_cpu(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `audio_sample_rate_hz` and `num_audio_channels` are never read
[INFO] [stdout]   --> src/decoder.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct ContainerMetadata {
[INFO] [stdout]    |            ----------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub audio_sample_rate_hz: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 32 |     pub num_audio_channels: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ContainerMetadata` 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: fields `timestamp_ns`, `exposure_time`, `iso`, `focal_length`, and `aperture` are never read
[INFO] [stdout]   --> src/decoder.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub struct FrameMetadata {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub timestamp_ns: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 41 |     pub as_shot_neutral: [f32; 3],
[INFO] [stdout] 42 |     pub exposure_time: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 43 |     pub iso: f32,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 44 |     pub focal_length: f32,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 45 |     pub aperture: f32,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FrameMetadata` 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: constant `DC_BITS` is never used
[INFO] [stdout]   --> src/dng_writer.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const DC_BITS: [u8; 16] = [0, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DC_HUFFVAL` is never used
[INFO] [stdout]   --> src/dng_writer.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const DC_HUFFVAL: [u8; 17] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16];
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BitWriter` is never constructed
[INFO] [stdout]   --> src/dng_writer.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | struct BitWriter {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `write_bits`, `flush`, `byte_stuff`, and `into_bytes` are never used
[INFO] [stdout]   --> src/dng_writer.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl BitWriter {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 28 |     fn new() -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     fn write_bits(&mut self, value: u32, count: u32) {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     fn flush(&mut self) {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     fn byte_stuff(&mut self) {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     fn into_bytes(mut self) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_huffman_table` is never used
[INFO] [stdout]   --> src/dng_writer.rs:71:4
[INFO] [stdout]    |
[INFO] [stdout] 71 | fn build_huffman_table(bits: &[u8; 16], huffval: &[u8]) -> (Vec<u32>, Vec<u8>) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encode_jpeg_diff` is never used
[INFO] [stdout]   --> src/dng_writer.rs:91:4
[INFO] [stdout]    |
[INFO] [stdout] 91 | fn encode_jpeg_diff(diff: i32) -> (u32, u32) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_diff` is never used
[INFO] [stdout]    --> src/dng_writer.rs:105:4
[INFO] [stdout]     |
[INFO] [stdout] 105 | fn write_diff(bw: &mut BitWriter, diff: i32, codes: &[u32], sizes: &[u8]) {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compress_lj92` is never used
[INFO] [stdout]    --> src/dng_writer.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub fn compress_lj92(bayer: &[u16], width: usize, height: usize) -> Vec<u8> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pattern_to_cfa` is never used
[INFO] [stdout]    --> src/dng_writer.rs:165:4
[INFO] [stdout]     |
[INFO] [stdout] 165 | fn pattern_to_cfa(pattern: BayerPattern, offset_x: u32, offset_y: u32) -> [u8; 4] {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `stem_from_path` is never used
[INFO] [stdout]    --> src/dng_writer.rs:182:4
[INFO] [stdout]     |
[INFO] [stdout] 182 | fn stem_from_path(path: &str) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `f64_to_srational` is never used
[INFO] [stdout]    --> src/dng_writer.rs:195:4
[INFO] [stdout]     |
[INFO] [stdout] 195 | fn f64_to_srational(v: f64) -> SRational {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `f32_to_srational` is never used
[INFO] [stdout]    --> src/dng_writer.rs:199:4
[INFO] [stdout]     |
[INFO] [stdout] 199 | fn f32_to_srational(v: f32) -> SRational {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `matrix9_as_srational_slice` is never used
[INFO] [stdout]    --> src/dng_writer.rs:203:4
[INFO] [stdout]     |
[INFO] [stdout] 203 | fn matrix9_as_srational_slice(m: &[f64; 9]) -> [SRational; 9] {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `asn_as_srational_slice` is never used
[INFO] [stdout]    --> src/dng_writer.rs:211:4
[INFO] [stdout]     |
[INFO] [stdout] 211 | fn asn_as_srational_slice(asn: [f32; 3]) -> [SRational; 3] {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_gainmap_opcode_blob` is never used
[INFO] [stdout]    --> src/dng_writer.rs:224:8
[INFO] [stdout]     |
[INFO] [stdout] 224 | pub fn build_gainmap_opcode_blob(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DngWriter` is never constructed
[INFO] [stdout]    --> src/dng_writer.rs:296:12
[INFO] [stdout]     |
[INFO] [stdout] 296 | pub struct DngWriter<'a> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `filename`, and `write_to_path` are never used
[INFO] [stdout]    --> src/dng_writer.rs:304:12
[INFO] [stdout]     |
[INFO] [stdout] 303 | impl<'a> DngWriter<'a> {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] 304 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 314 |     pub fn filename(&self, output_dir: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 323 |     pub fn write_to_path<P: AsRef<Path>>(&self, path: P) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `conv_bgl` and `fill_bgl` are never read
[INFO] [stdout]   --> src/gpu.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct RcdPipeline {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 20 |     conv_bgl: wgpu::BindGroupLayout, fill_bgl: wgpu::BindGroupLayout,
[INFO] [stdout]    |     ^^^^^^^^                         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `output_path` is never read
[INFO] [stdout]  --> src/encoder.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 |     DNG { output_path: PathBuf },
[INFO] [stdout]   |     ---   ^^^^^^^^^^^
[INFO] [stdout]   |     |
[INFO] [stdout]   |     field in this variant
[INFO] [stdout]   |
[INFO] [stdout]   = note: `OutputFormat` 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 `output_path` is never read
[INFO] [stdout]  --> src/encoder.rs:8:14
[INFO] [stdout]   |
[INFO] [stdout] 8 |     ProRes { output_path: PathBuf },
[INFO] [stdout]   |     ------   ^^^^^^^^^^^
[INFO] [stdout]   |     |
[INFO] [stdout]   |     field in this variant
[INFO] [stdout]   |
[INFO] [stdout]   = note: `OutputFormat` 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 `output_path` is never read
[INFO] [stdout]  --> src/encoder.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 |     H264 { output_path: PathBuf },
[INFO] [stdout]   |     ----   ^^^^^^^^^^^
[INFO] [stdout]   |     |
[INFO] [stdout]   |     field in this variant
[INFO] [stdout]   |
[INFO] [stdout]   = note: `OutputFormat` 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 `output_path` is never read
[INFO] [stdout]   --> src/encoder.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 |     HEVC { output_path: PathBuf },
[INFO] [stdout]    |     ----   ^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OutputFormat` 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 `error` is never read
[INFO] [stdout]   --> src/encoder.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct EncodeJob {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub error: Option<String>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EncodeJob` 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 `output_path` is never used
[INFO] [stdout]   --> src/encoder.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl EncodeJob {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn output_path(&self) -> Option<&PathBuf> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `cancel_job` and `list_supported_formats` are never used
[INFO] [stdout]   --> src/encoder.rs:85:18
[INFO] [stdout]    |
[INFO] [stdout] 74 | impl Encoder {
[INFO] [stdout]    | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub async fn cancel_job(&self, _job_id: &str) -> Result<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 90 |     pub async fn list_supported_formats(&self) -> Vec<&'static str> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `kill` is never used
[INFO] [stdout]    --> src/encoder.rs:271:12
[INFO] [stdout]     |
[INFO] [stdout] 107 | impl VideoEncoder {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 271 |     pub fn kill(&mut self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `McrawError` is never used
[INFO] [stdout]  --> src/error.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum McrawError {
[INFO] [stdout]   |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `McrawResult` is never used
[INFO] [stdout]   --> src/error.rs:27:10
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub type McrawResult<T> = std::result::Result<T, McrawError>;
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `sensor_orientation`, `baseline_exposure`, and `num_segments` are never read
[INFO] [stdout]   --> src/file.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | struct MotionJsonMetadata {
[INFO] [stdout]    |        ------------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 12 |     sensor_orientation: Option<i64>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     baseline_exposure: Option<f64>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     num_segments: Option<i64>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MotionJsonMetadata` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `recording_type` and `use_accurate_timestamp` are never read
[INFO] [stdout]   --> src/file.rs:58:5
[INFO] [stdout]    |
[INFO] [stdout] 56 | struct ExtraData {
[INFO] [stdout]    |        --------- fields in this struct
[INFO] [stdout] 57 |     #[serde(rename = "recordingType", default)]
[INFO] [stdout] 58 |     recording_type: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     use_accurate_timestamp: Option<bool>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ExtraData` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `version_major` and `version_build` are never read
[INFO] [stdout]   --> src/file.rs:76:5
[INFO] [stdout]    |
[INFO] [stdout] 70 | struct BuildMetadata {
[INFO] [stdout]    |        ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 76 |     version_major: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 77 |     #[serde(rename = "version.build", default)]
[INFO] [stdout] 78 |     version_build: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BuildMetadata` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `camera_id` is never read
[INFO] [stdout]   --> src/file.rs:84:5
[INFO] [stdout]    |
[INFO] [stdout] 82 | struct DeviceProfile {
[INFO] [stdout]    |        ------------- field in this struct
[INFO] [stdout] 83 |     #[serde(rename = "cameraId", default)]
[INFO] [stdout] 84 |     camera_id: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DeviceProfile` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `calibration_illuminant` is never read
[INFO] [stdout]    --> src/file.rs:179:9
[INFO] [stdout]     |
[INFO] [stdout] 160 | pub struct CameraMetadata {
[INFO] [stdout]     |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub calibration_illuminant: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `CameraMetadata` 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 `frame_offsets` is never read
[INFO] [stdout]    --> src/file.rs:226:9
[INFO] [stdout]     |
[INFO] [stdout] 212 | pub struct McrawFileInfo {
[INFO] [stdout]     |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 226 |     pub frame_offsets: Vec<u64>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `McrawFileInfo` 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: struct `RawAdjustments` is never constructed
[INFO] [stdout]  --> src/grading.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct RawAdjustments {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `size` is never read
[INFO] [stdout]   --> src/file_browser.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct FileEntry {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 12 |     pub size: u64,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FileEntry` 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 `selected_file_info` is never used
[INFO] [stdout]    --> src/file_browser.rs:181:12
[INFO] [stdout]     |
[INFO] [stdout]  48 | impl FileBrowser {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn selected_file_info(&self) -> Option<&McrawFileInfo> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_metadata_for_display` is never used
[INFO] [stdout]  --> src/metadata.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn format_metadata_for_display(info: &McrawFileInfo) -> Vec<Line<'static>> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_general_section` is never used
[INFO] [stdout]   --> src/metadata.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub fn format_general_section(info: &McrawFileInfo) -> Vec<Line<'static>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_camera_section` is never used
[INFO] [stdout]   --> src/metadata.rs:49:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub fn format_camera_section(info: &McrawFileInfo) -> Vec<Line<'static>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_video_section` is never used
[INFO] [stdout]    --> src/metadata.rs:100:8
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub fn format_video_section(info: &McrawFileInfo) -> Vec<Line<'static>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_audio_section` is never used
[INFO] [stdout]    --> src/metadata.rs:158:8
[INFO] [stdout]     |
[INFO] [stdout] 158 | pub fn format_audio_section(info: &McrawFileInfo) -> Vec<Line<'static>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/pipeline.rs:145:8
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub fn run(info: &McrawFileInfo, output_path: &str) -> Result<()> {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_empty`, `is_loading`, and `is_ready` are never used
[INFO] [stdout]   --> src/preview/mod.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl PreviewState {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] 26 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn is_loading(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn is_ready(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ImageEncoder` is never used
[INFO] [stdout]  --> src/preview/encoders/mod.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait ImageEncoder {
[INFO] [stdout]   |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_params` is never used
[INFO] [stdout]   --> src/preview/pipeline/cache.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl PipelineKey {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 13 |     pub fn from_params(params: &PreviewParams) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get`, `len`, and `is_empty` are never used
[INFO] [stdout]   --> src/preview/pipeline/cache.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl PipelineCache {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn get(&mut self, key: &PipelineKey) -> Option<&wgpu::ComputePipeline> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn len(&self) -> usize {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `queue` is never read
[INFO] [stdout]  --> src/preview/pipeline/device.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct PreviewGpuContext {
[INFO] [stdout]   |            ----------------- field in this struct
[INFO] [stdout] 5 |     pub device: wgpu::Device,
[INFO] [stdout] 6 |     pub queue: wgpu::Queue,
[INFO] [stdout]   |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_shared` is never used
[INFO] [stdout]   --> src/preview/pipeline/device.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl PreviewGpuContext {
[INFO] [stdout]    | ---------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn from_shared(context: &Arc<crate::gpu::GpuContext>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/preview/pipeline/pipeline.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct GpuPreviewPipeline<S = Uninitialized> {
[INFO] [stdout]    |            ------------------ fields in this struct
[INFO] [stdout] 15 |     context: Option<Arc<PreviewGpuContext>>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 16 |     bind_group_layout: Option<wgpu::BindGroupLayout>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 17 |     pipeline_layout: Option<wgpu::PipelineLayout>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 18 |     cache: PipelineCache,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 19 |     bayer_buffer: Option<wgpu::Buffer>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 20 |     output_buffer: Option<wgpu::Buffer>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 21 |     readback_buffer: Option<wgpu::Buffer>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 22 |     uniform_buffer: Option<wgpu::Buffer>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 23 |     hist_buffers: Option<[wgpu::Buffer; 4]>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 24 |     current_bind_group: Option<wgpu::BindGroup>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 25 |     current_width: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 26 |     current_height: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `process_and_readback` and `resize` are never used
[INFO] [stdout]    --> src/preview/pipeline/pipeline.rs:200:12
[INFO] [stdout]     |
[INFO] [stdout] 199 | impl GpuPreviewPipeline<Ready> {
[INFO] [stdout]     | ------------------------------ methods in this implementation
[INFO] [stdout] 200 |     pub fn process_and_readback(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     pub fn resize(&mut self, _width: u32, _height: u32) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `avg` is never used
[INFO] [stdout]    --> src/stats.rs:103:22
[INFO] [stdout]     |
[INFO] [stdout]  65 | impl PhaseTimer {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 103 |     #[inline] pub fn avg(&self) -> Duration {
[INFO] [stdout]     |                      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `print_summary` is never used
[INFO] [stdout]    --> src/stats.rs:286:12
[INFO] [stdout]     |
[INFO] [stdout] 271 | impl StatsReport {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 286 |     pub fn print_summary(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `aspect_fit` is never used
[INFO] [stdout]   --> src/thumbnail.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn aspect_fit(raw_w: u32, raw_h: u32) -> (u32, u32) {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_params` is never used
[INFO] [stdout]   --> src/thumbnail.rs:33:4
[INFO] [stdout]    |
[INFO] [stdout] 33 | fn build_params(
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `encode_time` is never read
[INFO] [stdout]   --> src/thumbnail.rs:75:9
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub struct CachedThumbnail {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub encode_time: Instant,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CachedThumbnail` 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 `placeholder` is never read
[INFO] [stdout]   --> src/thumbnail.rs:87:9
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub struct ThumbnailCache {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 87 |     pub placeholder: Vec<u8>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `clear` and `len` are never used
[INFO] [stdout]    --> src/thumbnail.rs:144:12
[INFO] [stdout]     |
[INFO] [stdout]  90 | impl ThumbnailCache {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub fn clear(&self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn len(&self) -> usize {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_thumbnail` is never used
[INFO] [stdout]    --> src/thumbnail.rs:206:8
[INFO] [stdout]     |
[INFO] [stdout] 206 | pub fn compute_thumbnail(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated constants are never used
[INFO] [stdout]   --> src/ui.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl Palette {
[INFO] [stdout]    | ------------ associated constants in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 26 |     const BG_PANEL: Color = Color::Rgb(0x12, 0x17, 0x0F);
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     const ACCENT_MIST: Color = Color::Rgb(0x6D, 0xAE, 0xAE);
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     const WARNING: Color = Color::Rgb(0xE8, 0xA0, 0x35);
[INFO] [stdout]    |           ^^^^^^^
[INFO] [stdout] 42 |     const ERROR: Color = Color::Rgb(0xC4, 0x5C, 0x3C);
[INFO] [stdout]    |           ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     const PROGRESS_BAR_BG: Color = Self::BG_ELEVATED;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 73 |     const PROGRESS_BAR_FG: Color = Self::ACCENT_GREEN;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 74 |     const PANEL_BG: Color = Self::BG_PANEL;
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 75 |     const HEADER_BG: Color = Self::BG_VOID;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 76 |     const HEADER_FG: Color = Self::TEXT_PRIMARY;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ClosePopup`, `ToggleHelp`, `BrowserEnter`, `BrowserGoUp`, and `GradeSlider` are never constructed
[INFO] [stdout]    --> src/ui.rs:113:5
[INFO] [stdout]     |
[INFO] [stdout]  90 | pub enum ClickAction {
[INFO] [stdout]     |          ----------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 113 |     ClosePopup,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 114 |     ToggleHelp,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     BrowserEnter,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 118 |     BrowserGoUp,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     GradeSlider(usize),
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ClickAction` 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: function `frames_to_timecode` is never used
[INFO] [stdout]     --> src/ui.rs:1293:4
[INFO] [stdout]      |
[INFO] [stdout] 1293 | fn frames_to_timecode(frame: usize, total: usize, fps: f64) -> (String, String) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sprocket_track` is never used
[INFO] [stdout]     --> src/ui.rs:1307:4
[INFO] [stdout]      |
[INFO] [stdout] 1307 | fn sprocket_track(frame: usize, total: usize, width: usize, _prev_playhead: Option<usize>) -> Line<'static> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gradient_slider` is never used
[INFO] [stdout]     --> src/ui.rs:1389:4
[INFO] [stdout]      |
[INFO] [stdout] 1389 | fn gradient_slider(label: &str, label_w: usize, value: f32, lo: f32, hi: f32, display: String,
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_grade_panel` is never used
[INFO] [stdout]     --> src/ui.rs:1433:4
[INFO] [stdout]      |
[INFO] [stdout] 1433 | fn render_grade_panel(frame: &mut Frame, app: &App, area: Rect, border_color: Color) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 42.55s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: naga v24.0.0, wgpu v24.0.5, wgpu-core v24.0.5, wgpu-hal v24.0.4
[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" "15c50404f2e12055bb5abb20790e16f6ccb0de2f9627b305b29c39a1c9613ec8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "15c50404f2e12055bb5abb20790e16f6ccb0de2f9627b305b29c39a1c9613ec8", kill_on_drop: false }`
[INFO] [stdout] 15c50404f2e12055bb5abb20790e16f6ccb0de2f9627b305b29c39a1c9613ec8
