[INFO] cloning repository https://github.com/TheEmpty/mighty_mule_gate
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/TheEmpty/mighty_mule_gate" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FTheEmpty%2Fmighty_mule_gate", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FTheEmpty%2Fmighty_mule_gate'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] dc7e96f8e6a4fd37259f25441c736283437f55e7
[INFO] checking TheEmpty/mighty_mule_gate against eca445e5ae4a6679cc27d3a09106ce245e13a5a6 for pr-162478
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FTheEmpty%2Fmighty_mule_gate" "/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/TheEmpty/mighty_mule_gate
[INFO] finished tweaking git repo https://github.com/TheEmpty/mighty_mule_gate
[INFO] tweaked toml for git repo https://github.com/TheEmpty/mighty_mule_gate written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/TheEmpty/mighty_mule_gate 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/TheEmpty/mighty_mule_gate 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] warning: binary `mighty_mule_gate` should have a kebab-case name
[INFO] [stderr]    |
[INFO] [stderr]  1 | /workspace/builds/worker-0-tc1/source/target/.../mighty_mule_gate
[INFO] [stderr]    |                                                  ^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::non_kebab_case_bins` is set to `warn` by default
[INFO] [stderr] help: to change the binary name to `mighty-mule-gate`, convert `package.name`
[INFO] [stderr]   --> Cargo.toml:28:8
[INFO] [stderr]    |
[INFO] [stderr] 28 - name = "mighty_mule_gate"
[INFO] [stderr] 28 + name = "mighty-mule-gate"
[INFO] [stderr]    |
[INFO] [stderr] help: to change the binary name to `mighty-mule-gate`, specify `bin.name`
[INFO] [stderr]   --> Cargo.toml:29:19
[INFO] [stderr]    |
[INFO] [stderr] 29 ~ version = "0.1.0"
[INFO] [stderr] 30 + [[bin]]
[INFO] [stderr] 31 + name = "mighty-mule-gate"
[INFO] [stderr] 32 + path = "src/main.rs"
[INFO] [stderr]    |
[INFO] [stderr] warning: `mighty_mule_gate` (manifest) generated 1 warning
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 17 packages to highest compatible versions
[INFO] [stderr]       Adding aho-corasick v0.7.15 (available: v0.7.20)
[INFO] [stderr]       Adding atty v0.2.14
[INFO] [stderr]       Adding cfg-if v1.0.4
[INFO] [stderr]       Adding env_logger v0.7.1
[INFO] [stderr]       Adding getrandom v0.2.17
[INFO] [stderr]       Adding humantime v1.3.0
[INFO] [stderr]     Updating libc v0.2.70 -> v0.2.189
[INFO] [stderr]       Adding pretty_env_logger v0.4.0 (available: v0.5.0)
[INFO] [stderr]       Adding quick-error v1.2.3
[INFO] [stderr]       Adding regex v1.4.6 (available: v1.13.1)
[INFO] [stderr]       Adding regex-syntax v0.6.29
[INFO] [stderr]       Adding termcolor v1.4.1
[INFO] [stderr]       Adding uuid v0.8.2 (available: v1.26.1)
[INFO] [stderr]       Adding wasi v0.11.1+wasi-snapshot-preview1
[INFO] [stderr]       Adding winapi-util v0.1.11
[INFO] [stderr]       Adding windows-link v0.2.1
[INFO] [stderr]       Adding windows-sys v0.61.2
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded serde v1.0.110
[INFO] [stderr]   Downloaded serde_derive v1.0.110
[INFO] [stderr]   Downloaded hermit-abi v0.1.13
[INFO] [stderr]   Downloaded quote v1.0.6
[INFO] [stderr]   Downloaded proc-macro2 v1.0.15
[INFO] [stderr]   Downloaded mio-named-pipes v0.1.6
[INFO] [stderr]   Downloaded pin-project-lite v0.1.5
[INFO] [stderr]   Downloaded gpio-cdev v0.2.0
[INFO] [stderr]   Downloaded error-chain v0.12.2
[INFO] [stderr]   Downloaded miow v0.3.4
[INFO] [stderr]   Downloaded pin-project-internal v0.4.17
[INFO] [stderr]   Downloaded ryu v1.0.4
[INFO] [stderr]   Downloaded pin-project v0.4.17
[INFO] [stderr]   Downloaded arc-swap v0.4.6
[INFO] [stderr]   Downloaded serde_json v1.0.53
[INFO] [stderr]   Downloaded backtrace v0.3.48
[INFO] [stderr]   Downloaded addr2line v0.12.1
[INFO] [stderr]   Downloaded syn v1.0.23
[INFO] [stderr]   Downloaded nix v0.11.1
[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] bbdcc5c2430c55551d8932dcc31ec06fd743896c95b9809838f102361937fc76
[INFO] running `Command { std: "docker" "start" "bbdcc5c2430c55551d8932dcc31ec06fd743896c95b9809838f102361937fc76", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "bbdcc5c2430c55551d8932dcc31ec06fd743896c95b9809838f102361937fc76", 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" "bbdcc5c2430c55551d8932dcc31ec06fd743896c95b9809838f102361937fc76" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "bbdcc5c2430c55551d8932dcc31ec06fd743896c95b9809838f102361937fc76", 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" "bbdcc5c2430c55551d8932dcc31ec06fd743896c95b9809838f102361937fc76" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: binary `mighty_mule_gate` should have a kebab-case name
[INFO] [stderr]    |
[INFO] [stderr]  1 | /opt/rustwide/target/.../mighty_mule_gate
[INFO] [stderr]    |                          ^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::non_kebab_case_bins` is set to `warn` by default
[INFO] [stderr] help: to change the binary name to `mighty-mule-gate`, convert `package.name`
[INFO] [stderr]   --> Cargo.toml:28:8
[INFO] [stderr]    |
[INFO] [stderr] 28 - name = "mighty_mule_gate"
[INFO] [stderr] 28 + name = "mighty-mule-gate"
[INFO] [stderr]    |
[INFO] [stderr] help: to change the binary name to `mighty-mule-gate`, specify `bin.name`
[INFO] [stderr]   --> Cargo.toml:29:19
[INFO] [stderr]    |
[INFO] [stderr] 29 ~ version = "0.1.0"
[INFO] [stderr] 30 + [[bin]]
[INFO] [stderr] 31 + name = "mighty-mule-gate"
[INFO] [stderr] 32 + path = "src/main.rs"
[INFO] [stderr]    |
[INFO] [stderr] warning: `mighty_mule_gate` (manifest) generated 1 warning
[INFO] [stderr]    Compiling proc-macro2 v1.0.15
[INFO] [stderr]    Compiling syn v1.0.23
[INFO] [stderr]    Compiling log v0.4.8
[INFO] [stderr]     Checking futures-core v0.3.5
[INFO] [stderr]     Checking arc-swap v0.4.6
[INFO] [stderr]     Checking gimli v0.21.0
[INFO] [stderr]    Compiling serde v1.0.110
[INFO] [stderr]     Checking pin-project-lite v0.1.5
[INFO] [stderr]     Checking http v0.2.1
[INFO] [stderr]     Checking smallvec v1.4.0
[INFO] [stderr]     Checking net2 v0.2.34
[INFO] [stderr]     Checking iovec v0.1.4
[INFO] [stderr]     Checking num_cpus v1.13.0
[INFO] [stderr]    Compiling error-chain v0.12.2
[INFO] [stderr]     Checking aho-corasick v0.7.15
[INFO] [stderr]    Compiling indexmap v1.3.2
[INFO] [stderr]     Checking object v0.19.0
[INFO] [stderr]     Checking futures-task v0.3.5
[INFO] [stderr]     Checking futures-sink v0.3.5
[INFO] [stderr]     Checking quick-error v1.2.3
[INFO] [stderr]     Checking signal-hook-registry v1.2.0
[INFO] [stderr]    Compiling nix v0.11.1
[INFO] [stderr]    Compiling ryu v1.0.4
[INFO] [stderr]     Checking unicode-normalization v0.1.12
[INFO] [stderr]     Checking humantime v1.3.0
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking try-lock v0.2.2
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]     Checking mio v0.6.22
[INFO] [stderr]     Checking futures-channel v0.3.5
[INFO] [stderr]     Checking want v0.3.0
[INFO] [stderr]     Checking time v0.1.43
[INFO] [stderr]     Checking regex v1.4.6
[INFO] [stderr]     Checking mio-uds v0.6.8
[INFO] [stderr]    Compiling quote v1.0.6
[INFO] [stderr]     Checking idna v0.2.0
[INFO] [stderr]     Checking url v2.1.1
[INFO] [stderr]     Checking env_logger v0.7.1
[INFO] [stderr]     Checking pretty_env_logger v0.4.0
[INFO] [stderr]     Checking addr2line v0.12.1
[INFO] [stderr]     Checking backtrace v0.3.48
[INFO] [stderr]     Checking gpio-cdev v0.2.0
[INFO] [stderr]     Checking http-body v0.3.1
[INFO] [stderr]    Compiling pin-project-internal v0.4.17
[INFO] [stderr]    Compiling tokio-macros v0.2.5
[INFO] [stderr]    Compiling serde_derive v1.0.110
[INFO] [stderr]     Checking tokio v0.2.21
[INFO] [stderr]     Checking pin-project v0.4.17
[INFO] [stderr]     Checking futures-util v0.3.5
[INFO] [stderr]     Checking tokio-util v0.3.1
[INFO] [stderr]     Checking h2 v0.2.5
[INFO] [stderr]     Checking hyper v0.13.5
[INFO] [stderr]     Checking uuid v0.8.2
[INFO] [stderr]     Checking serde_json v1.0.53
[INFO] [stderr]     Checking mighty_mule_gate v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/main.rs:26:17
[INFO] [stdout]    |
[INFO] [stdout] 26 |                 server::GATE.as_mut().unwrap().sync();
[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]    = 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]    = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]  --> src/gate.rs:8:41
[INFO] [stdout]   |
[INFO] [stdout] 8 | #[derive(Copy, Clone, Debug, PartialEq, Serialize, Deserialize)]
[INFO] [stdout]   |                                         ^--------
[INFO] [stdout]   |                                         |
[INFO] [stdout]   |                                         `Serialize` is not local
[INFO] [stdout]   |                                         move the `impl` block outside of this constant `_IMPL_SERIALIZE_FOR_State`
[INFO] [stdout] 9 | pub enum State {
[INFO] [stdout]   |          ----- `State` is not local
[INFO] [stdout]   |
[INFO] [stdout]   = note: the derive macro `Serialize` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]   = note: the derive macro `Serialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive`
[INFO] [stdout]   = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]   = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint
[INFO] [stdout]   = note: `#[warn(non_local_definitions)]` on by default
[INFO] [stdout]   = note: this warning originates in the derive macro `Serialize` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]  --> src/gate.rs:8:52
[INFO] [stdout]   |
[INFO] [stdout] 8 | #[derive(Copy, Clone, Debug, PartialEq, Serialize, Deserialize)]
[INFO] [stdout]   |                                                    ^----------
[INFO] [stdout]   |                                                    |
[INFO] [stdout]   |                                                    `Deserialize` is not local
[INFO] [stdout]   |                                                    move the `impl` block outside of this constant `_IMPL_DESERIALIZE_FOR_State`
[INFO] [stdout] 9 | pub enum State {
[INFO] [stdout]   |          ----- `State` is not local
[INFO] [stdout]   |
[INFO] [stdout]   = note: the derive macro `Deserialize` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]   = note: the derive macro `Deserialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive`
[INFO] [stdout]   = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]   = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint
[INFO] [stdout]   = note: this warning originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]   --> src/gate.rs:34:17
[INFO] [stdout]    |
[INFO] [stdout] 34 | #[derive(Clone, Serialize)]
[INFO] [stdout]    |                 ^--------
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 `Serialize` is not local
[INFO] [stdout]    |                 move the `impl` block outside of this constant `_IMPL_SERIALIZE_FOR_LockStateLock`
[INFO] [stdout] 35 | pub struct LockStateLock {
[INFO] [stdout]    |            ------------- `LockStateLock` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the derive macro `Serialize` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the derive macro `Serialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive`
[INFO] [stdout]    = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]    = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint
[INFO] [stdout]    = note: this warning originates in the derive macro `Serialize` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]   --> src/gate.rs:41:10
[INFO] [stdout]    |
[INFO] [stdout] 41 | #[derive(Deserialize)]
[INFO] [stdout]    |          ^----------
[INFO] [stdout]    |          |
[INFO] [stdout]    |          `Deserialize` is not local
[INFO] [stdout]    |          move the `impl` block outside of this constant `_IMPL_DESERIALIZE_FOR_GateConfiguration`
[INFO] [stdout] 42 | pub struct GateConfiguration {
[INFO] [stdout]    |            ----------------- `GateConfiguration` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the derive macro `Deserialize` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the derive macro `Deserialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive`
[INFO] [stdout]    = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]    = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint
[INFO] [stdout]    = note: this warning originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/gate.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pin.set_value(1);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 61 |     let _ = pin.set_value(1);
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/gate.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 63 |     pin.set_value(0);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 63 |     let _ = pin.set_value(0);
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/gate.rs:188:13
[INFO] [stdout]     |
[INFO] [stdout] 188 |             self.gpio_exit_relay.set_value(0);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 188 |             let _ = self.gpio_exit_relay.set_value(0);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/gate.rs:221:13
[INFO] [stdout]     |
[INFO] [stdout] 221 |             self.gpio_exit_relay.set_value(1);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 221 |             let _ = self.gpio_exit_relay.set_value(1);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]  --> src/service_configuration.rs:7:10
[INFO] [stdout]   |
[INFO] [stdout] 7 | #[derive(Deserialize)]
[INFO] [stdout]   |          ^----------
[INFO] [stdout]   |          |
[INFO] [stdout]   |          `Deserialize` is not local
[INFO] [stdout]   |          move the `impl` block outside of this constant `_IMPL_DESERIALIZE_FOR_ServiceConfiguration`
[INFO] [stdout] 8 | pub struct ServiceConfiguration {
[INFO] [stdout]   |            -------------------- `ServiceConfiguration` is not local
[INFO] [stdout]   |
[INFO] [stdout]   = note: the derive macro `Deserialize` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]   = note: the derive macro `Deserialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive`
[INFO] [stdout]   = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]   = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint
[INFO] [stdout]   = note: this warning originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]   --> src/server.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 | #[derive(Serialize)]
[INFO] [stdout]    |          ^--------
[INFO] [stdout]    |          |
[INFO] [stdout]    |          `Serialize` is not local
[INFO] [stdout]    |          move the `impl` block outside of this constant `_IMPL_SERIALIZE_FOR_GateAPIResponse`
[INFO] [stdout] 14 | struct GateAPIResponse {
[INFO] [stdout]    |        --------------- `GateAPIResponse` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the derive macro `Serialize` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the derive macro `Serialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive`
[INFO] [stdout]    = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]    = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint
[INFO] [stdout]    = note: this warning originates in the derive macro `Serialize` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/server.rs:55:20
[INFO] [stdout]    |
[INFO] [stdout] 55 |         let gate = GATE.as_mut().unwrap();
[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]    = 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/server.rs:87:29
[INFO] [stdout]    |
[INFO] [stdout] 87 |             state_changed = GATE.as_mut().unwrap().change_state(desired_state.unwrap());
[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]    = 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/server.rs:115:26
[INFO] [stdout]     |
[INFO] [stdout] 115 |             lock_added = GATE.as_mut().unwrap().hold_state(desired_state.unwrap(), ttl);
[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]     = 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/server.rs:139:18
[INFO] [stdout]     |
[INFO] [stdout] 139 |         result = GATE.as_mut().unwrap().delete_lock(id);
[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]     = 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/main.rs:26:17
[INFO] [stdout]    |
[INFO] [stdout] 26 |                 server::GATE.as_mut().unwrap().sync();
[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]    = 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]    = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]  --> src/gate.rs:8:41
[INFO] [stdout]   |
[INFO] [stdout] 8 | #[derive(Copy, Clone, Debug, PartialEq, Serialize, Deserialize)]
[INFO] [stdout]   |                                         ^--------
[INFO] [stdout]   |                                         |
[INFO] [stdout]   |                                         `Serialize` is not local
[INFO] [stdout]   |                                         move the `impl` block outside of this constant `_IMPL_SERIALIZE_FOR_State`
[INFO] [stdout] 9 | pub enum State {
[INFO] [stdout]   |          ----- `State` is not local
[INFO] [stdout]   |
[INFO] [stdout]   = note: the derive macro `Serialize` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]   = note: the derive macro `Serialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive`
[INFO] [stdout]   = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]   = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint
[INFO] [stdout]   = note: `#[warn(non_local_definitions)]` on by default
[INFO] [stdout]   = note: this warning originates in the derive macro `Serialize` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]  --> src/gate.rs:8:52
[INFO] [stdout]   |
[INFO] [stdout] 8 | #[derive(Copy, Clone, Debug, PartialEq, Serialize, Deserialize)]
[INFO] [stdout]   |                                                    ^----------
[INFO] [stdout]   |                                                    |
[INFO] [stdout]   |                                                    `Deserialize` is not local
[INFO] [stdout]   |                                                    move the `impl` block outside of this constant `_IMPL_DESERIALIZE_FOR_State`
[INFO] [stdout] 9 | pub enum State {
[INFO] [stdout]   |          ----- `State` is not local
[INFO] [stdout]   |
[INFO] [stdout]   = note: the derive macro `Deserialize` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]   = note: the derive macro `Deserialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive`
[INFO] [stdout]   = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]   = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint
[INFO] [stdout]   = note: this warning originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]   --> src/gate.rs:34:17
[INFO] [stdout]    |
[INFO] [stdout] 34 | #[derive(Clone, Serialize)]
[INFO] [stdout]    |                 ^--------
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 `Serialize` is not local
[INFO] [stdout]    |                 move the `impl` block outside of this constant `_IMPL_SERIALIZE_FOR_LockStateLock`
[INFO] [stdout] 35 | pub struct LockStateLock {
[INFO] [stdout]    |            ------------- `LockStateLock` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the derive macro `Serialize` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the derive macro `Serialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive`
[INFO] [stdout]    = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]    = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint
[INFO] [stdout]    = note: this warning originates in the derive macro `Serialize` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]   --> src/gate.rs:41:10
[INFO] [stdout]    |
[INFO] [stdout] 41 | #[derive(Deserialize)]
[INFO] [stdout]    |          ^----------
[INFO] [stdout]    |          |
[INFO] [stdout]    |          `Deserialize` is not local
[INFO] [stdout]    |          move the `impl` block outside of this constant `_IMPL_DESERIALIZE_FOR_GateConfiguration`
[INFO] [stdout] 42 | pub struct GateConfiguration {
[INFO] [stdout]    |            ----------------- `GateConfiguration` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the derive macro `Deserialize` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the derive macro `Deserialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive`
[INFO] [stdout]    = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]    = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint
[INFO] [stdout]    = note: this warning originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/gate.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pin.set_value(1);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 61 |     let _ = pin.set_value(1);
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/gate.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 63 |     pin.set_value(0);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 63 |     let _ = pin.set_value(0);
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/gate.rs:188:13
[INFO] [stdout]     |
[INFO] [stdout] 188 |             self.gpio_exit_relay.set_value(0);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 188 |             let _ = self.gpio_exit_relay.set_value(0);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/gate.rs:221:13
[INFO] [stdout]     |
[INFO] [stdout] 221 |             self.gpio_exit_relay.set_value(1);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 221 |             let _ = self.gpio_exit_relay.set_value(1);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]  --> src/service_configuration.rs:7:10
[INFO] [stdout]   |
[INFO] [stdout] 7 | #[derive(Deserialize)]
[INFO] [stdout]   |          ^----------
[INFO] [stdout]   |          |
[INFO] [stdout]   |          `Deserialize` is not local
[INFO] [stdout]   |          move the `impl` block outside of this constant `_IMPL_DESERIALIZE_FOR_ServiceConfiguration`
[INFO] [stdout] 8 | pub struct ServiceConfiguration {
[INFO] [stdout]   |            -------------------- `ServiceConfiguration` is not local
[INFO] [stdout]   |
[INFO] [stdout]   = note: the derive macro `Deserialize` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]   = note: the derive macro `Deserialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive`
[INFO] [stdout]   = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]   = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint
[INFO] [stdout]   = note: this warning originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stdout]   --> src/server.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 | #[derive(Serialize)]
[INFO] [stdout]    |          ^--------
[INFO] [stdout]    |          |
[INFO] [stdout]    |          `Serialize` is not local
[INFO] [stdout]    |          move the `impl` block outside of this constant `_IMPL_SERIALIZE_FOR_GateAPIResponse`
[INFO] [stdout] 14 | struct GateAPIResponse {
[INFO] [stdout]    |        --------------- `GateAPIResponse` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the derive macro `Serialize` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the derive macro `Serialize` may come from an old version of the `serde_derive` crate, try updating your dependency with `cargo update -p serde_derive`
[INFO] [stdout]    = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl`
[INFO] [stdout]    = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint
[INFO] [stdout]    = note: this warning originates in the derive macro `Serialize` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/server.rs:55:20
[INFO] [stdout]    |
[INFO] [stdout] 55 |         let gate = GATE.as_mut().unwrap();
[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]    = 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/server.rs:87:29
[INFO] [stdout]    |
[INFO] [stdout] 87 |             state_changed = GATE.as_mut().unwrap().change_state(desired_state.unwrap());
[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]    = 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/server.rs:115:26
[INFO] [stdout]     |
[INFO] [stdout] 115 |             lock_added = GATE.as_mut().unwrap().hold_state(desired_state.unwrap(), ttl);
[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]     = 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/server.rs:139:18
[INFO] [stdout]     |
[INFO] [stdout] 139 |         result = GATE.as_mut().unwrap().delete_lock(id);
[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]     = 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] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 21.57s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: gpio-cdev v0.2.0, h2 v0.2.5, hyper v0.13.5
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 8`
[INFO] running `Command { std: "docker" "inspect" "bbdcc5c2430c55551d8932dcc31ec06fd743896c95b9809838f102361937fc76", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "bbdcc5c2430c55551d8932dcc31ec06fd743896c95b9809838f102361937fc76", kill_on_drop: false }`
[INFO] [stdout] bbdcc5c2430c55551d8932dcc31ec06fd743896c95b9809838f102361937fc76
