[INFO] cloning repository https://github.com/flowb/loom
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/flowb/loom" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fflowb%2Floom", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fflowb%2Floom'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] f653f57a99da3c10de1c3e4550d359a4c821cb22
[INFO] checking flowb/loom against try#6757d700f93f6d16c8b39cf79e96b019bd570e7d for pr-155299-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fflowb%2Floom" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/flowb/loom
[INFO] finished tweaking git repo https://github.com/flowb/loom
[INFO] tweaked toml for git repo https://github.com/flowb/loom written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/flowb/loom on toolchain 6757d700f93f6d16c8b39cf79e96b019bd570e7d
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+6757d700f93f6d16c8b39cf79e96b019bd570e7d" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/flowb/loom 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" "+6757d700f93f6d16c8b39cf79e96b019bd570e7d" "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] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/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" "+6757d700f93f6d16c8b39cf79e96b019bd570e7d" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] cce340e2c20e72ccae3a16c206de827263c162b96190f049c3eb5e537b408b55
[INFO] running `Command { std: "docker" "start" "-a" "cce340e2c20e72ccae3a16c206de827263c162b96190f049c3eb5e537b408b55", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "cce340e2c20e72ccae3a16c206de827263c162b96190f049c3eb5e537b408b55", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "cce340e2c20e72ccae3a16c206de827263c162b96190f049c3eb5e537b408b55", kill_on_drop: false }`
[INFO] [stdout] cce340e2c20e72ccae3a16c206de827263c162b96190f049c3eb5e537b408b55
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/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" "+6757d700f93f6d16c8b39cf79e96b019bd570e7d" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 23baecfed8a8a6cfbba5e22e688c60c730b79bd2a22b2e6ae8b3d5fa83948ac5
[INFO] running `Command { std: "docker" "start" "-a" "23baecfed8a8a6cfbba5e22e688c60c730b79bd2a22b2e6ae8b3d5fa83948ac5", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.94
[INFO] [stderr]    Compiling libc v0.2.170
[INFO] [stderr]    Compiling xml-rs v0.8.25
[INFO] [stderr]     Checking once_cell v1.21.0
[INFO] [stderr]     Checking smallvec v1.14.0
[INFO] [stderr]     Checking log v0.4.26
[INFO] [stderr]    Compiling memoffset v0.6.5
[INFO] [stderr]     Checking libloading v0.8.6
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]     Checking dlib v0.5.2
[INFO] [stderr]     Checking concurrent-queue v2.5.0
[INFO] [stderr]    Compiling wayland-sys v0.29.5
[INFO] [stderr]    Compiling hashbrown v0.15.2
[INFO] [stderr]     Checking simd-adler32 v0.3.7
[INFO] [stderr]    Compiling cfg_aliases v0.1.1
[INFO] [stderr]    Compiling winnow v0.5.40
[INFO] [stderr]    Compiling toml_datetime v0.6.8
[INFO] [stderr]    Compiling slotmap v1.0.7
[INFO] [stderr]     Checking event-listener v2.5.3
[INFO] [stderr]     Checking litemap v0.7.5
[INFO] [stderr]    Compiling zerocopy v0.8.23
[INFO] [stderr]     Checking ttf-parser v0.25.1
[INFO] [stderr]     Checking miniz_oxide v0.8.5
[INFO] [stderr]    Compiling indexmap v2.8.0
[INFO] [stderr]    Compiling quote v1.0.39
[INFO] [stderr]    Compiling syn v2.0.100
[INFO] [stderr]    Compiling wayland-scanner v0.29.5
[INFO] [stderr]     Checking event-listener v5.4.0
[INFO] [stderr]    Compiling memchr v2.7.4
[INFO] [stderr]     Checking ab_glyph_rasterizer v0.1.8
[INFO] [stderr]    Compiling io-lifetimes v1.0.11
[INFO] [stderr]     Checking nix v0.24.3
[INFO] [stderr]    Compiling aho-corasick v1.1.3
[INFO] [stderr]     Checking nix v0.25.1
[INFO] [stderr]    Compiling wayland-client v0.29.5
[INFO] [stderr]    Compiling toml_edit v0.19.15
[INFO] [stderr]     Checking owned_ttf_parser v0.25.0
[INFO] [stderr]    Compiling wayland-protocols v0.29.5
[INFO] [stderr]     Checking wayland-commons v0.29.5
[INFO] [stderr]     Checking ab_glyph v0.2.29
[INFO] [stderr]     Checking getrandom v0.2.15
[INFO] [stderr]    Compiling gl_generator v0.14.0
[INFO] [stderr]     Checking event-listener-strategy v0.5.3
[INFO] [stderr]     Checking flate2 v1.1.0
[INFO] [stderr]     Checking fdeflate v0.3.7
[INFO] [stderr]     Checking futures-lite v2.6.0
[INFO] [stderr]    Compiling proc-macro-crate v1.3.1
[INFO] [stderr]    Compiling polling v2.8.0
[INFO] [stderr]    Compiling memoffset v0.7.1
[INFO] [stderr]    Compiling smithay-client-toolkit v0.16.1
[INFO] [stderr]     Checking byteorder v1.5.0
[INFO] [stderr]     Checking waker-fn v1.2.0
[INFO] [stderr]     Checking vec_map v0.8.2
[INFO] [stderr]     Checking fastrand v1.9.0
[INFO] [stderr]    Compiling rustix v0.37.28
[INFO] [stderr]    Compiling regex-syntax v0.8.5
[INFO] [stderr]     Checking xcursor v0.3.8
[INFO] [stderr]     Checking wayland-cursor v0.29.5
[INFO] [stderr]     Checking futures-lite v1.13.0
[INFO] [stderr]     Checking piper v0.2.4
[INFO] [stderr]     Checking png v0.17.16
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling zvariant_utils v1.0.1
[INFO] [stderr]    Compiling synstructure v0.13.1
[INFO] [stderr]     Checking async-channel v2.3.1
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking memmap2 v0.5.10
[INFO] [stderr]     Checking async-lock v2.8.0
[INFO] [stderr]    Compiling async-io v1.13.0
[INFO] [stderr]    Compiling async-fs v1.6.0
[INFO] [stderr]     Checking linux-raw-sys v0.3.8
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking blocking v1.6.1
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking x11-dl v2.21.0
[INFO] [stderr]     Checking parking_lot_core v0.9.10
[INFO] [stderr]     Checking socket2 v0.4.10
[INFO] [stderr]     Checking tracing-core v0.1.33
[INFO] [stderr]    Compiling ahash v0.8.11
[INFO] [stderr]     Checking accesskit v0.11.2
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]    Compiling regex-automata v0.4.9
[INFO] [stderr]    Compiling zvariant_derive v3.15.2
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling bytemuck_derive v1.8.1
[INFO] [stderr]    Compiling yoke-derive v0.7.5
[INFO] [stderr]    Compiling zerovec-derive v0.10.3
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]     Checking yoke v0.7.5
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]     Checking bytemuck v1.22.0
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling icu_provider_macros v1.5.0
[INFO] [stderr]    Compiling enumflags2_derive v0.7.11
[INFO] [stderr]     Checking zerovec v0.10.4
[INFO] [stderr]     Checking tiny-skia-path v0.8.4
[INFO] [stderr]    Compiling tracing-attributes v0.1.28
[INFO] [stderr]     Checking tiny-skia v0.8.4
[INFO] [stderr]    Compiling regex v1.11.1
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking calloop v0.10.6
[INFO] [stderr]     Checking tinystr v0.7.6
[INFO] [stderr]     Checking icu_collections v1.5.0
[INFO] [stderr]     Checking icu_locid v1.5.0
[INFO] [stderr]    Compiling async-recursion v1.1.1
[INFO] [stderr]    Compiling zbus_macros v3.15.2
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]    Compiling async-trait v0.1.87
[INFO] [stderr]    Compiling serde_repr v0.1.20
[INFO] [stderr]    Compiling derivative v2.2.0
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]     Checking icu_provider v1.5.0
[INFO] [stderr]     Checking parking_lot v0.12.3
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking icu_locid_transform v1.5.0
[INFO] [stderr]     Checking nix v0.26.4
[INFO] [stderr]     Checking async-executor v1.13.1
[INFO] [stderr]    Compiling winit v0.28.7
[INFO] [stderr]     Checking icu_properties v1.5.1
[INFO] [stderr]     Checking xdg-home v1.3.0
[INFO] [stderr]     Checking async-broadcast v0.5.1
[INFO] [stderr]     Checking ordered-stream v0.2.0
[INFO] [stderr]     Checking zerocopy v0.7.35
[INFO] [stderr]     Checking raw-window-handle v0.5.2
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]     Checking ecolor v0.23.0
[INFO] [stderr]     Checking serde v1.0.219
[INFO] [stderr]     Checking emath v0.23.0
[INFO] [stderr]    Compiling atspi-macros v0.2.0
[INFO] [stderr]    Compiling glutin_egl_sys v0.5.1
[INFO] [stderr]    Compiling glutin_glx_sys v0.4.0
[INFO] [stderr]     Checking mio v0.8.11
[INFO] [stderr]     Checking instant v0.1.13
[INFO] [stderr]    Compiling wayland-sys v0.30.1
[INFO] [stderr]     Checking linux-raw-sys v0.4.15
[INFO] [stderr]     Checking bitflags v2.9.0
[INFO] [stderr]     Checking epaint v0.23.0
[INFO] [stderr]     Checking accesskit_consumer v0.15.2
[INFO] [stderr]     Checking form_urlencoded v1.2.1
[INFO] [stderr]     Checking async-channel v1.9.0
[INFO] [stderr]    Compiling glutin v0.30.10
[INFO] [stderr]    Compiling alsa-sys v0.3.1
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking icu_normalizer v1.5.0
[INFO] [stderr]     Checking x11rb-protocol v0.13.1
[INFO] [stderr]     Checking idna_adapter v1.2.0
[INFO] [stderr]     Checking idna v1.0.3
[INFO] [stderr]    Compiling glutin-winit v0.3.0
[INFO] [stderr]     Checking libloading v0.7.4
[INFO] [stderr]     Checking egui v0.23.0
[INFO] [stderr]     Checking url v2.5.4
[INFO] [stderr]     Checking enumflags2 v0.7.11
[INFO] [stderr]     Checking zvariant v3.15.2
[INFO] [stderr]     Checking webbrowser v0.8.15
[INFO] [stderr]    Compiling anyhow v1.0.97
[INFO] [stderr]     Checking web-time v0.2.4
[INFO] [stderr]     Checking glow v0.12.3
[INFO] [stderr]    Compiling serde_json v1.0.140
[INFO] [stderr]     Checking image v0.24.9
[INFO] [stderr]     Checking zbus_names v2.6.1
[INFO] [stderr]     Checking zbus v3.15.2
[INFO] [stderr]     Checking egui_glow v0.23.0
[INFO] [stderr]     Checking alsa v0.7.1
[INFO] [stderr]     Checking getrandom v0.3.1
[INFO] [stderr]     Checking is-terminal v0.4.16
[INFO] [stderr]     Checking termcolor v1.4.1
[INFO] [stderr]     Checking humantime v2.1.0
[INFO] [stderr]     Checking uuid v1.15.1
[INFO] [stderr]     Checking sctk-adwaita v0.5.4
[INFO] [stderr]     Checking smithay-clipboard v0.6.6
[INFO] [stderr]     Checking x11rb v0.13.1
[INFO] [stderr]     Checking midir v0.9.1
[INFO] [stderr]     Checking crossbeam-channel v0.5.14
[INFO] [stderr]     Checking env_logger v0.10.2
[INFO] [stderr]     Checking arboard v3.4.1
[INFO] [stderr]     Checking atspi v0.10.1
[INFO] [stderr]     Checking accesskit_unix v0.5.2
[INFO] [stderr]     Checking accesskit_winit v0.14.4
[INFO] [stderr]     Checking egui-winit v0.23.0
[INFO] [stderr]     Checking eframe v0.23.0
[INFO] [stderr]     Checking loom v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error: expected one of `!` or `::`, found `(`
[INFO] [stdout]   --> src/engine/clock_manager.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     todo!();
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     expected one of `!` or `::`
[INFO] [stdout]    |     in this macro invocation
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MediaContent` and `TrackId`
[INFO] [stdout]  --> src/controller/dispatcher.rs:9:29
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::model::{Project, TrackId, TrackType, ContainerId, MediaContent};
[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 imports: `MediaContent` and `TrackId`
[INFO] [stdout]   --> src/controller/mod.rs:14:29
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::model::{Project, TrackId, TrackType, ContainerId, MediaContent};
[INFO] [stdout]    |                             ^^^^^^^                          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `eframe::glow::TEXTURE_BORDER_COLOR`
[INFO] [stdout]  --> src/engine/playback.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use eframe::glow::TEXTURE_BORDER_COLOR;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::model::container::MediaContainer`
[INFO] [stdout]  --> src/engine/scheduler.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::model::container::MediaContainer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/model/track.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MidiOutputPort`
[INFO] [stdout]  --> src/output/midi.rs:3:25
[INFO] [stdout]   |
[INFO] [stdout] 3 | use midir::{MidiOutput, MidiOutputPort, MidiOutputConnection};
[INFO] [stdout]   |                         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `Mutex`
[INFO] [stdout]  --> src/output/system.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::sync::{Arc, Mutex};
[INFO] [stdout]   |                 ^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around match arm expression
[INFO] [stdout]   --> src/output/system.rs:46:61
[INFO] [stdout]    |
[INFO] [stdout] 46 |                     EndpointParameters::Midi { channel } => (channel.unwrap_or(0)),
[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] 46 -                     EndpointParameters::Midi { channel } => (channel.unwrap_or(0)),
[INFO] [stdout] 46 +                     EndpointParameters::Midi { channel } => channel.unwrap_or(0),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected one of `!` or `::`, found `(`
[INFO] [stdout]   --> src/engine/clock_manager.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     todo!();
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     expected one of `!` or `::`
[INFO] [stdout]    |     in this macro invocation
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MediaContent` and `TrackId`
[INFO] [stdout]  --> src/controller/dispatcher.rs:9:29
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::model::{Project, TrackId, TrackType, ContainerId, MediaContent};
[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 imports: `MediaContent` and `TrackId`
[INFO] [stdout]   --> src/controller/mod.rs:14:29
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::model::{Project, TrackId, TrackType, ContainerId, MediaContent};
[INFO] [stdout]    |                             ^^^^^^^                          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `eframe::glow::TEXTURE_BORDER_COLOR`
[INFO] [stdout]  --> src/engine/playback.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use eframe::glow::TEXTURE_BORDER_COLOR;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::model::container::MediaContainer`
[INFO] [stdout]  --> src/engine/scheduler.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::model::container::MediaContainer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/model/track.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MidiOutputPort`
[INFO] [stdout]  --> src/output/midi.rs:3:25
[INFO] [stdout]   |
[INFO] [stdout] 3 | use midir::{MidiOutput, MidiOutputPort, MidiOutputConnection};
[INFO] [stdout]   |                         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `Mutex`
[INFO] [stdout]  --> src/output/system.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::sync::{Arc, Mutex};
[INFO] [stdout]   |                 ^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around match arm expression
[INFO] [stdout]   --> src/output/system.rs:46:61
[INFO] [stdout]    |
[INFO] [stdout] 46 |                     EndpointParameters::Midi { channel } => (channel.unwrap_or(0)),
[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] 46 -                     EndpointParameters::Midi { channel } => (channel.unwrap_or(0)),
[INFO] [stdout] 46 +                     EndpointParameters::Midi { channel } => channel.unwrap_or(0),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut alsa_sys::_snd_seq` cannot be shared between threads safely
[INFO] [stdout]    --> src/output/midi.rs:38:25
[INFO] [stdout]     |
[INFO] [stdout]  38 | impl OutputEndpoint for MidiOutputEndpoint {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^ `*mut alsa_sys::_snd_seq` cannot be shared between threads safely
[INFO] [stdout]     |
[INFO] [stdout]     = help: within `MidiOutputEndpoint`, the trait `Sync` is not implemented for `*mut alsa_sys::_snd_seq`
[INFO] [stdout] note: required because it appears within the type `alsa::seq::Seq`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/alsa-0.7.1/src/seq.rs:24:12
[INFO] [stdout]     |
[INFO] [stdout]  24 | pub struct Seq(*mut alsa::snd_seq_t, cell::Cell<bool>);
[INFO] [stdout]     |            ^^^
[INFO] [stdout] note: required because it appears within the type `Option<alsa::seq::Seq>`
[INFO] [stdout]    --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/core/src/option.rs:600:9
[INFO] [stdout] note: required because it appears within the type `midir::backend::alsa::MidiOutputConnection`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/backend/alsa/mod.rs:439:12
[INFO] [stdout]     |
[INFO] [stdout] 439 | pub struct MidiOutputConnection {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `MidiOutputConnection`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/common.rs:269:12
[INFO] [stdout]     |
[INFO] [stdout] 269 | pub struct MidiOutputConnection {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `Option<MidiOutputConnection>`
[INFO] [stdout]    --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/core/src/option.rs:600:9
[INFO] [stdout] note: required because it appears within the type `MidiOutputEndpoint`
[INFO] [stdout]    --> src/output/midi.rs:9:12
[INFO] [stdout]     |
[INFO] [stdout]   9 | pub struct MidiOutputEndpoint {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `OutputEndpoint`
[INFO] [stdout]    --> src/output/endpoint.rs:6:34
[INFO] [stdout]     |
[INFO] [stdout]   6 | pub trait OutputEndpoint: Send + Sync {
[INFO] [stdout]     |                                  ^^^^ required by this bound in `OutputEndpoint`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `std::cell::Cell<bool>` cannot be shared between threads safely
[INFO] [stdout]    --> src/output/midi.rs:38:25
[INFO] [stdout]     |
[INFO] [stdout]  38 | impl OutputEndpoint for MidiOutputEndpoint {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^ `std::cell::Cell<bool>` cannot be shared between threads safely
[INFO] [stdout]     |
[INFO] [stdout]     = help: within `MidiOutputEndpoint`, the trait `Sync` is not implemented for `std::cell::Cell<bool>`
[INFO] [stdout]     = note: if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` or `std::sync::atomic::AtomicBool` instead
[INFO] [stdout] note: required because it appears within the type `alsa::seq::Seq`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/alsa-0.7.1/src/seq.rs:24:12
[INFO] [stdout]     |
[INFO] [stdout]  24 | pub struct Seq(*mut alsa::snd_seq_t, cell::Cell<bool>);
[INFO] [stdout]     |            ^^^
[INFO] [stdout] note: required because it appears within the type `Option<alsa::seq::Seq>`
[INFO] [stdout]    --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/core/src/option.rs:600:9
[INFO] [stdout] note: required because it appears within the type `midir::backend::alsa::MidiOutputConnection`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/backend/alsa/mod.rs:439:12
[INFO] [stdout]     |
[INFO] [stdout] 439 | pub struct MidiOutputConnection {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `MidiOutputConnection`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/common.rs:269:12
[INFO] [stdout]     |
[INFO] [stdout] 269 | pub struct MidiOutputConnection {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `Option<MidiOutputConnection>`
[INFO] [stdout]    --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/core/src/option.rs:600:9
[INFO] [stdout] note: required because it appears within the type `MidiOutputEndpoint`
[INFO] [stdout]    --> src/output/midi.rs:9:12
[INFO] [stdout]     |
[INFO] [stdout]   9 | pub struct MidiOutputEndpoint {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `OutputEndpoint`
[INFO] [stdout]    --> src/output/endpoint.rs:6:34
[INFO] [stdout]     |
[INFO] [stdout]   6 | pub trait OutputEndpoint: Send + Sync {
[INFO] [stdout]     |                                  ^^^^ required by this bound in `OutputEndpoint`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut alsa_sys::snd_midi_event` cannot be shared between threads safely
[INFO] [stdout]     --> src/output/midi.rs:38:25
[INFO] [stdout]      |
[INFO] [stdout]   38 | impl OutputEndpoint for MidiOutputEndpoint {
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^ `*mut alsa_sys::snd_midi_event` cannot be shared between threads safely
[INFO] [stdout]      |
[INFO] [stdout]      = help: within `MidiOutputEndpoint`, the trait `Sync` is not implemented for `*mut alsa_sys::snd_midi_event`
[INFO] [stdout] note: required because it appears within the type `alsa::seq::MidiEvent`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/alsa-0.7.1/src/seq.rs:1335:12
[INFO] [stdout]      |
[INFO] [stdout] 1335 | pub struct MidiEvent(*mut alsa::snd_midi_event_t);
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `midir::backend::alsa::helpers::EventEncoder`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/backend/alsa/mod.rs:77:16
[INFO] [stdout]      |
[INFO] [stdout]   77 |     pub struct EventEncoder {
[INFO] [stdout]      |                ^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `midir::backend::alsa::MidiOutputConnection`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/backend/alsa/mod.rs:439:12
[INFO] [stdout]      |
[INFO] [stdout]  439 | pub struct MidiOutputConnection {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `MidiOutputConnection`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/common.rs:269:12
[INFO] [stdout]      |
[INFO] [stdout]  269 | pub struct MidiOutputConnection {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `Option<MidiOutputConnection>`
[INFO] [stdout]     --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/core/src/option.rs:600:9
[INFO] [stdout] note: required because it appears within the type `MidiOutputEndpoint`
[INFO] [stdout]     --> src/output/midi.rs:9:12
[INFO] [stdout]      |
[INFO] [stdout]    9 | pub struct MidiOutputEndpoint {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `OutputEndpoint`
[INFO] [stdout]     --> src/output/endpoint.rs:6:34
[INFO] [stdout]      |
[INFO] [stdout]    6 | pub trait OutputEndpoint: Send + Sync {
[INFO] [stdout]      |                                  ^^^^ required by this bound in `OutputEndpoint`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut alsa_sys::_snd_seq_port_subscribe` cannot be shared between threads safely
[INFO] [stdout]    --> src/output/midi.rs:38:25
[INFO] [stdout]     |
[INFO] [stdout]  38 | impl OutputEndpoint for MidiOutputEndpoint {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^ `*mut alsa_sys::_snd_seq_port_subscribe` cannot be shared between threads safely
[INFO] [stdout]     |
[INFO] [stdout]     = help: within `MidiOutputEndpoint`, the trait `Sync` is not implemented for `*mut alsa_sys::_snd_seq_port_subscribe`
[INFO] [stdout] note: required because it appears within the type `alsa::seq::PortSubscribe`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/alsa-0.7.1/src/seq.rs:515:12
[INFO] [stdout]     |
[INFO] [stdout] 515 | pub struct PortSubscribe(*mut alsa::snd_seq_port_subscribe_t);
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `Option<alsa::seq::PortSubscribe>`
[INFO] [stdout]    --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/core/src/option.rs:600:9
[INFO] [stdout] note: required because it appears within the type `midir::backend::alsa::MidiOutputConnection`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/backend/alsa/mod.rs:439:12
[INFO] [stdout]     |
[INFO] [stdout] 439 | pub struct MidiOutputConnection {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `MidiOutputConnection`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/common.rs:269:12
[INFO] [stdout]     |
[INFO] [stdout] 269 | pub struct MidiOutputConnection {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `Option<MidiOutputConnection>`
[INFO] [stdout]    --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/core/src/option.rs:600:9
[INFO] [stdout] note: required because it appears within the type `MidiOutputEndpoint`
[INFO] [stdout]    --> src/output/midi.rs:9:12
[INFO] [stdout]     |
[INFO] [stdout]   9 | pub struct MidiOutputEndpoint {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `OutputEndpoint`
[INFO] [stdout]    --> src/output/endpoint.rs:6:34
[INFO] [stdout]     |
[INFO] [stdout]   6 | pub trait OutputEndpoint: Send + Sync {
[INFO] [stdout]     |                                  ^^^^ required by this bound in `OutputEndpoint`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `(dyn ClockSource + 'static)` cannot be sent between threads safely
[INFO] [stdout]   --> src/controller/dispatcher.rs:44:23
[INFO] [stdout]    |
[INFO] [stdout] 44 |           thread::spawn(move || {
[INFO] [stdout]    |  _________-------------_^
[INFO] [stdout]    | |         |
[INFO] [stdout]    | |         required by a bound introduced by this call
[INFO] [stdout] 45 | |             self.run();
[INFO] [stdout] 46 | |         })
[INFO] [stdout]    | |_________^ `(dyn ClockSource + 'static)` cannot be sent between threads safely
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Send` is not implemented for `(dyn ClockSource + 'static)`
[INFO] [stdout]    = note: required for `std::ptr::Unique<(dyn ClockSource + 'static)>` to implement `Send`
[INFO] [stdout] note: required because it appears within the type `Box<(dyn ClockSource + 'static)>`
[INFO] [stdout]   --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/alloc/src/boxed.rs:234:11
[INFO] [stdout] note: required because it appears within the type `PlaybackEngine`
[INFO] [stdout]   --> src/engine/playback.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct PlaybackEngine {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout]    = note: required for `std::sync::RwLock<PlaybackEngine>` to implement `Sync`
[INFO] [stdout]    = note: 1 redundant requirement hidden
[INFO] [stdout]    = note: required for `Arc<std::sync::RwLock<PlaybackEngine>>` to implement `Send`
[INFO] [stdout] note: required because it appears within the type `dispatcher::Controller`
[INFO] [stdout]   --> src/controller/dispatcher.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct Controller {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] note: required because it's used within this closure
[INFO] [stdout]   --> src/controller/dispatcher.rs:44:23
[INFO] [stdout]    |
[INFO] [stdout] 44 |         thread::spawn(move || {
[INFO] [stdout]    |                       ^^^^^^^
[INFO] [stdout] note: required by a bound in `spawn`
[INFO] [stdout]   --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/std/src/thread/functions.rs:125:0
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `(dyn ClockSource + 'static)` cannot be shared between threads safely
[INFO] [stdout]   --> src/controller/dispatcher.rs:44:23
[INFO] [stdout]    |
[INFO] [stdout] 44 |           thread::spawn(move || {
[INFO] [stdout]    |  _________-------------_^
[INFO] [stdout]    | |         |
[INFO] [stdout]    | |         required by a bound introduced by this call
[INFO] [stdout] 45 | |             self.run();
[INFO] [stdout] 46 | |         })
[INFO] [stdout]    | |_________^ `(dyn ClockSource + 'static)` cannot be shared between threads safely
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Sync` is not implemented for `(dyn ClockSource + 'static)`
[INFO] [stdout]    = note: required for `std::ptr::Unique<(dyn ClockSource + 'static)>` to implement `Sync`
[INFO] [stdout] note: required because it appears within the type `Box<(dyn ClockSource + 'static)>`
[INFO] [stdout]   --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/alloc/src/boxed.rs:234:11
[INFO] [stdout] note: required because it appears within the type `PlaybackEngine`
[INFO] [stdout]   --> src/engine/playback.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct PlaybackEngine {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout]    = note: required for `std::sync::RwLock<PlaybackEngine>` to implement `Sync`
[INFO] [stdout]    = note: required for `Arc<std::sync::RwLock<PlaybackEngine>>` to implement `Send`
[INFO] [stdout] note: required because it appears within the type `dispatcher::Controller`
[INFO] [stdout]   --> src/controller/dispatcher.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct Controller {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] note: required because it's used within this closure
[INFO] [stdout]   --> src/controller/dispatcher.rs:44:23
[INFO] [stdout]    |
[INFO] [stdout] 44 |         thread::spawn(move || {
[INFO] [stdout]    |                       ^^^^^^^
[INFO] [stdout] note: required by a bound in `spawn`
[INFO] [stdout]   --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/std/src/thread/functions.rs:125:0
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `(dyn ClockSource + 'static)` cannot be sent between threads safely
[INFO] [stdout]   --> src/controller/mod.rs:49:23
[INFO] [stdout]    |
[INFO] [stdout] 49 |           thread::spawn(move || {
[INFO] [stdout]    |  _________-------------_^
[INFO] [stdout]    | |         |
[INFO] [stdout]    | |         required by a bound introduced by this call
[INFO] [stdout] 50 | |             self.run();
[INFO] [stdout] 51 | |         })
[INFO] [stdout]    | |_________^ `(dyn ClockSource + 'static)` cannot be sent between threads safely
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Send` is not implemented for `(dyn ClockSource + 'static)`
[INFO] [stdout]    = note: required for `std::ptr::Unique<(dyn ClockSource + 'static)>` to implement `Send`
[INFO] [stdout] note: required because it appears within the type `Box<(dyn ClockSource + 'static)>`
[INFO] [stdout]   --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/alloc/src/boxed.rs:234:11
[INFO] [stdout] note: required because it appears within the type `PlaybackEngine`
[INFO] [stdout]   --> src/engine/playback.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct PlaybackEngine {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout]    = note: required for `std::sync::RwLock<PlaybackEngine>` to implement `Sync`
[INFO] [stdout]    = note: 1 redundant requirement hidden
[INFO] [stdout]    = note: required for `Arc<std::sync::RwLock<PlaybackEngine>>` to implement `Send`
[INFO] [stdout] note: required because it appears within the type `controller::Controller`
[INFO] [stdout]   --> src/controller/mod.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct Controller {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] note: required because it's used within this closure
[INFO] [stdout]   --> src/controller/mod.rs:49:23
[INFO] [stdout]    |
[INFO] [stdout] 49 |         thread::spawn(move || {
[INFO] [stdout]    |                       ^^^^^^^
[INFO] [stdout] note: required by a bound in `spawn`
[INFO] [stdout]   --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/std/src/thread/functions.rs:125:0
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `(dyn ClockSource + 'static)` cannot be shared between threads safely
[INFO] [stdout]   --> src/controller/mod.rs:49:23
[INFO] [stdout]    |
[INFO] [stdout] 49 |           thread::spawn(move || {
[INFO] [stdout]    |  _________-------------_^
[INFO] [stdout]    | |         |
[INFO] [stdout]    | |         required by a bound introduced by this call
[INFO] [stdout] 50 | |             self.run();
[INFO] [stdout] 51 | |         })
[INFO] [stdout]    | |_________^ `(dyn ClockSource + 'static)` cannot be shared between threads safely
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Sync` is not implemented for `(dyn ClockSource + 'static)`
[INFO] [stdout]    = note: required for `std::ptr::Unique<(dyn ClockSource + 'static)>` to implement `Sync`
[INFO] [stdout] note: required because it appears within the type `Box<(dyn ClockSource + 'static)>`
[INFO] [stdout]   --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/alloc/src/boxed.rs:234:11
[INFO] [stdout] note: required because it appears within the type `PlaybackEngine`
[INFO] [stdout]   --> src/engine/playback.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct PlaybackEngine {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout]    = note: required for `std::sync::RwLock<PlaybackEngine>` to implement `Sync`
[INFO] [stdout]    = note: required for `Arc<std::sync::RwLock<PlaybackEngine>>` to implement `Send`
[INFO] [stdout] note: required because it appears within the type `controller::Controller`
[INFO] [stdout]   --> src/controller/mod.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct Controller {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] note: required because it's used within this closure
[INFO] [stdout]   --> src/controller/mod.rs:49:23
[INFO] [stdout]    |
[INFO] [stdout] 49 |         thread::spawn(move || {
[INFO] [stdout]    |                       ^^^^^^^
[INFO] [stdout] note: required by a bound in `spawn`
[INFO] [stdout]   --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/std/src/thread/functions.rs:125:0
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut alsa_sys::_snd_seq` cannot be shared between threads safely
[INFO] [stdout]    --> src/output/midi.rs:48:17
[INFO] [stdout]     |
[INFO] [stdout]  48 |         if self.is_connected() {
[INFO] [stdout]     |                 ^^^^^^^^^^^^ `*mut alsa_sys::_snd_seq` cannot be shared between threads safely
[INFO] [stdout]     |
[INFO] [stdout]     = help: within `MidiOutputEndpoint`, the trait `Sync` is not implemented for `*mut alsa_sys::_snd_seq`
[INFO] [stdout] note: required because it appears within the type `alsa::seq::Seq`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/alsa-0.7.1/src/seq.rs:24:12
[INFO] [stdout]     |
[INFO] [stdout]  24 | pub struct Seq(*mut alsa::snd_seq_t, cell::Cell<bool>);
[INFO] [stdout]     |            ^^^
[INFO] [stdout] note: required because it appears within the type `Option<alsa::seq::Seq>`
[INFO] [stdout]    --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/core/src/option.rs:600:9
[INFO] [stdout] note: required because it appears within the type `midir::backend::alsa::MidiOutputConnection`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/backend/alsa/mod.rs:439:12
[INFO] [stdout]     |
[INFO] [stdout] 439 | pub struct MidiOutputConnection {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `MidiOutputConnection`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/common.rs:269:12
[INFO] [stdout]     |
[INFO] [stdout] 269 | pub struct MidiOutputConnection {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `Option<MidiOutputConnection>`
[INFO] [stdout]    --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/core/src/option.rs:600:9
[INFO] [stdout] note: required because it appears within the type `MidiOutputEndpoint`
[INFO] [stdout]    --> src/output/midi.rs:9:12
[INFO] [stdout]     |
[INFO] [stdout]   9 | pub struct MidiOutputEndpoint {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `OutputEndpoint::is_connected`
[INFO] [stdout]    --> src/output/endpoint.rs:6:34
[INFO] [stdout]     |
[INFO] [stdout]   6 | pub trait OutputEndpoint: Send + Sync {
[INFO] [stdout]     |                                  ^^^^ required by this bound in `OutputEndpoint::is_connected`
[INFO] [stdout] ...
[INFO] [stdout]  11 |     fn is_connected(&self) -> bool;
[INFO] [stdout]     |        ------------ required by a bound in this associated function
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `std::cell::Cell<bool>` cannot be shared between threads safely
[INFO] [stdout]    --> src/output/midi.rs:48:17
[INFO] [stdout]     |
[INFO] [stdout]  48 |         if self.is_connected() {
[INFO] [stdout]     |                 ^^^^^^^^^^^^ `std::cell::Cell<bool>` cannot be shared between threads safely
[INFO] [stdout]     |
[INFO] [stdout]     = help: within `MidiOutputEndpoint`, the trait `Sync` is not implemented for `std::cell::Cell<bool>`
[INFO] [stdout]     = note: if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` or `std::sync::atomic::AtomicBool` instead
[INFO] [stdout] note: required because it appears within the type `alsa::seq::Seq`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/alsa-0.7.1/src/seq.rs:24:12
[INFO] [stdout]     |
[INFO] [stdout]  24 | pub struct Seq(*mut alsa::snd_seq_t, cell::Cell<bool>);
[INFO] [stdout]     |            ^^^
[INFO] [stdout] note: required because it appears within the type `Option<alsa::seq::Seq>`
[INFO] [stdout]    --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/core/src/option.rs:600:9
[INFO] [stdout] note: required because it appears within the type `midir::backend::alsa::MidiOutputConnection`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/backend/alsa/mod.rs:439:12
[INFO] [stdout]     |
[INFO] [stdout] 439 | pub struct MidiOutputConnection {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `MidiOutputConnection`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/common.rs:269:12
[INFO] [stdout]     |
[INFO] [stdout] 269 | pub struct MidiOutputConnection {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `Option<MidiOutputConnection>`
[INFO] [stdout]    --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/core/src/option.rs:600:9
[INFO] [stdout] note: required because it appears within the type `MidiOutputEndpoint`
[INFO] [stdout]    --> src/output/midi.rs:9:12
[INFO] [stdout]     |
[INFO] [stdout]   9 | pub struct MidiOutputEndpoint {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `OutputEndpoint::is_connected`
[INFO] [stdout]    --> src/output/endpoint.rs:6:34
[INFO] [stdout]     |
[INFO] [stdout]   6 | pub trait OutputEndpoint: Send + Sync {
[INFO] [stdout]     |                                  ^^^^ required by this bound in `OutputEndpoint::is_connected`
[INFO] [stdout] ...
[INFO] [stdout]  11 |     fn is_connected(&self) -> bool;
[INFO] [stdout]     |        ------------ required by a bound in this associated function
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut alsa_sys::snd_midi_event` cannot be shared between threads safely
[INFO] [stdout]     --> src/output/midi.rs:48:17
[INFO] [stdout]      |
[INFO] [stdout]   48 |         if self.is_connected() {
[INFO] [stdout]      |                 ^^^^^^^^^^^^ `*mut alsa_sys::snd_midi_event` cannot be shared between threads safely
[INFO] [stdout]      |
[INFO] [stdout]      = help: within `MidiOutputEndpoint`, the trait `Sync` is not implemented for `*mut alsa_sys::snd_midi_event`
[INFO] [stdout] note: required because it appears within the type `alsa::seq::MidiEvent`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/alsa-0.7.1/src/seq.rs:1335:12
[INFO] [stdout]      |
[INFO] [stdout] 1335 | pub struct MidiEvent(*mut alsa::snd_midi_event_t);
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `midir::backend::alsa::helpers::EventEncoder`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/backend/alsa/mod.rs:77:16
[INFO] [stdout]      |
[INFO] [stdout]   77 |     pub struct EventEncoder {
[INFO] [stdout]      |                ^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `midir::backend::alsa::MidiOutputConnection`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/backend/alsa/mod.rs:439:12
[INFO] [stdout]      |
[INFO] [stdout]  439 | pub struct MidiOutputConnection {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `MidiOutputConnection`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/common.rs:269:12
[INFO] [stdout]      |
[INFO] [stdout]  269 | pub struct MidiOutputConnection {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `Option<MidiOutputConnection>`
[INFO] [stdout]     --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/core/src/option.rs:600:9
[INFO] [stdout] note: required because it appears within the type `MidiOutputEndpoint`
[INFO] [stdout]     --> src/output/midi.rs:9:12
[INFO] [stdout]      |
[INFO] [stdout]    9 | pub struct MidiOutputEndpoint {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `OutputEndpoint::is_connected`
[INFO] [stdout]     --> src/output/endpoint.rs:6:34
[INFO] [stdout]      |
[INFO] [stdout]    6 | pub trait OutputEndpoint: Send + Sync {
[INFO] [stdout]      |                                  ^^^^ required by this bound in `OutputEndpoint::is_connected`
[INFO] [stdout] ...
[INFO] [stdout]   11 |     fn is_connected(&self) -> bool;
[INFO] [stdout]      |        ------------ required by a bound in this associated function
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut alsa_sys::_snd_seq_port_subscribe` cannot be shared between threads safely
[INFO] [stdout]    --> src/output/midi.rs:48:17
[INFO] [stdout]     |
[INFO] [stdout]  48 |         if self.is_connected() {
[INFO] [stdout]     |                 ^^^^^^^^^^^^ `*mut alsa_sys::_snd_seq_port_subscribe` cannot be shared between threads safely
[INFO] [stdout]     |
[INFO] [stdout]     = help: within `MidiOutputEndpoint`, the trait `Sync` is not implemented for `*mut alsa_sys::_snd_seq_port_subscribe`
[INFO] [stdout] note: required because it appears within the type `alsa::seq::PortSubscribe`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/alsa-0.7.1/src/seq.rs:515:12
[INFO] [stdout]     |
[INFO] [stdout] 515 | pub struct PortSubscribe(*mut alsa::snd_seq_port_subscribe_t);
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `Option<alsa::seq::PortSubscribe>`
[INFO] [stdout]    --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/core/src/option.rs:600:9
[INFO] [stdout] note: required because it appears within the type `midir::backend::alsa::MidiOutputConnection`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/backend/alsa/mod.rs:439:12
[INFO] [stdout]     |
[INFO] [stdout] 439 | pub struct MidiOutputConnection {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `MidiOutputConnection`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/common.rs:269:12
[INFO] [stdout]     |
[INFO] [stdout] 269 | pub struct MidiOutputConnection {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `Option<MidiOutputConnection>`
[INFO] [stdout]    --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/core/src/option.rs:600:9
[INFO] [stdout] note: required because it appears within the type `MidiOutputEndpoint`
[INFO] [stdout]    --> src/output/midi.rs:9:12
[INFO] [stdout]     |
[INFO] [stdout]   9 | pub struct MidiOutputEndpoint {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `OutputEndpoint::is_connected`
[INFO] [stdout]    --> src/output/endpoint.rs:6:34
[INFO] [stdout]     |
[INFO] [stdout]   6 | pub trait OutputEndpoint: Send + Sync {
[INFO] [stdout]     |                                  ^^^^ required by this bound in `OutputEndpoint::is_connected`
[INFO] [stdout] ...
[INFO] [stdout]  11 |     fn is_connected(&self) -> bool;
[INFO] [stdout]     |        ------------ required by a bound in this associated function
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0223]: ambiguous associated type
[INFO] [stdout]    --> src/output/system.rs:119:21
[INFO] [stdout]     |
[INFO] [stdout] 119 |                     OutputEvent::MidiNoteOn { .. } |
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if there were a trait named `Example` with associated type `MidiNoteOn` implemented for `output::event::OutputEvent`, you could use the fully-qualified path
[INFO] [stdout]     |
[INFO] [stdout] 119 -                     OutputEvent::MidiNoteOn { .. } |
[INFO] [stdout] 119 +                     <output::event::OutputEvent as Example>::MidiNoteOn { .. } |
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0223]: ambiguous associated type
[INFO] [stdout]    --> src/output/system.rs:120:21
[INFO] [stdout]     |
[INFO] [stdout] 120 |                     OutputEvent::MidiNoteOff { .. } |
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if there were a trait named `Example` with associated type `MidiNoteOff` implemented for `output::event::OutputEvent`, you could use the fully-qualified path
[INFO] [stdout]     |
[INFO] [stdout] 120 -                     OutputEvent::MidiNoteOff { .. } |
[INFO] [stdout] 120 +                     <output::event::OutputEvent as Example>::MidiNoteOff { .. } |
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0223]: ambiguous associated type
[INFO] [stdout]    --> src/output/system.rs:121:21
[INFO] [stdout]     |
[INFO] [stdout] 121 |                     OutputEvent::MidiControlChange { .. } |
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if there were a trait named `Example` with associated type `MidiControlChange` implemented for `output::event::OutputEvent`, you could use the fully-qualified path
[INFO] [stdout]     |
[INFO] [stdout] 121 -                     OutputEvent::MidiControlChange { .. } |
[INFO] [stdout] 121 +                     <output::event::OutputEvent as Example>::MidiControlChange { .. } |
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0223]: ambiguous associated type
[INFO] [stdout]    --> src/output/system.rs:122:21
[INFO] [stdout]     |
[INFO] [stdout] 122 |                     OutputEvent::MidiProgramChange { .. } |
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if there were a trait named `Example` with associated type `MidiProgramChange` implemented for `output::event::OutputEvent`, you could use the fully-qualified path
[INFO] [stdout]     |
[INFO] [stdout] 122 -                     OutputEvent::MidiProgramChange { .. } |
[INFO] [stdout] 122 +                     <output::event::OutputEvent as Example>::MidiProgramChange { .. } |
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0223]: ambiguous associated type
[INFO] [stdout]    --> src/output/system.rs:123:21
[INFO] [stdout]     |
[INFO] [stdout] 123 |                     OutputEvent::MidiPitchBend { .. } |
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if there were a trait named `Example` with associated type `MidiPitchBend` implemented for `output::event::OutputEvent`, you could use the fully-qualified path
[INFO] [stdout]     |
[INFO] [stdout] 123 -                     OutputEvent::MidiPitchBend { .. } |
[INFO] [stdout] 123 +                     <output::event::OutputEvent as Example>::MidiPitchBend { .. } |
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0223]: ambiguous associated type
[INFO] [stdout]    --> src/output/system.rs:124:21
[INFO] [stdout]     |
[INFO] [stdout] 124 |                     OutputEvent::MidiAftertouch { .. } |
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if there were a trait named `Example` with associated type `MidiAftertouch` implemented for `output::event::OutputEvent`, you could use the fully-qualified path
[INFO] [stdout]     |
[INFO] [stdout] 124 -                     OutputEvent::MidiAftertouch { .. } |
[INFO] [stdout] 124 +                     <output::event::OutputEvent as Example>::MidiAftertouch { .. } |
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0223]: ambiguous associated type
[INFO] [stdout]    --> src/output/system.rs:125:21
[INFO] [stdout]     |
[INFO] [stdout] 125 |                     OutputEvent::MidiPolyAftertouch { .. }
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if there were a trait named `Example` with associated type `MidiPolyAftertouch` implemented for `output::event::OutputEvent`, you could use the fully-qualified path
[INFO] [stdout]     |
[INFO] [stdout] 125 -                     OutputEvent::MidiPolyAftertouch { .. }
[INFO] [stdout] 125 +                     <output::event::OutputEvent as Example>::MidiPolyAftertouch { .. }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0223]: ambiguous associated type
[INFO] [stdout]    --> src/output/system.rs:130:21
[INFO] [stdout]     |
[INFO] [stdout] 130 |                     OutputEvent::AudioBuffer { .. }
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if there were a trait named `Example` with associated type `AudioBuffer` implemented for `output::event::OutputEvent`, you could use the fully-qualified path
[INFO] [stdout]     |
[INFO] [stdout] 130 -                     OutputEvent::AudioBuffer { .. }
[INFO] [stdout] 130 +                     <output::event::OutputEvent as Example>::AudioBuffer { .. }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pattern_id`
[INFO] [stdout]    --> src/engine/playback.rs:103:55
[INFO] [stdout]     |
[INFO] [stdout] 103 | ...                   MediaContent::Pattern(pattern_id) => {
[INFO] [stdout]     |                                             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pattern_id`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `midi_clip_id`
[INFO] [stdout]    --> src/engine/playback.rs:106:56
[INFO] [stdout]     |
[INFO] [stdout] 106 | ...                   MediaContent::MidiClip(midi_clip_id) => {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_midi_clip_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `audio_file_id`
[INFO] [stdout]    --> src/engine/playback.rs:109:57
[INFO] [stdout]     |
[INFO] [stdout] 109 | ...                   MediaContent::AudioFile(audio_file_id) => {
[INFO] [stdout]     |                                               ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_audio_file_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `position`
[INFO] [stdout]    --> src/engine/playback.rs:162:28
[INFO] [stdout]     |
[INFO] [stdout] 162 |     pub fn seek(&mut self, position: TimePosition) {
[INFO] [stdout]     |                            ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_position`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `params`
[INFO] [stdout]   --> src/output/system.rs:45:21
[INFO] [stdout]    |
[INFO] [stdout] 45 |                 let params = match &config.parameters {
[INFO] [stdout]    |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_params`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut alsa_sys::_snd_seq` cannot be shared between threads safely
[INFO] [stdout]    --> src/output/midi.rs:38:25
[INFO] [stdout]     |
[INFO] [stdout]  38 | impl OutputEndpoint for MidiOutputEndpoint {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^ `*mut alsa_sys::_snd_seq` cannot be shared between threads safely
[INFO] [stdout]     |
[INFO] [stdout]     = help: within `MidiOutputEndpoint`, the trait `Sync` is not implemented for `*mut alsa_sys::_snd_seq`
[INFO] [stdout] note: required because it appears within the type `alsa::seq::Seq`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/alsa-0.7.1/src/seq.rs:24:12
[INFO] [stdout]     |
[INFO] [stdout]  24 | pub struct Seq(*mut alsa::snd_seq_t, cell::Cell<bool>);
[INFO] [stdout]     |            ^^^
[INFO] [stdout] note: required because it appears within the type `Option<alsa::seq::Seq>`
[INFO] [stdout]    --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/core/src/option.rs:600:9
[INFO] [stdout] note: required because it appears within the type `midir::backend::alsa::MidiOutputConnection`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/backend/alsa/mod.rs:439:12
[INFO] [stdout]     |
[INFO] [stdout] 439 | pub struct MidiOutputConnection {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `MidiOutputConnection`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/common.rs:269:12
[INFO] [stdout]     |
[INFO] [stdout] 269 | pub struct MidiOutputConnection {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `Option<MidiOutputConnection>`
[INFO] [stdout]    --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/core/src/option.rs:600:9
[INFO] [stdout] note: required because it appears within the type `MidiOutputEndpoint`
[INFO] [stdout]    --> src/output/midi.rs:9:12
[INFO] [stdout]     |
[INFO] [stdout]   9 | pub struct MidiOutputEndpoint {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `OutputEndpoint`
[INFO] [stdout]    --> src/output/endpoint.rs:6:34
[INFO] [stdout]     |
[INFO] [stdout]   6 | pub trait OutputEndpoint: Send + Sync {
[INFO] [stdout]     |                                  ^^^^ required by this bound in `OutputEndpoint`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `std::cell::Cell<bool>` cannot be shared between threads safely
[INFO] [stdout]    --> src/output/midi.rs:38:25
[INFO] [stdout]     |
[INFO] [stdout]  38 | impl OutputEndpoint for MidiOutputEndpoint {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^ `std::cell::Cell<bool>` cannot be shared between threads safely
[INFO] [stdout]     |
[INFO] [stdout]     = help: within `MidiOutputEndpoint`, the trait `Sync` is not implemented for `std::cell::Cell<bool>`
[INFO] [stdout]     = note: if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` or `std::sync::atomic::AtomicBool` instead
[INFO] [stdout] note: required because it appears within the type `alsa::seq::Seq`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/alsa-0.7.1/src/seq.rs:24:12
[INFO] [stdout]     |
[INFO] [stdout]  24 | pub struct Seq(*mut alsa::snd_seq_t, cell::Cell<bool>);
[INFO] [stdout]     |            ^^^
[INFO] [stdout] note: required because it appears within the type `Option<alsa::seq::Seq>`
[INFO] [stdout]    --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/core/src/option.rs:600:9
[INFO] [stdout] note: required because it appears within the type `midir::backend::alsa::MidiOutputConnection`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/backend/alsa/mod.rs:439:12
[INFO] [stdout]     |
[INFO] [stdout] 439 | pub struct MidiOutputConnection {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `MidiOutputConnection`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/common.rs:269:12
[INFO] [stdout]     |
[INFO] [stdout] 269 | pub struct MidiOutputConnection {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `Option<MidiOutputConnection>`
[INFO] [stdout]    --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/core/src/option.rs:600:9
[INFO] [stdout] note: required because it appears within the type `MidiOutputEndpoint`
[INFO] [stdout]    --> src/output/midi.rs:9:12
[INFO] [stdout]     |
[INFO] [stdout]   9 | pub struct MidiOutputEndpoint {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `OutputEndpoint`
[INFO] [stdout]    --> src/output/endpoint.rs:6:34
[INFO] [stdout]     |
[INFO] [stdout]   6 | pub trait OutputEndpoint: Send + Sync {
[INFO] [stdout]     |                                  ^^^^ required by this bound in `OutputEndpoint`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut alsa_sys::snd_midi_event` cannot be shared between threads safely
[INFO] [stdout]     --> src/output/midi.rs:38:25
[INFO] [stdout]      |
[INFO] [stdout]   38 | impl OutputEndpoint for MidiOutputEndpoint {
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^ `*mut alsa_sys::snd_midi_event` cannot be shared between threads safely
[INFO] [stdout]      |
[INFO] [stdout]      = help: within `MidiOutputEndpoint`, the trait `Sync` is not implemented for `*mut alsa_sys::snd_midi_event`
[INFO] [stdout] note: required because it appears within the type `alsa::seq::MidiEvent`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/alsa-0.7.1/src/seq.rs:1335:12
[INFO] [stdout]      |
[INFO] [stdout] 1335 | pub struct MidiEvent(*mut alsa::snd_midi_event_t);
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `midir::backend::alsa::helpers::EventEncoder`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/backend/alsa/mod.rs:77:16
[INFO] [stdout]      |
[INFO] [stdout]   77 |     pub struct EventEncoder {
[INFO] [stdout]      |                ^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `midir::backend::alsa::MidiOutputConnection`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/backend/alsa/mod.rs:439:12
[INFO] [stdout]      |
[INFO] [stdout]  439 | pub struct MidiOutputConnection {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `MidiOutputConnection`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/common.rs:269:12
[INFO] [stdout]      |
[INFO] [stdout]  269 | pub struct MidiOutputConnection {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `Option<MidiOutputConnection>`
[INFO] [stdout]     --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/core/src/option.rs:600:9
[INFO] [stdout] note: required because it appears within the type `MidiOutputEndpoint`
[INFO] [stdout]     --> src/output/midi.rs:9:12
[INFO] [stdout]      |
[INFO] [stdout]    9 | pub struct MidiOutputEndpoint {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `OutputEndpoint`
[INFO] [stdout]     --> src/output/endpoint.rs:6:34
[INFO] [stdout]      |
[INFO] [stdout]    6 | pub trait OutputEndpoint: Send + Sync {
[INFO] [stdout]      |                                  ^^^^ required by this bound in `OutputEndpoint`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut alsa_sys::_snd_seq_port_subscribe` cannot be shared between threads safely
[INFO] [stdout]    --> src/output/midi.rs:38:25
[INFO] [stdout]     |
[INFO] [stdout]  38 | impl OutputEndpoint for MidiOutputEndpoint {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^ `*mut alsa_sys::_snd_seq_port_subscribe` cannot be shared between threads safely
[INFO] [stdout]     |
[INFO] [stdout]     = help: within `MidiOutputEndpoint`, the trait `Sync` is not implemented for `*mut alsa_sys::_snd_seq_port_subscribe`
[INFO] [stdout] note: required because it appears within the type `alsa::seq::PortSubscribe`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/alsa-0.7.1/src/seq.rs:515:12
[INFO] [stdout]     |
[INFO] [stdout] 515 | pub struct PortSubscribe(*mut alsa::snd_seq_port_subscribe_t);
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `Option<alsa::seq::PortSubscribe>`
[INFO] [stdout]    --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/core/src/option.rs:600:9
[INFO] [stdout] note: required because it appears within the type `midir::backend::alsa::MidiOutputConnection`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/backend/alsa/mod.rs:439:12
[INFO] [stdout]     |
[INFO] [stdout] 439 | pub struct MidiOutputConnection {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `MidiOutputConnection`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/common.rs:269:12
[INFO] [stdout]     |
[INFO] [stdout] 269 | pub struct MidiOutputConnection {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `Option<MidiOutputConnection>`
[INFO] [stdout]    --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/core/src/option.rs:600:9
[INFO] [stdout] note: required because it appears within the type `MidiOutputEndpoint`
[INFO] [stdout]    --> src/output/midi.rs:9:12
[INFO] [stdout]     |
[INFO] [stdout]   9 | pub struct MidiOutputEndpoint {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `OutputEndpoint`
[INFO] [stdout]    --> src/output/endpoint.rs:6:34
[INFO] [stdout]     |
[INFO] [stdout]   6 | pub trait OutputEndpoint: Send + Sync {
[INFO] [stdout]     |                                  ^^^^ required by this bound in `OutputEndpoint`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0223, E0277.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0223`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `loom` (lib test) due to 21 previous errors; 13 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error[E0277]: `(dyn ClockSource + 'static)` cannot be sent between threads safely
[INFO] [stdout]   --> src/controller/dispatcher.rs:44:23
[INFO] [stdout]    |
[INFO] [stdout] 44 |           thread::spawn(move || {
[INFO] [stdout]    |  _________-------------_^
[INFO] [stdout]    | |         |
[INFO] [stdout]    | |         required by a bound introduced by this call
[INFO] [stdout] 45 | |             self.run();
[INFO] [stdout] 46 | |         })
[INFO] [stdout]    | |_________^ `(dyn ClockSource + 'static)` cannot be sent between threads safely
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Send` is not implemented for `(dyn ClockSource + 'static)`
[INFO] [stdout]    = note: required for `std::ptr::Unique<(dyn ClockSource + 'static)>` to implement `Send`
[INFO] [stdout] note: required because it appears within the type `Box<(dyn ClockSource + 'static)>`
[INFO] [stdout]   --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/alloc/src/boxed.rs:234:11
[INFO] [stdout] note: required because it appears within the type `PlaybackEngine`
[INFO] [stdout]   --> src/engine/playback.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct PlaybackEngine {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout]    = note: required for `std::sync::RwLock<PlaybackEngine>` to implement `Sync`
[INFO] [stdout]    = note: 1 redundant requirement hidden
[INFO] [stdout]    = note: required for `Arc<std::sync::RwLock<PlaybackEngine>>` to implement `Send`
[INFO] [stdout] note: required because it appears within the type `dispatcher::Controller`
[INFO] [stdout]   --> src/controller/dispatcher.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct Controller {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] note: required because it's used within this closure
[INFO] [stdout]   --> src/controller/dispatcher.rs:44:23
[INFO] [stdout]    |
[INFO] [stdout] 44 |         thread::spawn(move || {
[INFO] [stdout]    |                       ^^^^^^^
[INFO] [stdout] note: required by a bound in `spawn`
[INFO] [stdout]   --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/std/src/thread/functions.rs:125:0
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `(dyn ClockSource + 'static)` cannot be shared between threads safely
[INFO] [stdout]   --> src/controller/dispatcher.rs:44:23
[INFO] [stdout]    |
[INFO] [stdout] 44 |           thread::spawn(move || {
[INFO] [stdout]    |  _________-------------_^
[INFO] [stdout]    | |         |
[INFO] [stdout]    | |         required by a bound introduced by this call
[INFO] [stdout] 45 | |             self.run();
[INFO] [stdout] 46 | |         })
[INFO] [stdout]    | |_________^ `(dyn ClockSource + 'static)` cannot be shared between threads safely
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Sync` is not implemented for `(dyn ClockSource + 'static)`
[INFO] [stdout]    = note: required for `std::ptr::Unique<(dyn ClockSource + 'static)>` to implement `Sync`
[INFO] [stdout] note: required because it appears within the type `Box<(dyn ClockSource + 'static)>`
[INFO] [stdout]   --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/alloc/src/boxed.rs:234:11
[INFO] [stdout] note: required because it appears within the type `PlaybackEngine`
[INFO] [stdout]   --> src/engine/playback.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct PlaybackEngine {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout]    = note: required for `std::sync::RwLock<PlaybackEngine>` to implement `Sync`
[INFO] [stdout]    = note: required for `Arc<std::sync::RwLock<PlaybackEngine>>` to implement `Send`
[INFO] [stdout] note: required because it appears within the type `dispatcher::Controller`
[INFO] [stdout]   --> src/controller/dispatcher.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct Controller {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] note: required because it's used within this closure
[INFO] [stdout]   --> src/controller/dispatcher.rs:44:23
[INFO] [stdout]    |
[INFO] [stdout] 44 |         thread::spawn(move || {
[INFO] [stdout]    |                       ^^^^^^^
[INFO] [stdout] note: required by a bound in `spawn`
[INFO] [stdout]   --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/std/src/thread/functions.rs:125:0
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `(dyn ClockSource + 'static)` cannot be sent between threads safely
[INFO] [stdout]   --> src/controller/mod.rs:49:23
[INFO] [stdout]    |
[INFO] [stdout] 49 |           thread::spawn(move || {
[INFO] [stdout]    |  _________-------------_^
[INFO] [stdout]    | |         |
[INFO] [stdout]    | |         required by a bound introduced by this call
[INFO] [stdout] 50 | |             self.run();
[INFO] [stdout] 51 | |         })
[INFO] [stdout]    | |_________^ `(dyn ClockSource + 'static)` cannot be sent between threads safely
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Send` is not implemented for `(dyn ClockSource + 'static)`
[INFO] [stdout]    = note: required for `std::ptr::Unique<(dyn ClockSource + 'static)>` to implement `Send`
[INFO] [stdout] note: required because it appears within the type `Box<(dyn ClockSource + 'static)>`
[INFO] [stdout]   --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/alloc/src/boxed.rs:234:11
[INFO] [stdout] note: required because it appears within the type `PlaybackEngine`
[INFO] [stdout]   --> src/engine/playback.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct PlaybackEngine {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout]    = note: required for `std::sync::RwLock<PlaybackEngine>` to implement `Sync`
[INFO] [stdout]    = note: 1 redundant requirement hidden
[INFO] [stdout]    = note: required for `Arc<std::sync::RwLock<PlaybackEngine>>` to implement `Send`
[INFO] [stdout] note: required because it appears within the type `controller::Controller`
[INFO] [stdout]   --> src/controller/mod.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct Controller {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] note: required because it's used within this closure
[INFO] [stdout]   --> src/controller/mod.rs:49:23
[INFO] [stdout]    |
[INFO] [stdout] 49 |         thread::spawn(move || {
[INFO] [stdout]    |                       ^^^^^^^
[INFO] [stdout] note: required by a bound in `spawn`
[INFO] [stdout]   --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/std/src/thread/functions.rs:125:0
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `(dyn ClockSource + 'static)` cannot be shared between threads safely
[INFO] [stdout]   --> src/controller/mod.rs:49:23
[INFO] [stdout]    |
[INFO] [stdout] 49 |           thread::spawn(move || {
[INFO] [stdout]    |  _________-------------_^
[INFO] [stdout]    | |         |
[INFO] [stdout]    | |         required by a bound introduced by this call
[INFO] [stdout] 50 | |             self.run();
[INFO] [stdout] 51 | |         })
[INFO] [stdout]    | |_________^ `(dyn ClockSource + 'static)` cannot be shared between threads safely
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Sync` is not implemented for `(dyn ClockSource + 'static)`
[INFO] [stdout]    = note: required for `std::ptr::Unique<(dyn ClockSource + 'static)>` to implement `Sync`
[INFO] [stdout] note: required because it appears within the type `Box<(dyn ClockSource + 'static)>`
[INFO] [stdout]   --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/alloc/src/boxed.rs:234:11
[INFO] [stdout] note: required because it appears within the type `PlaybackEngine`
[INFO] [stdout]   --> src/engine/playback.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct PlaybackEngine {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout]    = note: required for `std::sync::RwLock<PlaybackEngine>` to implement `Sync`
[INFO] [stdout]    = note: required for `Arc<std::sync::RwLock<PlaybackEngine>>` to implement `Send`
[INFO] [stdout] note: required because it appears within the type `controller::Controller`
[INFO] [stdout]   --> src/controller/mod.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct Controller {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] note: required because it's used within this closure
[INFO] [stdout]   --> src/controller/mod.rs:49:23
[INFO] [stdout]    |
[INFO] [stdout] 49 |         thread::spawn(move || {
[INFO] [stdout]    |                       ^^^^^^^
[INFO] [stdout] note: required by a bound in `spawn`
[INFO] [stdout]   --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/std/src/thread/functions.rs:125:0
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut alsa_sys::_snd_seq` cannot be shared between threads safely
[INFO] [stdout]    --> src/output/midi.rs:48:17
[INFO] [stdout]     |
[INFO] [stdout]  48 |         if self.is_connected() {
[INFO] [stdout]     |                 ^^^^^^^^^^^^ `*mut alsa_sys::_snd_seq` cannot be shared between threads safely
[INFO] [stdout]     |
[INFO] [stdout]     = help: within `MidiOutputEndpoint`, the trait `Sync` is not implemented for `*mut alsa_sys::_snd_seq`
[INFO] [stdout] note: required because it appears within the type `alsa::seq::Seq`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/alsa-0.7.1/src/seq.rs:24:12
[INFO] [stdout]     |
[INFO] [stdout]  24 | pub struct Seq(*mut alsa::snd_seq_t, cell::Cell<bool>);
[INFO] [stdout]     |            ^^^
[INFO] [stdout] note: required because it appears within the type `Option<alsa::seq::Seq>`
[INFO] [stdout]    --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/core/src/option.rs:600:9
[INFO] [stdout] note: required because it appears within the type `midir::backend::alsa::MidiOutputConnection`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/backend/alsa/mod.rs:439:12
[INFO] [stdout]     |
[INFO] [stdout] 439 | pub struct MidiOutputConnection {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `MidiOutputConnection`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/common.rs:269:12
[INFO] [stdout]     |
[INFO] [stdout] 269 | pub struct MidiOutputConnection {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `Option<MidiOutputConnection>`
[INFO] [stdout]    --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/core/src/option.rs:600:9
[INFO] [stdout] note: required because it appears within the type `MidiOutputEndpoint`
[INFO] [stdout]    --> src/output/midi.rs:9:12
[INFO] [stdout]     |
[INFO] [stdout]   9 | pub struct MidiOutputEndpoint {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `OutputEndpoint::is_connected`
[INFO] [stdout]    --> src/output/endpoint.rs:6:34
[INFO] [stdout]     |
[INFO] [stdout]   6 | pub trait OutputEndpoint: Send + Sync {
[INFO] [stdout]     |                                  ^^^^ required by this bound in `OutputEndpoint::is_connected`
[INFO] [stdout] ...
[INFO] [stdout]  11 |     fn is_connected(&self) -> bool;
[INFO] [stdout]     |        ------------ required by a bound in this associated function
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `std::cell::Cell<bool>` cannot be shared between threads safely
[INFO] [stdout]    --> src/output/midi.rs:48:17
[INFO] [stdout]     |
[INFO] [stdout]  48 |         if self.is_connected() {
[INFO] [stdout]     |                 ^^^^^^^^^^^^ `std::cell::Cell<bool>` cannot be shared between threads safely
[INFO] [stdout]     |
[INFO] [stdout]     = help: within `MidiOutputEndpoint`, the trait `Sync` is not implemented for `std::cell::Cell<bool>`
[INFO] [stdout]     = note: if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` or `std::sync::atomic::AtomicBool` instead
[INFO] [stdout] note: required because it appears within the type `alsa::seq::Seq`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/alsa-0.7.1/src/seq.rs:24:12
[INFO] [stdout]     |
[INFO] [stdout]  24 | pub struct Seq(*mut alsa::snd_seq_t, cell::Cell<bool>);
[INFO] [stdout]     |            ^^^
[INFO] [stdout] note: required because it appears within the type `Option<alsa::seq::Seq>`
[INFO] [stdout]    --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/core/src/option.rs:600:9
[INFO] [stdout] note: required because it appears within the type `midir::backend::alsa::MidiOutputConnection`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/backend/alsa/mod.rs:439:12
[INFO] [stdout]     |
[INFO] [stdout] 439 | pub struct MidiOutputConnection {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `MidiOutputConnection`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/common.rs:269:12
[INFO] [stdout]     |
[INFO] [stdout] 269 | pub struct MidiOutputConnection {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `Option<MidiOutputConnection>`
[INFO] [stdout]    --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/core/src/option.rs:600:9
[INFO] [stdout] note: required because it appears within the type `MidiOutputEndpoint`
[INFO] [stdout]    --> src/output/midi.rs:9:12
[INFO] [stdout]     |
[INFO] [stdout]   9 | pub struct MidiOutputEndpoint {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `OutputEndpoint::is_connected`
[INFO] [stdout]    --> src/output/endpoint.rs:6:34
[INFO] [stdout]     |
[INFO] [stdout]   6 | pub trait OutputEndpoint: Send + Sync {
[INFO] [stdout]     |                                  ^^^^ required by this bound in `OutputEndpoint::is_connected`
[INFO] [stdout] ...
[INFO] [stdout]  11 |     fn is_connected(&self) -> bool;
[INFO] [stdout]     |        ------------ required by a bound in this associated function
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut alsa_sys::snd_midi_event` cannot be shared between threads safely
[INFO] [stdout]     --> src/output/midi.rs:48:17
[INFO] [stdout]      |
[INFO] [stdout]   48 |         if self.is_connected() {
[INFO] [stdout]      |                 ^^^^^^^^^^^^ `*mut alsa_sys::snd_midi_event` cannot be shared between threads safely
[INFO] [stdout]      |
[INFO] [stdout]      = help: within `MidiOutputEndpoint`, the trait `Sync` is not implemented for `*mut alsa_sys::snd_midi_event`
[INFO] [stdout] note: required because it appears within the type `alsa::seq::MidiEvent`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/alsa-0.7.1/src/seq.rs:1335:12
[INFO] [stdout]      |
[INFO] [stdout] 1335 | pub struct MidiEvent(*mut alsa::snd_midi_event_t);
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `midir::backend::alsa::helpers::EventEncoder`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/backend/alsa/mod.rs:77:16
[INFO] [stdout]      |
[INFO] [stdout]   77 |     pub struct EventEncoder {
[INFO] [stdout]      |                ^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `midir::backend::alsa::MidiOutputConnection`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/backend/alsa/mod.rs:439:12
[INFO] [stdout]      |
[INFO] [stdout]  439 | pub struct MidiOutputConnection {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `MidiOutputConnection`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/common.rs:269:12
[INFO] [stdout]      |
[INFO] [stdout]  269 | pub struct MidiOutputConnection {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `Option<MidiOutputConnection>`
[INFO] [stdout]     --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/core/src/option.rs:600:9
[INFO] [stdout] note: required because it appears within the type `MidiOutputEndpoint`
[INFO] [stdout]     --> src/output/midi.rs:9:12
[INFO] [stdout]      |
[INFO] [stdout]    9 | pub struct MidiOutputEndpoint {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `OutputEndpoint::is_connected`
[INFO] [stdout]     --> src/output/endpoint.rs:6:34
[INFO] [stdout]      |
[INFO] [stdout]    6 | pub trait OutputEndpoint: Send + Sync {
[INFO] [stdout]      |                                  ^^^^ required by this bound in `OutputEndpoint::is_connected`
[INFO] [stdout] ...
[INFO] [stdout]   11 |     fn is_connected(&self) -> bool;
[INFO] [stdout]      |        ------------ required by a bound in this associated function
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `*mut alsa_sys::_snd_seq_port_subscribe` cannot be shared between threads safely
[INFO] [stdout]    --> src/output/midi.rs:48:17
[INFO] [stdout]     |
[INFO] [stdout]  48 |         if self.is_connected() {
[INFO] [stdout]     |                 ^^^^^^^^^^^^ `*mut alsa_sys::_snd_seq_port_subscribe` cannot be shared between threads safely
[INFO] [stdout]     |
[INFO] [stdout]     = help: within `MidiOutputEndpoint`, the trait `Sync` is not implemented for `*mut alsa_sys::_snd_seq_port_subscribe`
[INFO] [stdout] note: required because it appears within the type `alsa::seq::PortSubscribe`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/alsa-0.7.1/src/seq.rs:515:12
[INFO] [stdout]     |
[INFO] [stdout] 515 | pub struct PortSubscribe(*mut alsa::snd_seq_port_subscribe_t);
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `Option<alsa::seq::PortSubscribe>`
[INFO] [stdout]    --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/core/src/option.rs:600:9
[INFO] [stdout] note: required because it appears within the type `midir::backend::alsa::MidiOutputConnection`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/backend/alsa/mod.rs:439:12
[INFO] [stdout]     |
[INFO] [stdout] 439 | pub struct MidiOutputConnection {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `MidiOutputConnection`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/midir-0.9.1/src/common.rs:269:12
[INFO] [stdout]     |
[INFO] [stdout] 269 | pub struct MidiOutputConnection {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `Option<MidiOutputConnection>`
[INFO] [stdout]    --> /rustc/6757d700f93f6d16c8b39cf79e96b019bd570e7d/library/core/src/option.rs:600:9
[INFO] [stdout] note: required because it appears within the type `MidiOutputEndpoint`
[INFO] [stdout]    --> src/output/midi.rs:9:12
[INFO] [stdout]     |
[INFO] [stdout]   9 | pub struct MidiOutputEndpoint {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `OutputEndpoint::is_connected`
[INFO] [stdout]    --> src/output/endpoint.rs:6:34
[INFO] [stdout]     |
[INFO] [stdout]   6 | pub trait OutputEndpoint: Send + Sync {
[INFO] [stdout]     |                                  ^^^^ required by this bound in `OutputEndpoint::is_connected`
[INFO] [stdout] ...
[INFO] [stdout]  11 |     fn is_connected(&self) -> bool;
[INFO] [stdout]     |        ------------ required by a bound in this associated function
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0223]: ambiguous associated type
[INFO] [stdout]    --> src/output/system.rs:119:21
[INFO] [stdout]     |
[INFO] [stdout] 119 |                     OutputEvent::MidiNoteOn { .. } |
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if there were a trait named `Example` with associated type `MidiNoteOn` implemented for `output::event::OutputEvent`, you could use the fully-qualified path
[INFO] [stdout]     |
[INFO] [stdout] 119 -                     OutputEvent::MidiNoteOn { .. } |
[INFO] [stdout] 119 +                     <output::event::OutputEvent as Example>::MidiNoteOn { .. } |
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0223]: ambiguous associated type
[INFO] [stdout]    --> src/output/system.rs:120:21
[INFO] [stdout]     |
[INFO] [stdout] 120 |                     OutputEvent::MidiNoteOff { .. } |
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if there were a trait named `Example` with associated type `MidiNoteOff` implemented for `output::event::OutputEvent`, you could use the fully-qualified path
[INFO] [stdout]     |
[INFO] [stdout] 120 -                     OutputEvent::MidiNoteOff { .. } |
[INFO] [stdout] 120 +                     <output::event::OutputEvent as Example>::MidiNoteOff { .. } |
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0223]: ambiguous associated type
[INFO] [stdout]    --> src/output/system.rs:121:21
[INFO] [stdout]     |
[INFO] [stdout] 121 |                     OutputEvent::MidiControlChange { .. } |
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if there were a trait named `Example` with associated type `MidiControlChange` implemented for `output::event::OutputEvent`, you could use the fully-qualified path
[INFO] [stdout]     |
[INFO] [stdout] 121 -                     OutputEvent::MidiControlChange { .. } |
[INFO] [stdout] 121 +                     <output::event::OutputEvent as Example>::MidiControlChange { .. } |
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0223]: ambiguous associated type
[INFO] [stdout]    --> src/output/system.rs:122:21
[INFO] [stdout]     |
[INFO] [stdout] 122 |                     OutputEvent::MidiProgramChange { .. } |
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if there were a trait named `Example` with associated type `MidiProgramChange` implemented for `output::event::OutputEvent`, you could use the fully-qualified path
[INFO] [stdout]     |
[INFO] [stdout] 122 -                     OutputEvent::MidiProgramChange { .. } |
[INFO] [stdout] 122 +                     <output::event::OutputEvent as Example>::MidiProgramChange { .. } |
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0223]: ambiguous associated type
[INFO] [stdout]    --> src/output/system.rs:123:21
[INFO] [stdout]     |
[INFO] [stdout] 123 |                     OutputEvent::MidiPitchBend { .. } |
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if there were a trait named `Example` with associated type `MidiPitchBend` implemented for `output::event::OutputEvent`, you could use the fully-qualified path
[INFO] [stdout]     |
[INFO] [stdout] 123 -                     OutputEvent::MidiPitchBend { .. } |
[INFO] [stdout] 123 +                     <output::event::OutputEvent as Example>::MidiPitchBend { .. } |
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0223]: ambiguous associated type
[INFO] [stdout]    --> src/output/system.rs:124:21
[INFO] [stdout]     |
[INFO] [stdout] 124 |                     OutputEvent::MidiAftertouch { .. } |
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if there were a trait named `Example` with associated type `MidiAftertouch` implemented for `output::event::OutputEvent`, you could use the fully-qualified path
[INFO] [stdout]     |
[INFO] [stdout] 124 -                     OutputEvent::MidiAftertouch { .. } |
[INFO] [stdout] 124 +                     <output::event::OutputEvent as Example>::MidiAftertouch { .. } |
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0223]: ambiguous associated type
[INFO] [stdout]    --> src/output/system.rs:125:21
[INFO] [stdout]     |
[INFO] [stdout] 125 |                     OutputEvent::MidiPolyAftertouch { .. }
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if there were a trait named `Example` with associated type `MidiPolyAftertouch` implemented for `output::event::OutputEvent`, you could use the fully-qualified path
[INFO] [stdout]     |
[INFO] [stdout] 125 -                     OutputEvent::MidiPolyAftertouch { .. }
[INFO] [stdout] 125 +                     <output::event::OutputEvent as Example>::MidiPolyAftertouch { .. }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0223]: ambiguous associated type
[INFO] [stdout]    --> src/output/system.rs:130:21
[INFO] [stdout]     |
[INFO] [stdout] 130 |                     OutputEvent::AudioBuffer { .. }
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if there were a trait named `Example` with associated type `AudioBuffer` implemented for `output::event::OutputEvent`, you could use the fully-qualified path
[INFO] [stdout]     |
[INFO] [stdout] 130 -                     OutputEvent::AudioBuffer { .. }
[INFO] [stdout] 130 +                     <output::event::OutputEvent as Example>::AudioBuffer { .. }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pattern_id`
[INFO] [stdout]    --> src/engine/playback.rs:103:55
[INFO] [stdout]     |
[INFO] [stdout] 103 | ...                   MediaContent::Pattern(pattern_id) => {
[INFO] [stdout]     |                                             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pattern_id`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `midi_clip_id`
[INFO] [stdout]    --> src/engine/playback.rs:106:56
[INFO] [stdout]     |
[INFO] [stdout] 106 | ...                   MediaContent::MidiClip(midi_clip_id) => {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_midi_clip_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `audio_file_id`
[INFO] [stdout]    --> src/engine/playback.rs:109:57
[INFO] [stdout]     |
[INFO] [stdout] 109 | ...                   MediaContent::AudioFile(audio_file_id) => {
[INFO] [stdout]     |                                               ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_audio_file_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `position`
[INFO] [stdout]    --> src/engine/playback.rs:162:28
[INFO] [stdout]     |
[INFO] [stdout] 162 |     pub fn seek(&mut self, position: TimePosition) {
[INFO] [stdout]     |                            ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_position`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `params`
[INFO] [stdout]   --> src/output/system.rs:45:21
[INFO] [stdout]    |
[INFO] [stdout] 45 |                 let params = match &config.parameters {
[INFO] [stdout]    |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_params`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0223, E0277.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0223`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `loom` (lib) due to 21 previous errors; 13 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "23baecfed8a8a6cfbba5e22e688c60c730b79bd2a22b2e6ae8b3d5fa83948ac5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "23baecfed8a8a6cfbba5e22e688c60c730b79bd2a22b2e6ae8b3d5fa83948ac5", kill_on_drop: false }`
[INFO] [stdout] 23baecfed8a8a6cfbba5e22e688c60c730b79bd2a22b2e6ae8b3d5fa83948ac5
