[INFO] fetching crate tuneutils 0.1.1...
[INFO] testing tuneutils-0.1.1 against master#c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38 for pr-146098-8
[INFO] extracting crate tuneutils 0.1.1 into /workspace/builds/worker-7-tc1/source
[INFO] started tweaking crates.io crate tuneutils 0.1.1
[INFO] finished tweaking crates.io crate tuneutils 0.1.1
[INFO] tweaked toml for crates.io crate tuneutils 0.1.1 written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate tuneutils 0.1.1 on toolchain c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 34 packages to latest compatible versions
[INFO] [stderr]       Adding bv v0.10.0 (available: v0.11.1)
[INFO] [stderr]       Adding itertools v0.7.11 (available: v0.14.0)
[INFO] [stderr]       Adding j2534 v0.1.2 (available: v0.3.1)
[INFO] [stderr]       Adding serde_yaml v0.8.26 (available: v0.9.34+deprecated)
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded eval v0.4.3
[INFO] [stderr]   Downloaded j2534 v0.1.2
[INFO] [stderr]   Downloaded bv v0.10.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 1bfcb13f353a02796f0a2d8da2a617b1c4b4992e5cf21a4785deae9eee91a36a
[INFO] running `Command { std: "docker" "start" "-a" "1bfcb13f353a02796f0a2d8da2a617b1c4b4992e5cf21a4785deae9eee91a36a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1bfcb13f353a02796f0a2d8da2a617b1c4b4992e5cf21a4785deae9eee91a36a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1bfcb13f353a02796f0a2d8da2a617b1c4b4992e5cf21a4785deae9eee91a36a", kill_on_drop: false }`
[INFO] [stdout] 1bfcb13f353a02796f0a2d8da2a617b1c4b4992e5cf21a4785deae9eee91a36a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 838c53f317a7687d1bafa2d0e116fe1297a638d04a5797efd2f845f3456a90eb
[INFO] running `Command { std: "docker" "start" "-a" "838c53f317a7687d1bafa2d0e116fe1297a638d04a5797efd2f845f3456a90eb", kill_on_drop: false }`
[INFO] [stderr]    Compiling linked-hash-map v0.5.6
[INFO] [stderr]    Compiling indexmap v1.9.3
[INFO] [stderr]    Compiling bv v0.10.0
[INFO] [stderr]    Compiling eval v0.4.3
[INFO] [stderr]    Compiling yaml-rust v0.4.5
[INFO] [stderr]    Compiling serde_yaml v0.8.26
[INFO] [stderr]    Compiling tuneutils v0.1.1 (/opt/rustwide/workdir)
[INFO] [stdout] error: derive helper attribute is used before it is introduced
[INFO] [stdout]   --> src/definition/mod.rs:13:3
[INFO] [stdout]    |
[INFO] [stdout] 13 | #[serde(rename_all = "lowercase")]
[INFO] [stdout]    |   ^^^^^
[INFO] [stdout] 14 | #[derive(Debug, Serialize, Deserialize)]
[INFO] [stdout]    |                 --------- the attribute is introduced here
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79202 <https://github.com/rust-lang/rust/issues/79202>
[INFO] [stdout]    = note: `#[deny(legacy_derive_helpers)]` (part of `#[deny(future_incompatible)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: derive helper attribute is used before it is introduced
[INFO] [stdout]   --> src/definition/mod.rs:26:3
[INFO] [stdout]    |
[INFO] [stdout] 26 | #[serde(rename_all = "lowercase")]
[INFO] [stdout]    |   ^^^^^
[INFO] [stdout] 27 | #[derive(Debug, Serialize, Deserialize, Clone, Copy)]
[INFO] [stdout]    |                 --------- the attribute is introduced here
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79202 <https://github.com/rust-lang/rust/issues/79202>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: derive helper attribute is used before it is introduced
[INFO] [stdout]   --> src/definition/mod.rs:39:3
[INFO] [stdout]    |
[INFO] [stdout] 39 | #[serde(rename_all = "lowercase")]
[INFO] [stdout]    |   ^^^^^
[INFO] [stdout] 40 | #[derive(Debug, Serialize, Deserialize, Clone, Copy)]
[INFO] [stdout]    |                 --------- the attribute is introduced here
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79202 <https://github.com/rust-lang/rust/issues/79202>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: derive helper attribute is used before it is introduced
[INFO] [stdout]   --> src/definition/mod.rs:52:3
[INFO] [stdout]    |
[INFO] [stdout] 52 | #[serde(rename_all = "lowercase")]
[INFO] [stdout]    |   ^^^^^
[INFO] [stdout] 53 | #[derive(Debug, Serialize, Deserialize, Clone, Copy)]
[INFO] [stdout]    |                 --------- the attribute is introduced here
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79202 <https://github.com/rust-lang/rust/issues/79202>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: derive helper attribute is used before it is introduced
[INFO] [stdout]   --> src/definition/mod.rs:59:3
[INFO] [stdout]    |
[INFO] [stdout] 59 | #[serde(rename_all = "lowercase")]
[INFO] [stdout]    |   ^^^^^
[INFO] [stdout] 60 | #[derive(Debug, Serialize, Deserialize, Clone, Copy)]
[INFO] [stdout]    |                 --------- the attribute is introduced here
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79202 <https://github.com/rust-lang/rust/issues/79202>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `IsotpCan`
[INFO] [stdout]  --> src/link.rs:9:33
[INFO] [stdout]   |
[INFO] [stdout] 9 |         isotp::{self, IsotpInterface, IsotpCan},
[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: `self`
[INFO] [stdout]  --> src/authenticator.rs:2:19
[INFO] [stdout]   |
[INFO] [stdout] 2 |     protocols::uds::{self, UdsInterface},
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]  --> src/rom/mod.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::path::{Path, PathBuf};
[INFO] [stdout]   |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `Mutex`
[INFO] [stdout]  --> src/datalog.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::sync::{Arc, Mutex};
[INFO] [stdout]   |                 ^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/diagnostics.rs:29:21
[INFO] [stdout]    |
[INFO] [stdout] 29 |         let second_char = ((self.raw[0] & 0x30) >> 4);
[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] 29 -         let second_char = ((self.raw[0] & 0x30) >> 4);
[INFO] [stdout] 29 +         let second_char = (self.raw[0] & 0x30) >> 4 ;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/protocols/can/mod.rs:79:20
[INFO] [stdout]    |
[INFO] [stdout] 79 |     interface: &'a CanInterface,
[INFO] [stdout]    |                    ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 79 |     interface: &'a dyn CanInterface,
[INFO] [stdout]    |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/protocols/isotp/can.rs:13:13
[INFO] [stdout]    |
[INFO] [stdout] 13 |     can: Rc<CanInterface>,
[INFO] [stdout]    |             ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/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] 13 |     can: Rc<dyn CanInterface>,
[INFO] [stdout]    |             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/protocols/uds/isotp.rs:10:19
[INFO] [stdout]    |
[INFO] [stdout] 10 |     interface: Rc<IsotpInterface>,
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/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] 10 |     interface: Rc<dyn IsotpInterface>,
[INFO] [stdout]    |                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/download/mazda.rs:14:16
[INFO] [stdout]    |
[INFO] [stdout] 14 |     interface: Rc<UdsInterface>,
[INFO] [stdout]    |                   ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/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] 14 |     interface: Rc<dyn UdsInterface>,
[INFO] [stdout]    |                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/download/mod.rs:9:35
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub callback: Option<Box<RefCell<FnMut(f32)>>>,
[INFO] [stdout]   |                                      ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/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] 9 |     pub callback: Option<Box<RefCell<dyn FnMut(f32)>>>,
[INFO] [stdout]   |                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/flash/mazda.rs:16:16
[INFO] [stdout]    |
[INFO] [stdout] 16 |     interface: Rc<UdsInterface>,
[INFO] [stdout]    |                   ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/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] 16 |     interface: Rc<dyn UdsInterface>,
[INFO] [stdout]    |                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/flash/mod.rs:13:35
[INFO] [stdout]    |
[INFO] [stdout] 13 |     pub callback: Option<Box<RefCell<FnMut(f32)>>>,
[INFO] [stdout]    |                                      ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/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] 13 |     pub callback: Option<Box<RefCell<dyn FnMut(f32)>>>,
[INFO] [stdout]    |                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/link.rs:176:12
[INFO] [stdout]     |
[INFO] [stdout] 176 |     link: Box<DataLink>,
[INFO] [stdout]     |               ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/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] 176 |     link: Box<dyn DataLink>,
[INFO] [stdout]     |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/rom/tune.rs:219:12
[INFO] [stdout]     |
[INFO] [stdout] 219 |     data: Box<TableDataTrait>,
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/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] 219 |     data: Box<dyn TableDataTrait>,
[INFO] [stdout]     |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/datalog.rs:26:29
[INFO] [stdout]    |
[INFO] [stdout] 26 |     callbacks: Vec<Box<RefCell<FnMut(&Entry, NumVariant)>>>,
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/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] 26 |     callbacks: Vec<Box<RefCell<dyn FnMut(&Entry, NumVariant)>>>,
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/datalog.rs:85:16
[INFO] [stdout]    |
[INFO] [stdout] 85 |     interface: Rc<UdsInterface>,
[INFO] [stdout]    |                   ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/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] 85 |     interface: Rc<dyn UdsInterface>,
[INFO] [stdout]    |                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/diagnostics.rs:10:16
[INFO] [stdout]    |
[INFO] [stdout] 10 |     interface: Rc<UdsInterface>,
[INFO] [stdout]    |                   ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/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] 10 |     interface: Rc<dyn UdsInterface>,
[INFO] [stdout]    |                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/rom/tune.rs:194:96
[INFO] [stdout]     |
[INFO] [stdout] 194 | fn deserialize_table<O: ByteOrder>(datatype: DataType, data: &[u8], size: usize) -> Result<Box<TableDataTrait>> {
[INFO] [stdout]     |                                                                                                ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/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] 194 | fn deserialize_table<O: ByteOrder>(datatype: DataType, data: &[u8], size: usize) -> Result<Box<dyn TableDataTrait>> {
[INFO] [stdout]     |                                                                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/link.rs:24:46
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn can(&self, baudrate: usize) -> Option<Rc<CanInterface>>;
[INFO] [stdout]    |                                                 ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/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 |     fn can(&self, baudrate: usize) -> Option<Rc<dyn CanInterface>>;
[INFO] [stdout]    |                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/link.rs:27:56
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn isotp(&self, options: isotp::Options) -> Option<Rc<IsotpInterface>>;
[INFO] [stdout]    |                                                           ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/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] 27 |     fn isotp(&self, options: isotp::Options) -> Option<Rc<dyn IsotpInterface>>;
[INFO] [stdout]    |                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/link.rs:77:33
[INFO] [stdout]    |
[INFO] [stdout] 77 |     fn create(&self) -> Result<Box<DataLink>>;
[INFO] [stdout]    |                                    ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/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] 77 |     fn create(&self) -> Result<Box<dyn DataLink>>;
[INFO] [stdout]    |                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/link.rs:131:40
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub fn discover_datalinks() -> Vec<Box<DataLinkEntry>> {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/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] 131 | pub fn discover_datalinks() -> Vec<Box<dyn DataLinkEntry>> {
[INFO] [stdout]     |                                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/protocols/isotp/can.rs:25:24
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub fn new(can: Rc<CanInterface>, options: Options) -> IsotpCan {
[INFO] [stdout]    |                        ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/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] 25 |     pub fn new(can: Rc<dyn CanInterface>, options: Options) -> IsotpCan {
[INFO] [stdout]    |                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/protocols/uds/isotp.rs:14:30
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub fn new(interface: Rc<IsotpInterface>) -> UdsIsotp {
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/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] 14 |     pub fn new(interface: Rc<dyn IsotpInterface>) -> UdsIsotp {
[INFO] [stdout]    |                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/download/mazda.rs:20:27
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub fn new(interface: Rc<UdsInterface>, key: &str, download_size: usize) -> Mazda1Downloader {
[INFO] [stdout]    |                              ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/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] 20 |     pub fn new(interface: Rc<dyn UdsInterface>, key: &str, download_size: usize) -> Mazda1Downloader {
[INFO] [stdout]    |                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/flash/mazda.rs:21:27
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn new(interface: Rc<UdsInterface>, key: &str) -> Mazda1Flasher {
[INFO] [stdout]    |                              ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/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] 21 |     pub fn new(interface: Rc<dyn UdsInterface>, key: &str) -> Mazda1Flasher {
[INFO] [stdout]    |                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/link.rs:181:23
[INFO] [stdout]     |
[INFO] [stdout] 181 |     pub fn new(link: Box<DataLink>, platform: Rc<definition::Main>) -> PlatformLink {
[INFO] [stdout]     |                          ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/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] 181 |     pub fn new(link: Box<dyn DataLink>, platform: Rc<definition::Main>) -> PlatformLink {
[INFO] [stdout]     |                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/link.rs:202:35
[INFO] [stdout]     |
[INFO] [stdout] 202 |     pub fn isotp(&self) -> Option<Rc<IsotpInterface>> {
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/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] 202 |     pub fn isotp(&self) -> Option<Rc<dyn IsotpInterface>> {
[INFO] [stdout]     |                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/link.rs:207:33
[INFO] [stdout]     |
[INFO] [stdout] 207 |     pub fn uds(&self) -> Option<Rc<UdsInterface>> {
[INFO] [stdout]     |                                    ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/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] 207 |     pub fn uds(&self) -> Option<Rc<dyn UdsInterface>> {
[INFO] [stdout]     |                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/link.rs:215:41
[INFO] [stdout]     |
[INFO] [stdout] 215 |     pub fn downloader(&self) -> Option<Box<Downloader>> {
[INFO] [stdout]     |                                            ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/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] 215 |     pub fn downloader(&self) -> Option<Box<dyn Downloader>> {
[INFO] [stdout]     |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/link.rs:228:38
[INFO] [stdout]     |
[INFO] [stdout] 228 |     pub fn flasher(&self) -> Option<Box<Flasher>> {
[INFO] [stdout]     |                                         ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/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] 228 |     pub fn flasher(&self) -> Option<Box<dyn Flasher>> {
[INFO] [stdout]     |                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/link.rs:241:41
[INFO] [stdout]     |
[INFO] [stdout] 241 |     pub fn datalogger(&self) -> Option<Box<datalog::Logger>> {
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/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] 241 |     pub fn datalogger(&self) -> Option<Box<dyn datalog::Logger>> {
[INFO] [stdout]     |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/authenticator.rs:12:52
[INFO] [stdout]    |
[INFO] [stdout] 12 |     pub fn authenticate(&self, key: &str, interface: &UdsInterface, session_type: u8) -> Result<()> {
[INFO] [stdout]    |                                                       ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/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] 12 |     pub fn authenticate(&self, key: &str, interface: &dyn UdsInterface, session_type: u8) -> Result<()> {
[INFO] [stdout]    |                                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/datalog.rs:91:27
[INFO] [stdout]    |
[INFO] [stdout] 91 |     pub fn new(interface: Rc<UdsInterface>) -> UdsLogger {
[INFO] [stdout]    |                              ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/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] 91 |     pub fn new(interface: Rc<dyn UdsInterface>) -> UdsLogger {
[INFO] [stdout]    |                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/diagnostics.rs:37:27
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub fn new(interface: Rc<UdsInterface>) -> UdsScanner {
[INFO] [stdout]    |                              ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/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] 37 |     pub fn new(interface: Rc<dyn UdsInterface>) -> UdsScanner {
[INFO] [stdout]    |                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/error.rs:81:13
[INFO] [stdout]    |
[INFO] [stdout] 81 |             _ => write!(f, "unimplemented: {:?}", *self),
[INFO] [stdout]    |             ^ no value can reach this
[INFO] [stdout]    |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]   --> src/error.rs:81:13
[INFO] [stdout]    |
[INFO] [stdout] 60 |             Error::Io(ref err) => write!(f, "IO error: {}", err),
[INFO] [stdout]    |             ------------------ matches some of the same values
[INFO] [stdout] 61 |             Error::Eval(ref err) => write!(f, "Eval error: {}", err),
[INFO] [stdout]    |             -------------------- matches some of the same values
[INFO] [stdout] 62 |             Error::InvalidConnection => write!(f, "Invalid connection"),
[INFO] [stdout]    |             ------------------------ matches some of the same values
[INFO] [stdout] 63 |             Error::InvalidResponse => write!(f, "Invalid response"),
[INFO] [stdout]    |             ---------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 81 |             _ => write!(f, "unimplemented: {:?}", *self),
[INFO] [stdout]    |             ^ ...and 15 other patterns collectively make this unreachable
[INFO] [stdout]    = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/link.rs:132:6
[INFO] [stdout]     |
[INFO] [stdout] 132 |     let mut links = Vec::new();
[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: unused variable: `r`
[INFO] [stdout]   --> src/authenticator.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 |             for r in (1..=8).rev() {
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_r`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `index`, `data`, and `data_length` are never read
[INFO] [stdout]    --> src/protocols/isotp/mod.rs:101:5
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub struct ConsecutiveFrame {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout] 101 |     index: u8,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 102 |     data: [u8; 7],
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 103 |     data_length: u8,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_type` is never used
[INFO] [stdout]    --> src/protocols/isotp/mod.rs:184:8
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl Frame {
[INFO] [stdout]     | ---------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 184 |     fn get_type(&self) -> Option<FrameType> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/protocols/can/mod.rs:44:18
[INFO] [stdout]    |
[INFO] [stdout] 44 |     fn recv_iter(&self, timeout: time::Duration) -> RecvIterator;
[INFO] [stdout]    |                  ^^^^^ the lifetime is elided here  ^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 44 |     fn recv_iter(&self, timeout: time::Duration) -> RecvIterator<'_>;
[INFO] [stdout]    |                                                                 ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/protocols/can/mod.rs:70:18
[INFO] [stdout]    |
[INFO] [stdout] 70 |     fn recv_iter(&self, timeout: time::Duration) -> RecvIterator {
[INFO] [stdout]    |                  ^^^^^ the lifetime is elided here  ^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 70 |     fn recv_iter(&self, timeout: time::Duration) -> RecvIterator<'_> {
[INFO] [stdout]    |                                                                 ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/protocols/isotp/can.rs:87:20
[INFO] [stdout]    |
[INFO] [stdout] 87 |     fn new(buffer: &[u8]) -> SendPacket {
[INFO] [stdout]    |                    ^^^^^     ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                    |
[INFO] [stdout]    |                    the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 87 |     fn new(buffer: &[u8]) -> SendPacket<'_> {
[INFO] [stdout]    |                                        ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/flash/mod.rs:17:34
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new(offset: usize, data: &[u8]) -> FlashData {
[INFO] [stdout]    |                                     ^^^^^     ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                     |
[INFO] [stdout]    |                                     the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new(offset: usize, data: &[u8]) -> FlashData<'_> {
[INFO] [stdout]    |                                                        ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `tuneutils` (lib) due to 10 previous errors; 44 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "838c53f317a7687d1bafa2d0e116fe1297a638d04a5797efd2f845f3456a90eb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "838c53f317a7687d1bafa2d0e116fe1297a638d04a5797efd2f845f3456a90eb", kill_on_drop: false }`
[INFO] [stdout] 838c53f317a7687d1bafa2d0e116fe1297a638d04a5797efd2f845f3456a90eb
