[INFO] cloning repository https://github.com/trrichard/isomidi
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/trrichard/isomidi" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftrrichard%2Fisomidi", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftrrichard%2Fisomidi'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 2043c6712da016c89a0183b4d6ad6b7ed2d6cbcc
[INFO] checking trrichard/isomidi against master#03c609abb6638f9d7f49f34326d4137d07f5cd61 for pr-155945
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftrrichard%2Fisomidi" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/trrichard/isomidi
[INFO] finished tweaking git repo https://github.com/trrichard/isomidi
[INFO] tweaked toml for git repo https://github.com/trrichard/isomidi written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/trrichard/isomidi on toolchain 03c609abb6638f9d7f49f34326d4137d07f5cd61
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+03c609abb6638f9d7f49f34326d4137d07f5cd61" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/trrichard/isomidi 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" "+03c609abb6638f9d7f49f34326d4137d07f5cd61" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded sdl2-sys v0.27.0
[INFO] [stderr]   Downloaded num-traits v0.1.36
[INFO] [stderr]   Downloaded num v0.1.36
[INFO] [stderr]   Downloaded num-iter v0.1.32
[INFO] [stderr]   Downloaded pkg-config v0.3.8
[INFO] [stderr]   Downloaded num-integer v0.1.32
[INFO] [stderr]   Downloaded sdl2 v0.27.1
[INFO] [stderr]   Downloaded winmm-sys v0.2.0
[INFO] [stderr]   Downloaded memalloc v0.1.0
[INFO] [stderr]   Downloaded bitflags v0.3.3
[INFO] [stderr]   Downloaded alsa-sys v0.0.8
[INFO] [stderr]   Downloaded lazy_static v0.2.2
[INFO] [stderr]   Downloaded midir v0.2.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+03c609abb6638f9d7f49f34326d4137d07f5cd61" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 122f0433ad141a52ceb7c13af0473ead8af9735aa1dc6929250124679eaa9e95
[INFO] running `Command { std: "docker" "start" "-a" "122f0433ad141a52ceb7c13af0473ead8af9735aa1dc6929250124679eaa9e95", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "122f0433ad141a52ceb7c13af0473ead8af9735aa1dc6929250124679eaa9e95", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "122f0433ad141a52ceb7c13af0473ead8af9735aa1dc6929250124679eaa9e95", kill_on_drop: false }`
[INFO] [stdout] 122f0433ad141a52ceb7c13af0473ead8af9735aa1dc6929250124679eaa9e95
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+03c609abb6638f9d7f49f34326d4137d07f5cd61" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 3a71232a27eb26720be49a124ea3aab27cb3bf4b5f8e2fa57ebf30076197658f
[INFO] running `Command { std: "docker" "start" "-a" "3a71232a27eb26720be49a124ea3aab27cb3bf4b5f8e2fa57ebf30076197658f", kill_on_drop: false }`
[INFO] [stderr] warning: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024`
[INFO] [stderr]     Checking libc v0.2.18
[INFO] [stderr]    Compiling pkg-config v0.3.8
[INFO] [stderr]     Checking num-traits v0.1.36
[INFO] [stderr]    Compiling sdl2-sys v0.27.0
[INFO] [stderr]     Checking memalloc v0.1.0
[INFO] [stderr]     Checking lazy_static v0.2.2
[INFO] [stderr]     Checking bitflags v0.3.3
[INFO] [stderr]    Compiling alsa-sys v0.0.8
[INFO] [stderr]     Checking rand v0.3.15
[INFO] [stderr]     Checking midir v0.2.0
[INFO] [stderr]     Checking num-integer v0.1.32
[INFO] [stderr]     Checking num-iter v0.1.32
[INFO] [stderr]     Checking num v0.1.36
[INFO] [stderr]     Checking sdl2 v0.27.1
[INFO] [stderr]     Checking isomidi v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `keyboard::HexKey`
[INFO] [stdout]   --> src/main.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use keyboard::HexKey;
[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: `keyboard::JammerKeyboard`
[INFO] [stdout]   --> src/main.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use keyboard::JammerKeyboard;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/main.rs:247:13
[INFO] [stdout]     |
[INFO] [stdout] 247 |             try!(renderer.filled_polygon(&xs, &ys, polygon_color));
[INFO] [stdout]     |             ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/main.rs:248:13
[INFO] [stdout]     |
[INFO] [stdout] 248 |             try!(renderer.polygon(&xs, &ys, config.colors.line_color));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/main.rs:259:13
[INFO] [stdout]     |
[INFO] [stdout] 259 |             try!(renderer.copy(&mut texture, None, Some(target)));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/main.rs:327:20
[INFO] [stdout]     |
[INFO] [stdout] 327 |     let midi_out = try!(MidiOutput::new("Isomidi"));
[INFO] [stdout]     |                    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/main.rs:336:8
[INFO] [stdout]     |
[INFO] [stdout] 336 |     Ok(try!(midi_out.connect(out_port, "isomidi").map_err(|e| e.kind())))
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:218:20
[INFO] [stdout]     |
[INFO] [stdout] 218 |         keyboard: &Keyboard,
[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/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] 218 |         keyboard: &dyn Keyboard,
[INFO] [stdout]     |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:272:60
[INFO] [stdout]     |
[INFO] [stdout] 272 |     fn start_note(&mut self, addr: HexAddr, keyboard: &mut Keyboard) {
[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/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] 272 |     fn start_note(&mut self, addr: HexAddr, keyboard: &mut dyn Keyboard) {
[INFO] [stdout]     |                                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:281:58
[INFO] [stdout]     |
[INFO] [stdout] 281 |     fn end_note(&mut self, addr: HexAddr, keyboard: &mut Keyboard) {
[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/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] 281 |     fn end_note(&mut self, addr: HexAddr, keyboard: &mut dyn Keyboard) {
[INFO] [stdout]     |                                                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:290:67
[INFO] [stdout]     |
[INFO] [stdout] 290 |     fn on_press(&mut self, oid: i64, x:f32, y:f32, keyboard: &mut Keyboard) {
[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/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] 290 |     fn on_press(&mut self, oid: i64, x:f32, y:f32, keyboard: &mut dyn Keyboard) {
[INFO] [stdout]     |                                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:295:55
[INFO] [stdout]     |
[INFO] [stdout] 295 |     fn on_release(&mut self, oid: i64, keyboard: &mut Keyboard) {
[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/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] 295 |     fn on_release(&mut self, oid: i64, keyboard: &mut dyn Keyboard) {
[INFO] [stdout]     |                                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:301:66
[INFO] [stdout]     |
[INFO] [stdout] 301 |     fn on_move(&mut self, oid: i64, x:f32, y:f32, keyboard: &mut Keyboard) {
[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/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] 301 |     fn on_move(&mut self, oid: i64, x:f32, y:f32, keyboard: &mut dyn Keyboard) {
[INFO] [stdout]     |                                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:325:61
[INFO] [stdout]     |
[INFO] [stdout] 325 | fn get_midi_connection() -> Result<MidiOutputConnection,Box<Error>> {
[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/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] 325 | fn get_midi_connection() -> Result<MidiOutputConnection,Box<dyn Error>> {
[INFO] [stdout]     |                                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:414:17
[INFO] [stdout]     |
[INFO] [stdout] 414 |             let mut window = renderer.window_mut().unwrap();
[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: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:420:13
[INFO] [stdout]     |
[INFO] [stdout] 420 |         let mut config = Config {
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `width`
[INFO] [stdout]    --> src/main.rs:490:55
[INFO] [stdout]     |
[INFO] [stdout] 490 | ...                   WindowEvent::SizeChanged (width, height) => {
[INFO] [stdout]     |                                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_width`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `height`
[INFO] [stdout]    --> src/main.rs:490:62
[INFO] [stdout]     |
[INFO] [stdout] 490 | ...                   WindowEvent::SizeChanged (width, height) => {
[INFO] [stdout]     |                                                        ^^^^^^ help: if this is intentional, prefix it with an underscore: `_height`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `width` and `height` are never read
[INFO] [stdout]    --> src/main.rs:187:5
[INFO] [stdout]     |
[INFO] [stdout] 182 | struct Config {
[INFO] [stdout]     |        ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 187 |     width: u32,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 188 |     height: u32,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `JammerKeyboard` is never constructed
[INFO] [stdout]   --> src/keyboard.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct JammerKeyboard {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `keyboard::HexKey`
[INFO] [stdout]   --> src/main.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use keyboard::HexKey;
[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: `keyboard::JammerKeyboard`
[INFO] [stdout]   --> src/main.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use keyboard::JammerKeyboard;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/main.rs:247:13
[INFO] [stdout]     |
[INFO] [stdout] 247 |             try!(renderer.filled_polygon(&xs, &ys, polygon_color));
[INFO] [stdout]     |             ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/main.rs:248:13
[INFO] [stdout]     |
[INFO] [stdout] 248 |             try!(renderer.polygon(&xs, &ys, config.colors.line_color));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/main.rs:259:13
[INFO] [stdout]     |
[INFO] [stdout] 259 |             try!(renderer.copy(&mut texture, None, Some(target)));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/main.rs:327:20
[INFO] [stdout]     |
[INFO] [stdout] 327 |     let midi_out = try!(MidiOutput::new("Isomidi"));
[INFO] [stdout]     |                    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/main.rs:336:8
[INFO] [stdout]     |
[INFO] [stdout] 336 |     Ok(try!(midi_out.connect(out_port, "isomidi").map_err(|e| e.kind())))
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:218:20
[INFO] [stdout]     |
[INFO] [stdout] 218 |         keyboard: &Keyboard,
[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/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] 218 |         keyboard: &dyn Keyboard,
[INFO] [stdout]     |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:272:60
[INFO] [stdout]     |
[INFO] [stdout] 272 |     fn start_note(&mut self, addr: HexAddr, keyboard: &mut Keyboard) {
[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/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] 272 |     fn start_note(&mut self, addr: HexAddr, keyboard: &mut dyn Keyboard) {
[INFO] [stdout]     |                                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:281:58
[INFO] [stdout]     |
[INFO] [stdout] 281 |     fn end_note(&mut self, addr: HexAddr, keyboard: &mut Keyboard) {
[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/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] 281 |     fn end_note(&mut self, addr: HexAddr, keyboard: &mut dyn Keyboard) {
[INFO] [stdout]     |                                                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:290:67
[INFO] [stdout]     |
[INFO] [stdout] 290 |     fn on_press(&mut self, oid: i64, x:f32, y:f32, keyboard: &mut Keyboard) {
[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/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] 290 |     fn on_press(&mut self, oid: i64, x:f32, y:f32, keyboard: &mut dyn Keyboard) {
[INFO] [stdout]     |                                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:295:55
[INFO] [stdout]     |
[INFO] [stdout] 295 |     fn on_release(&mut self, oid: i64, keyboard: &mut Keyboard) {
[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/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] 295 |     fn on_release(&mut self, oid: i64, keyboard: &mut dyn Keyboard) {
[INFO] [stdout]     |                                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:301:66
[INFO] [stdout]     |
[INFO] [stdout] 301 |     fn on_move(&mut self, oid: i64, x:f32, y:f32, keyboard: &mut Keyboard) {
[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/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] 301 |     fn on_move(&mut self, oid: i64, x:f32, y:f32, keyboard: &mut dyn Keyboard) {
[INFO] [stdout]     |                                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:325:61
[INFO] [stdout]     |
[INFO] [stdout] 325 | fn get_midi_connection() -> Result<MidiOutputConnection,Box<Error>> {
[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/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] 325 | fn get_midi_connection() -> Result<MidiOutputConnection,Box<dyn Error>> {
[INFO] [stdout]     |                                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:414:17
[INFO] [stdout]     |
[INFO] [stdout] 414 |             let mut window = renderer.window_mut().unwrap();
[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: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:420:13
[INFO] [stdout]     |
[INFO] [stdout] 420 |         let mut config = Config {
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `width`
[INFO] [stdout]    --> src/main.rs:490:55
[INFO] [stdout]     |
[INFO] [stdout] 490 | ...                   WindowEvent::SizeChanged (width, height) => {
[INFO] [stdout]     |                                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_width`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `height`
[INFO] [stdout]    --> src/main.rs:490:62
[INFO] [stdout]     |
[INFO] [stdout] 490 | ...                   WindowEvent::SizeChanged (width, height) => {
[INFO] [stdout]     |                                                        ^^^^^^ help: if this is intentional, prefix it with an underscore: `_height`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `width` and `height` are never read
[INFO] [stdout]    --> src/main.rs:187:5
[INFO] [stdout]     |
[INFO] [stdout] 182 | struct Config {
[INFO] [stdout]     |        ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 187 |     width: u32,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 188 |     height: u32,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `JammerKeyboard` is never constructed
[INFO] [stdout]   --> src/keyboard.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct JammerKeyboard {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.68s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: bitflags v0.7.0
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 4`
[INFO] running `Command { std: "docker" "inspect" "3a71232a27eb26720be49a124ea3aab27cb3bf4b5f8e2fa57ebf30076197658f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3a71232a27eb26720be49a124ea3aab27cb3bf4b5f8e2fa57ebf30076197658f", kill_on_drop: false }`
[INFO] [stdout] 3a71232a27eb26720be49a124ea3aab27cb3bf4b5f8e2fa57ebf30076197658f
