{"$message_type":"diagnostic","message":"unused import: `sdl2::pixels::PixelFormatEnum`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/player/renderer.rs","byte_start":50,"byte_end":79,"line_start":4,"line_end":4,"column_start":5,"column_end":34,"is_primary":true,"text":[{"text":"use sdl2::pixels::PixelFormatEnum;","highlight_start":5,"highlight_end":34}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"src/player/renderer.rs","byte_start":46,"byte_end":81,"line_start":4,"line_end":5,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use sdl2::pixels::PixelFormatEnum;","highlight_start":1,"highlight_end":35},{"text":"use sdl2::rect::Rect;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `sdl2::pixels::PixelFormatEnum`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/player/renderer.rs:4:5\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m4\u001b[0m \u001b[1m\u001b[94m|\u001b[0m use sdl2::pixels::PixelFormatEnum;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default\n\n"} {"$message_type":"diagnostic","message":"unused imports: `PlaybackState` and `PlayerState`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/player/mod.rs","byte_start":154,"byte_end":167,"line_start":10,"line_end":10,"column_start":17,"column_end":30,"is_primary":true,"text":[{"text":"pub use state::{PlaybackState, PlayerState};","highlight_start":17,"highlight_end":30}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/mod.rs","byte_start":169,"byte_end":180,"line_start":10,"line_end":10,"column_start":32,"column_end":43,"is_primary":true,"text":[{"text":"pub use state::{PlaybackState, PlayerState};","highlight_start":32,"highlight_end":43}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"src/player/mod.rs","byte_start":138,"byte_end":183,"line_start":10,"line_end":11,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"pub use state::{PlaybackState, PlayerState};","highlight_start":1,"highlight_end":45},{"text":"pub use video::VideoPlayer;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused imports: `PlaybackState` and `PlayerState`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/player/mod.rs:10:17\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m10\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub use state::{PlaybackState, PlayerState};\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^\u001b[0m\n\n"} {"$message_type":"diagnostic","message":"unused import: `video::VideoPlayer`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/player/mod.rs","byte_start":191,"byte_end":209,"line_start":11,"line_end":11,"column_start":9,"column_end":27,"is_primary":true,"text":[{"text":"pub use video::VideoPlayer;","highlight_start":9,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"src/player/mod.rs","byte_start":183,"byte_end":211,"line_start":11,"line_end":11,"column_start":1,"column_end":29,"is_primary":true,"text":[{"text":"pub use video::VideoPlayer;","highlight_start":1,"highlight_end":29}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `video::VideoPlayer`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/player/mod.rs:11:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m11\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub use video::VideoPlayer;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} {"$message_type":"diagnostic","message":"unused import: `bridge::WebBridge`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/web/mod.rs","byte_start":60,"byte_end":77,"line_start":5,"line_end":5,"column_start":9,"column_end":26,"is_primary":true,"text":[{"text":"pub use bridge::WebBridge;","highlight_start":9,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"src/web/mod.rs","byte_start":52,"byte_end":79,"line_start":5,"line_end":5,"column_start":1,"column_end":28,"is_primary":true,"text":[{"text":"pub use bridge::WebBridge;","highlight_start":1,"highlight_end":28}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused import: `bridge::WebBridge`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/web/mod.rs:5:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m5\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub use bridge::WebBridge;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} {"$message_type":"diagnostic","message":"unused variable: `font_size`","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":3856,"byte_end":3865,"line_start":124,"line_end":124,"column_start":9,"column_end":18,"is_primary":true,"text":[{"text":" let font_size = 18;","highlight_start":9,"highlight_end":18}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"if this is intentional, prefix it with an underscore","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":3856,"byte_end":3865,"line_start":124,"line_end":124,"column_start":9,"column_end":18,"is_primary":true,"text":[{"text":" let font_size = 18;","highlight_start":9,"highlight_end":18}],"label":null,"suggested_replacement":"_font_size","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: unused variable: `font_size`\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/main.rs:124:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m124\u001b[0m \u001b[1m\u001b[94m|\u001b[0m let font_size = 18;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^\u001b[0m \u001b[1m\u001b[33mhelp: if this is intentional, prefix it with an underscore: `_font_size`\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default\n\n"} {"$message_type":"diagnostic","message":"fields `language` and `language_probability` are never read","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/overlay/asr.rs","byte_start":286,"byte_end":293,"line_start":15,"line_end":15,"column_start":12,"column_end":19,"is_primary":false,"text":[{"text":"pub struct AsrData {","highlight_start":12,"highlight_end":19}],"label":"fields in this struct","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/asr.rs","byte_start":304,"byte_end":312,"line_start":16,"line_end":16,"column_start":9,"column_end":17,"is_primary":true,"text":[{"text":" pub language: Option,","highlight_start":9,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/asr.rs","byte_start":338,"byte_end":358,"line_start":17,"line_end":17,"column_start":9,"column_end":29,"is_primary":true,"text":[{"text":" pub language_probability: Option,","highlight_start":9,"highlight_end":29}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`AsrData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"`#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: fields `language` and `language_probability` are never read\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/overlay/asr.rs:16:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m15\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct AsrData {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m-------\u001b[0m \u001b[1m\u001b[94mfields in this struct\u001b[0m\n\u001b[1m\u001b[94m16\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub language: Option,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m17\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub language_probability: Option,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `AsrData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default\n\n"} {"$message_type":"diagnostic","message":"methods `get_all_segments` and `duration` are never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/overlay/asr.rs","byte_start":480,"byte_end":494,"line_start":26,"line_end":26,"column_start":1,"column_end":15,"is_primary":false,"text":[{"text":"impl AsrLoader {","highlight_start":1,"highlight_end":15}],"label":"methods in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/asr.rs","byte_start":1223,"byte_end":1239,"line_start":49,"line_end":49,"column_start":12,"column_end":28,"is_primary":true,"text":[{"text":" pub fn get_all_segments(&self) -> &[AsrSegment] {","highlight_start":12,"highlight_end":28}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/asr.rs","byte_start":1395,"byte_end":1403,"line_start":57,"line_end":57,"column_start":12,"column_end":20,"is_primary":true,"text":[{"text":" pub fn duration(&self) -> f64 {","highlight_start":12,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: methods `get_all_segments` and `duration` are never used\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/overlay/asr.rs:49:12\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m26\u001b[0m \u001b[1m\u001b[94m|\u001b[0m impl AsrLoader {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m--------------\u001b[0m \u001b[1m\u001b[94mmethods in this implementation\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m49\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn get_all_segments(&self) -> &[AsrSegment] {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m57\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn duration(&self) -> f64 {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^\u001b[0m\n\n"} {"$message_type":"diagnostic","message":"field `class_id` is never read","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/overlay/yolo.rs","byte_start":292,"byte_end":301,"line_start":13,"line_end":13,"column_start":12,"column_end":21,"is_primary":false,"text":[{"text":"pub struct Detection {","highlight_start":12,"highlight_end":21}],"label":"field in this struct","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":312,"byte_end":320,"line_start":14,"line_end":14,"column_start":9,"column_end":17,"is_primary":true,"text":[{"text":" pub class_id: u32,","highlight_start":9,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`Detection` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: field `class_id` is never read\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/overlay/yolo.rs:14:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m13\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct Detection {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m---------\u001b[0m \u001b[1m\u001b[94mfield in this struct\u001b[0m\n\u001b[1m\u001b[94m14\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub class_id: u32,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `Detection` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis\n\n"} {"$message_type":"diagnostic","message":"fields `frame_number`, `time_seconds`, and `time_formatted` are never read","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/overlay/yolo.rs","byte_start":499,"byte_end":508,"line_start":24,"line_end":24,"column_start":12,"column_end":21,"is_primary":false,"text":[{"text":"pub struct FrameData {","highlight_start":12,"highlight_end":21}],"label":"fields in this struct","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":519,"byte_end":531,"line_start":25,"line_end":25,"column_start":9,"column_end":21,"is_primary":true,"text":[{"text":" pub frame_number: u64,","highlight_start":9,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":546,"byte_end":558,"line_start":26,"line_end":26,"column_start":9,"column_end":21,"is_primary":true,"text":[{"text":" pub time_seconds: f64,","highlight_start":9,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":573,"byte_end":587,"line_start":27,"line_end":27,"column_start":9,"column_end":23,"is_primary":true,"text":[{"text":" pub time_formatted: String,","highlight_start":9,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`FrameData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: fields `frame_number`, `time_seconds`, and `time_formatted` are never read\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/overlay/yolo.rs:25:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m24\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct FrameData {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m---------\u001b[0m \u001b[1m\u001b[94mfields in this struct\u001b[0m\n\u001b[1m\u001b[94m25\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub frame_number: u64,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m26\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub time_seconds: f64,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m27\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub time_formatted: String,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `FrameData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis\n\n"} {"$message_type":"diagnostic","message":"multiple fields are never read","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/overlay/yolo.rs","byte_start":684,"byte_end":696,"line_start":32,"line_end":32,"column_start":12,"column_end":24,"is_primary":false,"text":[{"text":"pub struct YoloMetadata {","highlight_start":12,"highlight_end":24}],"label":"fields in this struct","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":707,"byte_end":717,"line_start":33,"line_end":33,"column_start":9,"column_end":19,"is_primary":true,"text":[{"text":" pub video_path: String,","highlight_start":9,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":735,"byte_end":745,"line_start":34,"line_end":34,"column_start":9,"column_end":19,"is_primary":true,"text":[{"text":" pub model_path: Option,","highlight_start":9,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":771,"byte_end":776,"line_start":35,"line_end":35,"column_start":9,"column_end":14,"is_primary":true,"text":[{"text":" pub width: u32,","highlight_start":9,"highlight_end":14}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":791,"byte_end":797,"line_start":36,"line_end":36,"column_start":9,"column_end":15,"is_primary":true,"text":[{"text":" pub height: u32,","highlight_start":9,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":812,"byte_end":815,"line_start":37,"line_end":37,"column_start":9,"column_end":12,"is_primary":true,"text":[{"text":" pub fps: f64,","highlight_start":9,"highlight_end":12}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":857,"byte_end":871,"line_start":39,"line_end":39,"column_start":9,"column_end":23,"is_primary":true,"text":[{"text":" pub total_duration: f64,","highlight_start":9,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":886,"byte_end":898,"line_start":40,"line_end":40,"column_start":9,"column_end":21,"is_primary":true,"text":[{"text":" pub processed_at: Option,","highlight_start":9,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":924,"byte_end":930,"line_start":41,"line_end":41,"column_start":9,"column_end":15,"is_primary":true,"text":[{"text":" pub status: Option,","highlight_start":9,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":956,"byte_end":972,"line_start":42,"line_end":42,"column_start":9,"column_end":25,"is_primary":true,"text":[{"text":" pub total_detections: u64,","highlight_start":9,"highlight_end":25}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":987,"byte_end":1011,"line_start":43,"line_end":43,"column_start":9,"column_end":33,"is_primary":true,"text":[{"text":" pub avg_detections_per_frame: f64,","highlight_start":9,"highlight_end":33}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":1048,"byte_end":1066,"line_start":45,"line_end":45,"column_start":9,"column_end":27,"is_primary":true,"text":[{"text":" pub auto_save_interval: Option,","highlight_start":9,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":1111,"byte_end":1126,"line_start":47,"line_end":47,"column_start":9,"column_end":24,"is_primary":true,"text":[{"text":" pub processing_time: Option,","highlight_start":9,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":1171,"byte_end":1189,"line_start":49,"line_end":49,"column_start":9,"column_end":27,"is_primary":true,"text":[{"text":" pub avg_time_per_frame: Option,","highlight_start":9,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":1234,"byte_end":1247,"line_start":51,"line_end":51,"column_start":9,"column_end":22,"is_primary":true,"text":[{"text":" pub last_saved_at: Option,","highlight_start":9,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":1295,"byte_end":1307,"line_start":53,"line_end":53,"column_start":9,"column_end":21,"is_primary":true,"text":[{"text":" pub completed_at: Option,","highlight_start":9,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":1355,"byte_end":1370,"line_start":55,"line_end":55,"column_start":9,"column_end":24,"is_primary":true,"text":[{"text":" pub auto_save_count: Option,","highlight_start":9,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`YoloMetadata` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: multiple fields are never read\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/overlay/yolo.rs:33:9\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m32\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct YoloMetadata {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m------------\u001b[0m \u001b[1m\u001b[94mfields in this struct\u001b[0m\n\u001b[1m\u001b[94m33\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub video_path: String,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m34\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub model_path: Option,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m35\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub width: u32,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^\u001b[0m\n\u001b[1m\u001b[94m36\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub height: u32,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^\u001b[0m\n\u001b[1m\u001b[94m37\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fps: f64,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^\u001b[0m\n\u001b[1m\u001b[94m38\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub total_frames: u64,\n\u001b[1m\u001b[94m39\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub total_duration: f64,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m40\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub processed_at: Option,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m41\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub status: Option,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^\u001b[0m\n\u001b[1m\u001b[94m42\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub total_detections: u64,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m43\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub avg_detections_per_frame: f64,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m44\u001b[0m \u001b[1m\u001b[94m|\u001b[0m #[serde(default)]\n\u001b[1m\u001b[94m45\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub auto_save_interval: Option,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m46\u001b[0m \u001b[1m\u001b[94m|\u001b[0m #[serde(default)]\n\u001b[1m\u001b[94m47\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub processing_time: Option,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m48\u001b[0m \u001b[1m\u001b[94m|\u001b[0m #[serde(default)]\n\u001b[1m\u001b[94m49\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub avg_time_per_frame: Option,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m50\u001b[0m \u001b[1m\u001b[94m|\u001b[0m #[serde(default)]\n\u001b[1m\u001b[94m51\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub last_saved_at: Option,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m52\u001b[0m \u001b[1m\u001b[94m|\u001b[0m #[serde(default)]\n\u001b[1m\u001b[94m53\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub completed_at: Option,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m54\u001b[0m \u001b[1m\u001b[94m|\u001b[0m #[serde(default)]\n\u001b[1m\u001b[94m55\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub auto_save_count: Option,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `YoloMetadata` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis\n\n"} {"$message_type":"diagnostic","message":"methods `get_detections_at_time`, `metadata`, and `fps` are never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/overlay/yolo.rs","byte_start":1615,"byte_end":1630,"line_start":69,"line_end":69,"column_start":1,"column_end":16,"is_primary":false,"text":[{"text":"impl YoloLoader {","highlight_start":1,"highlight_end":16}],"label":"methods in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":2548,"byte_end":2570,"line_start":99,"line_end":99,"column_start":12,"column_end":34,"is_primary":true,"text":[{"text":" pub fn get_detections_at_time(&mut self, time_ms: u64) -> Vec {","highlight_start":12,"highlight_end":34}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":2773,"byte_end":2781,"line_start":105,"line_end":105,"column_start":12,"column_end":20,"is_primary":true,"text":[{"text":" pub fn metadata(&self) -> &YoloMetadata {","highlight_start":12,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/overlay/yolo.rs","byte_start":2854,"byte_end":2857,"line_start":109,"line_end":109,"column_start":12,"column_end":15,"is_primary":true,"text":[{"text":" pub fn fps(&self) -> f64 {","highlight_start":12,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: methods `get_detections_at_time`, `metadata`, and `fps` are never used\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/overlay/yolo.rs:99:12\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m69\u001b[0m \u001b[1m\u001b[94m|\u001b[0m impl YoloLoader {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m---------------\u001b[0m \u001b[1m\u001b[94mmethods in this implementation\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n \u001b[1m\u001b[94m99\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn get_detections_at_time(&mut self, time_ms: u64) -> Vec {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m105\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn metadata(&self) -> &YoloMetadata {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m109\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn fps(&self) -> f64 {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^\u001b[0m\n\n"} {"$message_type":"diagnostic","message":"field `codec` is never read","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/player/ffmpeg.rs","byte_start":196,"byte_end":205,"line_start":9,"line_end":9,"column_start":12,"column_end":21,"is_primary":false,"text":[{"text":"pub struct VideoInfo {","highlight_start":12,"highlight_end":21}],"label":"field in this struct","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/ffmpeg.rs","byte_start":327,"byte_end":332,"line_start":15,"line_end":15,"column_start":9,"column_end":14,"is_primary":true,"text":[{"text":" pub codec: String,","highlight_start":9,"highlight_end":14}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`VideoInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: field `codec` is never read\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/player/ffmpeg.rs:15:9\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m9\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct VideoInfo {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m---------\u001b[0m \u001b[1m\u001b[94mfield in this struct\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m15\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub codec: String,\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^\u001b[0m\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m= \u001b[0m\u001b[1mnote\u001b[0m: `VideoInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis\n\n"} {"$message_type":"diagnostic","message":"struct `Renderer` is never constructed","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/player/renderer.rs","byte_start":115,"byte_end":123,"line_start":7,"line_end":7,"column_start":12,"column_end":20,"is_primary":true,"text":[{"text":"pub struct Renderer {","highlight_start":12,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: struct `Renderer` is never constructed\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/player/renderer.rs:7:12\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m7\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct Renderer {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^\u001b[0m\n\n"} {"$message_type":"diagnostic","message":"multiple associated items are never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/player/renderer.rs","byte_start":237,"byte_end":250,"line_start":14,"line_end":14,"column_start":1,"column_end":14,"is_primary":false,"text":[{"text":"impl Renderer {","highlight_start":1,"highlight_end":14}],"label":"associated items in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/renderer.rs","byte_start":264,"byte_end":267,"line_start":15,"line_end":15,"column_start":12,"column_end":15,"is_primary":true,"text":[{"text":" pub fn new(title: &str, width: u32, height: u32) -> Result {","highlight_start":12,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/renderer.rs","byte_start":1033,"byte_end":1045,"line_start":40,"line_end":40,"column_start":12,"column_end":24,"is_primary":true,"text":[{"text":" pub fn update_frame(&mut self, texture: &sdl2::render::Texture) -> Result<()> {","highlight_start":12,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/renderer.rs","byte_start":1194,"byte_end":1199,"line_start":45,"line_end":45,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":" pub fn clear(&mut self) {","highlight_start":12,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/renderer.rs","byte_start":1324,"byte_end":1333,"line_start":50,"line_end":50,"column_start":12,"column_end":21,"is_primary":true,"text":[{"text":" pub fn draw_bbox(&mut self, x: i32, y: i32, w: u32, h: u32, _label: &str) {","highlight_start":12,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/renderer.rs","byte_start":1756,"byte_end":1763,"line_start":60,"line_end":60,"column_start":12,"column_end":19,"is_primary":true,"text":[{"text":" pub fn present(&mut self) {","highlight_start":12,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/renderer.rs","byte_start":1826,"byte_end":1837,"line_start":64,"line_end":64,"column_start":12,"column_end":23,"is_primary":true,"text":[{"text":" pub fn poll_events(&mut self) -> Vec {","highlight_start":12,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/renderer.rs","byte_start":2106,"byte_end":2112,"line_start":74,"line_end":74,"column_start":12,"column_end":18,"is_primary":true,"text":[{"text":" pub fn canvas(&mut self) -> &mut sdl2::render::Canvas {","highlight_start":12,"highlight_end":18}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/renderer.rs","byte_start":2219,"byte_end":2224,"line_start":78,"line_end":78,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":" pub fn width(&self) -> u32 {","highlight_start":12,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/renderer.rs","byte_start":2278,"byte_end":2284,"line_start":82,"line_end":82,"column_start":12,"column_end":18,"is_primary":true,"text":[{"text":" pub fn height(&self) -> u32 {","highlight_start":12,"highlight_end":18}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: multiple associated items are never used\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/player/renderer.rs:15:12\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m14\u001b[0m \u001b[1m\u001b[94m|\u001b[0m impl Renderer {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m-------------\u001b[0m \u001b[1m\u001b[94massociated items in this implementation\u001b[0m\n\u001b[1m\u001b[94m15\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn new(title: &str, width: u32, height: u32) -> Result {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m40\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn update_frame(&mut self, texture: &sdl2::render::Texture) -> Result<()> {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m45\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn clear(&mut self) {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m50\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn draw_bbox(&mut self, x: i32, y: i32, w: u32, h: u32, _label: &str) {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m60\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn present(&mut self) {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m64\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn poll_events(&mut self) -> Vec {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m74\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn canvas(&mut self) -> &mut sdl2::render::Canvas {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m78\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn width(&self) -> u32 {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m82\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn height(&self) -> u32 {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^\u001b[0m\n\n"} {"$message_type":"diagnostic","message":"associated functions `frame_to_time`, `time_to_frame`, and `format_time` are never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/player/state.rs","byte_start":1254,"byte_end":1270,"line_start":59,"line_end":59,"column_start":1,"column_end":17,"is_primary":false,"text":[{"text":"impl PlayerState {","highlight_start":1,"highlight_end":17}],"label":"associated functions in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/state.rs","byte_start":1284,"byte_end":1297,"line_start":60,"line_end":60,"column_start":12,"column_end":25,"is_primary":true,"text":[{"text":" pub fn frame_to_time(frame: u64, fps: f64) -> u64 {","highlight_start":12,"highlight_end":25}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/state.rs","byte_start":1462,"byte_end":1475,"line_start":68,"line_end":68,"column_start":12,"column_end":25,"is_primary":true,"text":[{"text":" pub fn time_to_frame(time_ms: u64, fps: f64) -> u64 {","highlight_start":12,"highlight_end":25}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/state.rs","byte_start":1644,"byte_end":1655,"line_start":76,"line_end":76,"column_start":12,"column_end":23,"is_primary":true,"text":[{"text":" pub fn format_time(ms: u64) -> String {","highlight_start":12,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: associated functions `frame_to_time`, `time_to_frame`, and `format_time` are never used\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/player/state.rs:60:12\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m59\u001b[0m \u001b[1m\u001b[94m|\u001b[0m impl PlayerState {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m----------------\u001b[0m \u001b[1m\u001b[94massociated functions in this implementation\u001b[0m\n\u001b[1m\u001b[94m60\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn frame_to_time(frame: u64, fps: f64) -> u64 {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m68\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn time_to_frame(time_ms: u64, fps: f64) -> u64 {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m76\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn format_time(ms: u64) -> String {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^\u001b[0m\n\n"} {"$message_type":"diagnostic","message":"struct `Frame` is never constructed","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/player/video.rs","byte_start":235,"byte_end":240,"line_start":11,"line_end":11,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"pub struct Frame {","highlight_start":12,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: struct `Frame` is never constructed\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/player/video.rs:11:12\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m11\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct Frame {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^\u001b[0m\n\n"} {"$message_type":"diagnostic","message":"enum `PlayState` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/player/video.rs","byte_start":381,"byte_end":390,"line_start":19,"line_end":19,"column_start":10,"column_end":19,"is_primary":true,"text":[{"text":"pub enum PlayState {","highlight_start":10,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: enum `PlayState` is never used\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/player/video.rs:19:10\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m19\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub enum PlayState {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^\u001b[0m\n\n"} {"$message_type":"diagnostic","message":"struct `VideoPlayer` is never constructed","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/player/video.rs","byte_start":445,"byte_end":456,"line_start":25,"line_end":25,"column_start":12,"column_end":23,"is_primary":true,"text":[{"text":"pub struct VideoPlayer {","highlight_start":12,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: struct `VideoPlayer` is never constructed\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/player/video.rs:25:12\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m25\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct VideoPlayer {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^\u001b[0m\n\n"} {"$message_type":"diagnostic","message":"multiple associated items are never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/player/video.rs","byte_start":620,"byte_end":636,"line_start":33,"line_end":33,"column_start":1,"column_end":17,"is_primary":false,"text":[{"text":"impl VideoPlayer {","highlight_start":1,"highlight_end":17}],"label":"associated items in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/video.rs","byte_start":650,"byte_end":653,"line_start":34,"line_end":34,"column_start":12,"column_end":15,"is_primary":true,"text":[{"text":" pub fn new() -> Result {","highlight_start":12,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/video.rs","byte_start":906,"byte_end":910,"line_start":44,"line_end":44,"column_start":12,"column_end":16,"is_primary":true,"text":[{"text":" pub fn open(&mut self, path: &str) -> Result<()> {","highlight_start":12,"highlight_end":16}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/video.rs","byte_start":1274,"byte_end":1278,"line_start":56,"line_end":56,"column_start":12,"column_end":16,"is_primary":true,"text":[{"text":" pub fn play(&mut self) -> Result<()> {","highlight_start":12,"highlight_end":16}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/video.rs","byte_start":1472,"byte_end":1477,"line_start":64,"line_end":64,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":" pub fn pause(&mut self) -> Result<()> {","highlight_start":12,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/video.rs","byte_start":1578,"byte_end":1582,"line_start":69,"line_end":69,"column_start":12,"column_end":16,"is_primary":true,"text":[{"text":" pub fn stop(&mut self) -> Result<()> {","highlight_start":12,"highlight_end":16}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/video.rs","byte_start":1716,"byte_end":1726,"line_start":75,"line_end":75,"column_start":12,"column_end":22,"is_primary":true,"text":[{"text":" pub fn seek_frame(&mut self, frame: u64) -> Result<()> {","highlight_start":12,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/video.rs","byte_start":2083,"byte_end":2092,"line_start":86,"line_end":86,"column_start":12,"column_end":21,"is_primary":true,"text":[{"text":" pub fn seek_time(&mut self, ms: u64) -> Result<()> {","highlight_start":12,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/video.rs","byte_start":2387,"byte_end":2396,"line_start":96,"line_end":96,"column_start":12,"column_end":21,"is_primary":true,"text":[{"text":" pub fn get_state(&self) -> PlayState {","highlight_start":12,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/video.rs","byte_start":2464,"byte_end":2481,"line_start":100,"line_end":100,"column_start":12,"column_end":29,"is_primary":true,"text":[{"text":" pub fn get_current_frame(&self) -> u64 {","highlight_start":12,"highlight_end":29}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/player/video.rs","byte_start":2543,"byte_end":2551,"line_start":104,"line_end":104,"column_start":12,"column_end":20,"is_primary":true,"text":[{"text":" pub fn get_info(&self) -> Option<&VideoInfo> {","highlight_start":12,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: multiple associated items are never used\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/player/video.rs:34:12\n \u001b[1m\u001b[94m|\u001b[0m\n \u001b[1m\u001b[94m33\u001b[0m \u001b[1m\u001b[94m|\u001b[0m impl VideoPlayer {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m----------------\u001b[0m \u001b[1m\u001b[94massociated items in this implementation\u001b[0m\n \u001b[1m\u001b[94m34\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn new() -> Result {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n \u001b[1m\u001b[94m44\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn open(&mut self, path: &str) -> Result<()> {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n \u001b[1m\u001b[94m56\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn play(&mut self) -> Result<()> {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n \u001b[1m\u001b[94m64\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn pause(&mut self) -> Result<()> {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n \u001b[1m\u001b[94m69\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn stop(&mut self) -> Result<()> {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n \u001b[1m\u001b[94m75\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn seek_frame(&mut self, frame: u64) -> Result<()> {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n \u001b[1m\u001b[94m86\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn seek_time(&mut self, ms: u64) -> Result<()> {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n \u001b[1m\u001b[94m96\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn get_state(&self) -> PlayState {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m100\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn get_current_frame(&self) -> u64 {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m104\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn get_info(&self) -> Option<&VideoInfo> {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^\u001b[0m\n\n"} {"$message_type":"diagnostic","message":"enum `BridgeMessage` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/web/bridge.rs","byte_start":186,"byte_end":199,"line_start":7,"line_end":7,"column_start":10,"column_end":23,"is_primary":true,"text":[{"text":"pub enum BridgeMessage {","highlight_start":10,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: enum `BridgeMessage` is never used\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/web/bridge.rs:7:10\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m7\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub enum BridgeMessage {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^\u001b[0m\n\n"} {"$message_type":"diagnostic","message":"enum `BridgeResponse` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/web/bridge.rs","byte_start":773,"byte_end":787,"line_start":43,"line_end":43,"column_start":10,"column_end":24,"is_primary":true,"text":[{"text":"pub enum BridgeResponse {","highlight_start":10,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: enum `BridgeResponse` is never used\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/web/bridge.rs:43:10\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m43\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub enum BridgeResponse {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^\u001b[0m\n\n"} {"$message_type":"diagnostic","message":"struct `PlayerStateResponse` is never constructed","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/web/bridge.rs","byte_start":981,"byte_end":1000,"line_start":52,"line_end":52,"column_start":12,"column_end":31,"is_primary":true,"text":[{"text":"pub struct PlayerStateResponse {","highlight_start":12,"highlight_end":31}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: struct `PlayerStateResponse` is never constructed\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/web/bridge.rs:52:12\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m52\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct PlayerStateResponse {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} {"$message_type":"diagnostic","message":"struct `DetectionResponse` is never constructed","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/web/bridge.rs","byte_start":1341,"byte_end":1358,"line_start":67,"line_end":67,"column_start":12,"column_end":29,"is_primary":true,"text":[{"text":"pub struct DetectionResponse {","highlight_start":12,"highlight_end":29}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: struct `DetectionResponse` is never constructed\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/web/bridge.rs:67:12\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m67\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct DetectionResponse {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} {"$message_type":"diagnostic","message":"struct `WebBridge` is never constructed","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/web/bridge.rs","byte_start":1496,"byte_end":1505,"line_start":76,"line_end":76,"column_start":12,"column_end":21,"is_primary":true,"text":[{"text":"pub struct WebBridge;","highlight_start":12,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: struct `WebBridge` is never constructed\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/web/bridge.rs:76:12\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m76\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub struct WebBridge;\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^\u001b[0m\n\n"} {"$message_type":"diagnostic","message":"associated functions `new`, `encode_message`, `decode_message`, and `encode_response` are never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/web/bridge.rs","byte_start":1508,"byte_end":1522,"line_start":78,"line_end":78,"column_start":1,"column_end":15,"is_primary":false,"text":[{"text":"impl WebBridge {","highlight_start":1,"highlight_end":15}],"label":"associated functions in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/web/bridge.rs","byte_start":1536,"byte_end":1539,"line_start":79,"line_end":79,"column_start":12,"column_end":15,"is_primary":true,"text":[{"text":" pub fn new() -> Self {","highlight_start":12,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/web/bridge.rs","byte_start":1583,"byte_end":1597,"line_start":83,"line_end":83,"column_start":12,"column_end":26,"is_primary":true,"text":[{"text":" pub fn encode_message(msg: &BridgeMessage) -> String {","highlight_start":12,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/web/bridge.rs","byte_start":1704,"byte_end":1718,"line_start":87,"line_end":87,"column_start":12,"column_end":26,"is_primary":true,"text":[{"text":" pub fn decode_message(raw: &str) -> Option {","highlight_start":12,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/web/bridge.rs","byte_start":1814,"byte_end":1829,"line_start":91,"line_end":91,"column_start":12,"column_end":27,"is_primary":true,"text":[{"text":" pub fn encode_response(resp: &BridgeResponse) -> String {","highlight_start":12,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: associated functions `new`, `encode_message`, `decode_message`, and `encode_response` are never used\u001b[0m\n \u001b[1m\u001b[94m--> \u001b[0msrc/web/bridge.rs:79:12\n \u001b[1m\u001b[94m|\u001b[0m\n\u001b[1m\u001b[94m78\u001b[0m \u001b[1m\u001b[94m|\u001b[0m impl WebBridge {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[94m--------------\u001b[0m \u001b[1m\u001b[94massociated functions in this implementation\u001b[0m\n\u001b[1m\u001b[94m79\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn new() -> Self {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m83\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn encode_message(msg: &BridgeMessage) -> String {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m87\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn decode_message(raw: &str) -> Option {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^\u001b[0m\n\u001b[1m\u001b[94m...\u001b[0m\n\u001b[1m\u001b[94m91\u001b[0m \u001b[1m\u001b[94m|\u001b[0m pub fn encode_response(resp: &BridgeResponse) -> String {\n \u001b[1m\u001b[94m|\u001b[0m \u001b[1m\u001b[33m^^^^^^^^^^^^^^^\u001b[0m\n\n"} {"$message_type":"diagnostic","message":"25 warnings emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[1m\u001b[33mwarning\u001b[0m\u001b[1m: 25 warnings emitted\u001b[0m\n\n"}