[INFO] cloning repository https://github.com/youssefhabri/picprog-rs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/youssefhabri/picprog-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fyoussefhabri%2Fpicprog-rs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fyoussefhabri%2Fpicprog-rs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 48232ecd07bc3a2e35c8cb08d6d995a09ae66a0c
[INFO] checking youssefhabri/picprog-rs against master#46424fb5054f211ec836c5c03159f92e46bb35ac for pr-139042
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fyoussefhabri%2Fpicprog-rs" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/youssefhabri/picprog-rs on toolchain 46424fb5054f211ec836c5c03159f92e46bb35ac
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+46424fb5054f211ec836c5c03159f92e46bb35ac" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/youssefhabri/picprog-rs
[INFO] finished tweaking git repo https://github.com/youssefhabri/picprog-rs
[INFO] tweaked toml for git repo https://github.com/youssefhabri/picprog-rs written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] crate git repo https://github.com/youssefhabri/picprog-rs 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" "+46424fb5054f211ec836c5c03159f92e46bb35ac" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded structure v0.1.2
[INFO] [stderr]   Downloaded structure-macro-impl v0.1.2
[INFO] [stderr]   Downloaded serialport v3.0.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4b26683ee3c49f365255c425c23003cbf4366de097804722c29c5bbbee3624d2" "/opt/rustwide/cargo-home/bin/cargo" "+46424fb5054f211ec836c5c03159f92e46bb35ac" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 96a941b53d1394c87b9af68dfaa73a0350c163d0b0af20f541db5a87cd7ed7ff
[INFO] running `Command { std: "docker" "start" "-a" "96a941b53d1394c87b9af68dfaa73a0350c163d0b0af20f541db5a87cd7ed7ff", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "96a941b53d1394c87b9af68dfaa73a0350c163d0b0af20f541db5a87cd7ed7ff", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "96a941b53d1394c87b9af68dfaa73a0350c163d0b0af20f541db5a87cd7ed7ff", kill_on_drop: false }`
[INFO] [stdout] 96a941b53d1394c87b9af68dfaa73a0350c163d0b0af20f541db5a87cd7ed7ff
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-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" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4b26683ee3c49f365255c425c23003cbf4366de097804722c29c5bbbee3624d2" "/opt/rustwide/cargo-home/bin/cargo" "+46424fb5054f211ec836c5c03159f92e46bb35ac" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] bfb1ca41c0b3d1357b5a09f97ac89855ae5c1d47243c5e87963f5e4f28d58385
[INFO] running `Command { std: "docker" "start" "-a" "bfb1ca41c0b3d1357b5a09f97ac89855ae5c1d47243c5e87963f5e4f28d58385", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr]     Checking libc v0.2.42
[INFO] [stderr]    Compiling pkg-config v0.3.11
[INFO] [stderr]     Checking byteorder v1.2.3
[INFO] [stderr]    Compiling proc-macro-hack-impl v0.4.0
[INFO] [stderr]    Compiling nix v0.10.0
[INFO] [stderr]     Checking void v1.0.2
[INFO] [stderr]    Compiling quote v0.3.15
[INFO] [stderr]     Checking bitflags v1.0.3
[INFO] [stderr]     Checking cfg-if v0.1.4
[INFO] [stderr]     Checking bitflags v0.9.1
[INFO] [stderr]    Compiling proc-macro-hack v0.4.0
[INFO] [stderr]    Compiling structure-macro-impl v0.1.2
[INFO] [stderr]    Compiling libudev-sys v0.1.4
[INFO] [stderr]     Checking iovec v0.1.2
[INFO] [stderr]     Checking structure v0.1.2
[INFO] [stderr]     Checking bytes v0.4.8
[INFO] [stderr]     Checking libudev v0.2.0
[INFO] [stderr]     Checking serialport v3.0.0
[INFO] [stderr]     Checking picprog v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused `#[macro_use]` import
[INFO] [stdout]  --> src/main.rs:3:1
[INFO] [stdout]   |
[INFO] [stdout] 3 | #[macro_use]
[INFO] [stdout]   | ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Fuse`
[INFO] [stdout]   --> src/protocol.rs:10:26
[INFO] [stdout]    |
[INFO] [stdout] 10 | use chipinfo::{ChipInfo, Fuse};
[INFO] [stdout]    |                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/chipinfo.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/protocol.rs:17:15
[INFO] [stdout]    |
[INFO] [stdout] 17 |     port: Box<SerialPort>,
[INFO] [stdout]    |               ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     port: Box<dyn SerialPort>,
[INFO] [stdout]    |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `#[macro_use]` import
[INFO] [stdout]  --> src/main.rs:3:1
[INFO] [stdout]   |
[INFO] [stdout] 3 | #[macro_use]
[INFO] [stdout]   | ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Fuse`
[INFO] [stdout]   --> src/protocol.rs:10:26
[INFO] [stdout]    |
[INFO] [stdout] 10 | use chipinfo::{ChipInfo, Fuse};
[INFO] [stdout]    |                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/protocol.rs:24:26
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub fn new(port: Box<SerialPort>) -> ProtocolInterface {
[INFO] [stdout]    |                          ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub fn new(port: Box<dyn SerialPort>) -> ProtocolInterface {
[INFO] [stdout]    |                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/chipinfo.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/protocol.rs:17:15
[INFO] [stdout]    |
[INFO] [stdout] 17 |     port: Box<SerialPort>,
[INFO] [stdout]    |               ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     port: Box<dyn SerialPort>,
[INFO] [stdout]    |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/protocol.rs:24:26
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub fn new(port: Box<SerialPort>) -> ProtocolInterface {
[INFO] [stdout]    |                          ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub fn new(port: Box<dyn SerialPort>) -> ProtocolInterface {
[INFO] [stdout]    |                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data`
[INFO] [stdout]    --> src/protocol.rs:279:34
[INFO] [stdout]     |
[INFO] [stdout] 279 |     fn program_eeprom(&mut self, data: Vec<u8>) {}
[INFO] [stdout]     |                                  ^^^^ help: if this is intentional, prefix it with an underscore: `_data`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `fuses_set` is never read
[INFO] [stdout]   --> src/protocol.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct ProtocolInterface {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     fuses_set: bool,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/protocol.rs:129:8
[INFO] [stdout]     |
[INFO] [stdout] 23  | impl ProtocolInterface {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 129 |     fn null_command(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn echo(&mut self, message: &str) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn set_programming_voltages(&mut self, on: bool) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     fn cycle_programming_voltages(&mut self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 240 |     pub fn program_rom(&mut self, data: Vec<u8>) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 279 |     fn program_eeprom(&mut self, data: Vec<u8>) {}
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 280 |
[INFO] [stdout] 281 |     fn program_id_fuses(&mut self) {}
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 282 |
[INFO] [stdout] 283 |     fn program_calibration(&mut self) {}
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 284 |
[INFO] [stdout] 285 |     pub fn read_rom(&mut self) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 304 |     pub fn read_eeprom(&mut self) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 323 |     pub fn read_configuration(&mut self) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 343 |     fn erase_chip(&mut self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name` and `value` are never read
[INFO] [stdout]   --> src/chipinfo.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct FuseOption {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 55 |     name: &'static str,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 56 |     value: u16
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name`, `options`, and `current_option` are never read
[INFO] [stdout]   --> src/chipinfo.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub struct Fuse {
[INFO] [stdout]    |            ---- fields in this struct
[INFO] [stdout] 61 |     name: &'static str,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 62 |     options: Vec<FuseOption>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 63 |     current_option: u16
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/chipinfo.rs:67:5
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub struct ChipInfo {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 67 |     name: &'static str,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 68 |     include: bool,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 69 |     socket_image: &'static str,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 70 |     erase_mode: u8,
[INFO] [stdout] 71 |     flash_chip: bool,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     fuse_blank: u32,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 81 |     cpwarn: bool,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     icsp_only: bool,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 86 |     chip_id: u32,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 87 |     fuses: Vec<Fuse>
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/chipinfo.rs:136:12
[INFO] [stdout]     |
[INFO] [stdout] 90  | impl ChipInfo {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn name(&self) -> &str {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub fn flash_chip(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub fn power_sequence_str(&self) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn core_bits(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn fuse_blank(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub fn cpwarn(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub fn icsp_only(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn chip_id(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 217 |     pub fn fuses(&self) -> &Vec<Fuse> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]   --> src/protocol.rs:33:32
[INFO] [stdout]    |
[INFO] [stdout] 33 |             Err(err) => panic!(err),
[INFO] [stdout]    |                                ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]    = note: `#[warn(non_fmt_panics)]` on by default
[INFO] [stdout] help: add a "{}" format string to `Display` the message
[INFO] [stdout]    |
[INFO] [stdout] 33 |             Err(err) => panic!("{}", err),
[INFO] [stdout]    |                                +++++
[INFO] [stdout] help: or use std::panic::panic_any instead
[INFO] [stdout]    |
[INFO] [stdout] 33 -             Err(err) => panic!(err),
[INFO] [stdout] 33 +             Err(err) => std::panic::panic_any(err),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]   --> src/protocol.rs:72:32
[INFO] [stdout]    |
[INFO] [stdout] 72 |             Err(err) => panic!(err),
[INFO] [stdout]    |                                ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout] help: add a "{}" format string to `Display` the message
[INFO] [stdout]    |
[INFO] [stdout] 72 |             Err(err) => panic!("{}", err),
[INFO] [stdout]    |                                +++++
[INFO] [stdout] help: or use std::panic::panic_any instead
[INFO] [stdout]    |
[INFO] [stdout] 72 -             Err(err) => panic!(err),
[INFO] [stdout] 72 +             Err(err) => std::panic::panic_any(err),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]   --> src/protocol.rs:78:32
[INFO] [stdout]    |
[INFO] [stdout] 78 |             Err(err) => panic!(err),
[INFO] [stdout]    |                                ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout] help: add a "{}" format string to `Display` the message
[INFO] [stdout]    |
[INFO] [stdout] 78 |             Err(err) => panic!("{}", err),
[INFO] [stdout]    |                                +++++
[INFO] [stdout] help: or use std::panic::panic_any instead
[INFO] [stdout]    |
[INFO] [stdout] 78 -             Err(err) => panic!(err),
[INFO] [stdout] 78 +             Err(err) => std::panic::panic_any(err),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]   --> src/protocol.rs:83:32
[INFO] [stdout]    |
[INFO] [stdout] 83 |             Err(err) => panic!(err),
[INFO] [stdout]    |                                ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout] help: add a "{}" format string to `Display` the message
[INFO] [stdout]    |
[INFO] [stdout] 83 |             Err(err) => panic!("{}", err),
[INFO] [stdout]    |                                +++++
[INFO] [stdout] help: or use std::panic::panic_any instead
[INFO] [stdout]    |
[INFO] [stdout] 83 -             Err(err) => panic!(err),
[INFO] [stdout] 83 +             Err(err) => std::panic::panic_any(err),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]   --> src/protocol.rs:91:36
[INFO] [stdout]    |
[INFO] [stdout] 91 |                 Err(err) => panic!(err),
[INFO] [stdout]    |                                    ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout] help: add a "{}" format string to `Display` the message
[INFO] [stdout]    |
[INFO] [stdout] 91 |                 Err(err) => panic!("{}", err),
[INFO] [stdout]    |                                    +++++
[INFO] [stdout] help: or use std::panic::panic_any instead
[INFO] [stdout]    |
[INFO] [stdout] 91 -                 Err(err) => panic!(err),
[INFO] [stdout] 91 +                 Err(err) => std::panic::panic_any(err),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:111:9
[INFO] [stdout]     |
[INFO] [stdout] 111 |         self.port.write_u8(b'\x01');
[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)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 111 |         let _ = self.port.write_u8(b'\x01');
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:114:9
[INFO] [stdout]     |
[INFO] [stdout] 114 |         self.port.write_u8(b'P');
[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] 114 |         let _ = self.port.write_u8(b'P');
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:123:13
[INFO] [stdout]     |
[INFO] [stdout] 123 |             self.port.write_u8(command);
[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] 123 |             let _ = self.port.write_u8(command);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 130 |         self.port.write_u8(0);
[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] 130 |         let _ = self.port.write_u8(0);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:134:9
[INFO] [stdout]     |
[INFO] [stdout] 134 |         self.port.write_u8(1);
[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] 134 |         let _ = self.port.write_u8(1);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:154:13
[INFO] [stdout]     |
[INFO] [stdout] 154 |             self.port.write_u8(cmd);
[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] 154 |             let _ = self.port.write_u8(cmd);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:155:13
[INFO] [stdout]     |
[INFO] [stdout] 155 |             self.port.write_u8(c as u8);
[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] 155 |             let _ = self.port.write_u8(c as u8);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:200:9
[INFO] [stdout]     |
[INFO] [stdout] 200 |         self.port.write(command_payload.as_mut_slice());
[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] 200 |         let _ = self.port.write(command_payload.as_mut_slice());
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:219:13
[INFO] [stdout]     |
[INFO] [stdout] 219 |             self.port.write_u8(cmd_on);
[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] 219 |             let _ = self.port.write_u8(cmd_on);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:222:13
[INFO] [stdout]     |
[INFO] [stdout] 222 |             self.port.write_u8(cmd_off);
[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] 222 |             let _ = self.port.write_u8(cmd_off);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:255:9
[INFO] [stdout]     |
[INFO] [stdout] 255 |         self.port.write_u8(cmd);
[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 _ = self.port.write_u8(cmd);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:258:9
[INFO] [stdout]     |
[INFO] [stdout] 258 |         self.port.write_u8(word_count_message);
[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] 258 |         let _ = self.port.write_u8(word_count_message);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:266:13
[INFO] [stdout]     |
[INFO] [stdout] 266 |             self.port.write_all(&data[i..(i + 32)]);
[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] 266 |             let _ = self.port.write_all(&data[i..(i + 32)]);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:294:9
[INFO] [stdout]     |
[INFO] [stdout] 294 |         self.port.write_u8(cmd);
[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] 294 |         let _ = self.port.write_u8(cmd);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:313:9
[INFO] [stdout]     |
[INFO] [stdout] 313 |         self.port.write_u8(cmd);
[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] 313 |         let _ = self.port.write_u8(cmd);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:329:9
[INFO] [stdout]     |
[INFO] [stdout] 329 |         self.port.write_u8(cmd);
[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] 329 |         let _ = self.port.write_u8(cmd);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:360:9
[INFO] [stdout]     |
[INFO] [stdout] 360 |         self.port.write_u8(high_byte);
[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] 360 |         let _ = self.port.write_u8(high_byte);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data`
[INFO] [stdout]    --> src/protocol.rs:279:34
[INFO] [stdout]     |
[INFO] [stdout] 279 |     fn program_eeprom(&mut self, data: Vec<u8>) {}
[INFO] [stdout]     |                                  ^^^^ help: if this is intentional, prefix it with an underscore: `_data`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `fuses_set` is never read
[INFO] [stdout]   --> src/protocol.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct ProtocolInterface {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     fuses_set: bool,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/protocol.rs:129:8
[INFO] [stdout]     |
[INFO] [stdout] 23  | impl ProtocolInterface {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 129 |     fn null_command(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn echo(&mut self, message: &str) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn set_programming_voltages(&mut self, on: bool) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     fn cycle_programming_voltages(&mut self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 240 |     pub fn program_rom(&mut self, data: Vec<u8>) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 279 |     fn program_eeprom(&mut self, data: Vec<u8>) {}
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 280 |
[INFO] [stdout] 281 |     fn program_id_fuses(&mut self) {}
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 282 |
[INFO] [stdout] 283 |     fn program_calibration(&mut self) {}
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 284 |
[INFO] [stdout] 285 |     pub fn read_rom(&mut self) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 304 |     pub fn read_eeprom(&mut self) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 323 |     pub fn read_configuration(&mut self) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 343 |     fn erase_chip(&mut self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name` and `value` are never read
[INFO] [stdout]   --> src/chipinfo.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct FuseOption {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 55 |     name: &'static str,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 56 |     value: u16
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name`, `options`, and `current_option` are never read
[INFO] [stdout]   --> src/chipinfo.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub struct Fuse {
[INFO] [stdout]    |            ---- fields in this struct
[INFO] [stdout] 61 |     name: &'static str,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 62 |     options: Vec<FuseOption>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 63 |     current_option: u16
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/chipinfo.rs:67:5
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub struct ChipInfo {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 67 |     name: &'static str,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 68 |     include: bool,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 69 |     socket_image: &'static str,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 70 |     erase_mode: u8,
[INFO] [stdout] 71 |     flash_chip: bool,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     fuse_blank: u32,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 81 |     cpwarn: bool,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     icsp_only: bool,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 86 |     chip_id: u32,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 87 |     fuses: Vec<Fuse>
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/chipinfo.rs:136:12
[INFO] [stdout]     |
[INFO] [stdout] 90  | impl ChipInfo {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn name(&self) -> &str {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub fn flash_chip(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub fn power_sequence_str(&self) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn core_bits(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn fuse_blank(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub fn cpwarn(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub fn icsp_only(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn chip_id(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 217 |     pub fn fuses(&self) -> &Vec<Fuse> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]   --> src/protocol.rs:33:32
[INFO] [stdout]    |
[INFO] [stdout] 33 |             Err(err) => panic!(err),
[INFO] [stdout]    |                                ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]    = note: `#[warn(non_fmt_panics)]` on by default
[INFO] [stdout] help: add a "{}" format string to `Display` the message
[INFO] [stdout]    |
[INFO] [stdout] 33 |             Err(err) => panic!("{}", err),
[INFO] [stdout]    |                                +++++
[INFO] [stdout] help: or use std::panic::panic_any instead
[INFO] [stdout]    |
[INFO] [stdout] 33 -             Err(err) => panic!(err),
[INFO] [stdout] 33 +             Err(err) => std::panic::panic_any(err),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]   --> src/protocol.rs:72:32
[INFO] [stdout]    |
[INFO] [stdout] 72 |             Err(err) => panic!(err),
[INFO] [stdout]    |                                ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout] help: add a "{}" format string to `Display` the message
[INFO] [stdout]    |
[INFO] [stdout] 72 |             Err(err) => panic!("{}", err),
[INFO] [stdout]    |                                +++++
[INFO] [stdout] help: or use std::panic::panic_any instead
[INFO] [stdout]    |
[INFO] [stdout] 72 -             Err(err) => panic!(err),
[INFO] [stdout] 72 +             Err(err) => std::panic::panic_any(err),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]   --> src/protocol.rs:78:32
[INFO] [stdout]    |
[INFO] [stdout] 78 |             Err(err) => panic!(err),
[INFO] [stdout]    |                                ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout] help: add a "{}" format string to `Display` the message
[INFO] [stdout]    |
[INFO] [stdout] 78 |             Err(err) => panic!("{}", err),
[INFO] [stdout]    |                                +++++
[INFO] [stdout] help: or use std::panic::panic_any instead
[INFO] [stdout]    |
[INFO] [stdout] 78 -             Err(err) => panic!(err),
[INFO] [stdout] 78 +             Err(err) => std::panic::panic_any(err),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]   --> src/protocol.rs:83:32
[INFO] [stdout]    |
[INFO] [stdout] 83 |             Err(err) => panic!(err),
[INFO] [stdout]    |                                ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout] help: add a "{}" format string to `Display` the message
[INFO] [stdout]    |
[INFO] [stdout] 83 |             Err(err) => panic!("{}", err),
[INFO] [stdout]    |                                +++++
[INFO] [stdout] help: or use std::panic::panic_any instead
[INFO] [stdout]    |
[INFO] [stdout] 83 -             Err(err) => panic!(err),
[INFO] [stdout] 83 +             Err(err) => std::panic::panic_any(err),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]   --> src/protocol.rs:91:36
[INFO] [stdout]    |
[INFO] [stdout] 91 |                 Err(err) => panic!(err),
[INFO] [stdout]    |                                    ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout] help: add a "{}" format string to `Display` the message
[INFO] [stdout]    |
[INFO] [stdout] 91 |                 Err(err) => panic!("{}", err),
[INFO] [stdout]    |                                    +++++
[INFO] [stdout] help: or use std::panic::panic_any instead
[INFO] [stdout]    |
[INFO] [stdout] 91 -                 Err(err) => panic!(err),
[INFO] [stdout] 91 +                 Err(err) => std::panic::panic_any(err),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:111:9
[INFO] [stdout]     |
[INFO] [stdout] 111 |         self.port.write_u8(b'\x01');
[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)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 111 |         let _ = self.port.write_u8(b'\x01');
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:114:9
[INFO] [stdout]     |
[INFO] [stdout] 114 |         self.port.write_u8(b'P');
[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] 114 |         let _ = self.port.write_u8(b'P');
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:123:13
[INFO] [stdout]     |
[INFO] [stdout] 123 |             self.port.write_u8(command);
[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] 123 |             let _ = self.port.write_u8(command);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 130 |         self.port.write_u8(0);
[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] 130 |         let _ = self.port.write_u8(0);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:134:9
[INFO] [stdout]     |
[INFO] [stdout] 134 |         self.port.write_u8(1);
[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] 134 |         let _ = self.port.write_u8(1);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:154:13
[INFO] [stdout]     |
[INFO] [stdout] 154 |             self.port.write_u8(cmd);
[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] 154 |             let _ = self.port.write_u8(cmd);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:155:13
[INFO] [stdout]     |
[INFO] [stdout] 155 |             self.port.write_u8(c as u8);
[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] 155 |             let _ = self.port.write_u8(c as u8);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:200:9
[INFO] [stdout]     |
[INFO] [stdout] 200 |         self.port.write(command_payload.as_mut_slice());
[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] 200 |         let _ = self.port.write(command_payload.as_mut_slice());
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:219:13
[INFO] [stdout]     |
[INFO] [stdout] 219 |             self.port.write_u8(cmd_on);
[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] 219 |             let _ = self.port.write_u8(cmd_on);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:222:13
[INFO] [stdout]     |
[INFO] [stdout] 222 |             self.port.write_u8(cmd_off);
[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] 222 |             let _ = self.port.write_u8(cmd_off);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:255:9
[INFO] [stdout]     |
[INFO] [stdout] 255 |         self.port.write_u8(cmd);
[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 _ = self.port.write_u8(cmd);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:258:9
[INFO] [stdout]     |
[INFO] [stdout] 258 |         self.port.write_u8(word_count_message);
[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] 258 |         let _ = self.port.write_u8(word_count_message);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:266:13
[INFO] [stdout]     |
[INFO] [stdout] 266 |             self.port.write_all(&data[i..(i + 32)]);
[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] 266 |             let _ = self.port.write_all(&data[i..(i + 32)]);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:294:9
[INFO] [stdout]     |
[INFO] [stdout] 294 |         self.port.write_u8(cmd);
[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] 294 |         let _ = self.port.write_u8(cmd);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:313:9
[INFO] [stdout]     |
[INFO] [stdout] 313 |         self.port.write_u8(cmd);
[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] 313 |         let _ = self.port.write_u8(cmd);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:329:9
[INFO] [stdout]     |
[INFO] [stdout] 329 |         self.port.write_u8(cmd);
[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] 329 |         let _ = self.port.write_u8(cmd);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/protocol.rs:360:9
[INFO] [stdout]     |
[INFO] [stdout] 360 |         self.port.write_u8(high_byte);
[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] 360 |         let _ = self.port.write_u8(high_byte);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 4.59s
[INFO] running `Command { std: "docker" "inspect" "bfb1ca41c0b3d1357b5a09f97ac89855ae5c1d47243c5e87963f5e4f28d58385", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "bfb1ca41c0b3d1357b5a09f97ac89855ae5c1d47243c5e87963f5e4f28d58385", kill_on_drop: false }`
[INFO] [stdout] bfb1ca41c0b3d1357b5a09f97ac89855ae5c1d47243c5e87963f5e4f28d58385
