[INFO] fetching crate openloaf-rdev 0.5.1...
[INFO] testing openloaf-rdev-0.5.1 against 1.99.0-beta.8+cargoflags=--release for beta-release-1.100-2
[INFO] extracting crate openloaf-rdev 0.5.1 into /workspace/builds/worker-3-tc1/source
[INFO] started tweaking crates.io crate openloaf-rdev 0.5.1
[INFO] removed 0 missing examples
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate openloaf-rdev 0.5.1
[INFO] tweaked toml for crates.io crate openloaf-rdev 0.5.1 written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate openloaf-rdev 0.5.1 on toolchain 1.99.0-beta.8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate openloaf-rdev 0.5.1 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" "+1.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded serial_test_derive v0.8.0
[INFO] [stderr]   Downloaded serial_test v0.8.0
[INFO] [stderr]   Downloaded x11 v2.21.0
[INFO] [stderr]   Downloaded epoll v4.4.0
[INFO] [stderr]   Downloaded cocoa v0.24.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] d9a4a1f78551d66a7dc97702cf0f7a5a03ce077f5ec925410342ee057269bd3f
[INFO] running `Command { std: "docker" "start" "d9a4a1f78551d66a7dc97702cf0f7a5a03ce077f5ec925410342ee057269bd3f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d9a4a1f78551d66a7dc97702cf0f7a5a03ce077f5ec925410342ee057269bd3f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d9a4a1f78551d66a7dc97702cf0f7a5a03ce077f5ec925410342ee057269bd3f" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d9a4a1f78551d66a7dc97702cf0f7a5a03ce077f5ec925410342ee057269bd3f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d9a4a1f78551d66a7dc97702cf0f7a5a03ce077f5ec925410342ee057269bd3f" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling rustversion v1.0.22
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling inotify-sys v0.1.5
[INFO] [stderr]    Compiling bitflags v2.11.1
[INFO] [stderr]    Compiling strum v0.24.1
[INFO] [stderr]    Compiling widestring v1.2.1
[INFO] [stderr]    Compiling x11 v2.21.0
[INFO] [stderr]    Compiling enum-map-derive v0.17.0
[INFO] [stderr]    Compiling mio v0.8.11
[INFO] [stderr]    Compiling inotify v0.10.2
[INFO] [stderr]    Compiling epoll v4.4.0
[INFO] [stderr]    Compiling enum-map v2.7.3
[INFO] [stderr]    Compiling strum_macros v0.24.3
[INFO] [stderr]    Compiling openloaf-rdev v0.5.1 (/opt/rustwide/workdir)
[INFO] [stdout] warning: use of deprecated associated function `core::num::<impl i32>::max_value`: replaced by the `MAX` associated constant on this type
[INFO] [stdout]   --> src/linux/simulate.rs:57:30
[INFO] [stdout]    |
[INFO] [stdout] 57 |                 x.min(c_int::max_value().into())
[INFO] [stdout]    |                              ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `core::num::<impl i32>::min_value`: replaced by the `MIN` associated constant on this type
[INFO] [stdout]   --> src/linux/simulate.rs:58:33
[INFO] [stdout]    |
[INFO] [stdout] 58 |                     .max(c_int::min_value().into())
[INFO] [stdout]    |                                 ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `core::num::<impl i32>::max_value`: replaced by the `MAX` associated constant on this type
[INFO] [stdout]   --> src/linux/simulate.rs:64:30
[INFO] [stdout]    |
[INFO] [stdout] 64 |                 y.min(c_int::max_value().into())
[INFO] [stdout]    |                              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `core::num::<impl i32>::min_value`: replaced by the `MIN` associated constant on this type
[INFO] [stdout]   --> src/linux/simulate.rs:65:33
[INFO] [stdout]    |
[INFO] [stdout] 65 |                     .max(c_int::min_value().into())
[INFO] [stdout]    |                                 ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/android.rs:113:12
[INFO] [stdout]     |
[INFO] [stdout]  70 |     BackQuote, 75,
[INFO] [stdout]     |                -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 113 |     Quote, 75,
[INFO] [stdout]     |            ^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:159:12
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] 159 |     Clear, "",
[INFO] [stdout]     |            ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:160:11
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] 159 |     Clear, "",
[INFO] [stdout] 160 |     Kana, "",
[INFO] [stdout]     |           ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:161:12
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 161 |     Junja, "",
[INFO] [stdout]     |            ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:162:12
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 162 |     Final, "",
[INFO] [stdout]     |            ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:163:12
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 163 |     Hanja, "",
[INFO] [stdout]     |            ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:164:13
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 164 |     Select, "",
[INFO] [stdout]     |             ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:165:12
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 165 |     Print, "",
[INFO] [stdout]     |            ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:166:14
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 166 |     Execute, "",
[INFO] [stdout]     |              ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:167:11
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 167 |     Help, "",
[INFO] [stdout]     |           ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:168:12
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 168 |     Sleep, "",
[INFO] [stdout]     |            ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:169:16
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 169 |     Separator, "",
[INFO] [stdout]     |                ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 170 |     Pause, ""
[INFO] [stdout]     |            ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/linux/keyboard.rs:11:18
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct MyXIM(xlib::XIM);
[INFO] [stdout]    |            ----- ^^^^^^^^^
[INFO] [stdout]    |            |
[INFO] [stdout]    |            field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing this field
[INFO] [stdout]    = note: `MyXIM` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/linux/grab.rs:137:28
[INFO] [stdout]     |
[INFO] [stdout] 137 |         if let Some(kbd) = &mut KEYBOARD {
[INFO] [stdout]     |                            ^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 137 |         if let Some(kbd) = &raw mut KEYBOARD {
[INFO] [stdout]     |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/linux/grab.rs:198:45
[INFO] [stdout]     |
[INFO] [stdout] 198 |                     if let Some(callback) = &mut GLOBAL_CALLBACK {
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 198 |                     if let Some(callback) = &raw mut GLOBAL_CALLBACK {
[INFO] [stdout]     |                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/linux/grab.rs:218:12
[INFO] [stdout]     |
[INFO] [stdout] 218 |         if KEYBOARD.is_none() {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = help: use a type that relies on "interior mutability" instead; to read more on this, visit <https://doc.rust-lang.org/reference/interior-mutability.html>
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/linux/listen.rs:50:13
[INFO] [stdout]    |
[INFO] [stdout] 50 |             &mut RECORD_ALL_CLIENTS,
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 50 |             &raw mut RECORD_ALL_CLIENTS,
[INFO] [stdout]    |              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/linux/listen.rs:118:34
[INFO] [stdout]     |
[INFO] [stdout] 118 |     if let Some(event) = convert(&mut KEYBOARD, code, type_, x, y) {
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 118 |     if let Some(event) = convert(&raw mut KEYBOARD, code, type_, x, y) {
[INFO] [stdout]     |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/linux/listen.rs:119:33
[INFO] [stdout]     |
[INFO] [stdout] 119 |         if let Some(callback) = &mut GLOBAL_CALLBACK {
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 119 |         if let Some(callback) = &raw mut GLOBAL_CALLBACK {
[INFO] [stdout]     |                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 7.62s
[INFO] running `Command { std: "docker" "inspect" "d9a4a1f78551d66a7dc97702cf0f7a5a03ce077f5ec925410342ee057269bd3f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d9a4a1f78551d66a7dc97702cf0f7a5a03ce077f5ec925410342ee057269bd3f" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: invalid feature `unstable_grab` in required-features of target `tokio_channel`: `unstable_grab` is not present in [features] section
[INFO] [stderr] warning: invalid feature `unstable_grab` in required-features of target `grab`: `unstable_grab` is not present in [features] section
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling tokio v1.52.1
[INFO] [stdout] warning: use of deprecated associated function `core::num::<impl i32>::max_value`: replaced by the `MAX` associated constant on this type
[INFO] [stdout]   --> src/linux/simulate.rs:57:30
[INFO] [stdout]    |
[INFO] [stdout] 57 |                 x.min(c_int::max_value().into())
[INFO] [stdout]    |                              ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `core::num::<impl i32>::min_value`: replaced by the `MIN` associated constant on this type
[INFO] [stdout]   --> src/linux/simulate.rs:58:33
[INFO] [stdout]    |
[INFO] [stdout] 58 |                     .max(c_int::min_value().into())
[INFO] [stdout]    |                                 ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `core::num::<impl i32>::max_value`: replaced by the `MAX` associated constant on this type
[INFO] [stdout]   --> src/linux/simulate.rs:64:30
[INFO] [stdout]    |
[INFO] [stdout] 64 |                 y.min(c_int::max_value().into())
[INFO] [stdout]    |                              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `core::num::<impl i32>::min_value`: replaced by the `MIN` associated constant on this type
[INFO] [stdout]   --> src/linux/simulate.rs:65:33
[INFO] [stdout]    |
[INFO] [stdout] 65 |                     .max(c_int::min_value().into())
[INFO] [stdout]    |                                 ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/android.rs:113:12
[INFO] [stdout]     |
[INFO] [stdout]  70 |     BackQuote, 75,
[INFO] [stdout]     |                -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 113 |     Quote, 75,
[INFO] [stdout]     |            ^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:159:12
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] 159 |     Clear, "",
[INFO] [stdout]     |            ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:160:11
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] 159 |     Clear, "",
[INFO] [stdout] 160 |     Kana, "",
[INFO] [stdout]     |           ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:161:12
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 161 |     Junja, "",
[INFO] [stdout]     |            ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:162:12
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 162 |     Final, "",
[INFO] [stdout]     |            ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:163:12
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 163 |     Hanja, "",
[INFO] [stdout]     |            ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:164:13
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 164 |     Select, "",
[INFO] [stdout]     |             ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:165:12
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 165 |     Print, "",
[INFO] [stdout]     |            ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:166:14
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 166 |     Execute, "",
[INFO] [stdout]     |              ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:167:11
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 167 |     Help, "",
[INFO] [stdout]     |           ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:168:12
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 168 |     Sleep, "",
[INFO] [stdout]     |            ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:169:16
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 169 |     Separator, "",
[INFO] [stdout]     |                ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 170 |     Pause, ""
[INFO] [stdout]     |            ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/linux/keyboard.rs:11:18
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct MyXIM(xlib::XIM);
[INFO] [stdout]    |            ----- ^^^^^^^^^
[INFO] [stdout]    |            |
[INFO] [stdout]    |            field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing this field
[INFO] [stdout]    = note: `MyXIM` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/linux/grab.rs:137:28
[INFO] [stdout]     |
[INFO] [stdout] 137 |         if let Some(kbd) = &mut KEYBOARD {
[INFO] [stdout]     |                            ^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 137 |         if let Some(kbd) = &raw mut KEYBOARD {
[INFO] [stdout]     |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/linux/grab.rs:198:45
[INFO] [stdout]     |
[INFO] [stdout] 198 |                     if let Some(callback) = &mut GLOBAL_CALLBACK {
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 198 |                     if let Some(callback) = &raw mut GLOBAL_CALLBACK {
[INFO] [stdout]     |                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/linux/grab.rs:218:12
[INFO] [stdout]     |
[INFO] [stdout] 218 |         if KEYBOARD.is_none() {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = help: use a type that relies on "interior mutability" instead; to read more on this, visit <https://doc.rust-lang.org/reference/interior-mutability.html>
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/linux/listen.rs:50:13
[INFO] [stdout]    |
[INFO] [stdout] 50 |             &mut RECORD_ALL_CLIENTS,
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 50 |             &raw mut RECORD_ALL_CLIENTS,
[INFO] [stdout]    |              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/linux/listen.rs:118:34
[INFO] [stdout]     |
[INFO] [stdout] 118 |     if let Some(event) = convert(&mut KEYBOARD, code, type_, x, y) {
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 118 |     if let Some(event) = convert(&raw mut KEYBOARD, code, type_, x, y) {
[INFO] [stdout]     |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/linux/listen.rs:119:33
[INFO] [stdout]     |
[INFO] [stdout] 119 |         if let Some(callback) = &mut GLOBAL_CALLBACK {
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 119 |         if let Some(callback) = &raw mut GLOBAL_CALLBACK {
[INFO] [stdout]     |                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]    Compiling serial_test_derive v0.8.0
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling serial_test v0.8.0
[INFO] [stderr]    Compiling openloaf-rdev v0.5.1 (/opt/rustwide/workdir)
[INFO] [stdout] error[E0432]: unresolved import `rdev`
[INFO] [stdout]  --> examples/codes_conv.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use rdev::Event;
[INFO] [stdout]   |     ^^^^ use of unresolved module or unlinked crate `rdev`
[INFO] [stdout]   |
[INFO] [stdout]   = help: if you wanted to use a crate named `rdev`, use `cargo add rdev` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `rdev`
[INFO] [stdout]  --> examples/codes_conv.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use rdev::EventType;
[INFO] [stdout]   |     ^^^^ use of unresolved module or unlinked crate `rdev`
[INFO] [stdout]   |
[INFO] [stdout]   = help: if you wanted to use a crate named `rdev`, use `cargo add rdev` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `rdev`
[INFO] [stdout]  --> examples/codes_conv.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rdev::{disable_grab, enable_grab, exit_grab_listen, start_grab_listen};
[INFO] [stdout]   |     ^^^^ use of unresolved module or unlinked crate `rdev`
[INFO] [stdout]   |
[INFO] [stdout]   = help: if you wanted to use a crate named `rdev`, use `cargo add rdev` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `rdev`
[INFO] [stdout]  --> examples/simulate.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use rdev::{simulate, EventType, Key, SimulateError};
[INFO] [stdout]   |     ^^^^ use of unresolved module or unlinked crate `rdev`
[INFO] [stdout]   |
[INFO] [stdout]   = help: if you wanted to use a crate named `rdev`, use `cargo add rdev` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `rdev`
[INFO] [stdout]  --> tests/listen_and_simulate.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use rdev::{listen, simulate, Button, Event, EventType, Key};
[INFO] [stdout]   |     ^^^^ use of unresolved module or unlinked crate `rdev`
[INFO] [stdout]   |
[INFO] [stdout]   = help: if you wanted to use a crate named `rdev`, use `cargo add rdev` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `rdev`
[INFO] [stdout]  --> examples/grab.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use rdev::Event;
[INFO] [stdout]   |     ^^^^ use of unresolved module or unlinked crate `rdev`
[INFO] [stdout]   |
[INFO] [stdout]   = help: if you wanted to use a crate named `rdev`, use `cargo add rdev` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `rdev`
[INFO] [stdout]  --> examples/grab.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use rdev::EventType;
[INFO] [stdout]   |     ^^^^ use of unresolved module or unlinked crate `rdev`
[INFO] [stdout]   |
[INFO] [stdout]   = help: if you wanted to use a crate named `rdev`, use `cargo add rdev` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `rdev`
[INFO] [stdout]  --> examples/grab.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rdev::{disable_grab, enable_grab, exit_grab_listen, start_grab_listen};
[INFO] [stdout]   |     ^^^^ use of unresolved module or unlinked crate `rdev`
[INFO] [stdout]   |
[INFO] [stdout]   = help: if you wanted to use a crate named `rdev`, use `cargo add rdev` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find module or crate `rdev` in this scope
[INFO] [stdout]  --> examples/listen.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use rdev::{Event, EventType::*, Key as RdevKey, Keyboard as RdevKeyboard, KeyboardState};
[INFO] [stdout]   |     ^^^^ use of unresolved module or unlinked crate `rdev`
[INFO] [stdout]   |
[INFO] [stdout]   = help: if you wanted to use a crate named `rdev`, use `cargo add rdev` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `rdev`
[INFO] [stdout]  --> tests/keycode.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use rdev::Key as RdevKey;
[INFO] [stdout]   |     ^^^^ use of unresolved module or unlinked crate `rdev`
[INFO] [stdout]   |
[INFO] [stdout]   = help: if you wanted to use a crate named `rdev`, use `cargo add rdev` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `rdev`
[INFO] [stdout]  --> examples/test.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use rdev::{key_from_code, linux_keycode_from_key, simulate};
[INFO] [stdout]   |     ^^^^ use of unresolved module or unlinked crate `rdev`
[INFO] [stdout]   |
[INFO] [stdout]   = help: if you wanted to use a crate named `rdev`, use `cargo add rdev` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `rdev`
[INFO] [stdout]  --> examples/test.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use rdev::{Event, EventType, GrabError, Key as RdevKey};
[INFO] [stdout]   |     ^^^^ use of unresolved module or unlinked crate `rdev`
[INFO] [stdout]   |
[INFO] [stdout]   = help: if you wanted to use a crate named `rdev`, use `cargo add rdev` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `rdev`
[INFO] [stdout]  --> examples/channel.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use rdev::listen;
[INFO] [stdout]   |     ^^^^ use of unresolved module or unlinked crate `rdev`
[INFO] [stdout]   |
[INFO] [stdout]   = help: if you wanted to use a crate named `rdev`, use `cargo add rdev` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0432`.
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `collections::HashMap`
[INFO] [stdout]  --> examples/test.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::{collections::HashMap, mem::zeroed, os::raw::c_int, ptr, thread, time::SystemTime};
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `strum::IntoEnumIterator`
[INFO] [stdout]   --> examples/test.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use strum::IntoEnumIterator;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `openloaf-rdev` (example "grab") due to 3 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error[E0432]: unresolved import `rdev`
[INFO] [stdout]  --> examples/display.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use rdev::display_size;
[INFO] [stdout]   |     ^^^^ use of unresolved module or unlinked crate `rdev`
[INFO] [stdout]   |
[INFO] [stdout]   = help: if you wanted to use a crate named `rdev`, use `cargo add rdev` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0432`.
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `rdev`
[INFO] [stdout]  --> examples/keyboard_state.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use rdev::{EventType, Key, Keyboard, KeyboardState};
[INFO] [stdout]   |     ^^^^ use of unresolved module or unlinked crate `rdev`
[INFO] [stdout]   |
[INFO] [stdout]   = help: if you wanted to use a crate named `rdev`, use `cargo add rdev` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `rdev`
[INFO] [stdout]  --> examples/listen.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use rdev::{Event, EventType::*, Key as RdevKey, Keyboard as RdevKeyboard, KeyboardState};
[INFO] [stdout]   |     ^^^^ use of unresolved module or unlinked crate `rdev`
[INFO] [stdout]   |
[INFO] [stdout]   = help: if you wanted to use a crate named `rdev`, use `cargo add rdev` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `openloaf-rdev` (example "channel") due to 1 previous error
[INFO] [stdout] For more information about this error, try `rustc --explain E0432`.
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0432`.
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find module or crate `rdev` in this scope
[INFO] [stdout]    --> examples/simulate.rs:122:5
[INFO] [stdout]     |
[INFO] [stdout] 122 |     rdev::simulate_char('€', true);
[INFO] [stdout]     |     ^^^^ use of unresolved module or unlinked crate `rdev`
[INFO] [stdout]     |
[INFO] [stdout]     = help: if you wanted to use a crate named `rdev`, use `cargo add rdev` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `openloaf-rdev` (test "listen_and_simulate") due to 1 previous error
[INFO] [stdout] error[E0433]: cannot find module or crate `rdev` in this scope
[INFO] [stdout]    --> examples/simulate.rs:123:5
[INFO] [stdout]     |
[INFO] [stdout] 123 |     rdev::simulate_char('€', false);
[INFO] [stdout]     |     ^^^^ use of unresolved module or unlinked crate `rdev`
[INFO] [stdout]     |
[INFO] [stdout]     = help: if you wanted to use a crate named `rdev`, use `cargo add rdev` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `openloaf-rdev` (example "display") due to 1 previous error
[INFO] [stdout] Some errors have detailed explanations: E0432, E0433.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0432`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `openloaf-rdev` (example "simulate") due to 3 previous errors
[INFO] [stdout] For more information about this error, try `rustc --explain E0432`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `openloaf-rdev` (example "keyboard_state") due to 1 previous error
[INFO] [stdout] error[E0433]: cannot find module or crate `rdev` in this scope
[INFO] [stdout]   --> examples/codes_conv.rs:34:21
[INFO] [stdout]    |
[INFO] [stdout] 34 |                     rdev::linux_code_to_win_scancode(event.platform_code as _).unwrap_or(0);
[INFO] [stdout]    |                     ^^^^ use of unresolved module or unlinked crate `rdev`
[INFO] [stdout]    |
[INFO] [stdout]    = help: if you wanted to use a crate named `rdev`, use `cargo add rdev` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find module or crate `rdev` in this scope
[INFO] [stdout]   --> examples/codes_conv.rs:36:21
[INFO] [stdout]    |
[INFO] [stdout] 36 |                     rdev::linux_code_to_macos_code(event.platform_code as _).unwrap_or(0);
[INFO] [stdout]    |                     ^^^^ use of unresolved module or unlinked crate `rdev`
[INFO] [stdout]    |
[INFO] [stdout]    = help: if you wanted to use a crate named `rdev`, use `cargo add rdev` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0432, E0433.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0432`.
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find module or crate `rdev` in this scope
[INFO] [stdout]  --> examples/keycode.rs:2:48
[INFO] [stdout]   |
[INFO] [stdout] 2 |     let keycode = rdev::linux_keycode_from_key(rdev::Key::Num1);
[INFO] [stdout]   |                                                ^^^^ use of unresolved module or unlinked crate `rdev`
[INFO] [stdout]   |
[INFO] [stdout]   = help: if you wanted to use a crate named `rdev`, use `cargo add rdev` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find module or crate `rdev` in this scope
[INFO] [stdout]  --> examples/keycode.rs:2:19
[INFO] [stdout]   |
[INFO] [stdout] 2 |     let keycode = rdev::linux_keycode_from_key(rdev::Key::Num1);
[INFO] [stdout]   |                   ^^^^ use of unresolved module or unlinked crate `rdev`
[INFO] [stdout]   |
[INFO] [stdout]   = help: if you wanted to use a crate named `rdev`, use `cargo add rdev` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0433`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `openloaf-rdev` (example "codes_conv") due to 5 previous errors
[INFO] [stderr] error: could not compile `openloaf-rdev` (example "keycode") due to 2 previous errors
[INFO] [stdout] error[E0599]: no method named `lock` found for struct `GRABED` in the current scope
[INFO] [stdout]   --> examples/test.rs:60:20
[INFO] [stdout]    |
[INFO] [stdout] 26 | / lazy_static::lazy_static! {
[INFO] [stdout] 27 | |     pub static ref GRABED: Arc<Mutex<HashSet<RdevKey>>> = Arc::new(Mutex::new(HashSet::<RdevKey>::new()));
[INFO] [stdout] 28 | |     pub static ref BROADCAST_CONNECT: Arc<Mutex<Option<Sender<bool>>>> = Arc::new(Mutex::new(None));
[INFO] [stdout] 29 | | }
[INFO] [stdout]    | |_- method `lock` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 60 |               GRABED.lock().unwrap().insert(key);
[INFO] [stdout]    |                      ^^^^ method not found in `GRABED`
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]    = note: the following trait defines an item `lock`, perhaps you need to implement it:
[INFO] [stdout]            candidate #1: `lock_api::RawMutex`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `lock` found for struct `GRABED` in the current scope
[INFO] [stdout]   --> examples/test.rs:82:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | / lazy_static::lazy_static! {
[INFO] [stdout] 27 | |     pub static ref GRABED: Arc<Mutex<HashSet<RdevKey>>> = Arc::new(Mutex::new(HashSet::<RdevKey>::new()));
[INFO] [stdout] 28 | |     pub static ref BROADCAST_CONNECT: Arc<Mutex<Option<Sender<bool>>>> = Arc::new(Mutex::new(None));
[INFO] [stdout] 29 | | }
[INFO] [stdout]    | |_- method `lock` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 82 |       GRABED.lock().unwrap().get(&key).is_some()
[INFO] [stdout]    |              ^^^^ method not found in `GRABED`
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]    = note: the following trait defines an item `lock`, perhaps you need to implement it:
[INFO] [stdout]            candidate #1: `lock_api::RawMutex`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find module or crate `rdev` in this scope
[INFO] [stdout]  --> tests/keycode.rs:8:21
[INFO] [stdout]   |
[INFO] [stdout] 8 |     assert_eq!(key, rdev::get_win_key(keycode, scancode));
[INFO] [stdout]   |                     ^^^^ use of unresolved module or unlinked crate `rdev`
[INFO] [stdout]   |
[INFO] [stdout]   = help: if you wanted to use a crate named `rdev`, use `cargo add rdev` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find module or crate `rdev` in this scope
[INFO] [stdout]  --> tests/keycode.rs:9:26
[INFO] [stdout]   |
[INFO] [stdout] 9 |     assert_eq!((81, 16), rdev::get_win_codes(key).unwrap());
[INFO] [stdout]   |                          ^^^^ use of unresolved module or unlinked crate `rdev`
[INFO] [stdout]   |
[INFO] [stdout]   = help: if you wanted to use a crate named `rdev`, use `cargo add rdev` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find module or crate `rdev` in this scope
[INFO] [stdout]   --> tests/keycode.rs:11:20
[INFO] [stdout]    |
[INFO] [stdout] 11 |     assert_eq!(16, rdev::win_scancode_from_key(key).unwrap()); // Windows
[INFO] [stdout]    |                    ^^^^ use of unresolved module or unlinked crate `rdev`
[INFO] [stdout]    |
[INFO] [stdout]    = help: if you wanted to use a crate named `rdev`, use `cargo add rdev` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find module or crate `rdev` in this scope
[INFO] [stdout]   --> tests/keycode.rs:12:20
[INFO] [stdout]    |
[INFO] [stdout] 12 |     assert_eq!(24, rdev::linux_keycode_from_key(key).unwrap()); // Linux
[INFO] [stdout]    |                    ^^^^ use of unresolved module or unlinked crate `rdev`
[INFO] [stdout]    |
[INFO] [stdout]    = help: if you wanted to use a crate named `rdev`, use `cargo add rdev` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find module or crate `rdev` in this scope
[INFO] [stdout]   --> tests/keycode.rs:13:20
[INFO] [stdout]    |
[INFO] [stdout] 13 |     assert_eq!(12, rdev::macos_keycode_from_key(key).unwrap()); // Mac OS
[INFO] [stdout]    |                    ^^^^ use of unresolved module or unlinked crate `rdev`
[INFO] [stdout]    |
[INFO] [stdout]    = help: if you wanted to use a crate named `rdev`, use `cargo add rdev` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0432, E0433.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0432`.
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0432, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0432`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `openloaf-rdev` (test "keycode") due to 6 previous errors
[INFO] [stderr] error: could not compile `openloaf-rdev` (example "test") due to 4 previous errors; 2 warnings emitted
[INFO] [stdout] error[E0531]: cannot find tuple struct or tuple variant `KeyPress` in this scope
[INFO] [stdout]   --> examples/listen.rs:44:13
[INFO] [stdout]    |
[INFO] [stdout] 44 |             KeyPress(k) => {
[INFO] [stdout]    |             ^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0531]: cannot find tuple struct or tuple variant `KeyRelease` in this scope
[INFO] [stdout]   --> examples/listen.rs:58:13
[INFO] [stdout]    |
[INFO] [stdout] 58 |             KeyRelease(k) => {
[INFO] [stdout]    |             ^^^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `core::num::<impl i32>::max_value`: replaced by the `MAX` associated constant on this type
[INFO] [stdout]   --> src/linux/simulate.rs:57:30
[INFO] [stdout]    |
[INFO] [stdout] 57 |                 x.min(c_int::max_value().into())
[INFO] [stdout]    |                              ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `core::num::<impl i32>::min_value`: replaced by the `MIN` associated constant on this type
[INFO] [stdout]   --> src/linux/simulate.rs:58:33
[INFO] [stdout]    |
[INFO] [stdout] 58 |                     .max(c_int::min_value().into())
[INFO] [stdout]    |                                 ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `core::num::<impl i32>::max_value`: replaced by the `MAX` associated constant on this type
[INFO] [stdout]   --> src/linux/simulate.rs:64:30
[INFO] [stdout]    |
[INFO] [stdout] 64 |                 y.min(c_int::max_value().into())
[INFO] [stdout]    |                              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `core::num::<impl i32>::min_value`: replaced by the `MIN` associated constant on this type
[INFO] [stdout]   --> src/linux/simulate.rs:65:33
[INFO] [stdout]    |
[INFO] [stdout] 65 |                     .max(c_int::min_value().into())
[INFO] [stdout]    |                                 ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `lock` found for struct `KEYBOARD` in the current scope
[INFO] [stdout]   --> examples/listen.rs:41:33
[INFO] [stdout]    |
[INFO] [stdout] 33 | / lazy_static::lazy_static! {
[INFO] [stdout] 34 | |     static ref KEYBOARD: Arc<Mutex<RdevKeyboard>> = Arc::new(Mutex::new(RdevKeyboard::new().unwrap()));
[INFO] [stdout] 35 | | }
[INFO] [stdout]    | |_- method `lock` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 41 |       let mut keyboard = KEYBOARD.lock().unwrap();
[INFO] [stdout]    |                                   ^^^^ method not found in `KEYBOARD`
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]    = note: the following trait defines an item `lock`, perhaps you need to implement it:
[INFO] [stdout]            candidate #1: `lock_api::RawMutex`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `lock` found for struct `MUTEX_SPECIAL_KEYS` in the current scope
[INFO] [stdout]   --> examples/listen.rs:45:39
[INFO] [stdout]    |
[INFO] [stdout]  8 | / lazy_static::lazy_static! {
[INFO] [stdout]  9 | |     static ref MUTEX_SPECIAL_KEYS: Mutex<HashMap<RdevKey, bool>> = {
[INFO] [stdout] 10 | |         let mut m = HashMap::new();
[INFO] [stdout] ...  |
[INFO] [stdout] 24 | |     };
[INFO] [stdout] 25 | | }
[INFO] [stdout]    | |_- method `lock` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 45 |                   if MUTEX_SPECIAL_KEYS.lock().unwrap().contains_key(&k) {
[INFO] [stdout]    |                                         ^^^^ method not found in `MUTEX_SPECIAL_KEYS`
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]    = note: the following trait defines an item `lock`, perhaps you need to implement it:
[INFO] [stdout]            candidate #1: `lock_api::RawMutex`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/android.rs:113:12
[INFO] [stdout]     |
[INFO] [stdout]  70 |     BackQuote, 75,
[INFO] [stdout]     |                -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 113 |     Quote, 75,
[INFO] [stdout]     |            ^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:159:12
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] 159 |     Clear, "",
[INFO] [stdout]     |            ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:160:11
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] 159 |     Clear, "",
[INFO] [stdout] 160 |     Kana, "",
[INFO] [stdout]     |           ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:161:12
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 161 |     Junja, "",
[INFO] [stdout]     |            ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:162:12
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 162 |     Final, "",
[INFO] [stdout]     |            ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:163:12
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 163 |     Hanja, "",
[INFO] [stdout]     |            ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:164:13
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 164 |     Select, "",
[INFO] [stdout]     |             ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:165:12
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 165 |     Print, "",
[INFO] [stdout]     |            ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:166:14
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 166 |     Execute, "",
[INFO] [stdout]     |              ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:167:11
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 167 |     Help, "",
[INFO] [stdout]     |           ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:168:12
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 168 |     Sleep, "",
[INFO] [stdout]     |            ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `lock` found for struct `MUTEX_SPECIAL_KEYS` in the current scope
[INFO] [stdout]   --> examples/listen.rs:46:44
[INFO] [stdout]    |
[INFO] [stdout]  8 | / lazy_static::lazy_static! {
[INFO] [stdout]  9 | |     static ref MUTEX_SPECIAL_KEYS: Mutex<HashMap<RdevKey, bool>> = {
[INFO] [stdout] 10 | |         let mut m = HashMap::new();
[INFO] [stdout] ...  |
[INFO] [stdout] 24 | |     };
[INFO] [stdout] 25 | | }
[INFO] [stdout]    | |_- method `lock` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 46 |                       if *MUTEX_SPECIAL_KEYS.lock().unwrap().get(&k).unwrap() {
[INFO] [stdout]    |                                              ^^^^ method not found in `MUTEX_SPECIAL_KEYS`
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]    = note: the following trait defines an item `lock`, perhaps you need to implement it:
[INFO] [stdout]            candidate #1: `lock_api::RawMutex`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:169:16
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 169 |     Separator, "",
[INFO] [stdout]     |                ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/keycodes/chrome.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 158 |     Cancel, "",
[INFO] [stdout]     |             -- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 170 |     Pause, ""
[INFO] [stdout]     |            ^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `lock` found for struct `MUTEX_SPECIAL_KEYS` in the current scope
[INFO] [stdout]   --> examples/listen.rs:49:40
[INFO] [stdout]    |
[INFO] [stdout]  8 | / lazy_static::lazy_static! {
[INFO] [stdout]  9 | |     static ref MUTEX_SPECIAL_KEYS: Mutex<HashMap<RdevKey, bool>> = {
[INFO] [stdout] 10 | |         let mut m = HashMap::new();
[INFO] [stdout] ...  |
[INFO] [stdout] 24 | |     };
[INFO] [stdout] 25 | | }
[INFO] [stdout]    | |_- method `lock` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 49 |                       MUTEX_SPECIAL_KEYS.lock().unwrap().insert(k, true);
[INFO] [stdout]    |                                          ^^^^ method not found in `MUTEX_SPECIAL_KEYS`
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]    = note: the following trait defines an item `lock`, perhaps you need to implement it:
[INFO] [stdout]            candidate #1: `lock_api::RawMutex`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `lock` found for struct `MUTEX_SPECIAL_KEYS` in the current scope
[INFO] [stdout]   --> examples/listen.rs:59:39
[INFO] [stdout]    |
[INFO] [stdout]  8 | / lazy_static::lazy_static! {
[INFO] [stdout]  9 | |     static ref MUTEX_SPECIAL_KEYS: Mutex<HashMap<RdevKey, bool>> = {
[INFO] [stdout] 10 | |         let mut m = HashMap::new();
[INFO] [stdout] ...  |
[INFO] [stdout] 24 | |     };
[INFO] [stdout] 25 | | }
[INFO] [stdout]    | |_- method `lock` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 59 |                   if MUTEX_SPECIAL_KEYS.lock().unwrap().contains_key(&k) {
[INFO] [stdout]    |                                         ^^^^ method not found in `MUTEX_SPECIAL_KEYS`
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]    = note: the following trait defines an item `lock`, perhaps you need to implement it:
[INFO] [stdout]            candidate #1: `lock_api::RawMutex`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `lock` found for struct `MUTEX_SPECIAL_KEYS` in the current scope
[INFO] [stdout]   --> examples/listen.rs:60:40
[INFO] [stdout]    |
[INFO] [stdout]  8 | / lazy_static::lazy_static! {
[INFO] [stdout]  9 | |     static ref MUTEX_SPECIAL_KEYS: Mutex<HashMap<RdevKey, bool>> = {
[INFO] [stdout] 10 | |         let mut m = HashMap::new();
[INFO] [stdout] ...  |
[INFO] [stdout] 24 | |     };
[INFO] [stdout] 25 | | }
[INFO] [stdout]    | |_- method `lock` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 60 |                       MUTEX_SPECIAL_KEYS.lock().unwrap().insert(k, false);
[INFO] [stdout]    |                                          ^^^^ method not found in `MUTEX_SPECIAL_KEYS`
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]    = note: the following trait defines an item `lock`, perhaps you need to implement it:
[INFO] [stdout]            candidate #1: `lock_api::RawMutex`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find module or crate `rdev` in this scope
[INFO] [stdout]   --> examples/listen.rs:81:29
[INFO] [stdout]    |
[INFO] [stdout] 81 |         let linux_keycode = rdev::linux_keycode_from_key(_key).unwrap();
[INFO] [stdout]    |                             ^^^^ use of unresolved module or unlinked crate `rdev`
[INFO] [stdout]    |
[INFO] [stdout]    = help: if you wanted to use a crate named `rdev`, use `cargo add rdev` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find module or crate `rdev` in this scope
[INFO] [stdout]   --> examples/listen.rs:84:28
[INFO] [stdout]    |
[INFO] [stdout] 84 |         let win_scancode = rdev::win_scancode_from_key(_key).unwrap();
[INFO] [stdout]    |                            ^^^^ use of unresolved module or unlinked crate `rdev`
[INFO] [stdout]    |
[INFO] [stdout]    = help: if you wanted to use a crate named `rdev`, use `cargo add rdev` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find module or crate `rdev` in this scope
[INFO] [stdout]   --> examples/listen.rs:85:29
[INFO] [stdout]    |
[INFO] [stdout] 85 |         let macos_keycode = rdev::macos_keycode_from_key(_key).unwrap();
[INFO] [stdout]    |                             ^^^^ use of unresolved module or unlinked crate `rdev`
[INFO] [stdout]    |
[INFO] [stdout]    = help: if you wanted to use a crate named `rdev`, use `cargo add rdev` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find module or crate `rdev` in this scope
[INFO] [stdout]   --> examples/listen.rs:92:25
[INFO] [stdout]    |
[INFO] [stdout] 92 |     if let Err(error) = rdev::listen(func) {
[INFO] [stdout]    |                         ^^^^ use of unresolved module or unlinked crate `rdev`
[INFO] [stdout]    |
[INFO] [stdout]    = help: if you wanted to use a crate named `rdev`, use `cargo add rdev` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0432, E0433, E0531, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0432`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `openloaf-rdev` (example "listen") due to 14 previous errors
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/linux/keyboard.rs:11:18
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct MyXIM(xlib::XIM);
[INFO] [stdout]    |            ----- ^^^^^^^^^
[INFO] [stdout]    |            |
[INFO] [stdout]    |            field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing this field
[INFO] [stdout]    = note: `MyXIM` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/linux/grab.rs:137:28
[INFO] [stdout]     |
[INFO] [stdout] 137 |         if let Some(kbd) = &mut KEYBOARD {
[INFO] [stdout]     |                            ^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 137 |         if let Some(kbd) = &raw mut KEYBOARD {
[INFO] [stdout]     |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/linux/grab.rs:198:45
[INFO] [stdout]     |
[INFO] [stdout] 198 |                     if let Some(callback) = &mut GLOBAL_CALLBACK {
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 198 |                     if let Some(callback) = &raw mut GLOBAL_CALLBACK {
[INFO] [stdout]     |                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/linux/grab.rs:218:12
[INFO] [stdout]     |
[INFO] [stdout] 218 |         if KEYBOARD.is_none() {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = help: use a type that relies on "interior mutability" instead; to read more on this, visit <https://doc.rust-lang.org/reference/interior-mutability.html>
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/linux/listen.rs:50:13
[INFO] [stdout]    |
[INFO] [stdout] 50 |             &mut RECORD_ALL_CLIENTS,
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 50 |             &raw mut RECORD_ALL_CLIENTS,
[INFO] [stdout]    |              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/linux/listen.rs:118:34
[INFO] [stdout]     |
[INFO] [stdout] 118 |     if let Some(event) = convert(&mut KEYBOARD, code, type_, x, y) {
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 118 |     if let Some(event) = convert(&raw mut KEYBOARD, code, type_, x, y) {
[INFO] [stdout]     |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/linux/listen.rs:119:33
[INFO] [stdout]     |
[INFO] [stdout] 119 |         if let Some(callback) = &mut GLOBAL_CALLBACK {
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 119 |         if let Some(callback) = &raw mut GLOBAL_CALLBACK {
[INFO] [stdout]     |                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "d9a4a1f78551d66a7dc97702cf0f7a5a03ce077f5ec925410342ee057269bd3f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d9a4a1f78551d66a7dc97702cf0f7a5a03ce077f5ec925410342ee057269bd3f", kill_on_drop: false }`
[INFO] [stdout] d9a4a1f78551d66a7dc97702cf0f7a5a03ce077f5ec925410342ee057269bd3f
