[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 67854e511de21d881bb16426996cd4259d44aa2e for pr-161154
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSkynse%2Fcutio" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-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-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Skynse/cutio on toolchain 67854e511de21d881bb16426996cd4259d44aa2e
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+67854e511de21d881bb16426996cd4259d44aa2e" "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" "+67854e511de21d881bb16426996cd4259d44aa2e" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded rfd v0.15.3
[INFO] [stderr]   Downloaded zvariant v5.6.0
[INFO] [stderr]   Downloaded zvariant_derive v5.6.0
[INFO] [stderr]   Downloaded async-process v2.3.1
[INFO] [stderr]   Downloaded dispatch2 v0.2.0
[INFO] [stderr]   Downloaded lru v0.16.0
[INFO] [stderr]   Downloaded rgb v0.8.51
[INFO] [stderr]   Downloaded ashpd v0.11.0
[INFO] [stderr]   Downloaded zune-jpeg v0.4.19
[INFO] [stderr]   Downloaded avif-serialize v0.8.5
[INFO] [stderr]   Downloaded gstreamer-video-sys v0.23.6
[INFO] [stderr]   Downloaded system-deps v7.0.5
[INFO] [stderr]   Downloaded cfg-expr v0.20.1
[INFO] [stderr]   Downloaded gstreamer-base v0.23.6
[INFO] [stderr]   Downloaded gstreamer-base-sys v0.23.6
[INFO] [stderr]   Downloaded gobject-sys v0.20.10
[INFO] [stderr]   Downloaded glib-sys v0.20.10
[INFO] [stderr]   Downloaded option-operations v0.5.0
[INFO] [stderr]   Downloaded mime_guess2 v2.3.1
[INFO] [stderr]   Downloaded gstreamer-app-sys v0.23.5
[INFO] [stderr]   Downloaded gstreamer-video v0.23.6
[INFO] [stderr]   Downloaded wayland-cursor v0.31.10
[INFO] [stderr]   Downloaded egui_extras v0.31.1
[INFO] [stderr]   Downloaded gstreamer-pbutils-sys v0.23.5
[INFO] [stderr]   Downloaded gstreamer-sys v0.23.6
[INFO] [stderr]   Downloaded gstreamer-app v0.23.5
[INFO] [stderr]   Downloaded wayland-protocols-wlr v0.3.8
[INFO] [stderr]   Downloaded glib-macros v0.20.12
[INFO] [stderr]   Downloaded gstreamer-pbutils v0.23.5
[INFO] [stderr]   Downloaded gstreamer-audio-sys v0.23.6
[INFO] [stderr]   Downloaded wayland-client v0.31.10
[INFO] [stderr]   Downloaded gstreamer-audio v0.23.6
[INFO] [stderr]   Downloaded gio-sys v0.20.10
[INFO] [stderr]   Downloaded wayland-backend v0.3.10
[INFO] [stderr]   Downloaded eframe v0.31.1
[INFO] [stderr]   Downloaded wayland-protocols-plasma v0.3.8
[INFO] [stderr]   Downloaded wayland-protocols v0.32.8
[INFO] [stderr]   Downloaded glib v0.20.12
[INFO] [stderr]   Downloaded gstreamer v0.23.7
[INFO] [stderr]   Downloaded winit v0.30.11
[INFO] [stderr]   Downloaded egui-winit v0.31.1
[INFO] [stderr]   Downloaded xml-rs v0.8.26
[INFO] [stderr]   Downloaded egui_glow v0.31.1
[INFO] [stderr]   Downloaded webbrowser v1.0.5
[INFO] [stderr]   Downloaded egui-wgpu v0.31.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] a64372b12f6d7e4c114aed485c187e532ca2adc2c01fb42e8aaec92b2337bbd8
[INFO] running `Command { std: "docker" "start" "a64372b12f6d7e4c114aed485c187e532ca2adc2c01fb42e8aaec92b2337bbd8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a64372b12f6d7e4c114aed485c187e532ca2adc2c01fb42e8aaec92b2337bbd8", 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" "a64372b12f6d7e4c114aed485c187e532ca2adc2c01fb42e8aaec92b2337bbd8" "/opt/rustwide/cargo-home/bin/cargo" "+67854e511de21d881bb16426996cd4259d44aa2e" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a64372b12f6d7e4c114aed485c187e532ca2adc2c01fb42e8aaec92b2337bbd8", 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" "a64372b12f6d7e4c114aed485c187e532ca2adc2c01fb42e8aaec92b2337bbd8" "/opt/rustwide/cargo-home/bin/cargo" "+67854e511de21d881bb16426996cd4259d44aa2e" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.95
[INFO] [stderr]    Compiling winnow v0.7.11
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]    Compiling target-lexicon v0.13.2
[INFO] [stderr]    Compiling version-compare v0.2.0
[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]     Checking concurrent-queue v2.5.0
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]     Checking futures-lite v2.6.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[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 cc v1.2.29
[INFO] [stderr]    Compiling getrandom v0.3.3
[INFO] [stderr]    Compiling quick-xml v0.37.5
[INFO] [stderr]    Compiling wayland-client v0.31.10
[INFO] [stderr]    Compiling nix v0.29.0
[INFO] [stderr]    Compiling anyhow v1.0.98
[INFO] [stderr]    Compiling xml-rs v0.8.26
[INFO] [stderr]     Checking event-listener v5.4.0
[INFO] [stderr]     Checking accesskit v0.17.1
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]    Compiling built v0.7.7
[INFO] [stderr]     Checking unicode-ident v1.0.18
[INFO] [stderr]     Checking minimal-lexical v0.2.1
[INFO] [stderr]     Checking event-listener-strategy v0.5.4
[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 quote v1.0.40
[INFO] [stderr]    Compiling cfg-expr v0.20.1
[INFO] [stderr]     Checking async-executor v1.13.2
[INFO] [stderr]     Checking blocking v1.6.2
[INFO] [stderr]    Compiling gl_generator v0.14.0
[INFO] [stderr]    Compiling rav1e v0.7.1
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]     Checking parking_lot_core v0.9.11
[INFO] [stderr]     Checking rayon v1.10.0
[INFO] [stderr]    Compiling syn v2.0.104
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking memmap2 v0.9.5
[INFO] [stderr]    Compiling thiserror v2.0.12
[INFO] [stderr]     Checking hashbrown v0.15.4
[INFO] [stderr]     Checking async-fs v2.1.2
[INFO] [stderr]    Compiling simd_helpers v0.1.0
[INFO] [stderr]    Compiling wayland-scanner v0.31.6
[INFO] [stderr]     Checking parking_lot v0.12.4
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]     Checking itertools v0.12.1
[INFO] [stderr]     Checking x11rb-protocol v0.13.1
[INFO] [stderr]     Checking imgref v1.11.0
[INFO] [stderr]     Checking bitstream-io v2.6.0
[INFO] [stderr]     Checking weezl v0.1.10
[INFO] [stderr]     Checking loop9 v0.1.5
[INFO] [stderr]     Checking zune-inflate v0.2.54
[INFO] [stderr]     Checking option-operations v0.5.0
[INFO] [stderr]     Checking itertools v0.14.0
[INFO] [stderr]    Compiling wayland-backend v0.3.10
[INFO] [stderr]     Checking avif-serialize v0.8.5
[INFO] [stderr]     Checking immutable-chunkmap v2.0.6
[INFO] [stderr]    Compiling winit v0.30.11
[INFO] [stderr]     Checking half v2.6.0
[INFO] [stderr]    Compiling siphasher v1.0.1
[INFO] [stderr]     Checking num-rational v0.4.2
[INFO] [stderr]     Checking bit_field v0.10.2
[INFO] [stderr]     Checking lebe v0.5.2
[INFO] [stderr]     Checking epaint_default_fonts v0.31.1
[INFO] [stderr]     Checking zune-core v0.4.12
[INFO] [stderr]     Checking muldiv v1.0.1
[INFO] [stderr]     Checking rgb v0.8.51
[INFO] [stderr]     Checking jpeg-decoder v0.3.2
[INFO] [stderr]     Checking exr v1.73.0
[INFO] [stderr]     Checking gif v0.13.3
[INFO] [stderr]     Checking accesskit_consumer v0.26.0
[INFO] [stderr]     Checking zune-jpeg v0.4.19
[INFO] [stderr]    Compiling phf_shared v0.11.3
[INFO] [stderr]     Checking image-webp v0.2.3
[INFO] [stderr]     Checking maybe-rayon v0.1.1
[INFO] [stderr]    Compiling glutin_glx_sys v0.6.1
[INFO] [stderr]    Compiling glutin_egl_sys v0.7.1
[INFO] [stderr]     Checking xkbcommon-dl v0.4.2
[INFO] [stderr]     Checking tiff v0.9.1
[INFO] [stderr]    Compiling nix v0.30.1
[INFO] [stderr]     Checking signal-hook-registry v1.4.5
[INFO] [stderr]     Checking atomic_refcell v0.1.13
[INFO] [stderr]    Compiling phf v0.11.3
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]    Compiling mime_guess2 v2.3.1
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]    Compiling serde_json v1.0.140
[INFO] [stderr]    Compiling rfd v0.15.3
[INFO] [stderr]    Compiling litrs v0.4.1
[INFO] [stderr]     Checking glutin v0.32.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]    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 displaydoc v0.2.5
[INFO] [stderr]    Compiling bytemuck_derive v1.9.3
[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 arg_enum_proc_macro v0.3.4
[INFO] [stderr]     Checking wayland-csd-frame v0.3.0
[INFO] [stderr]    Compiling num-derive v0.4.2
[INFO] [stderr]    Compiling enum-map-derive v0.17.0
[INFO] [stderr]     Checking equator v0.4.2
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking aligned-vec v0.6.4
[INFO] [stderr]     Checking v_frame v0.3.9
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking bytemuck v1.23.1
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking av1-grain v0.2.4
[INFO] [stderr]     Checking yoke v0.8.0
[INFO] [stderr]     Checking emath v0.31.1
[INFO] [stderr]     Checking tiny-skia-path v0.11.4
[INFO] [stderr]     Checking qoi v0.4.1
[INFO] [stderr]     Checking polling v3.8.0
[INFO] [stderr]     Checking wayland-protocols v0.32.8
[INFO] [stderr]     Checking wayland-cursor v0.31.10
[INFO] [stderr]     Checking zerovec v0.11.2
[INFO] [stderr]     Checking zerotrie v0.2.2
[INFO] [stderr]     Checking async-io v2.4.1
[INFO] [stderr]     Checking calloop v0.13.0
[INFO] [stderr]     Checking ecolor v0.31.1
[INFO] [stderr]     Checking calloop-wayland-source v0.3.0
[INFO] [stderr]     Checking async-signal v0.2.11
[INFO] [stderr]     Checking async-net v2.0.0
[INFO] [stderr]     Checking epaint v0.31.1
[INFO] [stderr]     Checking async-process v2.3.1
[INFO] [stderr]     Checking tiny-skia v0.11.4
[INFO] [stderr]    Compiling serde v1.0.219
[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 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 url v2.5.4
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]     Checking webbrowser v1.0.5
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]     Checking x11rb v0.13.1
[INFO] [stderr]     Checking egui_glow v0.31.1
[INFO] [stderr]     Checking wayland-protocols-wlr v0.3.8
[INFO] [stderr]     Checking wayland-protocols-plasma v0.3.8
[INFO] [stderr]     Checking smithay-client-toolkit v0.19.2
[INFO] [stderr]    Compiling proc-macro-crate v3.3.0
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]     Checking ravif v0.11.20
[INFO] [stderr]     Checking image v0.25.6
[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]    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-video-sys v0.23.6
[INFO] [stderr]    Compiling gstreamer-audio-sys v0.23.6
[INFO] [stderr]    Compiling gstreamer-pbutils-sys v0.23.5
[INFO] [stderr]    Compiling gstreamer-app-sys v0.23.5
[INFO] [stderr]     Checking sctk-adwaita v0.10.1
[INFO] [stderr]    Compiling zvariant v4.2.0
[INFO] [stderr]     Checking smithay-clipboard v0.7.2
[INFO] [stderr]    Compiling zvariant v5.6.0
[INFO] [stderr]     Checking zbus_names v3.0.0
[INFO] [stderr]     Checking zbus_names v4.2.0
[INFO] [stderr]     Checking arboard v3.6.0
[INFO] [stderr]     Checking egui_extras v0.31.1
[INFO] [stderr]     Checking glib v0.20.12
[INFO] [stderr]     Checking glutin-winit v0.5.0
[INFO] [stderr]     Checking zbus_xml v4.0.0
[INFO] [stderr]     Checking zbus v4.4.0
[INFO] [stderr]     Checking zbus-lockstep v0.4.4
[INFO] [stderr]    Compiling zbus_macros v5.7.1
[INFO] [stderr]    Compiling zbus-lockstep-macros v0.4.4
[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: 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] [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: 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 23s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: glutin v0.32.3, glutin-winit v0.5.0, nix v0.29.0, nix v0.30.1, winit v0.30.11
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 8`
[INFO] running `Command { std: "docker" "inspect" "a64372b12f6d7e4c114aed485c187e532ca2adc2c01fb42e8aaec92b2337bbd8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a64372b12f6d7e4c114aed485c187e532ca2adc2c01fb42e8aaec92b2337bbd8", kill_on_drop: false }`
[INFO] [stdout] a64372b12f6d7e4c114aed485c187e532ca2adc2c01fb42e8aaec92b2337bbd8
