[INFO] cloning repository https://github.com/lexag/clicks-core
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/lexag/clicks-core" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flexag%2Fclicks-core", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flexag%2Fclicks-core'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] e9a9b6881486505688c300e67f1c129ac4d8de21
[INFO] checking lexag/clicks-core against eca445e5ae4a6679cc27d3a09106ce245e13a5a6 for pr-162478
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flexag%2Fclicks-core" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/lexag/clicks-core
[INFO] finished tweaking git repo https://github.com/lexag/clicks-core
[INFO] tweaked toml for git repo https://github.com/lexag/clicks-core written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/lexag/clicks-core on toolchain eca445e5ae4a6679cc27d3a09106ce245e13a5a6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/lexag/clicks-core 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" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Updating git repository `https://github.com/lexag/ks-common.git`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded ssd1306 v0.10.0
[INFO] [stderr]   Downloaded display-interface-i2c v0.5.0
[INFO] [stderr]   Downloaded maybe-async-cfg v0.2.4
[INFO] [stderr]   Downloaded display-interface-spi v0.5.0
[INFO] [stderr]   Downloaded display-interface v0.5.0
[INFO] [stderr]   Downloaded gpio-cdev v0.6.0
[INFO] [stderr]   Downloaded unescaper v0.1.10
[INFO] [stderr]   Downloaded jack-sys v0.5.1
[INFO] [stderr]   Downloaded tiny_sort v1.0.5
[INFO] [stderr]   Downloaded linux-embedded-hal v0.4.1
[INFO] [stderr]   Downloaded sysfs_gpio v0.6.2
[INFO] [stderr]   Downloaded spidev v0.6.1
[INFO] [stderr]   Downloaded i2cdev v0.6.2
[INFO] [stderr]   Downloaded rosc v0.11.4
[INFO] [stderr]   Downloaded local-ip-address v0.6.13
[INFO] [stderr]   Downloaded rppal v0.22.1
[INFO] [stderr]   Downloaded jack v0.13.5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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] 309f83a2eea4be2d02f8706c73a13e4c206759d8191c2258e0b5bcbb9570d4b3
[INFO] running `Command { std: "docker" "start" "309f83a2eea4be2d02f8706c73a13e4c206759d8191c2258e0b5bcbb9570d4b3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "309f83a2eea4be2d02f8706c73a13e4c206759d8191c2258e0b5bcbb9570d4b3", 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" "309f83a2eea4be2d02f8706c73a13e4c206759d8191c2258e0b5bcbb9570d4b3" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "309f83a2eea4be2d02f8706c73a13e4c206759d8191c2258e0b5bcbb9570d4b3", 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" "309f83a2eea4be2d02f8706c73a13e4c206759d8191c2258e0b5bcbb9570d4b3" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.189
[INFO] [stderr]     Checking scopeguard v1.2.0
[INFO] [stderr]    Compiling thiserror v2.0.19
[INFO] [stderr]    Compiling semver v1.0.28
[INFO] [stderr]    Compiling memoffset v0.7.1
[INFO] [stderr]     Checking embedded-hal v1.0.0
[INFO] [stderr]    Compiling memoffset v0.6.5
[INFO] [stderr]    Compiling bitflags v1.3.2
[INFO] [stderr]    Compiling serde_core v1.0.229
[INFO] [stderr]    Compiling az v1.2.1
[INFO] [stderr]    Compiling embedded-hal-async v1.0.0
[INFO] [stderr]    Compiling syn v3.0.3
[INFO] [stderr]     Checking bitflags v2.13.1
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling pkg-config v0.3.33
[INFO] [stderr]     Checking memchr v2.8.3
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]     Checking lock_api v0.4.14
[INFO] [stderr]     Checking hash32 v0.2.1
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]     Checking log v0.4.33
[INFO] [stderr]     Checking smallvec v1.15.2
[INFO] [stderr]    Compiling pulldown-cmark v0.11.3
[INFO] [stderr]    Compiling rustc_version v0.4.1
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]     Checking spin v0.9.9
[INFO] [stderr]    Compiling crossbeam-utils v0.8.22
[INFO] [stderr]    Compiling either v1.17.0
[INFO] [stderr]     Checking display-interface v0.5.0
[INFO] [stderr]    Compiling heapless v0.7.17
[INFO] [stderr]    Compiling unicase v2.9.0
[INFO] [stderr]    Compiling jack-sys v0.5.1
[INFO] [stderr]     Checking libloading v0.7.4
[INFO] [stderr]     Checking time-core v0.1.9
[INFO] [stderr]     Checking byte-slice-cast v1.2.3
[INFO] [stderr]     Checking minimal-lexical v0.2.1
[INFO] [stderr]     Checking nb v1.1.0
[INFO] [stderr]     Checking num-conv v0.2.2
[INFO] [stderr]     Checking deranged v0.5.8
[INFO] [stderr]    Compiling jack v0.13.5
[INFO] [stderr]     Checking embedded-hal-nb v1.0.0
[INFO] [stderr]     Checking clap_builder v4.6.6
[INFO] [stderr]     Checking chrono v0.4.45
[INFO] [stderr]     Checking display-interface-i2c v0.5.0
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]     Checking display-interface-spi v0.5.0
[INFO] [stderr]     Checking float-cmp v0.9.0
[INFO] [stderr]     Checking micromath v2.1.0
[INFO] [stderr]     Checking cast v0.3.0
[INFO] [stderr]     Checking tiny_sort v1.0.5
[INFO] [stderr]     Checking crossbeam-channel v0.5.16
[INFO] [stderr]     Checking arc-swap v1.9.2
[INFO] [stderr]     Checking hound v3.5.1
[INFO] [stderr]     Checking embedded-graphics-core v0.4.1
[INFO] [stderr]     Checking time v0.3.55
[INFO] [stderr]     Checking embedded-graphics v0.8.2
[INFO] [stderr]     Checking nix v0.26.4
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking nix v0.23.2
[INFO] [stderr]     Checking nix v0.27.1
[INFO] [stderr]     Checking rppal v0.22.1
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking gpio-cdev v0.6.0
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]     Checking rosc v0.11.4
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling thiserror-impl v2.0.19
[INFO] [stderr]    Compiling clap_derive v4.6.4
[INFO] [stderr]    Compiling getset v0.1.7
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]     Checking cobs v0.3.0
[INFO] [stderr]     Checking unescaper v0.1.10
[INFO] [stderr]    Compiling maybe-async-cfg v0.2.4
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]     Checking sysfs_gpio v0.6.2
[INFO] [stderr]    Compiling derive_builder_core v0.20.2
[INFO] [stderr]     Checking clap v4.6.6
[INFO] [stderr]    Compiling derive_builder_macro v0.20.2
[INFO] [stderr]     Checking serialport v4.9.0
[INFO] [stderr]     Checking i2cdev v0.6.2
[INFO] [stderr]     Checking spidev v0.6.1
[INFO] [stderr]     Checking derive_builder v0.20.2
[INFO] [stderr]     Checking linux-embedded-hal v0.4.1
[INFO] [stderr]     Checking ssd1306 v0.10.0
[INFO] [stderr]    Compiling neli-proc-macros v0.2.2
[INFO] [stderr]     Checking postcard v1.1.3
[INFO] [stderr]     Checking ks-common-generic v2.4.0 (https://github.com/lexag/ks-common.git?tag=v2.4.0#e3884999)
[INFO] [stderr]     Checking neli v0.7.4
[INFO] [stderr]     Checking ks-common-clicks v2.4.0 (https://github.com/lexag/ks-common.git?tag=v2.4.0#e3884999)
[INFO] [stderr]     Checking local-ip-address v0.6.13
[INFO] [stderr]     Checking clicks-core v1.3.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `cbnet::CrossbeamNetwork`
[INFO] [stdout]  --> src/audio/timecode.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     cbnet::CrossbeamNetwork,
[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: `cbnet::CrossbeamNetwork`
[INFO] [stdout]  --> src/audio/timecode.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     cbnet::CrossbeamNetwork,
[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 variable: `next_beat`
[INFO] [stdout]   --> src/audio/metronome.rs:89:17
[INFO] [stdout]    |
[INFO] [stdout] 89 |             let next_beat = match ctx.cue.get_beat(self.state.next_beat_idx) {
[INFO] [stdout]    |                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_next_beat`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]    --> src/audio/playback.rs:454:30
[INFO] [stdout]     |
[INFO] [stdout] 454 |     fn get_status(&mut self, ctx: &AudioSourceContext) -> AudioSourceState {
[INFO] [stdout]     |                              ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]    --> src/audio/playback.rs:496:36
[INFO] [stdout]     |
[INFO] [stdout] 496 |     fn event_will_occur(&mut self, ctx: &AudioSourceContext, event: Event) {}
[INFO] [stdout]     |                                    ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event`
[INFO] [stdout]    --> src/audio/playback.rs:496:62
[INFO] [stdout]     |
[INFO] [stdout] 496 |     fn event_will_occur(&mut self, ctx: &AudioSourceContext, event: Event) {}
[INFO] [stdout]     |                                                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_event`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/audio/timecode.rs:177:13
[INFO] [stdout]     |
[INFO] [stdout] 177 |         for i in 0..frame_offset {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]    --> src/audio/timecode.rs:407:36
[INFO] [stdout]     |
[INFO] [stdout] 407 |     fn event_will_occur(&mut self, ctx: &AudioSourceContext, event: Event) {}
[INFO] [stdout]     |                                    ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event`
[INFO] [stdout]    --> src/audio/timecode.rs:407:62
[INFO] [stdout]     |
[INFO] [stdout] 407 |     fn event_will_occur(&mut self, ctx: &AudioSourceContext, event: Event) {}
[INFO] [stdout]     |                                                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_event`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/communication/binnet.rs:74:36
[INFO] [stdout]    |
[INFO] [stdout] 74 |                 Request::Subscribe(mut info) => {
[INFO] [stdout]    |                                    ----^^^^
[INFO] [stdout]    |                                    |
[INFO] [stdout]    |                                    help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `send_status` is never used
[INFO] [stdout]    --> src/audio/handler.rs:284:12
[INFO] [stdout]     |
[INFO] [stdout]  27 | impl AudioHandler {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 284 |     pub fn send_status(&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: field `transport` is never read
[INFO] [stdout]   --> src/audio/metronome.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Metronome {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 17 |     transport: TransportState,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `show_path` is never read
[INFO] [stdout]    --> src/audio/playback.rs:311:5
[INFO] [stdout]     |
[INFO] [stdout] 306 | pub struct PlaybackDevice {
[INFO] [stdout]     |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 311 |     show_path: PathBuf,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `PlaybackDevice` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `samples_to_next_beat` and `will_overrun_frame` are never used
[INFO] [stdout]   --> src/audio/source.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl AudioSourceContext {
[INFO] [stdout]    | ----------------------- methods in this implementation
[INFO] [stdout] 24 |     pub fn samples_to_next_beat(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn will_overrun_frame(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `event_will_occur` is never used
[INFO] [stdout]   --> src/audio/source.rs:53:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub trait AudioSource: Send {
[INFO] [stdout]    |           ----------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 53 |     fn event_will_occur(&mut self, ctx: &AudioSourceContext, event: Event);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_gain` is never used
[INFO] [stdout]   --> src/audio/source.rs:90:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | impl SourceConfig {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 90 |     pub fn get_gain(&self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `volume` is never read
[INFO] [stdout]   --> src/audio/timecode.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct TimecodeSource {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] 20 |     volume: f32,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `init`, `even_parity_bit`, `preload_frame_buffer`, and `low_pass` are never used
[INFO] [stdout]    --> src/audio/timecode.rs:63:12
[INFO] [stdout]     |
[INFO] [stdout]  46 | impl TimecodeSource {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub fn init(sample_rate: usize) -> TimecodeSource {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |     fn even_parity_bit(&self, mut data: u128) -> u128 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     fn preload_frame_buffer(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 240 |     fn low_pass(&self, buf: &[f32], out: &mut [f32]) {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `FileFindFailure` and `LogCopyFailure` are never constructed
[INFO] [stdout]   --> src/boot.rs:7:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub enum BootError {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout]  7 |     FileFindFailure(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 11 |     LogCopyFailure(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BootError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_usb_update_path` is never used
[INFO] [stdout]   --> src/boot.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub fn get_usb_update_path() -> Result<PathBuf, BootError> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_usb_show_path` is never used
[INFO] [stdout]   --> src/boot.rs:53:8
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub fn get_usb_show_path() -> Result<PathBuf, BootError> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_usb_mountpoint` is never used
[INFO] [stdout]   --> src/boot.rs:60:4
[INFO] [stdout]    |
[INFO] [stdout] 60 | fn get_usb_mountpoint() -> Result<PathBuf, BootError> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_patch` is never used
[INFO] [stdout]    --> src/boot.rs:136:8
[INFO] [stdout]     |
[INFO] [stdout] 136 | pub fn try_patch() -> bool {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_load_usb_show` is never used
[INFO] [stdout]    --> src/boot.rs:154:8
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub fn try_load_usb_show() -> Result<(), BootError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_single_input` and `notify_multiple` are never used
[INFO] [stdout]   --> src/communication/interface.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout]  3 | pub trait CommunicationInterface: Send {
[INFO] [stdout]    |           ---------------------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 10 |     fn get_single_input(&mut self) -> Option<Request> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     fn notify_multiple(&mut self, messages: Vec<Message>);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `send_messages` is never used
[INFO] [stdout]    --> src/communication/osc.rs:201:8
[INFO] [stdout]     |
[INFO] [stdout]  95 | impl OscNetHandler {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 201 |     fn send_messages(&mut self, messages: Vec<OscMessage>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `patch_success` is never used
[INFO] [stdout]   --> src/hardware/display.rs:31:8
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub fn patch_success() -> Result<(), std::io::Error> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `patch_failure` is never used
[INFO] [stdout]   --> src/hardware/display.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub fn patch_failure() -> Result<(), std::io::Error> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_load_failure` is never used
[INFO] [stdout]   --> src/hardware/display.rs:51:8
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub fn show_load_failure(err_str: &str) -> Result<(), std::io::Error> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_load_success` is never used
[INFO] [stdout]   --> src/hardware/display.rs:60:8
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub fn show_load_success(show: &Show) -> Result<(), std::io::Error> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `startup` is never used
[INFO] [stdout]   --> src/hardware/display.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub fn startup() -> Result<(), std::io::Error> {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `next_beat`
[INFO] [stdout]   --> src/audio/metronome.rs:89:17
[INFO] [stdout]    |
[INFO] [stdout] 89 |             let next_beat = match ctx.cue.get_beat(self.state.next_beat_idx) {
[INFO] [stdout]    |                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_next_beat`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ask_usb` is never used
[INFO] [stdout]   --> src/hardware/display.rs:83:8
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub fn ask_usb() -> Result<(), std::io::Error> {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ask_patch` is never used
[INFO] [stdout]   --> src/hardware/display.rs:94:8
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub fn ask_patch() -> Result<(), std::io::Error> {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ask_copy_show` is never used
[INFO] [stdout]    --> src/hardware/display.rs:104:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub fn ask_copy_show() -> Result<(), std::io::Error> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generic_success` is never used
[INFO] [stdout]    --> src/hardware/display.rs:114:8
[INFO] [stdout]     |
[INFO] [stdout] 114 | pub fn generic_success() -> Result<(), std::io::Error> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ip_header` is never used
[INFO] [stdout]    --> src/hardware/display.rs:142:4
[INFO] [stdout]     |
[INFO] [stdout] 142 | fn ip_header(
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `debug_print` is never used
[INFO] [stdout]    --> src/hardware/display.rs:154:8
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub fn debug_print(str: String) -> Result<(), std::io::Error> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_buttons` is never used
[INFO] [stdout]   --> src/hardware/input.rs:10:4
[INFO] [stdout]    |
[INFO] [stdout] 10 | fn get_buttons() -> Result<HwButton, Box<dyn std::error::Error>> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `wait_yes_no` is never used
[INFO] [stdout]   --> src/hardware/input.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn wait_yes_no() -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unmount` is never used
[INFO] [stdout]  --> src/hardware/usb.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn unmount() {
[INFO] [stdout]   |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mount` is never used
[INFO] [stdout]  --> src/hardware/usb.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn mount() {
[INFO] [stdout]   |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `kind_filter` and `context_filter` are never read
[INFO] [stdout]   --> src/logger.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct LogDispatcher {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 11 |     kind_filter: LogKind,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 12 |     context_filter: LogContext,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/main.rs:169:21
[INFO] [stdout]     |
[INFO] [stdout] 169 | /                     log_dispatcher.log(LogItem::new(
[INFO] [stdout] 170 | |                         "Shutdown. Goodnight.".to_string(),
[INFO] [stdout] 171 | |                         LogContext::Boot,
[INFO] [stdout] 172 | |                         LogKind::Note,
[INFO] [stdout] 173 | |                     ));
[INFO] [stdout]     | |______________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 169 |                     let _ = log_dispatcher.log(LogItem::new(
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/main.rs:255:13
[INFO] [stdout]     |
[INFO] [stdout] 255 | /             log_dispatcher.log(LogItem::new(
[INFO] [stdout] 256 | |                 format!("Successfully loaded show with {} cues", show.cues.len()),
[INFO] [stdout] 257 | |                 LogContext::Boot,
[INFO] [stdout] 258 | |                 LogKind::Note,
[INFO] [stdout] 259 | |             ));
[INFO] [stdout]     | |______________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 255 |             let _ = log_dispatcher.log(LogItem::new(
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/main.rs:267:13
[INFO] [stdout]     |
[INFO] [stdout] 267 | /             log_dispatcher.log(LogItem::new(
[INFO] [stdout] 268 | |                 format!("Failed to load show: {:?}", err),
[INFO] [stdout] 269 | |                 LogContext::Boot,
[INFO] [stdout] 270 | |                 LogKind::Error,
[INFO] [stdout] 271 | |             ));
[INFO] [stdout]     | |______________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 267 |             let _ = log_dispatcher.log(LogItem::new(
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/audio/timecode.rs:178:13
[INFO] [stdout]     |
[INFO] [stdout] 178 |             time_with_offs.increment();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 178 |             let _ = time_with_offs.increment();
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/audio/timecode.rs:293:17
[INFO] [stdout]     |
[INFO] [stdout] 293 |                 self.state.ltc.increment();
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 293 |                 let _ = self.state.ltc.increment();
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/audio/timecode.rs:399:13
[INFO] [stdout]     |
[INFO] [stdout] 399 |             state_pre.ltc.increment();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 399 |             let _ = state_pre.ltc.increment();
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/boot.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | /     log_dispatch.log(LogItem::new(
[INFO] [stdout] 44 | |         err.to_string(),
[INFO] [stdout] 45 | |         LogContext::Boot,
[INFO] [stdout] 46 | |         LogKind::Error,
[INFO] [stdout] 47 | |     ));
[INFO] [stdout]    | |______^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 43 |     let _ = log_dispatch.log(LogItem::new(
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/communication/binnet.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 | /         logger.log(LogItem::new(
[INFO] [stdout] 34 | |             format!("opened binnet port {}", a.port.socket.local_addr().unwrap()),
[INFO] [stdout] 35 | |             LogContext::Network,
[INFO] [stdout] 36 | |             LogKind::Note,
[INFO] [stdout] 37 | |         ));
[INFO] [stdout]    | |__________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 33 |         let _ = logger.log(LogItem::new(
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/logger.rs:38:13
[INFO] [stdout]    |
[INFO] [stdout] 38 |             a.log(log);
[INFO] [stdout]    |             ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 38 |             let _ = a.log(log);
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]    --> src/audio/playback.rs:454:30
[INFO] [stdout]     |
[INFO] [stdout] 454 |     fn get_status(&mut self, ctx: &AudioSourceContext) -> AudioSourceState {
[INFO] [stdout]     |                              ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]    --> src/audio/playback.rs:496:36
[INFO] [stdout]     |
[INFO] [stdout] 496 |     fn event_will_occur(&mut self, ctx: &AudioSourceContext, event: Event) {}
[INFO] [stdout]     |                                    ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event`
[INFO] [stdout]    --> src/audio/playback.rs:496:62
[INFO] [stdout]     |
[INFO] [stdout] 496 |     fn event_will_occur(&mut self, ctx: &AudioSourceContext, event: Event) {}
[INFO] [stdout]     |                                                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_event`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/audio/timecode.rs:177:13
[INFO] [stdout]     |
[INFO] [stdout] 177 |         for i in 0..frame_offset {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]    --> src/audio/timecode.rs:407:36
[INFO] [stdout]     |
[INFO] [stdout] 407 |     fn event_will_occur(&mut self, ctx: &AudioSourceContext, event: Event) {}
[INFO] [stdout]     |                                    ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event`
[INFO] [stdout]    --> src/audio/timecode.rs:407:62
[INFO] [stdout]     |
[INFO] [stdout] 407 |     fn event_will_occur(&mut self, ctx: &AudioSourceContext, event: Event) {}
[INFO] [stdout]     |                                                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_event`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/audio/timecode.rs:657:13
[INFO] [stdout]     |
[INFO] [stdout] 657 |         for i in 0..20000 {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/communication/binnet.rs:74:36
[INFO] [stdout]    |
[INFO] [stdout] 74 |                 Request::Subscribe(mut info) => {
[INFO] [stdout]    |                                    ----^^^^
[INFO] [stdout]    |                                    |
[INFO] [stdout]    |                                    help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `send_status` is never used
[INFO] [stdout]    --> src/audio/handler.rs:284:12
[INFO] [stdout]     |
[INFO] [stdout]  27 | impl AudioHandler {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 284 |     pub fn send_status(&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: field `transport` is never read
[INFO] [stdout]   --> src/audio/metronome.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Metronome {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 17 |     transport: TransportState,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `show_path` is never read
[INFO] [stdout]    --> src/audio/playback.rs:311:5
[INFO] [stdout]     |
[INFO] [stdout] 306 | pub struct PlaybackDevice {
[INFO] [stdout]     |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 311 |     show_path: PathBuf,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `PlaybackDevice` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `samples_to_next_beat` and `will_overrun_frame` are never used
[INFO] [stdout]   --> src/audio/source.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl AudioSourceContext {
[INFO] [stdout]    | ----------------------- methods in this implementation
[INFO] [stdout] 24 |     pub fn samples_to_next_beat(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn will_overrun_frame(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `event_will_occur` is never used
[INFO] [stdout]   --> src/audio/source.rs:53:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub trait AudioSource: Send {
[INFO] [stdout]    |           ----------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 53 |     fn event_will_occur(&mut self, ctx: &AudioSourceContext, event: Event);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_gain` is never used
[INFO] [stdout]   --> src/audio/source.rs:90:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | impl SourceConfig {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 90 |     pub fn get_gain(&self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `volume` is never read
[INFO] [stdout]   --> src/audio/timecode.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct TimecodeSource {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] 20 |     volume: f32,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `even_parity_bit` and `low_pass` are never used
[INFO] [stdout]    --> src/audio/timecode.rs:81:8
[INFO] [stdout]     |
[INFO] [stdout]  46 | impl TimecodeSource {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  81 |     fn even_parity_bit(&self, mut data: u128) -> u128 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 240 |     fn low_pass(&self, buf: &[f32], out: &mut [f32]) {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `FileFindFailure` and `LogCopyFailure` are never constructed
[INFO] [stdout]   --> src/boot.rs:7:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub enum BootError {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout]  7 |     FileFindFailure(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 11 |     LogCopyFailure(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BootError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_usb_update_path` is never used
[INFO] [stdout]   --> src/boot.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub fn get_usb_update_path() -> Result<PathBuf, BootError> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_usb_show_path` is never used
[INFO] [stdout]   --> src/boot.rs:53:8
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub fn get_usb_show_path() -> Result<PathBuf, BootError> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_usb_mountpoint` is never used
[INFO] [stdout]   --> src/boot.rs:60:4
[INFO] [stdout]    |
[INFO] [stdout] 60 | fn get_usb_mountpoint() -> Result<PathBuf, BootError> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_patch` is never used
[INFO] [stdout]    --> src/boot.rs:136:8
[INFO] [stdout]     |
[INFO] [stdout] 136 | pub fn try_patch() -> bool {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_load_usb_show` is never used
[INFO] [stdout]    --> src/boot.rs:154:8
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub fn try_load_usb_show() -> Result<(), BootError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_single_input` and `notify_multiple` are never used
[INFO] [stdout]   --> src/communication/interface.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout]  3 | pub trait CommunicationInterface: Send {
[INFO] [stdout]    |           ---------------------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 10 |     fn get_single_input(&mut self) -> Option<Request> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     fn notify_multiple(&mut self, messages: Vec<Message>);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `send_messages` is never used
[INFO] [stdout]    --> src/communication/osc.rs:201:8
[INFO] [stdout]     |
[INFO] [stdout]  95 | impl OscNetHandler {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 201 |     fn send_messages(&mut self, messages: Vec<OscMessage>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `patch_success` is never used
[INFO] [stdout]   --> src/hardware/display.rs:31:8
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub fn patch_success() -> Result<(), std::io::Error> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `patch_failure` is never used
[INFO] [stdout]   --> src/hardware/display.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub fn patch_failure() -> Result<(), std::io::Error> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_load_failure` is never used
[INFO] [stdout]   --> src/hardware/display.rs:51:8
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub fn show_load_failure(err_str: &str) -> Result<(), std::io::Error> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_load_success` is never used
[INFO] [stdout]   --> src/hardware/display.rs:60:8
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub fn show_load_success(show: &Show) -> Result<(), std::io::Error> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `startup` is never used
[INFO] [stdout]   --> src/hardware/display.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub fn startup() -> Result<(), std::io::Error> {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ask_usb` is never used
[INFO] [stdout]   --> src/hardware/display.rs:83:8
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub fn ask_usb() -> Result<(), std::io::Error> {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ask_patch` is never used
[INFO] [stdout]   --> src/hardware/display.rs:94:8
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub fn ask_patch() -> Result<(), std::io::Error> {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ask_copy_show` is never used
[INFO] [stdout]    --> src/hardware/display.rs:104:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub fn ask_copy_show() -> Result<(), std::io::Error> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generic_success` is never used
[INFO] [stdout]    --> src/hardware/display.rs:114:8
[INFO] [stdout]     |
[INFO] [stdout] 114 | pub fn generic_success() -> Result<(), std::io::Error> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ip_header` is never used
[INFO] [stdout]    --> src/hardware/display.rs:142:4
[INFO] [stdout]     |
[INFO] [stdout] 142 | fn ip_header(
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `debug_print` is never used
[INFO] [stdout]    --> src/hardware/display.rs:154:8
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub fn debug_print(str: String) -> Result<(), std::io::Error> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_buttons` is never used
[INFO] [stdout]   --> src/hardware/input.rs:10:4
[INFO] [stdout]    |
[INFO] [stdout] 10 | fn get_buttons() -> Result<HwButton, Box<dyn std::error::Error>> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `wait_yes_no` is never used
[INFO] [stdout]   --> src/hardware/input.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn wait_yes_no() -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unmount` is never used
[INFO] [stdout]  --> src/hardware/usb.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn unmount() {
[INFO] [stdout]   |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mount` is never used
[INFO] [stdout]  --> src/hardware/usb.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn mount() {
[INFO] [stdout]   |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `kind_filter` and `context_filter` are never read
[INFO] [stdout]   --> src/logger.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct LogDispatcher {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 11 |     kind_filter: LogKind,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 12 |     context_filter: LogContext,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/main.rs:169:21
[INFO] [stdout]     |
[INFO] [stdout] 169 | /                     log_dispatcher.log(LogItem::new(
[INFO] [stdout] 170 | |                         "Shutdown. Goodnight.".to_string(),
[INFO] [stdout] 171 | |                         LogContext::Boot,
[INFO] [stdout] 172 | |                         LogKind::Note,
[INFO] [stdout] 173 | |                     ));
[INFO] [stdout]     | |______________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 169 |                     let _ = log_dispatcher.log(LogItem::new(
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/main.rs:255:13
[INFO] [stdout]     |
[INFO] [stdout] 255 | /             log_dispatcher.log(LogItem::new(
[INFO] [stdout] 256 | |                 format!("Successfully loaded show with {} cues", show.cues.len()),
[INFO] [stdout] 257 | |                 LogContext::Boot,
[INFO] [stdout] 258 | |                 LogKind::Note,
[INFO] [stdout] 259 | |             ));
[INFO] [stdout]     | |______________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 255 |             let _ = log_dispatcher.log(LogItem::new(
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/main.rs:267:13
[INFO] [stdout]     |
[INFO] [stdout] 267 | /             log_dispatcher.log(LogItem::new(
[INFO] [stdout] 268 | |                 format!("Failed to load show: {:?}", err),
[INFO] [stdout] 269 | |                 LogContext::Boot,
[INFO] [stdout] 270 | |                 LogKind::Error,
[INFO] [stdout] 271 | |             ));
[INFO] [stdout]     | |______________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 267 |             let _ = log_dispatcher.log(LogItem::new(
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/audio/timecode.rs:178:13
[INFO] [stdout]     |
[INFO] [stdout] 178 |             time_with_offs.increment();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 178 |             let _ = time_with_offs.increment();
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/audio/timecode.rs:293:17
[INFO] [stdout]     |
[INFO] [stdout] 293 |                 self.state.ltc.increment();
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 293 |                 let _ = self.state.ltc.increment();
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/audio/timecode.rs:399:13
[INFO] [stdout]     |
[INFO] [stdout] 399 |             state_pre.ltc.increment();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 399 |             let _ = state_pre.ltc.increment();
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/boot.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | /     log_dispatch.log(LogItem::new(
[INFO] [stdout] 44 | |         err.to_string(),
[INFO] [stdout] 45 | |         LogContext::Boot,
[INFO] [stdout] 46 | |         LogKind::Error,
[INFO] [stdout] 47 | |     ));
[INFO] [stdout]    | |______^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 43 |     let _ = log_dispatch.log(LogItem::new(
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/communication/binnet.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 | /         logger.log(LogItem::new(
[INFO] [stdout] 34 | |             format!("opened binnet port {}", a.port.socket.local_addr().unwrap()),
[INFO] [stdout] 35 | |             LogContext::Network,
[INFO] [stdout] 36 | |             LogKind::Note,
[INFO] [stdout] 37 | |         ));
[INFO] [stdout]    | |__________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 33 |         let _ = logger.log(LogItem::new(
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/logger.rs:38:13
[INFO] [stdout]    |
[INFO] [stdout] 38 |             a.log(log);
[INFO] [stdout]    |             ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 38 |             let _ = a.log(log);
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: unused dependency `clap`
[INFO] [stderr]   --> Cargo.toml:17:15
[INFO] [stderr]    |
[INFO] [stderr] 17 | [dependencies.clap]
[INFO] [stderr]    |               ^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `clap`
[INFO] [stderr] warning: unused dependency `embedded-graphics`
[INFO] [stderr]  --> Cargo.toml:6:1
[INFO] [stderr]   |
[INFO] [stderr] 6 | embedded-graphics = "0.8.1"
[INFO] [stderr]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr] help: consider removing the dependency on `embedded-graphics`
[INFO] [stderr] warning: unused dependency `hex`
[INFO] [stderr]  --> Cargo.toml:7:1
[INFO] [stderr]   |
[INFO] [stderr] 7 | hex = "0.4.3"
[INFO] [stderr]   | ^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr] help: consider removing the dependency on `hex`
[INFO] [stderr] warning: `clicks-core` (manifest) generated 3 warnings
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 40.73s
[INFO] running `Command { std: "docker" "inspect" "309f83a2eea4be2d02f8706c73a13e4c206759d8191c2258e0b5bcbb9570d4b3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "309f83a2eea4be2d02f8706c73a13e4c206759d8191c2258e0b5bcbb9570d4b3", kill_on_drop: false }`
[INFO] [stdout] 309f83a2eea4be2d02f8706c73a13e4c206759d8191c2258e0b5bcbb9570d4b3
