[INFO] cloning repository https://github.com/Skynse/cutio
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Skynse/cutio" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSkynse%2Fcutio", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSkynse%2Fcutio'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] be4e423443df1b05a4982e91a22b3d170c9825d4
[INFO] checking Skynse/cutio against master#df1ae0f7dd168513de2d89beb2cb7a95d4fdc118 for pr-159343
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSkynse%2Fcutio" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Skynse/cutio
[INFO] finished tweaking git repo https://github.com/Skynse/cutio
[INFO] tweaked toml for git repo https://github.com/Skynse/cutio written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Skynse/cutio on toolchain df1ae0f7dd168513de2d89beb2cb7a95d4fdc118
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+df1ae0f7dd168513de2d89beb2cb7a95d4fdc118" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Skynse/cutio 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" "+df1ae0f7dd168513de2d89beb2cb7a95d4fdc118" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded rgb v0.8.51
[INFO] [stderr]   Downloaded zvariant v5.6.0
[INFO] [stderr]   Downloaded zvariant_derive v5.6.0
[INFO] [stderr]   Downloaded lru v0.16.0
[INFO] [stderr]   Downloaded system-deps v7.0.5
[INFO] [stderr]   Downloaded gstreamer-app-sys v0.23.5
[INFO] [stderr]   Downloaded gstreamer-pbutils-sys v0.23.5
[INFO] [stderr]   Downloaded gstreamer-base-sys v0.23.6
[INFO] [stderr]   Downloaded gstreamer-audio-sys v0.23.6
[INFO] [stderr]   Downloaded gstreamer-app v0.23.5
[INFO] [stderr]   Downloaded cfg-expr v0.20.1
[INFO] [stderr]   Downloaded gstreamer-base v0.23.6
[INFO] [stderr]   Downloaded gstreamer-pbutils v0.23.5
[INFO] [stderr]   Downloaded gstreamer-video v0.23.6
[INFO] [stderr]   Downloaded gstreamer-video-sys v0.23.6
[INFO] [stderr]   Downloaded glib-macros v0.20.12
[INFO] [stderr]   Downloaded gstreamer-audio v0.23.6
[INFO] [stderr]   Downloaded gstreamer-sys v0.23.6
[INFO] [stderr]   Downloaded glib v0.20.12
[INFO] [stderr]   Downloaded gstreamer v0.23.7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/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:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] d1ce016e06b7d5cc0011c3182beb107f9588d59896bdb00ec7f1d969186da906
[INFO] running `Command { std: "docker" "start" "d1ce016e06b7d5cc0011c3182beb107f9588d59896bdb00ec7f1d969186da906", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d1ce016e06b7d5cc0011c3182beb107f9588d59896bdb00ec7f1d969186da906", 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" "d1ce016e06b7d5cc0011c3182beb107f9588d59896bdb00ec7f1d969186da906" "/opt/rustwide/cargo-home/bin/cargo" "+df1ae0f7dd168513de2d89beb2cb7a95d4fdc118" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d1ce016e06b7d5cc0011c3182beb107f9588d59896bdb00ec7f1d969186da906", 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" "d1ce016e06b7d5cc0011c3182beb107f9588d59896bdb00ec7f1d969186da906" "/opt/rustwide/cargo-home/bin/cargo" "+df1ae0f7dd168513de2d89beb2cb7a95d4fdc118" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling winnow v0.7.11
[INFO] [stderr]    Compiling hashbrown v0.15.4
[INFO] [stderr]    Compiling libc v0.2.174
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]    Compiling target-lexicon v0.13.2
[INFO] [stderr]     Checking log v0.4.27
[INFO] [stderr]    Compiling rustix v1.0.7
[INFO] [stderr]     Checking linux-raw-sys v0.9.4
[INFO] [stderr]    Compiling syn v2.0.104
[INFO] [stderr]    Compiling static_assertions v1.1.0
[INFO] [stderr]     Checking libloading v0.8.8
[INFO] [stderr]     Checking event-listener v5.4.0
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]     Checking futures-lite v2.6.0
[INFO] [stderr]     Checking linux-raw-sys v0.4.15
[INFO] [stderr]    Compiling endi v1.1.0
[INFO] [stderr]    Compiling wayland-sys v0.31.6
[INFO] [stderr]    Compiling wayland-backend v0.3.10
[INFO] [stderr]    Compiling quick-xml v0.37.5
[INFO] [stderr]     Checking dlib v0.5.2
[INFO] [stderr]    Compiling wayland-client v0.31.10
[INFO] [stderr]     Checking ordered-stream v0.2.0
[INFO] [stderr]     Checking ttf-parser v0.25.1
[INFO] [stderr]    Compiling nix v0.29.0
[INFO] [stderr]     Checking ab_glyph_rasterizer v0.1.9
[INFO] [stderr]    Compiling indexmap v2.10.0
[INFO] [stderr]    Compiling xml-rs v0.8.26
[INFO] [stderr]     Checking form_urlencoded v1.2.1
[INFO] [stderr]     Checking accesskit v0.17.1
[INFO] [stderr]     Checking event-listener-strategy v0.5.4
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]    Compiling thiserror v2.0.12
[INFO] [stderr]     Checking async-lock v3.4.0
[INFO] [stderr]     Checking async-channel v2.5.0
[INFO] [stderr]     Checking async-broadcast v0.7.2
[INFO] [stderr]    Compiling cfg-expr v0.20.1
[INFO] [stderr]     Checking flate2 v1.1.2
[INFO] [stderr]     Checking maybe-rayon v0.1.1
[INFO] [stderr]    Compiling simd_helpers v0.1.0
[INFO] [stderr]     Checking x11rb-protocol v0.13.1
[INFO] [stderr]     Checking blocking v1.6.2
[INFO] [stderr]     Checking async-executor v1.13.2
[INFO] [stderr]     Checking imgref v1.11.0
[INFO] [stderr]     Checking async-fs v2.1.2
[INFO] [stderr]    Compiling gl_generator v0.14.0
[INFO] [stderr]     Checking loop9 v0.1.5
[INFO] [stderr]     Checking option-operations v0.5.0
[INFO] [stderr]     Checking immutable-chunkmap v2.0.6
[INFO] [stderr]     Checking avif-serialize v0.8.5
[INFO] [stderr]    Compiling wayland-scanner v0.31.6
[INFO] [stderr]    Compiling winit v0.30.11
[INFO] [stderr]     Checking half v2.6.0
[INFO] [stderr]     Checking epaint_default_fonts v0.31.1
[INFO] [stderr]     Checking rgb v0.8.51
[INFO] [stderr]     Checking jpeg-decoder v0.3.2
[INFO] [stderr]    Compiling glutin_egl_sys v0.7.1
[INFO] [stderr]    Compiling glutin_glx_sys v0.6.1
[INFO] [stderr]     Checking png v0.17.16
[INFO] [stderr]     Checking exr v1.73.0
[INFO] [stderr]     Checking accesskit_consumer v0.26.0
[INFO] [stderr]     Checking owned_ttf_parser v0.25.0
[INFO] [stderr]    Compiling phf_shared v0.11.3
[INFO] [stderr]     Checking getrandom v0.3.3
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]     Checking ab_glyph v0.2.30
[INFO] [stderr]     Checking xdg-home v1.3.0
[INFO] [stderr]     Checking parking_lot_core v0.9.11
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]     Checking memmap2 v0.9.5
[INFO] [stderr]     Checking x11-dl v2.21.0
[INFO] [stderr]     Checking parking_lot v0.12.4
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking tiff v0.9.1
[INFO] [stderr]     Checking signal-hook-registry v1.4.5
[INFO] [stderr]     Checking image-webp v0.2.3
[INFO] [stderr]     Checking zune-jpeg v0.4.19
[INFO] [stderr]     Checking xkbcommon-dl v0.4.2
[INFO] [stderr]    Compiling nix v0.30.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking atomic_refcell v0.1.13
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]    Compiling phf v0.11.3
[INFO] [stderr]    Compiling mime_guess2 v2.3.1
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]    Compiling litrs v0.4.1
[INFO] [stderr]    Compiling rfd v0.15.3
[INFO] [stderr]     Checking lru v0.16.0
[INFO] [stderr]     Checking uuid v1.17.0
[INFO] [stderr]     Checking rand v0.9.1
[INFO] [stderr]    Compiling document-features v0.2.11
[INFO] [stderr]     Checking tempfile v3.20.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zvariant_utils v2.1.0
[INFO] [stderr]     Checking glutin v0.32.3
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling enumflags2_derive v0.7.12
[INFO] [stderr]    Compiling tracing-attributes v0.1.30
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling yoke-derive v0.8.0
[INFO] [stderr]    Compiling zerovec-derive v0.11.1
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling bytemuck_derive v1.9.3
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling async-trait v0.1.88
[INFO] [stderr]    Compiling serde_repr v0.1.20
[INFO] [stderr]    Compiling profiling-procmacros v1.0.17
[INFO] [stderr]    Compiling equator-macro v0.4.2
[INFO] [stderr]     Checking profiling v1.0.17
[INFO] [stderr]    Compiling thiserror-impl v2.0.12
[INFO] [stderr]    Compiling num-derive v0.4.2
[INFO] [stderr]    Compiling arg_enum_proc_macro v0.3.4
[INFO] [stderr]    Compiling enum-map-derive v0.17.0
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking equator v0.4.2
[INFO] [stderr]     Checking bytemuck v1.23.1
[INFO] [stderr]     Checking wayland-csd-frame v0.3.0
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking aligned-vec v0.6.4
[INFO] [stderr]     Checking yoke v0.8.0
[INFO] [stderr]     Checking polling v3.8.0
[INFO] [stderr]     Checking tiny-skia-path v0.11.4
[INFO] [stderr]     Checking emath v0.31.1
[INFO] [stderr]     Checking qoi v0.4.1
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking v_frame v0.3.9
[INFO] [stderr]     Checking zerovec v0.11.2
[INFO] [stderr]     Checking zerotrie v0.2.2
[INFO] [stderr]     Checking av1-grain v0.2.4
[INFO] [stderr]     Checking async-io v2.4.1
[INFO] [stderr]     Checking calloop v0.13.0
[INFO] [stderr]     Checking tiny-skia v0.11.4
[INFO] [stderr]     Checking ecolor v0.31.1
[INFO] [stderr]     Checking epaint v0.31.1
[INFO] [stderr]     Checking rav1e v0.7.1
[INFO] [stderr]     Checking async-signal v0.2.11
[INFO] [stderr]     Checking async-net v2.0.0
[INFO] [stderr]    Compiling serde v1.0.219
[INFO] [stderr]     Checking async-process v2.3.1
[INFO] [stderr]     Checking tinystr v0.8.1
[INFO] [stderr]     Checking potential_utf v0.1.2
[INFO] [stderr]     Checking icu_collections v2.0.0
[INFO] [stderr]     Checking icu_locale_core v2.0.0
[INFO] [stderr]     Checking wayland-protocols v0.32.8
[INFO] [stderr]     Checking calloop-wayland-source v0.3.0
[INFO] [stderr]     Checking wayland-cursor v0.31.10
[INFO] [stderr]     Checking egui v0.31.1
[INFO] [stderr]     Checking icu_provider v2.0.0
[INFO] [stderr]     Checking icu_properties v2.0.1
[INFO] [stderr]     Checking icu_normalizer v2.0.0
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.0.3
[INFO] [stderr]     Checking enumflags2 v0.7.12
[INFO] [stderr]     Checking quick-xml v0.30.0
[INFO] [stderr]     Checking zvariant_utils v3.2.0
[INFO] [stderr]     Checking enum-map v2.7.3
[INFO] [stderr]     Checking serde_json v1.0.140
[INFO] [stderr]     Checking url v2.5.4
[INFO] [stderr]     Checking webbrowser v1.0.5
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]     Checking egui_glow v0.31.1
[INFO] [stderr]     Checking x11rb v0.13.1
[INFO] [stderr]     Checking ravif v0.11.20
[INFO] [stderr]     Checking image v0.25.6
[INFO] [stderr]    Compiling proc-macro-crate v3.3.0
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]     Checking wayland-protocols-wlr v0.3.8
[INFO] [stderr]     Checking wayland-protocols-plasma v0.3.8
[INFO] [stderr]    Compiling zvariant_derive v4.2.0
[INFO] [stderr]    Compiling zbus_macros v4.4.0
[INFO] [stderr]    Compiling zvariant_derive v5.6.0
[INFO] [stderr]    Compiling glib-macros v0.20.12
[INFO] [stderr]    Compiling system-deps v7.0.5
[INFO] [stderr]     Checking smithay-client-toolkit v0.19.2
[INFO] [stderr]    Compiling glib-sys v0.20.10
[INFO] [stderr]    Compiling gobject-sys v0.20.10
[INFO] [stderr]    Compiling gstreamer-sys v0.23.6
[INFO] [stderr]    Compiling gstreamer-base-sys v0.23.6
[INFO] [stderr]    Compiling gio-sys v0.20.10
[INFO] [stderr]    Compiling gstreamer-audio-sys v0.23.6
[INFO] [stderr]    Compiling gstreamer-video-sys v0.23.6
[INFO] [stderr]    Compiling gstreamer-pbutils-sys v0.23.5
[INFO] [stderr]    Compiling gstreamer-app-sys v0.23.5
[INFO] [stderr]    Compiling zvariant v5.6.0
[INFO] [stderr]    Compiling zvariant v4.2.0
[INFO] [stderr]     Checking sctk-adwaita v0.10.1
[INFO] [stderr]     Checking smithay-clipboard v0.7.2
[INFO] [stderr]     Checking arboard v3.6.0
[INFO] [stderr]     Checking egui_extras v0.31.1
[INFO] [stderr]     Checking glib v0.20.12
[INFO] [stderr]    Compiling zbus_names v4.2.0
[INFO] [stderr]     Checking zbus_names v3.0.0
[INFO] [stderr]     Checking zbus_xml v4.0.0
[INFO] [stderr]     Checking zbus v4.4.0
[INFO] [stderr]    Compiling zbus_macros v5.7.1
[INFO] [stderr]     Checking zbus-lockstep v0.4.4
[INFO] [stderr]    Compiling zbus-lockstep-macros v0.4.4
[INFO] [stderr]     Checking glutin-winit v0.5.0
[INFO] [stderr]     Checking zbus v5.7.1
[INFO] [stderr]     Checking atspi-common v0.6.0
[INFO] [stderr]     Checking gstreamer v0.23.7
[INFO] [stderr]     Checking ashpd v0.11.0
[INFO] [stderr]     Checking atspi-proxies v0.6.0
[INFO] [stderr]     Checking accesskit_atspi_common v0.10.1
[INFO] [stderr]     Checking atspi-connection v0.6.0
[INFO] [stderr]     Checking atspi v0.22.0
[INFO] [stderr]     Checking accesskit_unix v0.13.1
[INFO] [stderr]     Checking accesskit_winit v0.23.1
[INFO] [stderr]     Checking egui-winit v0.31.1
[INFO] [stderr]     Checking eframe v0.31.1
[INFO] [stderr]     Checking gstreamer-base v0.23.6
[INFO] [stderr]     Checking gstreamer-video v0.23.6
[INFO] [stderr]     Checking gstreamer-audio v0.23.6
[INFO] [stderr]     Checking gstreamer-app v0.23.5
[INFO] [stderr]     Checking gstreamer-pbutils v0.23.5
[INFO] [stderr]     Checking cutio v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `AudioMetadata` and `VideoMetadata`
[INFO] [stdout]  --> src/ops/clip_ops.rs:1:38
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::types::media::{AudioClip, AudioMetadata, Clip, VideoClip, VideoMetadata};
[INFO] [stdout]   |                                      ^^^^^^^^^^^^^                   ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AudioBuffer`
[INFO] [stdout]  --> src/renderer/time_player_bridge.rs:1:42
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::renderer::timeline_renderer::{AudioBuffer, TimelineRenderer, VideoFrame};
[INFO] [stdout]   |                                          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::process::Command`
[INFO] [stdout]   --> src/types/media_library.rs:65:13
[INFO] [stdout]    |
[INFO] [stdout] 65 |         use std::process::Command;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Sub`
[INFO] [stdout]  --> src/ui/app.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::ops::Sub;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/ui/app.rs:5:30
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::types::timeline::{self, Timeline};
[INFO] [stdout]   |                              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `image::GenericImageView`
[INFO] [stdout]  --> src/ui/medialib.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use image::GenericImageView;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `StrokeKind`
[INFO] [stdout]  --> src/ui/timeline_widget.rs:1:26
[INFO] [stdout]   |
[INFO] [stdout] 1 | use eframe::egui::{self, StrokeKind};
[INFO] [stdout]   |                          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ui::video_player::VideoPlayer`
[INFO] [stdout]  --> src/ui/track_widget.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::ui::video_player::VideoPlayer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VideoFrame`
[INFO] [stdout]  --> src/ui/video_player.rs:5:60
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::renderer::timeline_renderer::{TimelineRenderer, VideoFrame};
[INFO] [stdout]   |                                                            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Track` and `VideoTrack`
[INFO] [stdout]   --> src/main.rs:10:27
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::types::track::{Track, VideoTrack};
[INFO] [stdout]    |                           ^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]   --> src/main.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::path::PathBuf;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AudioMetadata` and `VideoMetadata`
[INFO] [stdout]  --> src/ops/clip_ops.rs:1:38
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::types::media::{AudioClip, AudioMetadata, Clip, VideoClip, VideoMetadata};
[INFO] [stdout]   |                                      ^^^^^^^^^^^^^                   ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AudioBuffer`
[INFO] [stdout]  --> src/renderer/time_player_bridge.rs:1:42
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::renderer::timeline_renderer::{AudioBuffer, TimelineRenderer, VideoFrame};
[INFO] [stdout]   |                                          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::process::Command`
[INFO] [stdout]   --> src/types/media_library.rs:65:13
[INFO] [stdout]    |
[INFO] [stdout] 65 |         use std::process::Command;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Sub`
[INFO] [stdout]  --> src/ui/app.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::ops::Sub;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/ui/app.rs:5:30
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::types::timeline::{self, Timeline};
[INFO] [stdout]   |                              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `image::GenericImageView`
[INFO] [stdout]  --> src/ui/medialib.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use image::GenericImageView;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `StrokeKind`
[INFO] [stdout]  --> src/ui/timeline_widget.rs:1:26
[INFO] [stdout]   |
[INFO] [stdout] 1 | use eframe::egui::{self, StrokeKind};
[INFO] [stdout]   |                          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ui::video_player::VideoPlayer`
[INFO] [stdout]  --> src/ui/track_widget.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::ui::video_player::VideoPlayer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VideoFrame`
[INFO] [stdout]  --> src/ui/video_player.rs:5:60
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::renderer::timeline_renderer::{TimelineRenderer, VideoFrame};
[INFO] [stdout]   |                                                            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Track` and `VideoTrack`
[INFO] [stdout]   --> src/main.rs:10:27
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::types::track::{Track, VideoTrack};
[INFO] [stdout]    |                           ^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]   --> src/main.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::path::PathBuf;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: falling back to `f32` as the trait bound `f32: From<f64>` is not satisfied
[INFO] [stdout]    --> src/ui/timeline_widget.rs:288:63
[INFO] [stdout]     |
[INFO] [stdout] 288 | ...                   egui::Stroke::new(2.0, egui::Color32::YELLOW),
[INFO] [stdout]     |                                         ^^^ help: explicitly specify the type as `f32`: `2.0_f32`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #154024 <https://github.com/rust-lang/rust/issues/154024>
[INFO] [stdout]     = note: `#[warn(float_literal_f32_fallback)]` (part of `#[warn(future_incompatible)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: falling back to `f32` as the trait bound `f32: From<f64>` is not satisfied
[INFO] [stdout]    --> src/ui/timeline_widget.rs:302:67
[INFO] [stdout]     |
[INFO] [stdout] 302 | ...                   egui::Stroke::new(2.0, egui::Color32::YELLOW),
[INFO] [stdout]     |                                         ^^^ help: explicitly specify the type as `f32`: `2.0_f32`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #154024 <https://github.com/rust-lang/rust/issues/154024>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: falling back to `f32` as the trait bound `f32: From<f64>` is not satisfied
[INFO] [stdout]    --> src/ui/timeline_widget.rs:376:41
[INFO] [stdout]     |
[INFO] [stdout] 376 | ...                   1.0,
[INFO] [stdout]     |                       ^^^ help: explicitly specify the type as `f32`: `1.0_f32`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #154024 <https://github.com/rust-lang/rust/issues/154024>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: falling back to `f32` as the trait bound `f32: From<f64>` is not satisfied
[INFO] [stdout]    --> src/ui/timeline_widget.rs:436:59
[INFO] [stdout]     |
[INFO] [stdout] 436 | ...                   egui::Stroke::new(1.0, border_color),
[INFO] [stdout]     |                                         ^^^ help: explicitly specify the type as `f32`: `1.0_f32`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #154024 <https://github.com/rust-lang/rust/issues/154024>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: falling back to `f32` as the trait bound `f32: From<f64>` is not satisfied
[INFO] [stdout]    --> src/ui/timeline_widget.rs:498:55
[INFO] [stdout]     |
[INFO] [stdout] 498 | ...                   egui::Stroke::new(1.0, egui::Color32::WHITE),
[INFO] [stdout]     |                                         ^^^ help: explicitly specify the type as `f32`: `1.0_f32`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #154024 <https://github.com/rust-lang/rust/issues/154024>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: falling back to `f32` as the trait bound `f32: From<f64>` is not satisfied
[INFO] [stdout]    --> src/ui/timeline_widget.rs:804:39
[INFO] [stdout]     |
[INFO] [stdout] 804 |                     egui::Stroke::new(1.0, egui::Color32::from_gray(120)),
[INFO] [stdout]     |                                       ^^^ help: explicitly specify the type as `f32`: `1.0_f32`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #154024 <https://github.com/rust-lang/rust/issues/154024>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: falling back to `f32` as the trait bound `f32: From<f64>` is not satisfied
[INFO] [stdout]    --> src/ui/timeline_widget.rs:822:39
[INFO] [stdout]     |
[INFO] [stdout] 822 |                     egui::Stroke::new(2.0, egui::Color32::WHITE),
[INFO] [stdout]     |                                       ^^^ help: explicitly specify the type as `f32`: `2.0_f32`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #154024 <https://github.com/rust-lang/rust/issues/154024>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: falling back to `f32` as the trait bound `f32: From<f64>` is not satisfied
[INFO] [stdout]    --> src/ui/timeline_widget.rs:854:35
[INFO] [stdout]     |
[INFO] [stdout] 854 |                 egui::Stroke::new(2.0, egui::Color32::RED),
[INFO] [stdout]     |                                   ^^^ help: explicitly specify the type as `f32`: `2.0_f32`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #154024 <https://github.com/rust-lang/rust/issues/154024>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Clip`
[INFO] [stdout]  --> src/types/track.rs:1:38
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::types::media::{AudioClip, Clip, VideoClip};
[INFO] [stdout]   |                                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: falling back to `f32` as the trait bound `f32: From<f64>` is not satisfied
[INFO] [stdout]    --> src/ui/timeline_widget.rs:288:63
[INFO] [stdout]     |
[INFO] [stdout] 288 | ...                   egui::Stroke::new(2.0, egui::Color32::YELLOW),
[INFO] [stdout]     |                                         ^^^ help: explicitly specify the type as `f32`: `2.0_f32`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #154024 <https://github.com/rust-lang/rust/issues/154024>
[INFO] [stdout]     = note: `#[warn(float_literal_f32_fallback)]` (part of `#[warn(future_incompatible)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: falling back to `f32` as the trait bound `f32: From<f64>` is not satisfied
[INFO] [stdout]    --> src/ui/timeline_widget.rs:302:67
[INFO] [stdout]     |
[INFO] [stdout] 302 | ...                   egui::Stroke::new(2.0, egui::Color32::YELLOW),
[INFO] [stdout]     |                                         ^^^ help: explicitly specify the type as `f32`: `2.0_f32`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #154024 <https://github.com/rust-lang/rust/issues/154024>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: falling back to `f32` as the trait bound `f32: From<f64>` is not satisfied
[INFO] [stdout]    --> src/ui/timeline_widget.rs:376:41
[INFO] [stdout]     |
[INFO] [stdout] 376 | ...                   1.0,
[INFO] [stdout]     |                       ^^^ help: explicitly specify the type as `f32`: `1.0_f32`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #154024 <https://github.com/rust-lang/rust/issues/154024>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: falling back to `f32` as the trait bound `f32: From<f64>` is not satisfied
[INFO] [stdout]    --> src/ui/timeline_widget.rs:436:59
[INFO] [stdout]     |
[INFO] [stdout] 436 | ...                   egui::Stroke::new(1.0, border_color),
[INFO] [stdout]     |                                         ^^^ help: explicitly specify the type as `f32`: `1.0_f32`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #154024 <https://github.com/rust-lang/rust/issues/154024>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: falling back to `f32` as the trait bound `f32: From<f64>` is not satisfied
[INFO] [stdout]    --> src/ui/timeline_widget.rs:498:55
[INFO] [stdout]     |
[INFO] [stdout] 498 | ...                   egui::Stroke::new(1.0, egui::Color32::WHITE),
[INFO] [stdout]     |                                         ^^^ help: explicitly specify the type as `f32`: `1.0_f32`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #154024 <https://github.com/rust-lang/rust/issues/154024>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: falling back to `f32` as the trait bound `f32: From<f64>` is not satisfied
[INFO] [stdout]    --> src/ui/timeline_widget.rs:804:39
[INFO] [stdout]     |
[INFO] [stdout] 804 |                     egui::Stroke::new(1.0, egui::Color32::from_gray(120)),
[INFO] [stdout]     |                                       ^^^ help: explicitly specify the type as `f32`: `1.0_f32`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #154024 <https://github.com/rust-lang/rust/issues/154024>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: falling back to `f32` as the trait bound `f32: From<f64>` is not satisfied
[INFO] [stdout]    --> src/ui/timeline_widget.rs:822:39
[INFO] [stdout]     |
[INFO] [stdout] 822 |                     egui::Stroke::new(2.0, egui::Color32::WHITE),
[INFO] [stdout]     |                                       ^^^ help: explicitly specify the type as `f32`: `2.0_f32`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #154024 <https://github.com/rust-lang/rust/issues/154024>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: falling back to `f32` as the trait bound `f32: From<f64>` is not satisfied
[INFO] [stdout]    --> src/ui/timeline_widget.rs:854:35
[INFO] [stdout]     |
[INFO] [stdout] 854 |                 egui::Stroke::new(2.0, egui::Color32::RED),
[INFO] [stdout]     |                                   ^^^ help: explicitly specify the type as `f32`: `2.0_f32`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #154024 <https://github.com/rust-lang/rust/issues/154024>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Clip`
[INFO] [stdout]  --> src/types/track.rs:1:38
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::types::media::{AudioClip, Clip, VideoClip};
[INFO] [stdout]   |                                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `events`
[INFO] [stdout]    --> src/ui/timeline_widget.rs:843:9
[INFO] [stdout]     |
[INFO] [stdout] 843 |         events: &mut Vec<TimelineEvent>,
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_events`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start_pos`
[INFO] [stdout]    --> src/ui/timeline_widget.rs:957:43
[INFO] [stdout]     |
[INFO] [stdout] 957 |                     DragState::Playhead { start_pos } => {
[INFO] [stdout]     |                                           ^^^^^^^^^ help: try ignoring the field: `start_pos: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `track_idx`
[INFO] [stdout]   --> src/ui/track_widget.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     track_idx: usize,
[INFO] [stdout]    |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_track_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `video_clip`
[INFO] [stdout]   --> src/main.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let video_clip = VideoClip {
[INFO] [stdout]    |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_video_clip`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timeline_arc`
[INFO] [stdout]   --> src/main.rs:43:9
[INFO] [stdout]    |
[INFO] [stdout] 43 |     let timeline_arc = Arc::new(RwLock::new(timeline.clone()));
[INFO] [stdout]    |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timeline_arc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cut_clip_at` is never used
[INFO] [stdout]  --> src/ops/clip_ops.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn cut_clip_at<T>(clip: &T, playhead: f64) -> Option<(T, T)>
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ClipSplit` is never used
[INFO] [stdout]   --> src/ops/clip_ops.rs:37:11
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub trait ClipSplit: Clip {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ensure_gst_init` is never used
[INFO] [stdout]  --> src/ops/video_funcs.rs:7:4
[INFO] [stdout]   |
[INFO] [stdout] 7 | fn ensure_gst_init() -> Result<(), Box<dyn Error>> {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `trim_video_gst` is never used
[INFO] [stdout]   --> src/ops/video_funcs.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub fn trim_video_gst(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `concat_videos_gst` is never used
[INFO] [stdout]   --> src/ops/video_funcs.rs:90:8
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub fn concat_videos_gst(input_files: &[&str], output: &str) -> Result<(), Box<dyn Error>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `trim_audio_gst` is never used
[INFO] [stdout]    --> src/ops/video_funcs.rs:163:8
[INFO] [stdout]     |
[INFO] [stdout] 163 | pub fn trim_audio_gst(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mix_audio_gst` is never used
[INFO] [stdout]    --> src/ops/video_funcs.rs:225:8
[INFO] [stdout]     |
[INFO] [stdout] 225 | pub fn mix_audio_gst(inputs: &[&str], output: &str) -> Result<(), Box<dyn Error>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mux_audio_video_gst` is never used
[INFO] [stdout]    --> src/ops/video_funcs.rs:310:8
[INFO] [stdout]     |
[INFO] [stdout] 310 | pub fn mux_audio_video_gst(video: &str, audio: &str, output: &str) -> Result<(), Box<dyn Error>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `play` and `pause` are never used
[INFO] [stdout]   --> src/renderer/time_player_bridge.rs:56:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl<'a> TimelinePlayerBridge<'a> {
[INFO] [stdout]    | --------------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn play(&mut self) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn pause(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `timestamp` and `frame_number` are never read
[INFO] [stdout]   --> src/renderer/timeline_renderer.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct VideoFrame {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub timestamp: f64, // Time in seconds
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 18 |     pub frame_number: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VideoFrame` 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 `AudioBuffer` is never constructed
[INFO] [stdout]   --> src/renderer/timeline_renderer.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct AudioBuffer {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `clear_cache`, `decode_video_frame_with_bus`, `get_video_duration`, `validate_timestamp`, and `decode_video_frame_enhanced` are never used
[INFO] [stdout]    --> src/renderer/timeline_renderer.rs:123:12
[INFO] [stdout]     |
[INFO] [stdout]  40 | impl TimelineRenderer {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn clear_cache(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     fn decode_video_frame_with_bus(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 388 |     fn get_video_duration(path: &str) -> Option<f64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 419 |     fn validate_timestamp(path: &str, timestamp: f64) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 428 |     fn decode_video_frame_enhanced(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Clip` is never used
[INFO] [stdout]  --> src/types/media.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub trait Clip {
[INFO] [stdout]   |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `find_by_filename` is never used
[INFO] [stdout]    --> src/types/media_library.rs:149:12
[INFO] [stdout]     |
[INFO] [stdout]  45 | impl MediaLibrary {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn find_by_filename(&self, name: &str) -> Option<&MediaItem> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `loop_start`, `loop_end`, and `volume` are never read
[INFO] [stdout]  --> src/types/playback_state.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct PlaybackState {
[INFO] [stdout]   |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 5 |     pub loop_start: Option<f64>,
[INFO] [stdout]   |         ^^^^^^^^^^
[INFO] [stdout] 6 |     pub loop_end: Option<f64>,
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout] 7 |     pub volume: f64,
[INFO] [stdout]   |         ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `PlaybackState` 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 `save_to_file` and `load_from_file` are never used
[INFO] [stdout]   --> src/types/project.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl Project {
[INFO] [stdout]    | ------------ associated items in this implementation
[INFO] [stdout] 22 |     /// Save the project to a JSON file at the given path.
[INFO] [stdout] 23 |     pub fn save_to_file(&self, path: &str) -> std::io::Result<()> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn load_from_file(path: &str) -> std::io::Result<Project> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/types/project.rs:79:12
[INFO] [stdout]    |
[INFO] [stdout] 78 | impl Project {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 79 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `active_video_clips_at` is never used
[INFO] [stdout]   --> src/types/timeline.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl Timeline {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 14 |     /// Returns all active video clips at a specific time.
[INFO] [stdout] 15 |     pub fn active_video_clips_at(&self, time: f64) -> Vec<&VideoClip> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `split_clip_at_playhead` is never used
[INFO] [stdout]   --> src/types/timeline.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl Timeline {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 35 |     pub fn split_clip_at_playhead(&mut self, track_id: &str, playhead: f64) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `clips_in_range`, and `clips_on_track` are never used
[INFO] [stdout]    --> src/types/timeline.rs:84:12
[INFO] [stdout]     |
[INFO] [stdout]  83 | impl Timeline {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout]  84 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn clips_in_range(&self, start: f64, end: f64) -> Vec<ActiveClip> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     pub fn clips_on_track(&self, track_id: &str) -> Option<Vec<ActiveClip>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_video` is never used
[INFO] [stdout]    --> src/types/timeline.rs:131:36
[INFO] [stdout]     |
[INFO] [stdout] 130 |                         impl Track {
[INFO] [stdout]     |                         ---------- method in this implementation
[INFO] [stdout] 131 |                             pub fn is_video(&self) -> bool {
[INFO] [stdout]     |                                    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_active_at` is never used
[INFO] [stdout]    --> src/types/timeline.rs:137:36
[INFO] [stdout]     |
[INFO] [stdout] 136 |                         impl VideoClip {
[INFO] [stdout]     |                         -------------- method in this implementation
[INFO] [stdout] 137 |                             pub fn is_active_at(&self, time: f64) -> bool {
[INFO] [stdout]     |                                    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TrackType` is never used
[INFO] [stdout]   --> src/types/track.rs:26:6
[INFO] [stdout]    |
[INFO] [stdout] 26 | enum TrackType {
[INFO] [stdout]    |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/ui/app.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl CutioApp {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 25 |     pub fn new(state: AppState) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `events`
[INFO] [stdout]    --> src/ui/timeline_widget.rs:843:9
[INFO] [stdout]     |
[INFO] [stdout] 843 |         events: &mut Vec<TimelineEvent>,
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_events`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `cached_duration` is never read
[INFO] [stdout]   --> src/ui/timeline_widget.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct TimelineState {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub cached_duration: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ResizeLeft`, `ResizeRight`, and `Selection` are never constructed
[INFO] [stdout]   --> src/ui/timeline_widget.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub enum DragState {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 34 |     ResizeLeft {
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     ResizeRight {
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     Selection {
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DragState` 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 `clip_id`, `track_idx`, and `new_start_time` are never read
[INFO] [stdout]   --> src/ui/timeline_widget.rs:90:9
[INFO] [stdout]    |
[INFO] [stdout] 89 |     ClipMoved {
[INFO] [stdout]    |     --------- fields in this variant
[INFO] [stdout] 90 |         clip_id: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 91 |         track_idx: usize,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 92 |         new_start_time: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TimelineEvent` 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 `clip_id`, `track_idx`, `new_start_time`, and `new_duration` are never read
[INFO] [stdout]   --> src/ui/timeline_widget.rs:96:9
[INFO] [stdout]    |
[INFO] [stdout] 95 |     ClipResized {
[INFO] [stdout]    |     ----------- fields in this variant
[INFO] [stdout] 96 |         clip_id: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 97 |         track_idx: usize,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 98 |         new_start_time: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 99 |         new_duration: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TimelineEvent` 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 `clip_id`, `track_idx`, and `multi_select` are never read
[INFO] [stdout]    --> src/ui/timeline_widget.rs:103:9
[INFO] [stdout]     |
[INFO] [stdout] 102 |     ClipSelected {
[INFO] [stdout]     |     ------------ fields in this variant
[INFO] [stdout] 103 |         clip_id: String,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 104 |         track_idx: usize,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 105 |         multi_select: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TimelineEvent` 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 `clip_id` and `track_idx` are never read
[INFO] [stdout]    --> src/ui/timeline_widget.rs:108:25
[INFO] [stdout]     |
[INFO] [stdout] 108 |     ClipDoubleClicked { clip_id: String, track_idx: usize },
[INFO] [stdout]     |     -----------------   ^^^^^^^          ^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     fields in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TimelineEvent` 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 `time` and `track_idx` are never read
[INFO] [stdout]    --> src/ui/timeline_widget.rs:110:20
[INFO] [stdout]     |
[INFO] [stdout] 110 |     RightClicked { time: f64, track_idx: Option<usize> },
[INFO] [stdout]     |     ------------   ^^^^       ^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     fields in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TimelineEvent` 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 `show_waveforms` is never read
[INFO] [stdout]    --> src/ui/timeline_widget.rs:153:5
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub struct TimelineWidget<'a> {
[INFO] [stdout]     |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 153 |     show_waveforms: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `snap_enabled` and `show_waveforms` are never used
[INFO] [stdout]    --> src/ui/timeline_widget.rs:171:12
[INFO] [stdout]     |
[INFO] [stdout] 156 | impl<'a> TimelineWidget<'a> {
[INFO] [stdout]     | --------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn snap_enabled(mut self, enabled: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn show_waveforms(mut self, show: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RESIZE_HANDLE_WIDTH` is never used
[INFO] [stdout]    --> src/ui/timeline_widget.rs:189:15
[INFO] [stdout]     |
[INFO] [stdout] 189 |         const RESIZE_HANDLE_WIDTH: f32 = 8.0;
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `track_widget` is never used
[INFO] [stdout]   --> src/ui/track_widget.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn track_widget(
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `timeline`, `renderer`, `width`, `height`, and `frame_rate` are never read
[INFO] [stdout]   --> src/ui/video_player.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct VideoPlayer {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 11 |     pub timeline: Arc<RwLock<Timeline>>,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 12 |     pub renderer: TimelineRenderer,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 15 |     pub width: u32,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 16 |     pub height: u32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 17 |     pub frame_rate: f64,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update_playback` is never used
[INFO] [stdout]   --> src/ui/video_player.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl VideoPlayer {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn update_playback(&mut self, is_playing: bool, ctx: &egui::Context) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start_pos`
[INFO] [stdout]    --> src/ui/timeline_widget.rs:957:43
[INFO] [stdout]     |
[INFO] [stdout] 957 |                     DragState::Playhead { start_pos } => {
[INFO] [stdout]     |                                           ^^^^^^^^^ help: try ignoring the field: `start_pos: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `track_idx`
[INFO] [stdout]   --> src/ui/track_widget.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     track_idx: usize,
[INFO] [stdout]    |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_track_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]    --> src/types/timeline.rs:130:25
[INFO] [stdout]     |
[INFO] [stdout] 118 |     pub fn clips_in_range(&self, start: f64, end: f64) -> Vec<ActiveClip> {
[INFO] [stdout]     |     --------------------------------------------------------------------- move the `impl` block outside of this method `clips_in_range`
[INFO] [stdout] ...
[INFO] [stdout] 130 |                         impl Track {
[INFO] [stdout]     |                         ^^^^^-----
[INFO] [stdout]     |                              |
[INFO] [stdout]     |                              `Track` is not local
[INFO] [stdout]     |
[INFO] [stdout]     = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]     = note: `#[warn(non_local_definitions)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]    --> src/types/timeline.rs:136:25
[INFO] [stdout]     |
[INFO] [stdout] 118 |     pub fn clips_in_range(&self, start: f64, end: f64) -> Vec<ActiveClip> {
[INFO] [stdout]     |     --------------------------------------------------------------------- move the `impl` block outside of this method `clips_in_range`
[INFO] [stdout] ...
[INFO] [stdout] 136 |                         impl VideoClip {
[INFO] [stdout]     |                         ^^^^^---------
[INFO] [stdout]     |                              |
[INFO] [stdout]     |                              `VideoClip` is not local
[INFO] [stdout]     |
[INFO] [stdout]     = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `video_clip`
[INFO] [stdout]   --> src/main.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let video_clip = VideoClip {
[INFO] [stdout]    |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_video_clip`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timeline_arc`
[INFO] [stdout]   --> src/main.rs:43:9
[INFO] [stdout]    |
[INFO] [stdout] 43 |     let timeline_arc = Arc::new(RwLock::new(timeline.clone()));
[INFO] [stdout]    |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timeline_arc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `play` and `pause` are never used
[INFO] [stdout]   --> src/renderer/time_player_bridge.rs:56:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl<'a> TimelinePlayerBridge<'a> {
[INFO] [stdout]    | --------------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn play(&mut self) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn pause(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `timestamp` and `frame_number` are never read
[INFO] [stdout]   --> src/renderer/timeline_renderer.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct VideoFrame {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub timestamp: f64, // Time in seconds
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 18 |     pub frame_number: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VideoFrame` 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 `AudioBuffer` is never constructed
[INFO] [stdout]   --> src/renderer/timeline_renderer.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct AudioBuffer {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `clear_cache`, `decode_video_frame_with_bus`, `get_video_duration`, `validate_timestamp`, and `decode_video_frame_enhanced` are never used
[INFO] [stdout]    --> src/renderer/timeline_renderer.rs:123:12
[INFO] [stdout]     |
[INFO] [stdout]  40 | impl TimelineRenderer {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn clear_cache(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     fn decode_video_frame_with_bus(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 388 |     fn get_video_duration(path: &str) -> Option<f64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 419 |     fn validate_timestamp(path: &str, timestamp: f64) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 428 |     fn decode_video_frame_enhanced(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `asset_path` is never used
[INFO] [stdout]  --> src/types/media.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub trait Clip {
[INFO] [stdout]   |           ---- method in this trait
[INFO] [stdout] 4 |     fn id(&self) -> &str;
[INFO] [stdout] 5 |     fn asset_path(&self) -> &str;
[INFO] [stdout]   |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `loop_start`, `loop_end`, and `volume` are never read
[INFO] [stdout]  --> src/types/playback_state.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct PlaybackState {
[INFO] [stdout]   |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 5 |     pub loop_start: Option<f64>,
[INFO] [stdout]   |         ^^^^^^^^^^
[INFO] [stdout] 6 |     pub loop_end: Option<f64>,
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout] 7 |     pub volume: f64,
[INFO] [stdout]   |         ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `PlaybackState` 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 function `new` is never used
[INFO] [stdout]   --> src/types/project.rs:79:12
[INFO] [stdout]    |
[INFO] [stdout] 78 | impl Project {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 79 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `active_video_clips_at` is never used
[INFO] [stdout]   --> src/types/timeline.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl Timeline {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 14 |     /// Returns all active video clips at a specific time.
[INFO] [stdout] 15 |     pub fn active_video_clips_at(&self, time: f64) -> Vec<&VideoClip> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_video` is never used
[INFO] [stdout]    --> src/types/timeline.rs:131:36
[INFO] [stdout]     |
[INFO] [stdout] 130 |                         impl Track {
[INFO] [stdout]     |                         ---------- method in this implementation
[INFO] [stdout] 131 |                             pub fn is_video(&self) -> bool {
[INFO] [stdout]     |                                    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_active_at` is never used
[INFO] [stdout]    --> src/types/timeline.rs:137:36
[INFO] [stdout]     |
[INFO] [stdout] 136 |                         impl VideoClip {
[INFO] [stdout]     |                         -------------- method in this implementation
[INFO] [stdout] 137 |                             pub fn is_active_at(&self, time: f64) -> bool {
[INFO] [stdout]     |                                    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TrackType` is never used
[INFO] [stdout]   --> src/types/track.rs:26:6
[INFO] [stdout]    |
[INFO] [stdout] 26 | enum TrackType {
[INFO] [stdout]    |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/ui/app.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl CutioApp {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 25 |     pub fn new(state: AppState) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `cached_duration` is never read
[INFO] [stdout]   --> src/ui/timeline_widget.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct TimelineState {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub cached_duration: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ResizeLeft`, `ResizeRight`, and `Selection` are never constructed
[INFO] [stdout]   --> src/ui/timeline_widget.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub enum DragState {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 34 |     ResizeLeft {
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     ResizeRight {
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     Selection {
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DragState` 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 `clip_id`, `track_idx`, and `new_start_time` are never read
[INFO] [stdout]   --> src/ui/timeline_widget.rs:90:9
[INFO] [stdout]    |
[INFO] [stdout] 89 |     ClipMoved {
[INFO] [stdout]    |     --------- fields in this variant
[INFO] [stdout] 90 |         clip_id: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 91 |         track_idx: usize,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 92 |         new_start_time: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TimelineEvent` 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 `clip_id`, `track_idx`, `new_start_time`, and `new_duration` are never read
[INFO] [stdout]   --> src/ui/timeline_widget.rs:96:9
[INFO] [stdout]    |
[INFO] [stdout] 95 |     ClipResized {
[INFO] [stdout]    |     ----------- fields in this variant
[INFO] [stdout] 96 |         clip_id: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 97 |         track_idx: usize,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 98 |         new_start_time: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 99 |         new_duration: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TimelineEvent` 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 `clip_id`, `track_idx`, and `multi_select` are never read
[INFO] [stdout]    --> src/ui/timeline_widget.rs:103:9
[INFO] [stdout]     |
[INFO] [stdout] 102 |     ClipSelected {
[INFO] [stdout]     |     ------------ fields in this variant
[INFO] [stdout] 103 |         clip_id: String,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 104 |         track_idx: usize,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 105 |         multi_select: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TimelineEvent` 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 `clip_id` and `track_idx` are never read
[INFO] [stdout]    --> src/ui/timeline_widget.rs:108:25
[INFO] [stdout]     |
[INFO] [stdout] 108 |     ClipDoubleClicked { clip_id: String, track_idx: usize },
[INFO] [stdout]     |     -----------------   ^^^^^^^          ^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     fields in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TimelineEvent` 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 `time` and `track_idx` are never read
[INFO] [stdout]    --> src/ui/timeline_widget.rs:110:20
[INFO] [stdout]     |
[INFO] [stdout] 110 |     RightClicked { time: f64, track_idx: Option<usize> },
[INFO] [stdout]     |     ------------   ^^^^       ^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     fields in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TimelineEvent` 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 `show_waveforms` is never read
[INFO] [stdout]    --> src/ui/timeline_widget.rs:153:5
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub struct TimelineWidget<'a> {
[INFO] [stdout]     |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 153 |     show_waveforms: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `snap_enabled` and `show_waveforms` are never used
[INFO] [stdout]    --> src/ui/timeline_widget.rs:171:12
[INFO] [stdout]     |
[INFO] [stdout] 156 | impl<'a> TimelineWidget<'a> {
[INFO] [stdout]     | --------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn snap_enabled(mut self, enabled: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn show_waveforms(mut self, show: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RESIZE_HANDLE_WIDTH` is never used
[INFO] [stdout]    --> src/ui/timeline_widget.rs:189:15
[INFO] [stdout]     |
[INFO] [stdout] 189 |         const RESIZE_HANDLE_WIDTH: f32 = 8.0;
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `track_widget` is never used
[INFO] [stdout]   --> src/ui/track_widget.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn track_widget(
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `timeline`, `renderer`, `width`, `height`, and `frame_rate` are never read
[INFO] [stdout]   --> src/ui/video_player.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct VideoPlayer {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 11 |     pub timeline: Arc<RwLock<Timeline>>,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 12 |     pub renderer: TimelineRenderer,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 15 |     pub width: u32,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 16 |     pub height: u32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 17 |     pub frame_rate: f64,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update_playback` is never used
[INFO] [stdout]   --> src/ui/video_player.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl VideoPlayer {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn update_playback(&mut self, is_playing: bool, ctx: &egui::Context) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]    --> src/types/timeline.rs:130:25
[INFO] [stdout]     |
[INFO] [stdout] 118 |     pub fn clips_in_range(&self, start: f64, end: f64) -> Vec<ActiveClip> {
[INFO] [stdout]     |     --------------------------------------------------------------------- move the `impl` block outside of this method `clips_in_range`
[INFO] [stdout] ...
[INFO] [stdout] 130 |                         impl Track {
[INFO] [stdout]     |                         ^^^^^-----
[INFO] [stdout]     |                              |
[INFO] [stdout]     |                              `Track` is not local
[INFO] [stdout]     |
[INFO] [stdout]     = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]     = note: `#[warn(non_local_definitions)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]    --> src/types/timeline.rs:136:25
[INFO] [stdout]     |
[INFO] [stdout] 118 |     pub fn clips_in_range(&self, start: f64, end: f64) -> Vec<ActiveClip> {
[INFO] [stdout]     |     --------------------------------------------------------------------- move the `impl` block outside of this method `clips_in_range`
[INFO] [stdout] ...
[INFO] [stdout] 136 |                         impl VideoClip {
[INFO] [stdout]     |                         ^^^^^---------
[INFO] [stdout]     |                              |
[INFO] [stdout]     |                              `VideoClip` is not local
[INFO] [stdout]     |
[INFO] [stdout]     = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 28s
[INFO] running `Command { std: "docker" "inspect" "d1ce016e06b7d5cc0011c3182beb107f9588d59896bdb00ec7f1d969186da906", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d1ce016e06b7d5cc0011c3182beb107f9588d59896bdb00ec7f1d969186da906", kill_on_drop: false }`
[INFO] [stdout] d1ce016e06b7d5cc0011c3182beb107f9588d59896bdb00ec7f1d969186da906
