[INFO] fetching crate d3xx 0.0.3...
[INFO] testing d3xx-0.0.3 against 1.100.0-beta.1+cargoflags=--release for beta-release-1.100-2
[INFO] extracting crate d3xx 0.0.3 into /workspace/builds/worker-5-tc2/source
[INFO] started tweaking crates.io crate d3xx 0.0.3
[INFO] finished tweaking crates.io crate d3xx 0.0.3
[INFO] tweaked toml for crates.io crate d3xx 0.0.3 written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate d3xx 0.0.3 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 24 packages to highest compatible versions
[INFO] [stderr]       Adding thiserror v1.0.69 (available: v2.0.21)
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/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] 58fb8cc8176937b159b019d681417347a9261c40e8155adb4f2af4e25f972c85
[INFO] running `Command { std: "docker" "start" "58fb8cc8176937b159b019d681417347a9261c40e8155adb4f2af4e25f972c85", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "58fb8cc8176937b159b019d681417347a9261c40e8155adb4f2af4e25f972c85", 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" "58fb8cc8176937b159b019d681417347a9261c40e8155adb4f2af4e25f972c85" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "58fb8cc8176937b159b019d681417347a9261c40e8155adb4f2af4e25f972c85", 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" "58fb8cc8176937b159b019d681417347a9261c40e8155adb4f2af4e25f972c85" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling libftd3xx-ffi v0.0.2
[INFO] [stderr]    Compiling widestring v1.2.1
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling proc-macro-crate v3.5.0
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling num_enum_derive v0.7.6
[INFO] [stderr]    Compiling num_enum v0.7.6
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling d3xx v0.0.3 (/opt/rustwide/workdir)
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/device.rs:204:17
[INFO] [stdout]     |
[INFO] [stdout] 204 |     pub fn pipe(&self, id: Pipe) -> PipeIo {
[INFO] [stdout]     |                 ^^^^^               ^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 204 |     pub fn pipe(&self, id: Pipe) -> PipeIo<'_> {
[INFO] [stdout]     |                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/device.rs:224:17
[INFO] [stdout]     |
[INFO] [stdout] 224 |     pub fn gpio(&self, pin: GpioPin) -> Gpio {
[INFO] [stdout]     |                 ^^^^^                   ^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 224 |     pub fn gpio(&self, pin: GpioPin) -> Gpio<'_> {
[INFO] [stdout]     |                                             ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/ffi/mod.rs:39:20
[INFO] [stdout]    |
[INFO] [stdout] 39 |         let lock = GLOBAL_LOCK.lock().unwrap();
[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]    = 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: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stdout]    |
[INFO] [stdout] 20 - static mut GLOBAL_LOCK: Mutex<()> = Mutex::new(()); // FIXME: is a reentrant mutex needed?
[INFO] [stdout] 20 + static GLOBAL_LOCK: Mutex<()> = Mutex::new(()); // FIXME: is a reentrant mutex needed?
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> src/scan.rs:138:5
[INFO] [stdout]     |
[INFO] [stdout] 138 |     Unknown,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]    --> src/lib.rs:129:55
[INFO] [stdout]     |
[INFO] [stdout] 129 | #![warn(clippy::all, clippy::pedantic, clippy::cargo, missing_docs)]
[INFO] [stdout]     |                                                       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 5.80s
[INFO] running `Command { std: "docker" "inspect" "58fb8cc8176937b159b019d681417347a9261c40e8155adb4f2af4e25f972c85", 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" "58fb8cc8176937b159b019d681417347a9261c40e8155adb4f2af4e25f972c85" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling d3xx v0.0.3 (/opt/rustwide/workdir)
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/device.rs:204:17
[INFO] [stdout]     |
[INFO] [stdout] 204 |     pub fn pipe(&self, id: Pipe) -> PipeIo {
[INFO] [stdout]     |                 ^^^^^               ^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 204 |     pub fn pipe(&self, id: Pipe) -> PipeIo<'_> {
[INFO] [stdout]     |                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/device.rs:224:17
[INFO] [stdout]     |
[INFO] [stdout] 224 |     pub fn gpio(&self, pin: GpioPin) -> Gpio {
[INFO] [stdout]     |                 ^^^^^                   ^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 224 |     pub fn gpio(&self, pin: GpioPin) -> Gpio<'_> {
[INFO] [stdout]     |                                             ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/ffi/mod.rs:39:20
[INFO] [stdout]    |
[INFO] [stdout] 39 |         let lock = GLOBAL_LOCK.lock().unwrap();
[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]    = 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: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stdout]    |
[INFO] [stdout] 20 - static mut GLOBAL_LOCK: Mutex<()> = Mutex::new(()); // FIXME: is a reentrant mutex needed?
[INFO] [stdout] 20 + static GLOBAL_LOCK: Mutex<()> = Mutex::new(()); // FIXME: is a reentrant mutex needed?
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> src/scan.rs:138:5
[INFO] [stdout]     |
[INFO] [stdout] 138 |     Unknown,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]    --> src/lib.rs:129:55
[INFO] [stdout]     |
[INFO] [stdout] 129 | #![warn(clippy::all, clippy::pedantic, clippy::cargo, missing_docs)]
[INFO] [stdout]     |                                                       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/device.rs:204:17
[INFO] [stdout]     |
[INFO] [stdout] 204 |     pub fn pipe(&self, id: Pipe) -> PipeIo {
[INFO] [stdout]     |                 ^^^^^               ^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 204 |     pub fn pipe(&self, id: Pipe) -> PipeIo<'_> {
[INFO] [stdout]     |                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/device.rs:224:17
[INFO] [stdout]     |
[INFO] [stdout] 224 |     pub fn gpio(&self, pin: GpioPin) -> Gpio {
[INFO] [stdout]     |                 ^^^^^                   ^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 224 |     pub fn gpio(&self, pin: GpioPin) -> Gpio<'_> {
[INFO] [stdout]     |                                             ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/ffi/mod.rs:39:20
[INFO] [stdout]    |
[INFO] [stdout] 39 |         let lock = GLOBAL_LOCK.lock().unwrap();
[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]    = 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: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stdout]    |
[INFO] [stdout] 20 - static mut GLOBAL_LOCK: Mutex<()> = Mutex::new(()); // FIXME: is a reentrant mutex needed?
[INFO] [stdout] 20 + static GLOBAL_LOCK: Mutex<()> = Mutex::new(()); // FIXME: is a reentrant mutex needed?
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/ffi/mod.rs:56:31
[INFO] [stdout]    |
[INFO] [stdout] 56 |         let _guard = unsafe { GLOBAL_LOCK.lock().unwrap() };
[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]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stdout]    |
[INFO] [stdout] 20 - static mut GLOBAL_LOCK: Mutex<()> = Mutex::new(()); // FIXME: is a reentrant mutex needed?
[INFO] [stdout] 20 + static GLOBAL_LOCK: Mutex<()> = Mutex::new(()); // FIXME: is a reentrant mutex needed?
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/ffi/mod.rs:57:26
[INFO] [stdout]    |
[INFO] [stdout] 57 |         assert!(unsafe { GLOBAL_LOCK.try_lock() }.is_err());
[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]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stdout]    |
[INFO] [stdout] 20 - static mut GLOBAL_LOCK: Mutex<()> = Mutex::new(()); // FIXME: is a reentrant mutex needed?
[INFO] [stdout] 20 + static GLOBAL_LOCK: Mutex<()> = Mutex::new(()); // FIXME: is a reentrant mutex needed?
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/ffi/mod.rs:68:26
[INFO] [stdout]    |
[INFO] [stdout] 68 |         assert!(unsafe { GLOBAL_LOCK.try_lock().is_ok() });
[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]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stdout]    |
[INFO] [stdout] 20 - static mut GLOBAL_LOCK: Mutex<()> = Mutex::new(()); // FIXME: is a reentrant mutex needed?
[INFO] [stdout] 20 + static GLOBAL_LOCK: Mutex<()> = Mutex::new(()); // FIXME: is a reentrant mutex needed?
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> src/scan.rs:138:5
[INFO] [stdout]     |
[INFO] [stdout] 138 |     Unknown,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]    --> src/lib.rs:129:55
[INFO] [stdout]     |
[INFO] [stdout] 129 | #![warn(clippy::all, clippy::pedantic, clippy::cargo, missing_docs)]
[INFO] [stdout]     |                                                       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.60s
[INFO] running `Command { std: "docker" "inspect" "58fb8cc8176937b159b019d681417347a9261c40e8155adb4f2af4e25f972c85", 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" "58fb8cc8176937b159b019d681417347a9261c40e8155adb4f2af4e25f972c85" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]    --> src/device.rs:204:17
[INFO] [stderr]     |
[INFO] [stderr] 204 |     pub fn pipe(&self, id: Pipe) -> PipeIo {
[INFO] [stderr]     |                 ^^^^^               ^^^^^^ the same lifetime is hidden here
[INFO] [stderr]     |                 |
[INFO] [stderr]     |                 the lifetime is elided here
[INFO] [stderr]     |
[INFO] [stderr]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]     |
[INFO] [stderr] 204 |     pub fn pipe(&self, id: Pipe) -> PipeIo<'_> {
[INFO] [stderr]     |                                           ++++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]    --> src/device.rs:224:17
[INFO] [stderr]     |
[INFO] [stderr] 224 |     pub fn gpio(&self, pin: GpioPin) -> Gpio {
[INFO] [stderr]     |                 ^^^^^                   ^^^^ the same lifetime is hidden here
[INFO] [stderr]     |                 |
[INFO] [stderr]     |                 the lifetime is elided here
[INFO] [stderr]     |
[INFO] [stderr]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]     |
[INFO] [stderr] 224 |     pub fn gpio(&self, pin: GpioPin) -> Gpio<'_> {
[INFO] [stderr]     |                                             ++++
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static
[INFO] [stderr]   --> src/ffi/mod.rs:39:20
[INFO] [stderr]    |
[INFO] [stderr] 39 |         let lock = GLOBAL_LOCK.lock().unwrap();
[INFO] [stderr]    |                    ^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]    |
[INFO] [stderr]    = 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] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr]    = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stderr] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stderr]    |
[INFO] [stderr] 20 - static mut GLOBAL_LOCK: Mutex<()> = Mutex::new(()); // FIXME: is a reentrant mutex needed?
[INFO] [stderr] 20 + static GLOBAL_LOCK: Mutex<()> = Mutex::new(()); // FIXME: is a reentrant mutex needed?
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a variant
[INFO] [stderr]    --> src/scan.rs:138:5
[INFO] [stderr]     |
[INFO] [stderr] 138 |     Unknown,
[INFO] [stderr]     |     ^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] note: the lint level is defined here
[INFO] [stderr]    --> src/lib.rs:129:55
[INFO] [stderr]     |
[INFO] [stderr] 129 | #![warn(clippy::all, clippy::pedantic, clippy::cargo, missing_docs)]
[INFO] [stderr]     |                                                       ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static
[INFO] [stderr]   --> src/ffi/mod.rs:56:31
[INFO] [stderr]    |
[INFO] [stderr] 56 |         let _guard = unsafe { GLOBAL_LOCK.lock().unwrap() };
[INFO] [stderr]    |                               ^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]    |
[INFO] [stderr]    = 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] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stderr]    |
[INFO] [stderr] 20 - static mut GLOBAL_LOCK: Mutex<()> = Mutex::new(()); // FIXME: is a reentrant mutex needed?
[INFO] [stderr] 20 + static GLOBAL_LOCK: Mutex<()> = Mutex::new(()); // FIXME: is a reentrant mutex needed?
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static
[INFO] [stderr]   --> src/ffi/mod.rs:57:26
[INFO] [stderr]    |
[INFO] [stderr] 57 |         assert!(unsafe { GLOBAL_LOCK.try_lock() }.is_err());
[INFO] [stderr]    |                          ^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]    |
[INFO] [stderr]    = 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] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stderr]    |
[INFO] [stderr] 20 - static mut GLOBAL_LOCK: Mutex<()> = Mutex::new(()); // FIXME: is a reentrant mutex needed?
[INFO] [stderr] 20 + static GLOBAL_LOCK: Mutex<()> = Mutex::new(()); // FIXME: is a reentrant mutex needed?
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: creating a shared reference to mutable static
[INFO] [stderr]   --> src/ffi/mod.rs:68:26
[INFO] [stderr]    |
[INFO] [stderr] 68 |         assert!(unsafe { GLOBAL_LOCK.try_lock().is_ok() });
[INFO] [stderr]    |                          ^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stderr]    |
[INFO] [stderr]    = 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] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stderr] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable when borrowed with a shared reference
[INFO] [stderr]    |
[INFO] [stderr] 20 - static mut GLOBAL_LOCK: Mutex<()> = Mutex::new(()); // FIXME: is a reentrant mutex needed?
[INFO] [stderr] 20 + static GLOBAL_LOCK: Mutex<()> = Mutex::new(()); // FIXME: is a reentrant mutex needed?
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: `d3xx` (lib) generated 4 warnings (run `cargo fix --lib -p d3xx` to apply 2 suggestions)
[INFO] [stderr] warning: `d3xx` (lib test) generated 7 warnings (4 duplicates)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.04s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/build/d3xx/f0cdccedf66d4caf/out/d3xx-f0cdccedf66d4caf)
[INFO] [stdout] 
[INFO] [stdout] running 13 tests
[INFO] [stdout] test descriptor::test::class_code ... ok
[INFO] [stdout] test scan::tests::device_type_from ... ok
[INFO] [stdout] test descriptor::test::pipe_info_try_from ... ok
[INFO] [stdout] test scan::tests::device_info_from ... ok
[INFO] [stdout] test pipe::tests::pipeid_try_from ... ok
[INFO] [stdout] test ffi::tests::test_global_lock_unpoisoning ... ok
[INFO] [stdout] test scan::tests::device_info_flags ... ok
[INFO] [stdout] test error::tests::test_d3xx_error_codes ... ok
[INFO] [stdout] test error::tests::test_try_d3xx_macro ... ok
[INFO] [stdout] test pipe::tests::pipe_is_out ... ok
[INFO] [stdout] test ffi::tests::test_global_lock ... ok
[INFO] [stdout] test pipe::tests::pipe_is_in ... ok
[INFO] [stdout] test descriptor::test::usb_version ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests d3xx
[INFO] [stdout] 
[INFO] [stdout] running 10 tests
[INFO] [stdout] test src/error.rs - error::try_d3xx (line 159) ... ignored
[INFO] [stdout] test src/device.rs - device::Device::open (line 80) - compile ... ok
[INFO] [stdout] test src/notification.rs - notification (line 20) - compile ... ok
[INFO] [stdout] test src/device.rs - device::Device (line 40) - compile ... ok
[INFO] [stdout] test src/pipe.rs - pipe::PipeIo (line 23) - compile ... ok
[INFO] [stdout] test src/lib.rs - (line 106) - compile ... ok
[INFO] [stdout] test src/device.rs - device::Device::gpio (line 212) - compile ... ok
[INFO] [stdout] test src/device.rs - device::Device::pipe (line 190) - compile ... ok
[INFO] [stdout] test src/scan.rs - scan::list_devices (line 166) - compile ... ok
[INFO] [stdout] test src/error.rs - error::D3xxError (line 33) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 9 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.29s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "58fb8cc8176937b159b019d681417347a9261c40e8155adb4f2af4e25f972c85", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "58fb8cc8176937b159b019d681417347a9261c40e8155adb4f2af4e25f972c85", kill_on_drop: false }`
[INFO] [stdout] 58fb8cc8176937b159b019d681417347a9261c40e8155adb4f2af4e25f972c85
