[INFO] cloning repository https://github.com/Rune580/sc-evdev
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Rune580/sc-evdev" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FRune580%2Fsc-evdev", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FRune580%2Fsc-evdev'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] c1721509778cff68bd3cea24b1bafb1c3e21b10c
[INFO] checking Rune580/sc-evdev against eca445e5ae4a6679cc27d3a09106ce245e13a5a6 for pr-162478
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FRune580%2Fsc-evdev" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Rune580/sc-evdev
[INFO] finished tweaking git repo https://github.com/Rune580/sc-evdev
[INFO] tweaked toml for git repo https://github.com/Rune580/sc-evdev written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Rune580/sc-evdev on toolchain eca445e5ae4a6679cc27d3a09106ce245e13a5a6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Rune580/sc-evdev 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" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded uhidrs-sys v1.0.4
[INFO] [stderr]   Downloaded uhid-virt v0.0.8
[INFO] [stderr]   Downloaded hidapi v2.6.5
[INFO] [stderr]   Downloaded uoctl v1.0.1
[INFO] [stderr]   Downloaded evdevil v0.4.3
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 91f405efd6855e2b4796d1ad0dd4382e0d61c05e5a8a56334cdb1cba70ec0619
[INFO] running `Command { std: "docker" "start" "91f405efd6855e2b4796d1ad0dd4382e0d61c05e5a8a56334cdb1cba70ec0619", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "91f405efd6855e2b4796d1ad0dd4382e0d61c05e5a8a56334cdb1cba70ec0619", 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" "91f405efd6855e2b4796d1ad0dd4382e0d61c05e5a8a56334cdb1cba70ec0619" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "91f405efd6855e2b4796d1ad0dd4382e0d61c05e5a8a56334cdb1cba70ec0619", 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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "91f405efd6855e2b4796d1ad0dd4382e0d61c05e5a8a56334cdb1cba70ec0619" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling glob v0.3.3
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling bindgen v0.71.1
[INFO] [stderr]    Compiling bitflags v2.11.1
[INFO] [stderr]    Compiling rustc-hash v2.1.2
[INFO] [stderr]    Compiling object v0.37.3
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]     Checking gimli v0.32.3
[INFO] [stderr]    Compiling clang-sys v1.8.1
[INFO] [stderr]    Compiling color-spantrace v0.3.0
[INFO] [stderr]    Compiling eyre v0.6.12
[INFO] [stderr]     Checking memchr v2.8.0
[INFO] [stderr]     Checking tracing-error v0.2.1
[INFO] [stderr]    Compiling hidapi v2.6.5
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking indenter v0.3.4
[INFO] [stderr]     Checking uoctl v1.0.1
[INFO] [stderr]     Checking evdevil v0.4.3
[INFO] [stderr]    Compiling cexpr v0.6.0
[INFO] [stderr]     Checking addr2line v0.25.1
[INFO] [stderr]    Compiling enumflags2_derive v0.7.12
[INFO] [stderr]    Compiling bytemuck_derive v1.10.2
[INFO] [stderr]     Checking enumflags2 v0.7.12
[INFO] [stderr]     Checking bytemuck v1.25.0
[INFO] [stderr]     Checking backtrace v0.3.76
[INFO] [stderr]     Checking color-eyre v0.6.5
[INFO] [stderr]    Compiling uhidrs-sys v1.0.4
[INFO] [stderr]     Checking uhid-virt v0.0.8
[INFO] [stderr]     Checking sc-evdev v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused variable: `dev_flags`
[INFO] [stdout]    --> src/virtual_controllers/dualsense.rs:379:46
[INFO] [stdout]     |
[INFO] [stdout] 379 |                         OutputEvent::Start { dev_flags } => {
[INFO] [stdout]     |                                              ^^^^^^^^^ help: try ignoring the field: `dev_flags: _`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dev_flags`
[INFO] [stdout]    --> src/virtual_controllers/dualsense.rs:379:46
[INFO] [stdout]     |
[INFO] [stdout] 379 |                         OutputEvent::Start { dev_flags } => {
[INFO] [stdout]     |                                              ^^^^^^^^^ help: try ignoring the field: `dev_flags: _`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `erase`
[INFO] [stdout]    --> src/virtual_controllers/mod.rs:398:76
[INFO] [stdout]     |
[INFO] [stdout] 398 | ...                   UinputCode::FF_ERASE => gamepad.ff_erase(&ev, |erase| {
[INFO] [stdout]     |                                                                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_erase`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `erase`
[INFO] [stdout]    --> src/virtual_controllers/mod.rs:398:76
[INFO] [stdout]     |
[INFO] [stdout] 398 | ...                   UinputCode::FF_ERASE => gamepad.ff_erase(&ev, |erase| {
[INFO] [stdout]     |                                                                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_erase`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]    --> src/main.rs:156:14
[INFO] [stdout]     |
[INFO] [stdout] 156 |         for (id, rumble_effect) in rumble_effects.iter() {
[INFO] [stdout]     |              ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]    --> src/main.rs:156:14
[INFO] [stdout]     |
[INFO] [stdout] 156 |         for (id, rumble_effect) in rumble_effects.iter() {
[INFO] [stdout]     |              ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `read`
[INFO] [stdout]    --> src/main.rs:247:19
[INFO] [stdout]     |
[INFO] [stdout] 247 |         if let Ok(read) = read {
[INFO] [stdout]     |                   ^^^^ help: if this is intentional, prefix it with an underscore: `_read`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/main.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | enum Command {
[INFO] [stdout]    |      ------- variants in this enum
[INFO] [stdout] 62 |     SetDigitalMappings = 0x80,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 63 |     ClearDigitalMappings = 0x81,
[INFO] [stdout] 64 |     GetDigitalMappings = 0x82,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 65 |     SetDefaultMappings = 0x85,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 66 |     SetSettings = 0x87,
[INFO] [stdout] 67 |     GetSettings = 0x88,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 68 |     Unknown1 = 0xe2,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 69 |     Unknown2 = 0xdc,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 70 |     Unknown3 = 0xc1,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are 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: unused variable: `read`
[INFO] [stdout]    --> src/main.rs:247:19
[INFO] [stdout]     |
[INFO] [stdout] 247 |         if let Ok(read) = read {
[INFO] [stdout]     |                   ^^^^ help: if this is intentional, prefix it with an underscore: `_read`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `device_info` is never read
[INFO] [stdout]   --> src/main.rs:83:5
[INFO] [stdout]    |
[INFO] [stdout] 81 | struct SteamControllerHid {
[INFO] [stdout]    |        ------------------ field in this struct
[INFO] [stdout] 82 |     device: Arc<Mutex<HidDevice>>,
[INFO] [stdout] 83 |     device_info: DeviceInfo,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SteamControllerHid` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `SETTING_LEFT_TRACKPAD_MODE`, `SETTING_RIGHT_TRACKPAD_MODE`, `SETTING_LEFT_TRACKPAD_CLICK_PRESSURE`, `SETTING_RIGHT_TRACKPAD_CLICK_PRESSURE`, `SETTING_STEAM_WATCHDOG_ENABLE`, and `get_device_info` are never used
[INFO] [stdout]    --> src/main.rs:89:11
[INFO] [stdout]     |
[INFO] [stdout]  87 | impl SteamControllerHid {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout]  88 |     const FEATURE_REPORT_CMD: u8 = 0x01;
[INFO] [stdout]  89 |     const SETTING_LEFT_TRACKPAD_MODE: u8 = 0x07;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  90 |     const SETTING_RIGHT_TRACKPAD_MODE: u8 = 0x08;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  91 |     const SETTING_LEFT_TRACKPAD_CLICK_PRESSURE: u8 = 52;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  92 |     const SETTING_RIGHT_TRACKPAD_CLICK_PRESSURE: u8 = 53;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  93 |     const SETTING_STEAM_WATCHDOG_ENABLE: u8 = 71;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub fn get_device_info(&self) -> &DeviceInfo {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `use_evdev` is never used
[INFO] [stdout]   --> src/virtual_controllers/mod.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl VirtualController {
[INFO] [stdout]    | ---------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn use_evdev(&mut self) -> eyre::Result<()> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `x` and `y` are never used
[INFO] [stdout]    --> src/virtual_controllers/mod.rs:164:12
[INFO] [stdout]     |
[INFO] [stdout] 152 | impl JoystickXY {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn x(&self) -> f32 {
[INFO] [stdout]     |            ^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub fn y(&self) -> f32 {
[INFO] [stdout]     |            ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `ff_handle` is never read
[INFO] [stdout]    --> src/virtual_controllers/mod.rs:275:5
[INFO] [stdout]     |
[INFO] [stdout] 272 | pub struct EvdevController {
[INFO] [stdout]     |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 275 |     ff_handle: JoinHandle<()>,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/virtual_controllers/mod.rs:279:12
[INFO] [stdout]     |
[INFO] [stdout] 278 | impl EvdevController {
[INFO] [stdout]     | -------------------- associated function in this implementation
[INFO] [stdout] 279 |     pub fn new(steam_controller: &SteamControllerHid) -> eyre::Result<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/main.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | enum Command {
[INFO] [stdout]    |      ------- variants in this enum
[INFO] [stdout] 62 |     SetDigitalMappings = 0x80,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 63 |     ClearDigitalMappings = 0x81,
[INFO] [stdout] 64 |     GetDigitalMappings = 0x82,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 65 |     SetDefaultMappings = 0x85,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 66 |     SetSettings = 0x87,
[INFO] [stdout] 67 |     GetSettings = 0x88,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 68 |     Unknown1 = 0xe2,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 69 |     Unknown2 = 0xdc,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 70 |     Unknown3 = 0xc1,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are 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: field `device_info` is never read
[INFO] [stdout]   --> src/main.rs:83:5
[INFO] [stdout]    |
[INFO] [stdout] 81 | struct SteamControllerHid {
[INFO] [stdout]    |        ------------------ field in this struct
[INFO] [stdout] 82 |     device: Arc<Mutex<HidDevice>>,
[INFO] [stdout] 83 |     device_info: DeviceInfo,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SteamControllerHid` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `SETTING_LEFT_TRACKPAD_MODE`, `SETTING_RIGHT_TRACKPAD_MODE`, `SETTING_LEFT_TRACKPAD_CLICK_PRESSURE`, `SETTING_RIGHT_TRACKPAD_CLICK_PRESSURE`, `SETTING_STEAM_WATCHDOG_ENABLE`, and `get_device_info` are never used
[INFO] [stdout]    --> src/main.rs:89:11
[INFO] [stdout]     |
[INFO] [stdout]  87 | impl SteamControllerHid {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout]  88 |     const FEATURE_REPORT_CMD: u8 = 0x01;
[INFO] [stdout]  89 |     const SETTING_LEFT_TRACKPAD_MODE: u8 = 0x07;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  90 |     const SETTING_RIGHT_TRACKPAD_MODE: u8 = 0x08;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  91 |     const SETTING_LEFT_TRACKPAD_CLICK_PRESSURE: u8 = 52;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  92 |     const SETTING_RIGHT_TRACKPAD_CLICK_PRESSURE: u8 = 53;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  93 |     const SETTING_STEAM_WATCHDOG_ENABLE: u8 = 71;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub fn get_device_info(&self) -> &DeviceInfo {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `use_evdev` is never used
[INFO] [stdout]   --> src/virtual_controllers/mod.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl VirtualController {
[INFO] [stdout]    | ---------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn use_evdev(&mut self) -> eyre::Result<()> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `x` and `y` are never used
[INFO] [stdout]    --> src/virtual_controllers/mod.rs:164:12
[INFO] [stdout]     |
[INFO] [stdout] 152 | impl JoystickXY {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn x(&self) -> f32 {
[INFO] [stdout]     |            ^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub fn y(&self) -> f32 {
[INFO] [stdout]     |            ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `ff_handle` is never read
[INFO] [stdout]    --> src/virtual_controllers/mod.rs:275:5
[INFO] [stdout]     |
[INFO] [stdout] 272 | pub struct EvdevController {
[INFO] [stdout]     |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 275 |     ff_handle: JoinHandle<()>,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/virtual_controllers/mod.rs:279:12
[INFO] [stdout]     |
[INFO] [stdout] 278 | impl EvdevController {
[INFO] [stdout]     | -------------------- associated function in this implementation
[INFO] [stdout] 279 |     pub fn new(steam_controller: &SteamControllerHid) -> eyre::Result<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 6.79s
[INFO] running `Command { std: "docker" "inspect" "91f405efd6855e2b4796d1ad0dd4382e0d61c05e5a8a56334cdb1cba70ec0619", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "91f405efd6855e2b4796d1ad0dd4382e0d61c05e5a8a56334cdb1cba70ec0619", kill_on_drop: false }`
[INFO] [stdout] 91f405efd6855e2b4796d1ad0dd4382e0d61c05e5a8a56334cdb1cba70ec0619
