[INFO] cloning repository https://github.com/rykervassallo/rusty_flasher_side
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/rykervassallo/rusty_flasher_side" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frykervassallo%2Frusty_flasher_side", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frykervassallo%2Frusty_flasher_side'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 3ef95b08c0f675e4772d52ad05df096b2e75fd0b
[INFO] checking rykervassallo/rusty_flasher_side against eca445e5ae4a6679cc27d3a09106ce245e13a5a6 for pr-162478
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frykervassallo%2Frusty_flasher_side" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/rykervassallo/rusty_flasher_side
[INFO] finished tweaking git repo https://github.com/rykervassallo/rusty_flasher_side
[INFO] tweaked toml for git repo https://github.com/rykervassallo/rusty_flasher_side written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/rykervassallo/rusty_flasher_side 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/rykervassallo/rusty_flasher_side 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] warning: binary `controller_degree` should have a kebab-case name
[INFO] [stderr]    |
[INFO] [stderr]  1 | /workspace/builds/worker-1-tc1/source/target/.../controller_degree
[INFO] [stderr]    |                                                  ^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: to change the binary name to `controller-degree`, convert `bin.name`
[INFO] [stderr]   --> Cargo.toml:18:8
[INFO] [stderr]    |
[INFO] [stderr] 18 - name = "controller_degree"
[INFO] [stderr] 18 + name = "controller-degree"
[INFO] [stderr]    |
[INFO] [stderr] warning: binary `controller_pulse` should have a kebab-case name
[INFO] [stderr]    |
[INFO] [stderr]  1 | /workspace/builds/worker-1-tc1/source/target/.../controller_pulse
[INFO] [stderr]    |                                                  ^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: to change the binary name to `controller-pulse`, convert `bin.name`
[INFO] [stderr]   --> Cargo.toml:14:8
[INFO] [stderr]    |
[INFO] [stderr] 14 - name = "controller_pulse"
[INFO] [stderr] 14 + name = "controller-pulse"
[INFO] [stderr]    |
[INFO] [stderr] warning: `bootloader` (manifest) generated 2 warnings
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded readmouse v0.2.1
[INFO] [stderr]   Downloaded serialport v4.8.1
[INFO] [stderr]   Downloaded unescaper v0.1.8
[INFO] [stderr]   Downloaded readkey v0.2.2
[INFO] [stderr]   Downloaded macos-accessibility-client v0.0.1
[INFO] [stderr]   Downloaded device_query v2.1.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] a4f131fe9e91ab436c428fdb70826c5c8413d96ebe9190348fd1ce42ef3e4cb8
[INFO] running `Command { std: "docker" "start" "a4f131fe9e91ab436c428fdb70826c5c8413d96ebe9190348fd1ce42ef3e4cb8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a4f131fe9e91ab436c428fdb70826c5c8413d96ebe9190348fd1ce42ef3e4cb8", 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" "a4f131fe9e91ab436c428fdb70826c5c8413d96ebe9190348fd1ce42ef3e4cb8" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a4f131fe9e91ab436c428fdb70826c5c8413d96ebe9190348fd1ce42ef3e4cb8", 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" "a4f131fe9e91ab436c428fdb70826c5c8413d96ebe9190348fd1ce42ef3e4cb8" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: binary `controller_degree` should have a kebab-case name
[INFO] [stderr]    |
[INFO] [stderr]  1 | /opt/rustwide/target/.../controller_degree
[INFO] [stderr]    |                          ^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: to change the binary name to `controller-degree`, convert `bin.name`
[INFO] [stderr]   --> Cargo.toml:18:8
[INFO] [stderr]    |
[INFO] [stderr] 18 - name = "controller_degree"
[INFO] [stderr] 18 + name = "controller-degree"
[INFO] [stderr]    |
[INFO] [stderr] warning: binary `controller_pulse` should have a kebab-case name
[INFO] [stderr]    |
[INFO] [stderr]  1 | /opt/rustwide/target/.../controller_pulse
[INFO] [stderr]    |                          ^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: to change the binary name to `controller-pulse`, convert `bin.name`
[INFO] [stderr]   --> Cargo.toml:14:8
[INFO] [stderr]    |
[INFO] [stderr] 14 - name = "controller_pulse"
[INFO] [stderr] 14 + name = "controller-pulse"
[INFO] [stderr]    |
[INFO] [stderr] warning: `bootloader` (manifest) generated 2 warnings
[INFO] [stderr]    Compiling libc v0.2.180
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]     Checking scopeguard v1.2.0
[INFO] [stderr]    Compiling libudev-sys v0.1.4
[INFO] [stderr]    Compiling x11 v2.21.0
[INFO] [stderr]     Checking unicode-ident v1.0.22
[INFO] [stderr]    Compiling device_query v2.1.0
[INFO] [stderr]     Checking lock_api v0.4.14
[INFO] [stderr]     Checking quote v1.0.40
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]     Checking errno v0.3.14
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking mio v0.8.11
[INFO] [stderr]     Checking nix v0.26.4
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]     Checking libudev v0.3.0
[INFO] [stderr]     Checking signal-hook v0.3.18
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking signal-hook-mio v0.2.5
[INFO] [stderr]     Checking crossterm v0.27.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]     Checking thiserror v2.0.18
[INFO] [stderr]     Checking unescaper v0.1.8
[INFO] [stderr]     Checking serialport v4.8.1
[INFO] [stderr]     Checking bootloader v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: function `find_tty` is never used
[INFO] [stdout]  --> src/find_tty_serialport.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn find_tty() -> io::Result<Box<dyn SerialPort>> {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::tty_echo_serialport::echo`
[INFO] [stdout]  --> src/main.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::tty_echo_serialport::echo;
[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: `read_file`
[INFO] [stdout]  --> src/boot.rs:3:32
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::{generate_crc::crc, read_file};
[INFO] [stdout]   |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> src/boot.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `fs::read`
[INFO] [stdout]  --> src/boot.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::{fs::read, io, thread, time};
[INFO] [stdout]   |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/boot.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 |     if (byte != GET_PROG_INFO) { return Err(ERROR_NO_START_CODE); } 
[INFO] [stdout]     |        ^                     ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 115 -     if (byte != GET_PROG_INFO) { return Err(ERROR_NO_START_CODE); } 
[INFO] [stdout] 115 +     if byte != GET_PROG_INFO { return Err(ERROR_NO_START_CODE); } 
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/boot.rs:116:8
[INFO] [stdout]     |
[INFO] [stdout] 116 |     if (n != 1) { return Err(ERROR_UNEXPECTED_BYTE_COUNT); }
[INFO] [stdout]     |        ^      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 116 -     if (n != 1) { return Err(ERROR_UNEXPECTED_BYTE_COUNT); }
[INFO] [stdout] 116 +     if n != 1 { return Err(ERROR_UNEXPECTED_BYTE_COUNT); }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/boot.rs:137:8
[INFO] [stdout]     |
[INFO] [stdout] 137 |     if (code == BOOT_ERROR_BIG) { return Err(ERROR_TOO_BIG); }
[INFO] [stdout]     |        ^                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 137 -     if (code == BOOT_ERROR_BIG) { return Err(ERROR_TOO_BIG); }
[INFO] [stdout] 137 +     if code == BOOT_ERROR_BIG { return Err(ERROR_TOO_BIG); }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/boot.rs:138:8
[INFO] [stdout]     |
[INFO] [stdout] 138 |     if (n != 1) { return Err(ERROR_UNEXPECTED_BYTE_COUNT); }
[INFO] [stdout]     |        ^      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 138 -     if (n != 1) { return Err(ERROR_UNEXPECTED_BYTE_COUNT); }
[INFO] [stdout] 138 +     if n != 1 { return Err(ERROR_UNEXPECTED_BYTE_COUNT); }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/boot.rs:139:13
[INFO] [stdout]     |
[INFO] [stdout] 139 |     else if (code != GET_CODE) { return Err(ERROR_UNEXPECTED_NETWORK_CODE); }
[INFO] [stdout]     |             ^                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 139 -     else if (code != GET_CODE) { return Err(ERROR_UNEXPECTED_NETWORK_CODE); }
[INFO] [stdout] 139 +     else if code != GET_CODE { return Err(ERROR_UNEXPECTED_NETWORK_CODE); }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/boot.rs:163:8
[INFO] [stdout]     |
[INFO] [stdout] 163 |     if (n != 1) { return Err(ERROR_UNEXPECTED_BYTE_COUNT); }
[INFO] [stdout]     |        ^      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 163 -     if (n != 1) { return Err(ERROR_UNEXPECTED_BYTE_COUNT); }
[INFO] [stdout] 163 +     if n != 1 { return Err(ERROR_UNEXPECTED_BYTE_COUNT); }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/boot.rs:165:8
[INFO] [stdout]     |
[INFO] [stdout] 165 |     if (code == BOOT_ERROR_CRC) { return Err(ERROR_DOWNLOAD_ISSUE_CRC); }
[INFO] [stdout]     |        ^                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 165 -     if (code == BOOT_ERROR_CRC) { return Err(ERROR_DOWNLOAD_ISSUE_CRC); }
[INFO] [stdout] 165 +     if code == BOOT_ERROR_CRC { return Err(ERROR_DOWNLOAD_ISSUE_CRC); }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/boot.rs:166:13
[INFO] [stdout]     |
[INFO] [stdout] 166 |     else if (code != BOOT_SUCCESS) { return Err(ERROR_UNEXPECTED_NETWORK_CODE); }
[INFO] [stdout]     |             ^                    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 166 -     else if (code != BOOT_SUCCESS) { return Err(ERROR_UNEXPECTED_NETWORK_CODE); }
[INFO] [stdout] 166 +     else if code != BOOT_SUCCESS { return Err(ERROR_UNEXPECTED_NETWORK_CODE); }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/boot.rs:224:12
[INFO] [stdout]     |
[INFO] [stdout] 224 |         if (which_chunk < NUM_CHUNKS - 1) {
[INFO] [stdout]     |            ^                            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 224 -         if (which_chunk < NUM_CHUNKS - 1) {
[INFO] [stdout] 224 +         if which_chunk < NUM_CHUNKS - 1 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/boot.rs:227:16
[INFO] [stdout]     |
[INFO] [stdout] 227 |             if (n != 1 || response_buffer[0] != BOOT_ACK) { 
[INFO] [stdout]     |                ^                                        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 227 -             if (n != 1 || response_buffer[0] != BOOT_ACK) { 
[INFO] [stdout] 227 +             if n != 1 || response_buffer[0] != BOOT_ACK { 
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ACK` is never used
[INFO] [stdout]   --> src/controller.rs:15:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | const ACK                : u8 = 0x06;
[INFO] [stdout]    |       ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ACK` is never used
[INFO] [stdout]   --> src/controller.rs:15:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | const ACK                : u8 = 0x06;
[INFO] [stdout]    |       ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ERROR_DOWNLOAD_ISSUE`
[INFO] [stdout]   --> src/boot.rs:94:9
[INFO] [stdout]    |
[INFO] [stdout] 94 |     let ERROR_DOWNLOAD_ISSUE = io::Error::new(
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ERROR_DOWNLOAD_ISSUE`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_tty` is never used
[INFO] [stdout]  --> src/find_tty_serialport.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn find_tty() -> io::Result<Box<dyn SerialPort>> {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BOOT_START` is never used
[INFO] [stdout]   --> src/boot.rs:15:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | const BOOT_START     : u8 = 0x67;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PUT_CODE` is never used
[INFO] [stdout]   --> src/boot.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const PUT_CODE       : u8 = 0x71;
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ERROR_NO_START_CODE` should have a snake case name
[INFO] [stdout]   --> src/boot.rs:74:9
[INFO] [stdout]    |
[INFO] [stdout] 74 |     let ERROR_NO_START_CODE = io::Error::new(
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `error_no_start_code`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ERROR_UNEXPECTED_BYTE_COUNT` should have a snake case name
[INFO] [stdout]   --> src/boot.rs:79:9
[INFO] [stdout]    |
[INFO] [stdout] 79 |     let ERROR_UNEXPECTED_BYTE_COUNT = io::Error::new(
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `error_unexpected_byte_count`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ERROR_UNEXPECTED_NETWORK_CODE` should have a snake case name
[INFO] [stdout]   --> src/boot.rs:84:9
[INFO] [stdout]    |
[INFO] [stdout] 84 |     let ERROR_UNEXPECTED_NETWORK_CODE = io::Error::new(
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `error_unexpected_network_code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ERROR_TOO_BIG` should have a snake case name
[INFO] [stdout]   --> src/boot.rs:89:9
[INFO] [stdout]    |
[INFO] [stdout] 89 |     let ERROR_TOO_BIG = io::Error::new(
[INFO] [stdout]    |         ^^^^^^^^^^^^^ help: convert the identifier to snake case: `error_too_big`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ERROR_DOWNLOAD_ISSUE` should have a snake case name
[INFO] [stdout]   --> src/boot.rs:94:9
[INFO] [stdout]    |
[INFO] [stdout] 94 |     let ERROR_DOWNLOAD_ISSUE = io::Error::new(
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `error_download_issue`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ERROR_DOWNLOAD_ISSUE_CRC` should have a snake case name
[INFO] [stdout]   --> src/boot.rs:99:9
[INFO] [stdout]    |
[INFO] [stdout] 99 |     let ERROR_DOWNLOAD_ISSUE_CRC = io::Error::new(
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `error_download_issue_crc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ERROR_DOWNLOAD_ISSUE` should have a snake case name
[INFO] [stdout]    --> src/boot.rs:211:9
[INFO] [stdout]     |
[INFO] [stdout] 211 |     let ERROR_DOWNLOAD_ISSUE = io::Error::new(
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `error_download_issue`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NUM_CHUNKS` should have a snake case name
[INFO] [stdout]    --> src/boot.rs:219:9
[INFO] [stdout]     |
[INFO] [stdout] 219 |     let NUM_CHUNKS : usize = (buf.len() + RPI_UART_RX_BUFFER_SIZE - 1) / RPI_UART_RX_BUFFER_SIZE;
[INFO] [stdout]     |         ^^^^^^^^^^ help: convert the identifier to snake case: `num_chunks`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/test_send.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     port.write_all(&buffer);
[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] 14 |     let _ = port.write_all(&buffer);
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/test_send.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     port.flush();
[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] 15 |     let _ = port.flush();
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::tty_echo_serialport::echo`
[INFO] [stdout]  --> src/main.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::tty_echo_serialport::echo;
[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: `read_file`
[INFO] [stdout]  --> src/boot.rs:3:32
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::{generate_crc::crc, read_file};
[INFO] [stdout]   |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> src/boot.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `fs::read`
[INFO] [stdout]  --> src/boot.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::{fs::read, io, thread, time};
[INFO] [stdout]   |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/boot.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 |     if (byte != GET_PROG_INFO) { return Err(ERROR_NO_START_CODE); } 
[INFO] [stdout]     |        ^                     ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 115 -     if (byte != GET_PROG_INFO) { return Err(ERROR_NO_START_CODE); } 
[INFO] [stdout] 115 +     if byte != GET_PROG_INFO { return Err(ERROR_NO_START_CODE); } 
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/boot.rs:116:8
[INFO] [stdout]     |
[INFO] [stdout] 116 |     if (n != 1) { return Err(ERROR_UNEXPECTED_BYTE_COUNT); }
[INFO] [stdout]     |        ^      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 116 -     if (n != 1) { return Err(ERROR_UNEXPECTED_BYTE_COUNT); }
[INFO] [stdout] 116 +     if n != 1 { return Err(ERROR_UNEXPECTED_BYTE_COUNT); }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/boot.rs:137:8
[INFO] [stdout]     |
[INFO] [stdout] 137 |     if (code == BOOT_ERROR_BIG) { return Err(ERROR_TOO_BIG); }
[INFO] [stdout]     |        ^                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 137 -     if (code == BOOT_ERROR_BIG) { return Err(ERROR_TOO_BIG); }
[INFO] [stdout] 137 +     if code == BOOT_ERROR_BIG { return Err(ERROR_TOO_BIG); }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/boot.rs:138:8
[INFO] [stdout]     |
[INFO] [stdout] 138 |     if (n != 1) { return Err(ERROR_UNEXPECTED_BYTE_COUNT); }
[INFO] [stdout]     |        ^      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 138 -     if (n != 1) { return Err(ERROR_UNEXPECTED_BYTE_COUNT); }
[INFO] [stdout] 138 +     if n != 1 { return Err(ERROR_UNEXPECTED_BYTE_COUNT); }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/boot.rs:139:13
[INFO] [stdout]     |
[INFO] [stdout] 139 |     else if (code != GET_CODE) { return Err(ERROR_UNEXPECTED_NETWORK_CODE); }
[INFO] [stdout]     |             ^                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 139 -     else if (code != GET_CODE) { return Err(ERROR_UNEXPECTED_NETWORK_CODE); }
[INFO] [stdout] 139 +     else if code != GET_CODE { return Err(ERROR_UNEXPECTED_NETWORK_CODE); }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/boot.rs:163:8
[INFO] [stdout]     |
[INFO] [stdout] 163 |     if (n != 1) { return Err(ERROR_UNEXPECTED_BYTE_COUNT); }
[INFO] [stdout]     |        ^      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 163 -     if (n != 1) { return Err(ERROR_UNEXPECTED_BYTE_COUNT); }
[INFO] [stdout] 163 +     if n != 1 { return Err(ERROR_UNEXPECTED_BYTE_COUNT); }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/boot.rs:165:8
[INFO] [stdout]     |
[INFO] [stdout] 165 |     if (code == BOOT_ERROR_CRC) { return Err(ERROR_DOWNLOAD_ISSUE_CRC); }
[INFO] [stdout]     |        ^                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 165 -     if (code == BOOT_ERROR_CRC) { return Err(ERROR_DOWNLOAD_ISSUE_CRC); }
[INFO] [stdout] 165 +     if code == BOOT_ERROR_CRC { return Err(ERROR_DOWNLOAD_ISSUE_CRC); }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/boot.rs:166:13
[INFO] [stdout]     |
[INFO] [stdout] 166 |     else if (code != BOOT_SUCCESS) { return Err(ERROR_UNEXPECTED_NETWORK_CODE); }
[INFO] [stdout]     |             ^                    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 166 -     else if (code != BOOT_SUCCESS) { return Err(ERROR_UNEXPECTED_NETWORK_CODE); }
[INFO] [stdout] 166 +     else if code != BOOT_SUCCESS { return Err(ERROR_UNEXPECTED_NETWORK_CODE); }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/boot.rs:224:12
[INFO] [stdout]     |
[INFO] [stdout] 224 |         if (which_chunk < NUM_CHUNKS - 1) {
[INFO] [stdout]     |            ^                            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 224 -         if (which_chunk < NUM_CHUNKS - 1) {
[INFO] [stdout] 224 +         if which_chunk < NUM_CHUNKS - 1 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/boot.rs:227:16
[INFO] [stdout]     |
[INFO] [stdout] 227 |             if (n != 1 || response_buffer[0] != BOOT_ACK) { 
[INFO] [stdout]     |                ^                                        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 227 -             if (n != 1 || response_buffer[0] != BOOT_ACK) { 
[INFO] [stdout] 227 +             if n != 1 || response_buffer[0] != BOOT_ACK { 
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ERROR_DOWNLOAD_ISSUE`
[INFO] [stdout]   --> src/boot.rs:94:9
[INFO] [stdout]    |
[INFO] [stdout] 94 |     let ERROR_DOWNLOAD_ISSUE = io::Error::new(
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ERROR_DOWNLOAD_ISSUE`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BOOT_START` is never used
[INFO] [stdout]   --> src/boot.rs:15:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | const BOOT_START     : u8 = 0x67;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PUT_CODE` is never used
[INFO] [stdout]   --> src/boot.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const PUT_CODE       : u8 = 0x71;
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ERROR_NO_START_CODE` should have a snake case name
[INFO] [stdout]   --> src/boot.rs:74:9
[INFO] [stdout]    |
[INFO] [stdout] 74 |     let ERROR_NO_START_CODE = io::Error::new(
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `error_no_start_code`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ERROR_UNEXPECTED_BYTE_COUNT` should have a snake case name
[INFO] [stdout]   --> src/boot.rs:79:9
[INFO] [stdout]    |
[INFO] [stdout] 79 |     let ERROR_UNEXPECTED_BYTE_COUNT = io::Error::new(
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `error_unexpected_byte_count`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ERROR_UNEXPECTED_NETWORK_CODE` should have a snake case name
[INFO] [stdout]   --> src/boot.rs:84:9
[INFO] [stdout]    |
[INFO] [stdout] 84 |     let ERROR_UNEXPECTED_NETWORK_CODE = io::Error::new(
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `error_unexpected_network_code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ERROR_TOO_BIG` should have a snake case name
[INFO] [stdout]   --> src/boot.rs:89:9
[INFO] [stdout]    |
[INFO] [stdout] 89 |     let ERROR_TOO_BIG = io::Error::new(
[INFO] [stdout]    |         ^^^^^^^^^^^^^ help: convert the identifier to snake case: `error_too_big`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ERROR_DOWNLOAD_ISSUE` should have a snake case name
[INFO] [stdout]   --> src/boot.rs:94:9
[INFO] [stdout]    |
[INFO] [stdout] 94 |     let ERROR_DOWNLOAD_ISSUE = io::Error::new(
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `error_download_issue`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ERROR_DOWNLOAD_ISSUE_CRC` should have a snake case name
[INFO] [stdout]   --> src/boot.rs:99:9
[INFO] [stdout]    |
[INFO] [stdout] 99 |     let ERROR_DOWNLOAD_ISSUE_CRC = io::Error::new(
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `error_download_issue_crc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ERROR_DOWNLOAD_ISSUE` should have a snake case name
[INFO] [stdout]    --> src/boot.rs:211:9
[INFO] [stdout]     |
[INFO] [stdout] 211 |     let ERROR_DOWNLOAD_ISSUE = io::Error::new(
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `error_download_issue`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NUM_CHUNKS` should have a snake case name
[INFO] [stdout]    --> src/boot.rs:219:9
[INFO] [stdout]     |
[INFO] [stdout] 219 |     let NUM_CHUNKS : usize = (buf.len() + RPI_UART_RX_BUFFER_SIZE - 1) / RPI_UART_RX_BUFFER_SIZE;
[INFO] [stdout]     |         ^^^^^^^^^^ help: convert the identifier to snake case: `num_chunks`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/test_send.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     port.write_all(&buffer);
[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] 14 |     let _ = port.write_all(&buffer);
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/test_send.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     port.flush();
[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] 15 |     let _ = port.flush();
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 13.97s
[INFO] running `Command { std: "docker" "inspect" "a4f131fe9e91ab436c428fdb70826c5c8413d96ebe9190348fd1ce42ef3e4cb8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a4f131fe9e91ab436c428fdb70826c5c8413d96ebe9190348fd1ce42ef3e4cb8", kill_on_drop: false }`
[INFO] [stdout] a4f131fe9e91ab436c428fdb70826c5c8413d96ebe9190348fd1ce42ef3e4cb8
