[INFO] cloning repository https://github.com/syntacticsugarglider/self-profile-ice-repro
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/syntacticsugarglider/self-profile-ice-repro" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsyntacticsugarglider%2Fself-profile-ice-repro", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsyntacticsugarglider%2Fself-profile-ice-repro'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] a31f2f9ec5e0d27ac1807b44635df289e52aa8a8
[INFO] testing syntacticsugarglider/self-profile-ice-repro/a31f2f9ec5e0d27ac1807b44635df289e52aa8a8 against 1.93.0 for beta-1.94-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsyntacticsugarglider%2Fself-profile-ice-repro" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/syntacticsugarglider/self-profile-ice-repro
[INFO] finished tweaking git repo https://github.com/syntacticsugarglider/self-profile-ice-repro
[INFO] tweaked toml for git repo https://github.com/syntacticsugarglider/self-profile-ice-repro written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/syntacticsugarglider/self-profile-ice-repro on toolchain 1.93.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.93.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/syntacticsugarglider/self-profile-ice-repro already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.93.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: /workspace/builds/worker-1-tc1/source/core-error/Cargo.toml: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr]     Updating git repository `https://github.com/core-error/core-error`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded unicode-xid v0.2.0
[INFO] [stderr]   Downloaded termcolor v1.1.0
[INFO] [stderr]   Downloaded proc-macro2 v1.0.18
[INFO] [stderr]   Downloaded rustversion v1.0.3
[INFO] [stderr]   Downloaded trybuild v1.0.30
[INFO] [stderr]   Downloaded futures-macro v0.3.5
[INFO] [stderr]   Downloaded futures-task v0.3.5
[INFO] [stderr]   Downloaded futures-sink v0.3.5
[INFO] [stderr]   Downloaded ref-cast-impl v1.0.2
[INFO] [stderr]   Downloaded bincode v1.2.1
[INFO] [stderr]   Downloaded scoped-tls v0.1.2
[INFO] [stderr]   Downloaded generator v0.6.21
[INFO] [stderr]   Downloaded bytes v0.5.5
[INFO] [stderr]   Downloaded genio v0.2.1
[INFO] [stderr]   Downloaded loom v0.3.4
[INFO] [stderr]   Downloaded serde_json v1.0.55
[INFO] [stderr]   Downloaded arrayvec v0.5.1
[INFO] [stderr]   Downloaded futures-util v0.3.5
[INFO] [stderr]   Downloaded syn v1.0.32
[INFO] [stderr]   Downloaded cc v1.0.54
[INFO] [stderr]   Downloaded log v0.4.8
[INFO] [stderr]   Downloaded memchr v2.3.3
[INFO] [stderr]   Downloaded pin-project v0.4.22
[INFO] [stderr]   Downloaded anyhow v1.0.31
[INFO] [stderr]   Downloaded dissimilar v1.0.2
[INFO] [stderr]   Downloaded glob v0.3.0
[INFO] [stderr]   Downloaded synstructure v0.12.4
[INFO] [stderr]   Downloaded libc v0.2.71
[INFO] [stderr]   Downloaded futures-core v0.3.5
[INFO] [stderr]   Downloaded proc-macro-hack v0.5.16
[INFO] [stderr]   Downloaded serde_derive v1.0.113
[INFO] [stderr]   Downloaded serde v1.0.113
[INFO] [stderr]   Downloaded pin-project-lite v0.1.7
[INFO] [stderr]   Downloaded autocfg v1.0.0
[INFO] [stderr]   Downloaded piper v0.1.3
[INFO] [stderr]   Downloaded futures-channel v0.3.5
[INFO] [stderr]   Downloaded pin-project-internal v0.4.22
[INFO] [stderr]   Downloaded futures-executor v0.3.5
[INFO] [stderr]   Downloaded futures-io v0.3.5
[INFO] [stderr]   Downloaded once_cell v1.4.0
[INFO] [stderr]   Downloaded futures v0.3.5
[INFO] [stderr]   Downloaded toml v0.5.6
[INFO] [stderr]   Downloaded ref-cast v1.0.2
[INFO] [stderr]   Downloaded tokio v0.2.21
[INFO] [stderr]   Downloaded winapi v0.3.8
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:98afbf2d16093dec2546ff8915fddc74e65664aa03fc460b3712b1c2c54a33e4" "/opt/rustwide/cargo-home/bin/cargo" "+1.93.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 4f385a9ba83e1c2e8e8a00ef4b9662b605fd8b819b571872f31e43511bb1288b
[INFO] running `Command { std: "docker" "start" "-a" "4f385a9ba83e1c2e8e8a00ef4b9662b605fd8b819b571872f31e43511bb1288b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4f385a9ba83e1c2e8e8a00ef4b9662b605fd8b819b571872f31e43511bb1288b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4f385a9ba83e1c2e8e8a00ef4b9662b605fd8b819b571872f31e43511bb1288b", kill_on_drop: false }`
[INFO] [stdout] 4f385a9ba83e1c2e8e8a00ef4b9662b605fd8b819b571872f31e43511bb1288b
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:98afbf2d16093dec2546ff8915fddc74e65664aa03fc460b3712b1c2c54a33e4" "/opt/rustwide/cargo-home/bin/cargo" "+1.93.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 420a30aea3ab1f2faaedd69adabcc1ca6c90e23c8b5cca19d3c3a9abd65a2dc3
[INFO] running `Command { std: "docker" "start" "-a" "420a30aea3ab1f2faaedd69adabcc1ca6c90e23c8b5cca19d3c3a9abd65a2dc3", kill_on_drop: false }`
[INFO] [stderr] warning: /opt/rustwide/workdir/core-error/Cargo.toml: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr]    Compiling proc-macro2 v1.0.18
[INFO] [stderr]    Compiling unicode-xid v0.2.0
[INFO] [stderr]    Compiling syn v1.0.32
[INFO] [stderr]    Compiling version_check v0.9.2
[INFO] [stderr]    Compiling pin-project-internal v0.4.22
[INFO] [stderr]    Compiling memchr v2.3.3
[INFO] [stderr]    Compiling proc-macro-nested v0.1.6
[INFO] [stderr]    Compiling proc-macro-hack v0.5.16
[INFO] [stderr]    Compiling once_cell v1.4.0
[INFO] [stderr]    Compiling futures-sink v0.3.5
[INFO] [stderr]    Compiling futures-core v0.3.5
[INFO] [stderr]    Compiling slab v0.4.2
[INFO] [stderr]    Compiling futures-io v0.3.5
[INFO] [stderr]    Compiling serde_derive v1.0.113
[INFO] [stderr]    Compiling autocfg v1.0.0
[INFO] [stderr]    Compiling byteorder v1.3.4
[INFO] [stderr]    Compiling serde v1.0.113
[INFO] [stderr]    Compiling futures-task v0.3.5
[INFO] [stderr]    Compiling futures-channel v0.3.5
[INFO] [stderr]    Compiling lazy_static v1.4.0
[INFO] [stderr]    Compiling cfg-if v0.1.10
[INFO] [stderr]    Compiling void v1.0.2
[INFO] [stderr]    Compiling arrayvec v0.5.1
[INFO] [stderr]    Compiling crossbeam-utils v0.7.2
[INFO] [stderr]    Compiling core-error v0.0.1-rc4 (https://github.com/core-error/core-error#9ffbf19b)
[INFO] [stderr]    Compiling core-error v0.0.1-rc4 (/opt/rustwide/workdir/core-error)
[INFO] [stderr]    Compiling quote v1.0.7
[INFO] [stderr]    Compiling synstructure v0.12.4
[INFO] [stderr]    Compiling futures-macro v0.3.5
[INFO] [stderr]    Compiling thiserror-impl v1.0.11 (/opt/rustwide/workdir/thiserror/impl)
[INFO] [stderr]    Compiling derive v0.1.0 (/opt/rustwide/workdir/protocol/derive)
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> thiserror/impl/src/attr.rs:27:19
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn get(input: &[Attribute]) -> Result<Attrs> {
[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] 27 | pub fn get(input: &[Attribute]) -> Result<Attrs<'_>> {
[INFO] [stdout]    |                                                ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]  --> thiserror/impl/src/prop.rs:5:30
[INFO] [stdout]   |
[INFO] [stdout] 5 |     pub(crate) fn from_field(&self) -> Option<&Field> {
[INFO] [stdout]   |                              ^^^^^            ^^^^^^
[INFO] [stdout]   |                              |                ||
[INFO] [stdout]   |                              |                |the same lifetime is hidden here
[INFO] [stdout]   |                              |                the same lifetime is elided here
[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] 5 |     pub(crate) fn from_field(&self) -> Option<&Field<'_>> {
[INFO] [stdout]   |                                                     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]  --> thiserror/impl/src/prop.rs:9:32
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub(crate) fn source_field(&self) -> Option<&Field> {
[INFO] [stdout]   |                                ^^^^^            ^^^^^^
[INFO] [stdout]   |                                |                ||
[INFO] [stdout]   |                                |                |the same lifetime is hidden here
[INFO] [stdout]   |                                |                the same lifetime is elided here
[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] 9 |     pub(crate) fn source_field(&self) -> Option<&Field<'_>> {
[INFO] [stdout]   |                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> thiserror/impl/src/prop.rs:13:35
[INFO] [stdout]    |
[INFO] [stdout] 13 |     pub(crate) fn backtrace_field(&self) -> Option<&Field> {
[INFO] [stdout]    |                                   ^^^^^            ^^^^^^
[INFO] [stdout]    |                                   |                ||
[INFO] [stdout]    |                                   |                |the same lifetime is hidden here
[INFO] [stdout]    |                                   |                the same lifetime is elided here
[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] 13 |     pub(crate) fn backtrace_field(&self) -> Option<&Field<'_>> {
[INFO] [stdout]    |                                                          ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> thiserror/impl/src/prop.rs:46:30
[INFO] [stdout]    |
[INFO] [stdout] 46 |     pub(crate) fn from_field(&self) -> Option<&Field> {
[INFO] [stdout]    |                              ^^^^^            ^^^^^^
[INFO] [stdout]    |                              |                ||
[INFO] [stdout]    |                              |                |the same lifetime is hidden here
[INFO] [stdout]    |                              |                the same lifetime is elided here
[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] 46 |     pub(crate) fn from_field(&self) -> Option<&Field<'_>> {
[INFO] [stdout]    |                                                     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> thiserror/impl/src/prop.rs:50:32
[INFO] [stdout]    |
[INFO] [stdout] 50 |     pub(crate) fn source_field(&self) -> Option<&Field> {
[INFO] [stdout]    |                                ^^^^^            ^^^^^^
[INFO] [stdout]    |                                |                ||
[INFO] [stdout]    |                                |                |the same lifetime is hidden here
[INFO] [stdout]    |                                |                the same lifetime is elided here
[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] 50 |     pub(crate) fn source_field(&self) -> Option<&Field<'_>> {
[INFO] [stdout]    |                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> thiserror/impl/src/prop.rs:54:35
[INFO] [stdout]    |
[INFO] [stdout] 54 |     pub(crate) fn backtrace_field(&self) -> Option<&Field> {
[INFO] [stdout]    |                                   ^^^^^            ^^^^^^
[INFO] [stdout]    |                                   |                ||
[INFO] [stdout]    |                                   |                |the same lifetime is hidden here
[INFO] [stdout]    |                                   |                the same lifetime is elided here
[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] 54 |     pub(crate) fn backtrace_field(&self) -> Option<&Field<'_>> {
[INFO] [stdout]    |                                                          ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling thiserror v1.0.11 (/opt/rustwide/workdir/thiserror)
[INFO] [stderr]    Compiling pin-project v0.4.22
[INFO] [stderr]    Compiling futures-util v0.3.5
[INFO] [stderr]    Compiling futures-executor v0.3.5
[INFO] [stderr]    Compiling piper v0.1.3
[INFO] [stderr]    Compiling futures v0.3.5
[INFO] [stderr]    Compiling protocol v0.1.0 (/opt/rustwide/workdir/protocol)
[INFO] [stderr]    Compiling bincode v1.2.1
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/arrays.rs:330:25
[INFO] [stdout]     |
[INFO] [stdout] 330 |                         replace(this, Array0001Unravel::Fork(ctx.fork(data)));
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[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] 330 |                         let _ = replace(this, Array0001Unravel::Fork(ctx.fork(data)));
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/arrays.rs:338:21
[INFO] [stdout]     |
[INFO] [stdout] 338 |                     replace(this, Array0001Unravel::Write(handle, target));
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 338 |                     let _ = replace(this, Array0001Unravel::Write(handle, target));
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/arrays.rs:346:25
[INFO] [stdout]     |
[INFO] [stdout] 346 |                         replace(this, Array0001Unravel::Flush(target));
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 346 |                         let _ = replace(this, Array0001Unravel::Flush(target));
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/arrays.rs:356:25
[INFO] [stdout]     |
[INFO] [stdout] 356 |                         replace(this, Array0001Unravel::Target(target));
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 356 |                         let _ = replace(this, Array0001Unravel::Target(target));
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/arrays.rs:364:21
[INFO] [stdout]     |
[INFO] [stdout] 364 |                     replace(this, Array0001Unravel::Done);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 364 |                     let _ = replace(this, Array0001Unravel::Done);
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/arrays.rs:397:21
[INFO] [stdout]     |
[INFO] [stdout] 397 |                     replace(this, Array0001Coalesce::Join(ctx.join(handle)));
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 397 |                     let _ = replace(this, Array0001Coalesce::Join(ctx.join(handle)));
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/option.rs:117:21
[INFO] [stdout]     |
[INFO] [stdout] 117 |                     replace(this, OptionUnravel::Flush(None));
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 117 |                     let _ = replace(this, OptionUnravel::Flush(None));
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/option.rs:122:25
[INFO] [stdout]     |
[INFO] [stdout] 122 |                         replace(this, OptionUnravel::Fork(ctx.fork(data)));
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 122 |                         let _ = replace(this, OptionUnravel::Fork(ctx.fork(data)));
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/option.rs:130:21
[INFO] [stdout]     |
[INFO] [stdout] 130 |                     replace(this, OptionUnravel::Write(handle, target));
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 130 |                     let _ = replace(this, OptionUnravel::Write(handle, target));
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/option.rs:139:25
[INFO] [stdout]     |
[INFO] [stdout] 139 |                         replace(this, OptionUnravel::Flush(Some(target)));
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 139 |                         let _ = replace(this, OptionUnravel::Flush(Some(target)));
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/option.rs:150:29
[INFO] [stdout]     |
[INFO] [stdout] 150 | ...                   replace(this, OptionUnravel::Target(target));
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 150 |                             let _ = replace(this, OptionUnravel::Target(target));
[INFO] [stdout]     |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/option.rs:152:29
[INFO] [stdout]     |
[INFO] [stdout] 152 | ...                   replace(this, OptionUnravel::Done);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 152 |                             let _ = replace(this, OptionUnravel::Done);
[INFO] [stdout]     |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/option.rs:162:21
[INFO] [stdout]     |
[INFO] [stdout] 162 |                     replace(this, OptionUnravel::Done);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 162 |                     let _ = replace(this, OptionUnravel::Done);
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/option.rs:197:29
[INFO] [stdout]     |
[INFO] [stdout] 197 | ...                   replace(this, OptionCoalesce::Done);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 197 |                             let _ = replace(this, OptionCoalesce::Done);
[INFO] [stdout]     |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/option.rs:201:29
[INFO] [stdout]     |
[INFO] [stdout] 201 | ...                   replace(this, OptionCoalesce::Join(ctx.join(handle)));
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 201 |                             let _ = replace(this, OptionCoalesce::Join(ctx.join(handle)));
[INFO] [stdout]     |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/result.rs:169:25
[INFO] [stdout]     |
[INFO] [stdout] 169 |                         replace(this, ResultUnravel::OkFork(ctx.fork(data)));
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 169 |                         let _ = replace(this, ResultUnravel::OkFork(ctx.fork(data)));
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/result.rs:177:21
[INFO] [stdout]     |
[INFO] [stdout] 177 |                     replace(this, ResultUnravel::OkWrite(handle, target));
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 177 |                     let _ = replace(this, ResultUnravel::OkWrite(handle, target));
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/result.rs:182:25
[INFO] [stdout]     |
[INFO] [stdout] 182 |                         replace(this, ResultUnravel::ErrFork(ctx.fork(data)));
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 182 |                         let _ = replace(this, ResultUnravel::ErrFork(ctx.fork(data)));
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/result.rs:190:21
[INFO] [stdout]     |
[INFO] [stdout] 190 |                     replace(this, ResultUnravel::ErrWrite(handle, target));
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 190 |                     let _ = replace(this, ResultUnravel::ErrWrite(handle, target));
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/result.rs:198:25
[INFO] [stdout]     |
[INFO] [stdout] 198 |                         replace(this, ResultUnravel::OkFlush(target));
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 198 |                         let _ = replace(this, ResultUnravel::OkFlush(target));
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/result.rs:210:25
[INFO] [stdout]     |
[INFO] [stdout] 210 |                         replace(this, ResultUnravel::ErrFlush(target));
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 210 |                         let _ = replace(this, ResultUnravel::ErrFlush(target));
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/result.rs:220:25
[INFO] [stdout]     |
[INFO] [stdout] 220 |                         replace(this, ResultUnravel::OkTarget(target));
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 220 |                         let _ = replace(this, ResultUnravel::OkTarget(target));
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/result.rs:230:25
[INFO] [stdout]     |
[INFO] [stdout] 230 |                         replace(this, ResultUnravel::ErrTarget(target));
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 230 |                         let _ = replace(this, ResultUnravel::ErrTarget(target));
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/result.rs:238:21
[INFO] [stdout]     |
[INFO] [stdout] 238 |                     replace(this, ResultUnravel::Done);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 238 |                     let _ = replace(this, ResultUnravel::Done);
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/result.rs:246:21
[INFO] [stdout]     |
[INFO] [stdout] 246 |                     replace(this, ResultUnravel::Done);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 246 |                     let _ = replace(this, ResultUnravel::Done);
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/result.rs:294:29
[INFO] [stdout]     |
[INFO] [stdout] 294 | / ...                   replace(
[INFO] [stdout] 295 | | ...                       this,
[INFO] [stdout] 296 | | ...                       ResultCoalesce::OkJoin(<C as Join<T>>::join(ctx, data)),
[INFO] [stdout] 297 | | ...                   );
[INFO] [stdout]     | |_______________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 294 |                             let _ = replace(
[INFO] [stdout]     |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/result.rs:300:29
[INFO] [stdout]     |
[INFO] [stdout] 300 | / ...                   replace(
[INFO] [stdout] 301 | | ...                       this,
[INFO] [stdout] 302 | | ...                       ResultCoalesce::ErrJoin(<C as Join<E>>::join(ctx, data)),
[INFO] [stdout] 303 | | ...                   );
[INFO] [stdout]     | |_______________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 300 |                             let _ = replace(
[INFO] [stdout]     |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/tuples.rs:649:21
[INFO] [stdout]     |
[INFO] [stdout] 649 | /                     replace(
[INFO] [stdout] 650 | |                         &mut this.state,
[INFO] [stdout] 651 | |                         Tuple2UnravelState::T(
[INFO] [stdout] 652 | |                             ctx.fork(this.data.0.take().expect("data incomplete")),
[INFO] [stdout] 653 | |                         ),
[INFO] [stdout] 654 | |                     );
[INFO] [stdout]     | |_____________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 649 |                     let _ = replace(
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/tuples.rs:661:21
[INFO] [stdout]     |
[INFO] [stdout] 661 | /                     replace(
[INFO] [stdout] 662 | |                         &mut this.state,
[INFO] [stdout] 663 | |                         Tuple2UnravelState::U(
[INFO] [stdout] 664 | |                             ctx.fork(this.data.1.take().expect("data incomplete")),
[INFO] [stdout] 665 | |                         ),
[INFO] [stdout] 666 | |                     );
[INFO] [stdout]     | |_____________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 661 |                     let _ = replace(
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/tuples.rs:673:21
[INFO] [stdout]     |
[INFO] [stdout] 673 |                     replace(&mut this.state, Tuple2UnravelState::Writing);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 673 |                     let _ = replace(&mut this.state, Tuple2UnravelState::Writing);
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/tuples.rs:683:21
[INFO] [stdout]     |
[INFO] [stdout] 683 |                     replace(&mut this.state, Tuple2UnravelState::Flushing);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 683 |                     let _ = replace(&mut this.state, Tuple2UnravelState::Flushing);
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/tuples.rs:689:21
[INFO] [stdout]     |
[INFO] [stdout] 689 |                     replace(&mut this.state, Tuple2UnravelState::Target);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 689 |                     let _ = replace(&mut this.state, Tuple2UnravelState::Target);
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/tuples.rs:695:21
[INFO] [stdout]     |
[INFO] [stdout] 695 |                     replace(&mut this.state, Tuple2UnravelState::Done);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 695 |                     let _ = replace(&mut this.state, Tuple2UnravelState::Done);
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/tuples.rs:746:21
[INFO] [stdout]     |
[INFO] [stdout] 746 | /                     replace(
[INFO] [stdout] 747 | |                         &mut this.state,
[INFO] [stdout] 748 | |                         Tuple2CoalesceState::T(<C as Join<T>>::join(ctx, first)),
[INFO] [stdout] 749 | |                     );
[INFO] [stdout]     | |_____________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 746 |                     let _ = replace(
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/tuples.rs:757:21
[INFO] [stdout]     |
[INFO] [stdout] 757 | /                     replace(
[INFO] [stdout] 758 | |                         &mut this.state,
[INFO] [stdout] 759 | |                         Tuple2CoalesceState::U(<C as Join<U>>::join(
[INFO] [stdout] 760 | |                             ctx,
[INFO] [stdout] 761 | |                             this.handles.1.take().expect("handles incomplete"),
[INFO] [stdout] 762 | |                         )),
[INFO] [stdout] 763 | |                     );
[INFO] [stdout]     | |_____________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 757 |                     let _ = replace(
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/tuples.rs:769:21
[INFO] [stdout]     |
[INFO] [stdout] 769 |                     replace(&mut this.state, Tuple2CoalesceState::Done);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 769 |                     let _ = replace(&mut this.state, Tuple2CoalesceState::Done);
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/tuples.rs:981:25
[INFO] [stdout]     |
[INFO] [stdout] 981 |                         replace(&mut this.state, FlatUnravelState::Fork(ctx.fork(data)));
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 981 |                         let _ = replace(&mut this.state, FlatUnravelState::Fork(ctx.fork(data)));
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/tuples.rs:989:21
[INFO] [stdout]     |
[INFO] [stdout] 989 |                     replace(&mut this.state, FlatUnravelState::Write(handle, target));
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 989 |                     let _ = replace(&mut this.state, FlatUnravelState::Write(handle, target));
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/tuples.rs:997:25
[INFO] [stdout]     |
[INFO] [stdout] 997 |                         replace(&mut this.state, FlatUnravelState::Flush(target));
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 997 |                         let _ = replace(&mut this.state, FlatUnravelState::Flush(target));
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]     --> protocol/src/tuples.rs:1007:25
[INFO] [stdout]      |
[INFO] [stdout] 1007 |                         replace(&mut this.state, FlatUnravelState::Target(target));
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1007 |                         let _ = replace(&mut this.state, FlatUnravelState::Target(target));
[INFO] [stdout]      |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]     --> protocol/src/tuples.rs:1015:21
[INFO] [stdout]      |
[INFO] [stdout] 1015 |                     replace(&mut this.state, FlatUnravelState::Done);
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1015 |                     let _ = replace(&mut this.state, FlatUnravelState::Done);
[INFO] [stdout]      |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]     --> protocol/src/tuples.rs:1048:21
[INFO] [stdout]      |
[INFO] [stdout] 1048 |                     replace(&mut this.state, FlatCoalesceState::Join(ctx.join(handle)));
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1048 |                     let _ = replace(&mut this.state, FlatCoalesceState::Join(ctx.join(handle)));
[INFO] [stdout]      |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]     --> protocol/src/tuples.rs:1053:21
[INFO] [stdout]      |
[INFO] [stdout] 1053 |                     replace(&mut this.state, FlatCoalesceState::Done);
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1053 |                     let _ = replace(&mut this.state, FlatCoalesceState::Done);
[INFO] [stdout]      |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]     --> protocol/src/tuples.rs:1098:1
[INFO] [stdout]      |
[INFO] [stdout] 1098 | / tuple_impls! {
[INFO] [stdout] 1099 | |     Tuple3Coalesce  Tuple3CoalesceState  Tuple3Unravel  Tuple3UnravelState  Tuple3UnravelError  Tuple3CoalesceError  => (0 (T0 T1) 1 (T1 ...
[INFO] [stdout] 1100 | |     Tuple4Coalesce  Tuple4CoalesceState  Tuple4Unravel  Tuple4UnravelState  Tuple4UnravelError  Tuple4CoalesceError  => (0 (T0 T1) 1 (T1 ...
[INFO] [stdout] 1101 | |     Tuple5Coalesce  Tuple5CoalesceState  Tuple5Unravel  Tuple5UnravelState  Tuple5UnravelError  Tuple5CoalesceError  => (0 (T0 T1) 1 (T1 ...
[INFO] [stdout] ...    |
[INFO] [stdout] 1112 | |     Tuple16Coalesce Tuple16CoalesceState Tuple16Unravel Tuple16UnravelState Tuple16UnravelError Tuple16CoalesceError => (0 (T0 T1) 1 (T1 ...
[INFO] [stdout] 1113 | | }
[INFO] [stdout]      | |_^
[INFO] [stdout]      |
[INFO] [stdout]      = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1098 | let _ = tuple_impls! {
[INFO] [stdout]      | +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling protocol-mve-transport v0.1.0 (/opt/rustwide/workdir/protocol-mve-transport)
[INFO] [stderr]    Compiling compilemem v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `core::pin::Pin`
[INFO] [stdout]  --> src/main.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use core::pin::Pin;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Sink` and `Stream`
[INFO] [stdout]  --> src/main.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use futures::{Sink, Stream};
[INFO] [stdout]   |               ^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Tester` is never constructed
[INFO] [stdout]    --> src/main.rs:104:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | struct Tester
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) 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/main.rs:9:1
[INFO] [stdout]    |
[INFO] [stdout]  9 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Coalesce` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_Id` and up 2 bodies
[INFO] [stdout] 10 | #[derive(Debug, Clone, Copy, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 11 | pub struct Id([u8; 32]);
[INFO] [stdout]    |            -- `Id` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:9:1
[INFO] [stdout]    |
[INFO] [stdout]  9 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Unravel` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_Id` and up 2 bodies
[INFO] [stdout] 10 | #[derive(Debug, Clone, Copy, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 11 | pub struct Id([u8; 32]);
[INFO] [stdout]    |            -- `Id` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:13:1
[INFO] [stdout]    |
[INFO] [stdout] 13 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Coalesce` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_Item` and up 2 bodies
[INFO] [stdout] 14 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 15 | pub struct Item {
[INFO] [stdout]    |            ---- `Item` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:13:1
[INFO] [stdout]    |
[INFO] [stdout] 13 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Unravel` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_Item` and up 2 bodies
[INFO] [stdout] 14 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 15 | pub struct Item {
[INFO] [stdout]    |            ---- `Item` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:20:1
[INFO] [stdout]    |
[INFO] [stdout] 20 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Coalesce` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_TypePosition` and up 2 bodies
[INFO] [stdout] 21 | #[derive(Debug, Clone, Copy, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 22 | pub enum TypePosition {
[INFO] [stdout]    |          ------------ `TypePosition` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:20:1
[INFO] [stdout]    |
[INFO] [stdout] 20 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Unravel` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_TypePosition` and up 2 bodies
[INFO] [stdout] 21 | #[derive(Debug, Clone, Copy, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 22 | pub enum TypePosition {
[INFO] [stdout]    |          ------------ `TypePosition` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:27:1
[INFO] [stdout]    |
[INFO] [stdout] 27 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Coalesce` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_Generics` and up 2 bodies
[INFO] [stdout] 28 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 29 | pub struct Generics {
[INFO] [stdout]    |            -------- `Generics` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:27:1
[INFO] [stdout]    |
[INFO] [stdout] 27 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Unravel` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_Generics` and up 2 bodies
[INFO] [stdout] 28 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 29 | pub struct Generics {
[INFO] [stdout]    |            -------- `Generics` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:34:1
[INFO] [stdout]    |
[INFO] [stdout] 34 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Coalesce` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_Binding` and up 2 bodies
[INFO] [stdout] 35 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 36 | pub struct Binding {
[INFO] [stdout]    |            ------- `Binding` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:34:1
[INFO] [stdout]    |
[INFO] [stdout] 34 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Unravel` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_Binding` and up 2 bodies
[INFO] [stdout] 35 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 36 | pub struct Binding {
[INFO] [stdout]    |            ------- `Binding` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:41:1
[INFO] [stdout]    |
[INFO] [stdout] 41 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Coalesce` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_Product` and up 2 bodies
[INFO] [stdout] 42 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 43 | pub struct Product {
[INFO] [stdout]    |            ------- `Product` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:41:1
[INFO] [stdout]    |
[INFO] [stdout] 41 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Unravel` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_Product` and up 2 bodies
[INFO] [stdout] 42 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 43 | pub struct Product {
[INFO] [stdout]    |            ------- `Product` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:47:1
[INFO] [stdout]    |
[INFO] [stdout] 47 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Coalesce` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_Variant` and up 2 bodies
[INFO] [stdout] 48 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 49 | pub struct Variant {
[INFO] [stdout]    |            ------- `Variant` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:47:1
[INFO] [stdout]    |
[INFO] [stdout] 47 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Unravel` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_Variant` and up 2 bodies
[INFO] [stdout] 48 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 49 | pub struct Variant {
[INFO] [stdout]    |            ------- `Variant` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:54:1
[INFO] [stdout]    |
[INFO] [stdout] 54 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Coalesce` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_Receiver` and up 2 bodies
[INFO] [stdout] 55 | #[derive(Debug, Clone, Copy, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 56 | pub enum Receiver {
[INFO] [stdout]    |          -------- `Receiver` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:54:1
[INFO] [stdout]    |
[INFO] [stdout] 54 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Unravel` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_Receiver` and up 2 bodies
[INFO] [stdout] 55 | #[derive(Debug, Clone, Copy, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 56 | pub enum Receiver {
[INFO] [stdout]    |          -------- `Receiver` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:62:1
[INFO] [stdout]    |
[INFO] [stdout] 62 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Coalesce` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_Method` and up 2 bodies
[INFO] [stdout] 63 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 64 | pub struct Method {
[INFO] [stdout]    |            ------ `Method` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:62:1
[INFO] [stdout]    |
[INFO] [stdout] 62 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Unravel` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_Method` and up 2 bodies
[INFO] [stdout] 63 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 64 | pub struct Method {
[INFO] [stdout]    |            ------ `Method` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:70:1
[INFO] [stdout]    |
[INFO] [stdout] 70 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Coalesce` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_Capture` and up 2 bodies
[INFO] [stdout] 71 | #[derive(Debug, Clone, Copy, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 72 | pub enum Capture {
[INFO] [stdout]    |          ------- `Capture` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:70:1
[INFO] [stdout]    |
[INFO] [stdout] 70 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Unravel` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_Capture` and up 2 bodies
[INFO] [stdout] 71 | #[derive(Debug, Clone, Copy, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 72 | pub enum Capture {
[INFO] [stdout]    |          ------- `Capture` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:78:1
[INFO] [stdout]    |
[INFO] [stdout] 78 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Coalesce` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_Type` and up 2 bodies
[INFO] [stdout] 79 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 80 | pub enum Type {
[INFO] [stdout]    |          ---- `Type` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:78:1
[INFO] [stdout]    |
[INFO] [stdout] 78 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Unravel` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_Type` and up 2 bodies
[INFO] [stdout] 79 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 80 | pub enum Type {
[INFO] [stdout]    |          ---- `Type` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 42.55s
[INFO] running `Command { std: "docker" "inspect" "420a30aea3ab1f2faaedd69adabcc1ca6c90e23c8b5cca19d3c3a9abd65a2dc3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "420a30aea3ab1f2faaedd69adabcc1ca6c90e23c8b5cca19d3c3a9abd65a2dc3", kill_on_drop: false }`
[INFO] [stdout] 420a30aea3ab1f2faaedd69adabcc1ca6c90e23c8b5cca19d3c3a9abd65a2dc3
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:98afbf2d16093dec2546ff8915fddc74e65664aa03fc460b3712b1c2c54a33e4" "/opt/rustwide/cargo-home/bin/cargo" "+1.93.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 8f79fd1b919606e6070c718a302e7ca28014e8e59e458f2514588a491ca04041
[INFO] running `Command { std: "docker" "start" "-a" "8f79fd1b919606e6070c718a302e7ca28014e8e59e458f2514588a491ca04041", kill_on_drop: false }`
[INFO] [stderr] warning: /opt/rustwide/workdir/core-error/Cargo.toml: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> thiserror/impl/src/attr.rs:27:19
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn get(input: &[Attribute]) -> Result<Attrs> {
[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] 27 | pub fn get(input: &[Attribute]) -> Result<Attrs<'_>> {
[INFO] [stdout]    |                                                ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]  --> thiserror/impl/src/prop.rs:5:30
[INFO] [stdout]   |
[INFO] [stdout] 5 |     pub(crate) fn from_field(&self) -> Option<&Field> {
[INFO] [stdout]   |                              ^^^^^            ^^^^^^
[INFO] [stdout]   |                              |                ||
[INFO] [stdout]   |                              |                |the same lifetime is hidden here
[INFO] [stdout]   |                              |                the same lifetime is elided here
[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] 5 |     pub(crate) fn from_field(&self) -> Option<&Field<'_>> {
[INFO] [stdout]   |                                                     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]  --> thiserror/impl/src/prop.rs:9:32
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub(crate) fn source_field(&self) -> Option<&Field> {
[INFO] [stdout]   |                                ^^^^^            ^^^^^^
[INFO] [stdout]   |                                |                ||
[INFO] [stdout]   |                                |                |the same lifetime is hidden here
[INFO] [stdout]   |                                |                the same lifetime is elided here
[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] 9 |     pub(crate) fn source_field(&self) -> Option<&Field<'_>> {
[INFO] [stdout]   |                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> thiserror/impl/src/prop.rs:13:35
[INFO] [stdout]    |
[INFO] [stdout] 13 |     pub(crate) fn backtrace_field(&self) -> Option<&Field> {
[INFO] [stdout]    |                                   ^^^^^            ^^^^^^
[INFO] [stdout]    |                                   |                ||
[INFO] [stdout]    |                                   |                |the same lifetime is hidden here
[INFO] [stdout]    |                                   |                the same lifetime is elided here
[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] 13 |     pub(crate) fn backtrace_field(&self) -> Option<&Field<'_>> {
[INFO] [stdout]    |                                                          ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> thiserror/impl/src/prop.rs:46:30
[INFO] [stdout]    |
[INFO] [stdout] 46 |     pub(crate) fn from_field(&self) -> Option<&Field> {
[INFO] [stdout]    |                              ^^^^^            ^^^^^^
[INFO] [stdout]    |                              |                ||
[INFO] [stdout]    |                              |                |the same lifetime is hidden here
[INFO] [stdout]    |                              |                the same lifetime is elided here
[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] 46 |     pub(crate) fn from_field(&self) -> Option<&Field<'_>> {
[INFO] [stdout]    |                                                     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> thiserror/impl/src/prop.rs:50:32
[INFO] [stdout]    |
[INFO] [stdout] 50 |     pub(crate) fn source_field(&self) -> Option<&Field> {
[INFO] [stdout]    |                                ^^^^^            ^^^^^^
[INFO] [stdout]    |                                |                ||
[INFO] [stdout]    |                                |                |the same lifetime is hidden here
[INFO] [stdout]    |                                |                the same lifetime is elided here
[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] 50 |     pub(crate) fn source_field(&self) -> Option<&Field<'_>> {
[INFO] [stdout]    |                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> thiserror/impl/src/prop.rs:54:35
[INFO] [stdout]    |
[INFO] [stdout] 54 |     pub(crate) fn backtrace_field(&self) -> Option<&Field> {
[INFO] [stdout]    |                                   ^^^^^            ^^^^^^
[INFO] [stdout]    |                                   |                ||
[INFO] [stdout]    |                                   |                |the same lifetime is hidden here
[INFO] [stdout]    |                                   |                the same lifetime is elided here
[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] 54 |     pub(crate) fn backtrace_field(&self) -> Option<&Field<'_>> {
[INFO] [stdout]    |                                                          ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/arrays.rs:330:25
[INFO] [stdout]     |
[INFO] [stdout] 330 |                         replace(this, Array0001Unravel::Fork(ctx.fork(data)));
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[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] 330 |                         let _ = replace(this, Array0001Unravel::Fork(ctx.fork(data)));
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/arrays.rs:338:21
[INFO] [stdout]     |
[INFO] [stdout] 338 |                     replace(this, Array0001Unravel::Write(handle, target));
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 338 |                     let _ = replace(this, Array0001Unravel::Write(handle, target));
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/arrays.rs:346:25
[INFO] [stdout]     |
[INFO] [stdout] 346 |                         replace(this, Array0001Unravel::Flush(target));
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 346 |                         let _ = replace(this, Array0001Unravel::Flush(target));
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/arrays.rs:356:25
[INFO] [stdout]     |
[INFO] [stdout] 356 |                         replace(this, Array0001Unravel::Target(target));
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 356 |                         let _ = replace(this, Array0001Unravel::Target(target));
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/arrays.rs:364:21
[INFO] [stdout]     |
[INFO] [stdout] 364 |                     replace(this, Array0001Unravel::Done);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 364 |                     let _ = replace(this, Array0001Unravel::Done);
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/arrays.rs:397:21
[INFO] [stdout]     |
[INFO] [stdout] 397 |                     replace(this, Array0001Coalesce::Join(ctx.join(handle)));
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 397 |                     let _ = replace(this, Array0001Coalesce::Join(ctx.join(handle)));
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/option.rs:117:21
[INFO] [stdout]     |
[INFO] [stdout] 117 |                     replace(this, OptionUnravel::Flush(None));
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 117 |                     let _ = replace(this, OptionUnravel::Flush(None));
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/option.rs:122:25
[INFO] [stdout]     |
[INFO] [stdout] 122 |                         replace(this, OptionUnravel::Fork(ctx.fork(data)));
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 122 |                         let _ = replace(this, OptionUnravel::Fork(ctx.fork(data)));
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/option.rs:130:21
[INFO] [stdout]     |
[INFO] [stdout] 130 |                     replace(this, OptionUnravel::Write(handle, target));
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 130 |                     let _ = replace(this, OptionUnravel::Write(handle, target));
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/option.rs:139:25
[INFO] [stdout]     |
[INFO] [stdout] 139 |                         replace(this, OptionUnravel::Flush(Some(target)));
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 139 |                         let _ = replace(this, OptionUnravel::Flush(Some(target)));
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/option.rs:150:29
[INFO] [stdout]     |
[INFO] [stdout] 150 | ...                   replace(this, OptionUnravel::Target(target));
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 150 |                             let _ = replace(this, OptionUnravel::Target(target));
[INFO] [stdout]     |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/option.rs:152:29
[INFO] [stdout]     |
[INFO] [stdout] 152 | ...                   replace(this, OptionUnravel::Done);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 152 |                             let _ = replace(this, OptionUnravel::Done);
[INFO] [stdout]     |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/option.rs:162:21
[INFO] [stdout]     |
[INFO] [stdout] 162 |                     replace(this, OptionUnravel::Done);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 162 |                     let _ = replace(this, OptionUnravel::Done);
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/option.rs:197:29
[INFO] [stdout]     |
[INFO] [stdout] 197 | ...                   replace(this, OptionCoalesce::Done);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 197 |                             let _ = replace(this, OptionCoalesce::Done);
[INFO] [stdout]     |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/option.rs:201:29
[INFO] [stdout]     |
[INFO] [stdout] 201 | ...                   replace(this, OptionCoalesce::Join(ctx.join(handle)));
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 201 |                             let _ = replace(this, OptionCoalesce::Join(ctx.join(handle)));
[INFO] [stdout]     |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/result.rs:169:25
[INFO] [stdout]     |
[INFO] [stdout] 169 |                         replace(this, ResultUnravel::OkFork(ctx.fork(data)));
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 169 |                         let _ = replace(this, ResultUnravel::OkFork(ctx.fork(data)));
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/result.rs:177:21
[INFO] [stdout]     |
[INFO] [stdout] 177 |                     replace(this, ResultUnravel::OkWrite(handle, target));
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 177 |                     let _ = replace(this, ResultUnravel::OkWrite(handle, target));
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/result.rs:182:25
[INFO] [stdout]     |
[INFO] [stdout] 182 |                         replace(this, ResultUnravel::ErrFork(ctx.fork(data)));
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 182 |                         let _ = replace(this, ResultUnravel::ErrFork(ctx.fork(data)));
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/result.rs:190:21
[INFO] [stdout]     |
[INFO] [stdout] 190 |                     replace(this, ResultUnravel::ErrWrite(handle, target));
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 190 |                     let _ = replace(this, ResultUnravel::ErrWrite(handle, target));
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/result.rs:198:25
[INFO] [stdout]     |
[INFO] [stdout] 198 |                         replace(this, ResultUnravel::OkFlush(target));
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 198 |                         let _ = replace(this, ResultUnravel::OkFlush(target));
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/result.rs:210:25
[INFO] [stdout]     |
[INFO] [stdout] 210 |                         replace(this, ResultUnravel::ErrFlush(target));
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 210 |                         let _ = replace(this, ResultUnravel::ErrFlush(target));
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/result.rs:220:25
[INFO] [stdout]     |
[INFO] [stdout] 220 |                         replace(this, ResultUnravel::OkTarget(target));
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 220 |                         let _ = replace(this, ResultUnravel::OkTarget(target));
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/result.rs:230:25
[INFO] [stdout]     |
[INFO] [stdout] 230 |                         replace(this, ResultUnravel::ErrTarget(target));
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 230 |                         let _ = replace(this, ResultUnravel::ErrTarget(target));
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/result.rs:238:21
[INFO] [stdout]     |
[INFO] [stdout] 238 |                     replace(this, ResultUnravel::Done);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 238 |                     let _ = replace(this, ResultUnravel::Done);
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/result.rs:246:21
[INFO] [stdout]     |
[INFO] [stdout] 246 |                     replace(this, ResultUnravel::Done);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 246 |                     let _ = replace(this, ResultUnravel::Done);
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/result.rs:294:29
[INFO] [stdout]     |
[INFO] [stdout] 294 | / ...                   replace(
[INFO] [stdout] 295 | | ...                       this,
[INFO] [stdout] 296 | | ...                       ResultCoalesce::OkJoin(<C as Join<T>>::join(ctx, data)),
[INFO] [stdout] 297 | | ...                   );
[INFO] [stdout]     | |_______________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 294 |                             let _ = replace(
[INFO] [stdout]     |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/result.rs:300:29
[INFO] [stdout]     |
[INFO] [stdout] 300 | / ...                   replace(
[INFO] [stdout] 301 | | ...                       this,
[INFO] [stdout] 302 | | ...                       ResultCoalesce::ErrJoin(<C as Join<E>>::join(ctx, data)),
[INFO] [stdout] 303 | | ...                   );
[INFO] [stdout]     | |_______________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 300 |                             let _ = replace(
[INFO] [stdout]     |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/tuples.rs:649:21
[INFO] [stdout]     |
[INFO] [stdout] 649 | /                     replace(
[INFO] [stdout] 650 | |                         &mut this.state,
[INFO] [stdout] 651 | |                         Tuple2UnravelState::T(
[INFO] [stdout] 652 | |                             ctx.fork(this.data.0.take().expect("data incomplete")),
[INFO] [stdout] 653 | |                         ),
[INFO] [stdout] 654 | |                     );
[INFO] [stdout]     | |_____________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 649 |                     let _ = replace(
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/tuples.rs:661:21
[INFO] [stdout]     |
[INFO] [stdout] 661 | /                     replace(
[INFO] [stdout] 662 | |                         &mut this.state,
[INFO] [stdout] 663 | |                         Tuple2UnravelState::U(
[INFO] [stdout] 664 | |                             ctx.fork(this.data.1.take().expect("data incomplete")),
[INFO] [stdout] 665 | |                         ),
[INFO] [stdout] 666 | |                     );
[INFO] [stdout]     | |_____________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 661 |                     let _ = replace(
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/tuples.rs:673:21
[INFO] [stdout]     |
[INFO] [stdout] 673 |                     replace(&mut this.state, Tuple2UnravelState::Writing);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 673 |                     let _ = replace(&mut this.state, Tuple2UnravelState::Writing);
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/tuples.rs:683:21
[INFO] [stdout]     |
[INFO] [stdout] 683 |                     replace(&mut this.state, Tuple2UnravelState::Flushing);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 683 |                     let _ = replace(&mut this.state, Tuple2UnravelState::Flushing);
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/tuples.rs:689:21
[INFO] [stdout]     |
[INFO] [stdout] 689 |                     replace(&mut this.state, Tuple2UnravelState::Target);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 689 |                     let _ = replace(&mut this.state, Tuple2UnravelState::Target);
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/tuples.rs:695:21
[INFO] [stdout]     |
[INFO] [stdout] 695 |                     replace(&mut this.state, Tuple2UnravelState::Done);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 695 |                     let _ = replace(&mut this.state, Tuple2UnravelState::Done);
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/tuples.rs:746:21
[INFO] [stdout]     |
[INFO] [stdout] 746 | /                     replace(
[INFO] [stdout] 747 | |                         &mut this.state,
[INFO] [stdout] 748 | |                         Tuple2CoalesceState::T(<C as Join<T>>::join(ctx, first)),
[INFO] [stdout] 749 | |                     );
[INFO] [stdout]     | |_____________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 746 |                     let _ = replace(
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/tuples.rs:757:21
[INFO] [stdout]     |
[INFO] [stdout] 757 | /                     replace(
[INFO] [stdout] 758 | |                         &mut this.state,
[INFO] [stdout] 759 | |                         Tuple2CoalesceState::U(<C as Join<U>>::join(
[INFO] [stdout] 760 | |                             ctx,
[INFO] [stdout] 761 | |                             this.handles.1.take().expect("handles incomplete"),
[INFO] [stdout] 762 | |                         )),
[INFO] [stdout] 763 | |                     );
[INFO] [stdout]     | |_____________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 757 |                     let _ = replace(
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/tuples.rs:769:21
[INFO] [stdout]     |
[INFO] [stdout] 769 |                     replace(&mut this.state, Tuple2CoalesceState::Done);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 769 |                     let _ = replace(&mut this.state, Tuple2CoalesceState::Done);
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/tuples.rs:981:25
[INFO] [stdout]     |
[INFO] [stdout] 981 |                         replace(&mut this.state, FlatUnravelState::Fork(ctx.fork(data)));
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 981 |                         let _ = replace(&mut this.state, FlatUnravelState::Fork(ctx.fork(data)));
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/tuples.rs:989:21
[INFO] [stdout]     |
[INFO] [stdout] 989 |                     replace(&mut this.state, FlatUnravelState::Write(handle, target));
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 989 |                     let _ = replace(&mut this.state, FlatUnravelState::Write(handle, target));
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]    --> protocol/src/tuples.rs:997:25
[INFO] [stdout]     |
[INFO] [stdout] 997 |                         replace(&mut this.state, FlatUnravelState::Flush(target));
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 997 |                         let _ = replace(&mut this.state, FlatUnravelState::Flush(target));
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]     --> protocol/src/tuples.rs:1007:25
[INFO] [stdout]      |
[INFO] [stdout] 1007 |                         replace(&mut this.state, FlatUnravelState::Target(target));
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1007 |                         let _ = replace(&mut this.state, FlatUnravelState::Target(target));
[INFO] [stdout]      |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]     --> protocol/src/tuples.rs:1015:21
[INFO] [stdout]      |
[INFO] [stdout] 1015 |                     replace(&mut this.state, FlatUnravelState::Done);
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1015 |                     let _ = replace(&mut this.state, FlatUnravelState::Done);
[INFO] [stdout]      |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling compilemem v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]     --> protocol/src/tuples.rs:1048:21
[INFO] [stdout]      |
[INFO] [stdout] 1048 |                     replace(&mut this.state, FlatCoalesceState::Join(ctx.join(handle)));
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1048 |                     let _ = replace(&mut this.state, FlatCoalesceState::Join(ctx.join(handle)));
[INFO] [stdout]      |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]     --> protocol/src/tuples.rs:1053:21
[INFO] [stdout]      |
[INFO] [stdout] 1053 |                     replace(&mut this.state, FlatCoalesceState::Done);
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1053 |                     let _ = replace(&mut this.state, FlatCoalesceState::Done);
[INFO] [stdout]      |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stdout]     --> protocol/src/tuples.rs:1098:1
[INFO] [stdout]      |
[INFO] [stdout] 1098 | / tuple_impls! {
[INFO] [stdout] 1099 | |     Tuple3Coalesce  Tuple3CoalesceState  Tuple3Unravel  Tuple3UnravelState  Tuple3UnravelError  Tuple3CoalesceError  => (0 (T0 T1) 1 (T1 ...
[INFO] [stdout] 1100 | |     Tuple4Coalesce  Tuple4CoalesceState  Tuple4Unravel  Tuple4UnravelState  Tuple4UnravelError  Tuple4CoalesceError  => (0 (T0 T1) 1 (T1 ...
[INFO] [stdout] 1101 | |     Tuple5Coalesce  Tuple5CoalesceState  Tuple5Unravel  Tuple5UnravelState  Tuple5UnravelError  Tuple5CoalesceError  => (0 (T0 T1) 1 (T1 ...
[INFO] [stdout] ...    |
[INFO] [stdout] 1112 | |     Tuple16Coalesce Tuple16CoalesceState Tuple16Unravel Tuple16UnravelState Tuple16UnravelError Tuple16CoalesceError => (0 (T0 T1) 1 (T1 ...
[INFO] [stdout] 1113 | | }
[INFO] [stdout]      | |_^
[INFO] [stdout]      |
[INFO] [stdout]      = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1098 | let _ = tuple_impls! {
[INFO] [stdout]      | +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::pin::Pin`
[INFO] [stdout]  --> src/main.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use core::pin::Pin;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Sink` and `Stream`
[INFO] [stdout]  --> src/main.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use futures::{Sink, Stream};
[INFO] [stdout]   |               ^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Tester` is never constructed
[INFO] [stdout]    --> src/main.rs:104:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | struct Tester
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) 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/main.rs:9:1
[INFO] [stdout]    |
[INFO] [stdout]  9 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Coalesce` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_Id` and up 2 bodies
[INFO] [stdout] 10 | #[derive(Debug, Clone, Copy, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 11 | pub struct Id([u8; 32]);
[INFO] [stdout]    |            -- `Id` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:9:1
[INFO] [stdout]    |
[INFO] [stdout]  9 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Unravel` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_Id` and up 2 bodies
[INFO] [stdout] 10 | #[derive(Debug, Clone, Copy, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 11 | pub struct Id([u8; 32]);
[INFO] [stdout]    |            -- `Id` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:13:1
[INFO] [stdout]    |
[INFO] [stdout] 13 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Coalesce` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_Item` and up 2 bodies
[INFO] [stdout] 14 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 15 | pub struct Item {
[INFO] [stdout]    |            ---- `Item` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:13:1
[INFO] [stdout]    |
[INFO] [stdout] 13 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Unravel` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_Item` and up 2 bodies
[INFO] [stdout] 14 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 15 | pub struct Item {
[INFO] [stdout]    |            ---- `Item` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:20:1
[INFO] [stdout]    |
[INFO] [stdout] 20 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Coalesce` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_TypePosition` and up 2 bodies
[INFO] [stdout] 21 | #[derive(Debug, Clone, Copy, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 22 | pub enum TypePosition {
[INFO] [stdout]    |          ------------ `TypePosition` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:20:1
[INFO] [stdout]    |
[INFO] [stdout] 20 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Unravel` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_TypePosition` and up 2 bodies
[INFO] [stdout] 21 | #[derive(Debug, Clone, Copy, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 22 | pub enum TypePosition {
[INFO] [stdout]    |          ------------ `TypePosition` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:27:1
[INFO] [stdout]    |
[INFO] [stdout] 27 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Coalesce` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_Generics` and up 2 bodies
[INFO] [stdout] 28 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 29 | pub struct Generics {
[INFO] [stdout]    |            -------- `Generics` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:27:1
[INFO] [stdout]    |
[INFO] [stdout] 27 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Unravel` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_Generics` and up 2 bodies
[INFO] [stdout] 28 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 29 | pub struct Generics {
[INFO] [stdout]    |            -------- `Generics` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:34:1
[INFO] [stdout]    |
[INFO] [stdout] 34 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Coalesce` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_Binding` and up 2 bodies
[INFO] [stdout] 35 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 36 | pub struct Binding {
[INFO] [stdout]    |            ------- `Binding` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:34:1
[INFO] [stdout]    |
[INFO] [stdout] 34 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Unravel` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_Binding` and up 2 bodies
[INFO] [stdout] 35 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 36 | pub struct Binding {
[INFO] [stdout]    |            ------- `Binding` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:41:1
[INFO] [stdout]    |
[INFO] [stdout] 41 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Coalesce` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_Product` and up 2 bodies
[INFO] [stdout] 42 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 43 | pub struct Product {
[INFO] [stdout]    |            ------- `Product` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:41:1
[INFO] [stdout]    |
[INFO] [stdout] 41 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Unravel` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_Product` and up 2 bodies
[INFO] [stdout] 42 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 43 | pub struct Product {
[INFO] [stdout]    |            ------- `Product` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:47:1
[INFO] [stdout]    |
[INFO] [stdout] 47 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Coalesce` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_Variant` and up 2 bodies
[INFO] [stdout] 48 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 49 | pub struct Variant {
[INFO] [stdout]    |            ------- `Variant` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:47:1
[INFO] [stdout]    |
[INFO] [stdout] 47 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Unravel` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_Variant` and up 2 bodies
[INFO] [stdout] 48 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 49 | pub struct Variant {
[INFO] [stdout]    |            ------- `Variant` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:54:1
[INFO] [stdout]    |
[INFO] [stdout] 54 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Coalesce` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_Receiver` and up 2 bodies
[INFO] [stdout] 55 | #[derive(Debug, Clone, Copy, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 56 | pub enum Receiver {
[INFO] [stdout]    |          -------- `Receiver` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:54:1
[INFO] [stdout]    |
[INFO] [stdout] 54 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Unravel` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_Receiver` and up 2 bodies
[INFO] [stdout] 55 | #[derive(Debug, Clone, Copy, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 56 | pub enum Receiver {
[INFO] [stdout]    |          -------- `Receiver` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:62:1
[INFO] [stdout]    |
[INFO] [stdout] 62 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Coalesce` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_Method` and up 2 bodies
[INFO] [stdout] 63 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 64 | pub struct Method {
[INFO] [stdout]    |            ------ `Method` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:62:1
[INFO] [stdout]    |
[INFO] [stdout] 62 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Unravel` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_Method` and up 2 bodies
[INFO] [stdout] 63 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 64 | pub struct Method {
[INFO] [stdout]    |            ------ `Method` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:70:1
[INFO] [stdout]    |
[INFO] [stdout] 70 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Coalesce` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_Capture` and up 2 bodies
[INFO] [stdout] 71 | #[derive(Debug, Clone, Copy, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 72 | pub enum Capture {
[INFO] [stdout]    |          ------- `Capture` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:70:1
[INFO] [stdout]    |
[INFO] [stdout] 70 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Unravel` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_Capture` and up 2 bodies
[INFO] [stdout] 71 | #[derive(Debug, Clone, Copy, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 72 | pub enum Capture {
[INFO] [stdout]    |          ------- `Capture` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:78:1
[INFO] [stdout]    |
[INFO] [stdout] 78 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Coalesce` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_Type` and up 2 bodies
[INFO] [stdout] 79 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 80 | pub enum Type {
[INFO] [stdout]    |          ---- `Type` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (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/main.rs:78:1
[INFO] [stdout]    |
[INFO] [stdout] 78 | #[protocol]
[INFO] [stdout]    | ^----------
[INFO] [stdout]    | |
[INFO] [stdout]    | `Unravel` is not local
[INFO] [stdout]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_Type` and up 2 bodies
[INFO] [stdout] 79 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stdout] 80 | pub enum Type {
[INFO] [stdout]    |          ---- `Type` is not local
[INFO] [stdout]    |
[INFO] [stdout]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stdout]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p 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 attribute macro `protocol` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1.10s
[INFO] running `Command { std: "docker" "inspect" "8f79fd1b919606e6070c718a302e7ca28014e8e59e458f2514588a491ca04041", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8f79fd1b919606e6070c718a302e7ca28014e8e59e458f2514588a491ca04041", kill_on_drop: false }`
[INFO] [stdout] 8f79fd1b919606e6070c718a302e7ca28014e8e59e458f2514588a491ca04041
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:98afbf2d16093dec2546ff8915fddc74e65664aa03fc460b3712b1c2c54a33e4" "/opt/rustwide/cargo-home/bin/cargo" "+1.93.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 1a4c1159d13fa895da32a7f2883e9e11893d4528c71656ee7377623787e99a6a
[INFO] running `Command { std: "docker" "start" "-a" "1a4c1159d13fa895da32a7f2883e9e11893d4528c71656ee7377623787e99a6a", kill_on_drop: false }`
[INFO] [stderr] warning: /opt/rustwide/workdir/core-error/Cargo.toml: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]   --> thiserror/impl/src/attr.rs:27:19
[INFO] [stderr]    |
[INFO] [stderr] 27 | pub fn get(input: &[Attribute]) -> Result<Attrs> {
[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] 27 | pub fn get(input: &[Attribute]) -> Result<Attrs<'_>> {
[INFO] [stderr]    |                                                ++++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]  --> thiserror/impl/src/prop.rs:5:30
[INFO] [stderr]   |
[INFO] [stderr] 5 |     pub(crate) fn from_field(&self) -> Option<&Field> {
[INFO] [stderr]   |                              ^^^^^            ^^^^^^
[INFO] [stderr]   |                              |                ||
[INFO] [stderr]   |                              |                |the same lifetime is hidden here
[INFO] [stderr]   |                              |                the same lifetime is elided here
[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] 5 |     pub(crate) fn from_field(&self) -> Option<&Field<'_>> {
[INFO] [stderr]   |                                                     ++++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]  --> thiserror/impl/src/prop.rs:9:32
[INFO] [stderr]   |
[INFO] [stderr] 9 |     pub(crate) fn source_field(&self) -> Option<&Field> {
[INFO] [stderr]   |                                ^^^^^            ^^^^^^
[INFO] [stderr]   |                                |                ||
[INFO] [stderr]   |                                |                |the same lifetime is hidden here
[INFO] [stderr]   |                                |                the same lifetime is elided here
[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] 9 |     pub(crate) fn source_field(&self) -> Option<&Field<'_>> {
[INFO] [stderr]   |                                                       ++++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]   --> thiserror/impl/src/prop.rs:13:35
[INFO] [stderr]    |
[INFO] [stderr] 13 |     pub(crate) fn backtrace_field(&self) -> Option<&Field> {
[INFO] [stderr]    |                                   ^^^^^            ^^^^^^
[INFO] [stderr]    |                                   |                ||
[INFO] [stderr]    |                                   |                |the same lifetime is hidden here
[INFO] [stderr]    |                                   |                the same lifetime is elided here
[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] 13 |     pub(crate) fn backtrace_field(&self) -> Option<&Field<'_>> {
[INFO] [stderr]    |                                                          ++++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]   --> thiserror/impl/src/prop.rs:46:30
[INFO] [stderr]    |
[INFO] [stderr] 46 |     pub(crate) fn from_field(&self) -> Option<&Field> {
[INFO] [stderr]    |                              ^^^^^            ^^^^^^
[INFO] [stderr]    |                              |                ||
[INFO] [stderr]    |                              |                |the same lifetime is hidden here
[INFO] [stderr]    |                              |                the same lifetime is elided here
[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] 46 |     pub(crate) fn from_field(&self) -> Option<&Field<'_>> {
[INFO] [stderr]    |                                                     ++++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]   --> thiserror/impl/src/prop.rs:50:32
[INFO] [stderr]    |
[INFO] [stderr] 50 |     pub(crate) fn source_field(&self) -> Option<&Field> {
[INFO] [stderr]    |                                ^^^^^            ^^^^^^
[INFO] [stderr]    |                                |                ||
[INFO] [stderr]    |                                |                |the same lifetime is hidden here
[INFO] [stderr]    |                                |                the same lifetime is elided here
[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] 50 |     pub(crate) fn source_field(&self) -> Option<&Field<'_>> {
[INFO] [stderr]    |                                                       ++++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]   --> thiserror/impl/src/prop.rs:54:35
[INFO] [stderr]    |
[INFO] [stderr] 54 |     pub(crate) fn backtrace_field(&self) -> Option<&Field> {
[INFO] [stderr]    |                                   ^^^^^            ^^^^^^
[INFO] [stderr]    |                                   |                ||
[INFO] [stderr]    |                                   |                |the same lifetime is hidden here
[INFO] [stderr]    |                                   |                the same lifetime is elided here
[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] 54 |     pub(crate) fn backtrace_field(&self) -> Option<&Field<'_>> {
[INFO] [stderr]    |                                                          ++++
[INFO] [stderr] 
[INFO] [stderr] warning: `thiserror-impl` (lib) generated 7 warnings (run `cargo fix --lib -p thiserror-impl` to apply 7 suggestions)
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/arrays.rs:330:25
[INFO] [stderr]     |
[INFO] [stderr] 330 |                         replace(this, Array0001Unravel::Fork(ctx.fork(data)));
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 330 |                         let _ = replace(this, Array0001Unravel::Fork(ctx.fork(data)));
[INFO] [stderr]     |                         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/arrays.rs:338:21
[INFO] [stderr]     |
[INFO] [stderr] 338 |                     replace(this, Array0001Unravel::Write(handle, target));
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 338 |                     let _ = replace(this, Array0001Unravel::Write(handle, target));
[INFO] [stderr]     |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/arrays.rs:346:25
[INFO] [stderr]     |
[INFO] [stderr] 346 |                         replace(this, Array0001Unravel::Flush(target));
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 346 |                         let _ = replace(this, Array0001Unravel::Flush(target));
[INFO] [stderr]     |                         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/arrays.rs:356:25
[INFO] [stderr]     |
[INFO] [stderr] 356 |                         replace(this, Array0001Unravel::Target(target));
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 356 |                         let _ = replace(this, Array0001Unravel::Target(target));
[INFO] [stderr]     |                         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/arrays.rs:364:21
[INFO] [stderr]     |
[INFO] [stderr] 364 |                     replace(this, Array0001Unravel::Done);
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 364 |                     let _ = replace(this, Array0001Unravel::Done);
[INFO] [stderr]     |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/arrays.rs:397:21
[INFO] [stderr]     |
[INFO] [stderr] 397 |                     replace(this, Array0001Coalesce::Join(ctx.join(handle)));
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 397 |                     let _ = replace(this, Array0001Coalesce::Join(ctx.join(handle)));
[INFO] [stderr]     |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/option.rs:117:21
[INFO] [stderr]     |
[INFO] [stderr] 117 |                     replace(this, OptionUnravel::Flush(None));
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 117 |                     let _ = replace(this, OptionUnravel::Flush(None));
[INFO] [stderr]     |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/option.rs:122:25
[INFO] [stderr]     |
[INFO] [stderr] 122 |                         replace(this, OptionUnravel::Fork(ctx.fork(data)));
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 122 |                         let _ = replace(this, OptionUnravel::Fork(ctx.fork(data)));
[INFO] [stderr]     |                         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/option.rs:130:21
[INFO] [stderr]     |
[INFO] [stderr] 130 |                     replace(this, OptionUnravel::Write(handle, target));
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 130 |                     let _ = replace(this, OptionUnravel::Write(handle, target));
[INFO] [stderr]     |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/option.rs:139:25
[INFO] [stderr]     |
[INFO] [stderr] 139 |                         replace(this, OptionUnravel::Flush(Some(target)));
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 139 |                         let _ = replace(this, OptionUnravel::Flush(Some(target)));
[INFO] [stderr]     |                         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/option.rs:150:29
[INFO] [stderr]     |
[INFO] [stderr] 150 | ...                   replace(this, OptionUnravel::Target(target));
[INFO] [stderr]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 150 |                             let _ = replace(this, OptionUnravel::Target(target));
[INFO] [stderr]     |                             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/option.rs:152:29
[INFO] [stderr]     |
[INFO] [stderr] 152 | ...                   replace(this, OptionUnravel::Done);
[INFO] [stderr]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 152 |                             let _ = replace(this, OptionUnravel::Done);
[INFO] [stderr]     |                             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/option.rs:162:21
[INFO] [stderr]     |
[INFO] [stderr] 162 |                     replace(this, OptionUnravel::Done);
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 162 |                     let _ = replace(this, OptionUnravel::Done);
[INFO] [stderr]     |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/option.rs:197:29
[INFO] [stderr]     |
[INFO] [stderr] 197 | ...                   replace(this, OptionCoalesce::Done);
[INFO] [stderr]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 197 |                             let _ = replace(this, OptionCoalesce::Done);
[INFO] [stderr]     |                             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/option.rs:201:29
[INFO] [stderr]     |
[INFO] [stderr] 201 | ...                   replace(this, OptionCoalesce::Join(ctx.join(handle)));
[INFO] [stderr]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 201 |                             let _ = replace(this, OptionCoalesce::Join(ctx.join(handle)));
[INFO] [stderr]     |                             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/result.rs:169:25
[INFO] [stderr]     |
[INFO] [stderr] 169 |                         replace(this, ResultUnravel::OkFork(ctx.fork(data)));
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 169 |                         let _ = replace(this, ResultUnravel::OkFork(ctx.fork(data)));
[INFO] [stderr]     |                         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/result.rs:177:21
[INFO] [stderr]     |
[INFO] [stderr] 177 |                     replace(this, ResultUnravel::OkWrite(handle, target));
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 177 |                     let _ = replace(this, ResultUnravel::OkWrite(handle, target));
[INFO] [stderr]     |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/result.rs:182:25
[INFO] [stderr]     |
[INFO] [stderr] 182 |                         replace(this, ResultUnravel::ErrFork(ctx.fork(data)));
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 182 |                         let _ = replace(this, ResultUnravel::ErrFork(ctx.fork(data)));
[INFO] [stderr]     |                         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/result.rs:190:21
[INFO] [stderr]     |
[INFO] [stderr] 190 |                     replace(this, ResultUnravel::ErrWrite(handle, target));
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 190 |                     let _ = replace(this, ResultUnravel::ErrWrite(handle, target));
[INFO] [stderr]     |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/result.rs:198:25
[INFO] [stderr]     |
[INFO] [stderr] 198 |                         replace(this, ResultUnravel::OkFlush(target));
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 198 |                         let _ = replace(this, ResultUnravel::OkFlush(target));
[INFO] [stderr]     |                         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/result.rs:210:25
[INFO] [stderr]     |
[INFO] [stderr] 210 |                         replace(this, ResultUnravel::ErrFlush(target));
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 210 |                         let _ = replace(this, ResultUnravel::ErrFlush(target));
[INFO] [stderr]     |                         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/result.rs:220:25
[INFO] [stderr]     |
[INFO] [stderr] 220 |                         replace(this, ResultUnravel::OkTarget(target));
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 220 |                         let _ = replace(this, ResultUnravel::OkTarget(target));
[INFO] [stderr]     |                         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/result.rs:230:25
[INFO] [stderr]     |
[INFO] [stderr] 230 |                         replace(this, ResultUnravel::ErrTarget(target));
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 230 |                         let _ = replace(this, ResultUnravel::ErrTarget(target));
[INFO] [stderr]     |                         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/result.rs:238:21
[INFO] [stderr]     |
[INFO] [stderr] 238 |                     replace(this, ResultUnravel::Done);
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 238 |                     let _ = replace(this, ResultUnravel::Done);
[INFO] [stderr]     |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/result.rs:246:21
[INFO] [stderr]     |
[INFO] [stderr] 246 |                     replace(this, ResultUnravel::Done);
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 246 |                     let _ = replace(this, ResultUnravel::Done);
[INFO] [stderr]     |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/result.rs:294:29
[INFO] [stderr]     |
[INFO] [stderr] 294 | / ...                   replace(
[INFO] [stderr] 295 | | ...                       this,
[INFO] [stderr] 296 | | ...                       ResultCoalesce::OkJoin(<C as Join<T>>::join(ctx, data)),
[INFO] [stderr] 297 | | ...                   );
[INFO] [stderr]     | |_______________________^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 294 |                             let _ = replace(
[INFO] [stderr]     |                             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/result.rs:300:29
[INFO] [stderr]     |
[INFO] [stderr] 300 | / ...                   replace(
[INFO] [stderr] 301 | | ...                       this,
[INFO] [stderr] 302 | | ...                       ResultCoalesce::ErrJoin(<C as Join<E>>::join(ctx, data)),
[INFO] [stderr] 303 | | ...                   );
[INFO] [stderr]     | |_______________________^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 300 |                             let _ = replace(
[INFO] [stderr]     |                             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/tuples.rs:649:21
[INFO] [stderr]     |
[INFO] [stderr] 649 | /                     replace(
[INFO] [stderr] 650 | |                         &mut this.state,
[INFO] [stderr] 651 | |                         Tuple2UnravelState::T(
[INFO] [stderr] 652 | |                             ctx.fork(this.data.0.take().expect("data incomplete")),
[INFO] [stderr] 653 | |                         ),
[INFO] [stderr] 654 | |                     );
[INFO] [stderr]     | |_____________________^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 649 |                     let _ = replace(
[INFO] [stderr]     |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/tuples.rs:661:21
[INFO] [stderr]     |
[INFO] [stderr] 661 | /                     replace(
[INFO] [stderr] 662 | |                         &mut this.state,
[INFO] [stderr] 663 | |                         Tuple2UnravelState::U(
[INFO] [stderr] 664 | |                             ctx.fork(this.data.1.take().expect("data incomplete")),
[INFO] [stderr] 665 | |                         ),
[INFO] [stderr] 666 | |                     );
[INFO] [stderr]     | |_____________________^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 661 |                     let _ = replace(
[INFO] [stderr]     |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/tuples.rs:673:21
[INFO] [stderr]     |
[INFO] [stderr] 673 |                     replace(&mut this.state, Tuple2UnravelState::Writing);
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 673 |                     let _ = replace(&mut this.state, Tuple2UnravelState::Writing);
[INFO] [stderr]     |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/tuples.rs:683:21
[INFO] [stderr]     |
[INFO] [stderr] 683 |                     replace(&mut this.state, Tuple2UnravelState::Flushing);
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 683 |                     let _ = replace(&mut this.state, Tuple2UnravelState::Flushing);
[INFO] [stderr]     |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/tuples.rs:689:21
[INFO] [stderr]     |
[INFO] [stderr] 689 |                     replace(&mut this.state, Tuple2UnravelState::Target);
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 689 |                     let _ = replace(&mut this.state, Tuple2UnravelState::Target);
[INFO] [stderr]     |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/tuples.rs:695:21
[INFO] [stderr]     |
[INFO] [stderr] 695 |                     replace(&mut this.state, Tuple2UnravelState::Done);
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 695 |                     let _ = replace(&mut this.state, Tuple2UnravelState::Done);
[INFO] [stderr]     |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/tuples.rs:746:21
[INFO] [stderr]     |
[INFO] [stderr] 746 | /                     replace(
[INFO] [stderr] 747 | |                         &mut this.state,
[INFO] [stderr] 748 | |                         Tuple2CoalesceState::T(<C as Join<T>>::join(ctx, first)),
[INFO] [stderr] 749 | |                     );
[INFO] [stderr]     | |_____________________^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 746 |                     let _ = replace(
[INFO] [stderr]     |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/tuples.rs:757:21
[INFO] [stderr]     |
[INFO] [stderr] 757 | /                     replace(
[INFO] [stderr] 758 | |                         &mut this.state,
[INFO] [stderr] 759 | |                         Tuple2CoalesceState::U(<C as Join<U>>::join(
[INFO] [stderr] 760 | |                             ctx,
[INFO] [stderr] 761 | |                             this.handles.1.take().expect("handles incomplete"),
[INFO] [stderr] 762 | |                         )),
[INFO] [stderr] 763 | |                     );
[INFO] [stderr]     | |_____________________^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 757 |                     let _ = replace(
[INFO] [stderr]     |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/tuples.rs:769:21
[INFO] [stderr]     |
[INFO] [stderr] 769 |                     replace(&mut this.state, Tuple2CoalesceState::Done);
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 769 |                     let _ = replace(&mut this.state, Tuple2CoalesceState::Done);
[INFO] [stderr]     |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/tuples.rs:981:25
[INFO] [stderr]     |
[INFO] [stderr] 981 |                         replace(&mut this.state, FlatUnravelState::Fork(ctx.fork(data)));
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 981 |                         let _ = replace(&mut this.state, FlatUnravelState::Fork(ctx.fork(data)));
[INFO] [stderr]     |                         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/tuples.rs:989:21
[INFO] [stderr]     |
[INFO] [stderr] 989 |                     replace(&mut this.state, FlatUnravelState::Write(handle, target));
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 989 |                     let _ = replace(&mut this.state, FlatUnravelState::Write(handle, target));
[INFO] [stderr]     |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]    --> protocol/src/tuples.rs:997:25
[INFO] [stderr]     |
[INFO] [stderr] 997 |                         replace(&mut this.state, FlatUnravelState::Flush(target));
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 997 |                         let _ = replace(&mut this.state, FlatUnravelState::Flush(target));
[INFO] [stderr]     |                         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]     --> protocol/src/tuples.rs:1007:25
[INFO] [stderr]      |
[INFO] [stderr] 1007 |                         replace(&mut this.state, FlatUnravelState::Target(target));
[INFO] [stderr]      |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]      |
[INFO] [stderr] 1007 |                         let _ = replace(&mut this.state, FlatUnravelState::Target(target));
[INFO] [stderr]      |                         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]     --> protocol/src/tuples.rs:1015:21
[INFO] [stderr]      |
[INFO] [stderr] 1015 |                     replace(&mut this.state, FlatUnravelState::Done);
[INFO] [stderr]      |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]      |
[INFO] [stderr] 1015 |                     let _ = replace(&mut this.state, FlatUnravelState::Done);
[INFO] [stderr]      |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]     --> protocol/src/tuples.rs:1048:21
[INFO] [stderr]      |
[INFO] [stderr] 1048 |                     replace(&mut this.state, FlatCoalesceState::Join(ctx.join(handle)));
[INFO] [stderr]      |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]      |
[INFO] [stderr] 1048 |                     let _ = replace(&mut this.state, FlatCoalesceState::Join(ctx.join(handle)));
[INFO] [stderr]      |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]     --> protocol/src/tuples.rs:1053:21
[INFO] [stderr]      |
[INFO] [stderr] 1053 |                     replace(&mut this.state, FlatCoalesceState::Done);
[INFO] [stderr]      |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]      |
[INFO] [stderr] 1053 |                     let _ = replace(&mut this.state, FlatCoalesceState::Done);
[INFO] [stderr]      |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused return value of `std::mem::replace` that must be used
[INFO] [stderr]     --> protocol/src/tuples.rs:1098:1
[INFO] [stderr]      |
[INFO] [stderr] 1098 | / tuple_impls! {
[INFO] [stderr] 1099 | |     Tuple3Coalesce  Tuple3CoalesceState  Tuple3Unravel  Tuple3UnravelState  Tuple3UnravelError  Tuple3CoalesceError  => (0 (T0 T1) 1 (T1 ...
[INFO] [stderr] 1100 | |     Tuple4Coalesce  Tuple4CoalesceState  Tuple4Unravel  Tuple4UnravelState  Tuple4UnravelError  Tuple4CoalesceError  => (0 (T0 T1) 1 (T1 ...
[INFO] [stderr] 1101 | |     Tuple5Coalesce  Tuple5CoalesceState  Tuple5Unravel  Tuple5UnravelState  Tuple5UnravelError  Tuple5CoalesceError  => (0 (T0 T1) 1 (T1 ...
[INFO] [stderr] ...    |
[INFO] [stderr] 1112 | |     Tuple16Coalesce Tuple16CoalesceState Tuple16Unravel Tuple16UnravelState Tuple16UnravelError Tuple16CoalesceError => (0 (T0 T1) 1 (T1 ...
[INFO] [stderr] 1113 | | }
[INFO] [stderr]      | |_^
[INFO] [stderr]      |
[INFO] [stderr]      = note: if you don't need the old value, you can just assign the new value directly
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]      |
[INFO] [stderr] 1098 | let _ = tuple_impls! {
[INFO] [stderr]      | +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: `protocol` (lib) generated 44 warnings
[INFO] [stderr] warning: unused import: `core::pin::Pin`
[INFO] [stderr]  --> src/main.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use core::pin::Pin;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Sink` and `Stream`
[INFO] [stderr]  --> src/main.rs:4:15
[INFO] [stderr]   |
[INFO] [stderr] 4 | use futures::{Sink, Stream};
[INFO] [stderr]   |               ^^^^  ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Tester` is never constructed
[INFO] [stderr]    --> src/main.rs:104:8
[INFO] [stderr]     |
[INFO] [stderr] 104 | struct Tester
[INFO] [stderr]     |        ^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stderr]   --> src/main.rs:9:1
[INFO] [stderr]    |
[INFO] [stderr]  9 | #[protocol]
[INFO] [stderr]    | ^----------
[INFO] [stderr]    | |
[INFO] [stderr]    | `Coalesce` is not local
[INFO] [stderr]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_Id` and up 2 bodies
[INFO] [stderr] 10 | #[derive(Debug, Clone, Copy, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stderr] 11 | pub struct Id([u8; 32]);
[INFO] [stderr]    |            -- `Id` is not local
[INFO] [stderr]    |
[INFO] [stderr]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stderr]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p derive`
[INFO] [stderr]    = 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] [stderr]    = 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] [stderr]    = note: `#[warn(non_local_definitions)]` on by default
[INFO] [stderr]    = note: this warning originates in the attribute macro `protocol` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stderr]   --> src/main.rs:9:1
[INFO] [stderr]    |
[INFO] [stderr]  9 | #[protocol]
[INFO] [stderr]    | ^----------
[INFO] [stderr]    | |
[INFO] [stderr]    | `Unravel` is not local
[INFO] [stderr]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_Id` and up 2 bodies
[INFO] [stderr] 10 | #[derive(Debug, Clone, Copy, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stderr] 11 | pub struct Id([u8; 32]);
[INFO] [stderr]    |            -- `Id` is not local
[INFO] [stderr]    |
[INFO] [stderr]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stderr]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p derive`
[INFO] [stderr]    = 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] [stderr]    = 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] [stderr]    = note: this warning originates in the attribute macro `protocol` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stderr]   --> src/main.rs:13:1
[INFO] [stderr]    |
[INFO] [stderr] 13 | #[protocol]
[INFO] [stderr]    | ^----------
[INFO] [stderr]    | |
[INFO] [stderr]    | `Coalesce` is not local
[INFO] [stderr]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_Item` and up 2 bodies
[INFO] [stderr] 14 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stderr] 15 | pub struct Item {
[INFO] [stderr]    |            ---- `Item` is not local
[INFO] [stderr]    |
[INFO] [stderr]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stderr]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p derive`
[INFO] [stderr]    = 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] [stderr]    = 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] [stderr]    = note: this warning originates in the attribute macro `protocol` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stderr]   --> src/main.rs:13:1
[INFO] [stderr]    |
[INFO] [stderr] 13 | #[protocol]
[INFO] [stderr]    | ^----------
[INFO] [stderr]    | |
[INFO] [stderr]    | `Unravel` is not local
[INFO] [stderr]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_Item` and up 2 bodies
[INFO] [stderr] 14 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stderr] 15 | pub struct Item {
[INFO] [stderr]    |            ---- `Item` is not local
[INFO] [stderr]    |
[INFO] [stderr]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stderr]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p derive`
[INFO] [stderr]    = 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] [stderr]    = 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] [stderr]    = note: this warning originates in the attribute macro `protocol` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stderr]   --> src/main.rs:20:1
[INFO] [stderr]    |
[INFO] [stderr] 20 | #[protocol]
[INFO] [stderr]    | ^----------
[INFO] [stderr]    | |
[INFO] [stderr]    | `Coalesce` is not local
[INFO] [stderr]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_TypePosition` and up 2 bodies
[INFO] [stderr] 21 | #[derive(Debug, Clone, Copy, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stderr] 22 | pub enum TypePosition {
[INFO] [stderr]    |          ------------ `TypePosition` is not local
[INFO] [stderr]    |
[INFO] [stderr]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stderr]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p derive`
[INFO] [stderr]    = 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] [stderr]    = 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] [stderr]    = note: this warning originates in the attribute macro `protocol` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stderr]   --> src/main.rs:20:1
[INFO] [stderr]    |
[INFO] [stderr] 20 | #[protocol]
[INFO] [stderr]    | ^----------
[INFO] [stderr]    | |
[INFO] [stderr]    | `Unravel` is not local
[INFO] [stderr]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_TypePosition` and up 2 bodies
[INFO] [stderr] 21 | #[derive(Debug, Clone, Copy, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stderr] 22 | pub enum TypePosition {
[INFO] [stderr]    |          ------------ `TypePosition` is not local
[INFO] [stderr]    |
[INFO] [stderr]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stderr]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p derive`
[INFO] [stderr]    = 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] [stderr]    = 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] [stderr]    = note: this warning originates in the attribute macro `protocol` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stderr]   --> src/main.rs:27:1
[INFO] [stderr]    |
[INFO] [stderr] 27 | #[protocol]
[INFO] [stderr]    | ^----------
[INFO] [stderr]    | |
[INFO] [stderr]    | `Coalesce` is not local
[INFO] [stderr]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_Generics` and up 2 bodies
[INFO] [stderr] 28 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stderr] 29 | pub struct Generics {
[INFO] [stderr]    |            -------- `Generics` is not local
[INFO] [stderr]    |
[INFO] [stderr]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stderr]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p derive`
[INFO] [stderr]    = 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] [stderr]    = 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] [stderr]    = note: this warning originates in the attribute macro `protocol` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stderr]   --> src/main.rs:27:1
[INFO] [stderr]    |
[INFO] [stderr] 27 | #[protocol]
[INFO] [stderr]    | ^----------
[INFO] [stderr]    | |
[INFO] [stderr]    | `Unravel` is not local
[INFO] [stderr]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_Generics` and up 2 bodies
[INFO] [stderr] 28 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stderr] 29 | pub struct Generics {
[INFO] [stderr]    |            -------- `Generics` is not local
[INFO] [stderr]    |
[INFO] [stderr]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stderr]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p derive`
[INFO] [stderr]    = 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] [stderr]    = 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] [stderr]    = note: this warning originates in the attribute macro `protocol` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stderr]   --> src/main.rs:34:1
[INFO] [stderr]    |
[INFO] [stderr] 34 | #[protocol]
[INFO] [stderr]    | ^----------
[INFO] [stderr]    | |
[INFO] [stderr]    | `Coalesce` is not local
[INFO] [stderr]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_Binding` and up 2 bodies
[INFO] [stderr] 35 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stderr] 36 | pub struct Binding {
[INFO] [stderr]    |            ------- `Binding` is not local
[INFO] [stderr]    |
[INFO] [stderr]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stderr]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p derive`
[INFO] [stderr]    = 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] [stderr]    = 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] [stderr]    = note: this warning originates in the attribute macro `protocol` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stderr]   --> src/main.rs:34:1
[INFO] [stderr]    |
[INFO] [stderr] 34 | #[protocol]
[INFO] [stderr]    | ^----------
[INFO] [stderr]    | |
[INFO] [stderr]    | `Unravel` is not local
[INFO] [stderr]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_Binding` and up 2 bodies
[INFO] [stderr] 35 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stderr] 36 | pub struct Binding {
[INFO] [stderr]    |            ------- `Binding` is not local
[INFO] [stderr]    |
[INFO] [stderr]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stderr]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p derive`
[INFO] [stderr]    = 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] [stderr]    = 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] [stderr]    = note: this warning originates in the attribute macro `protocol` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stderr]   --> src/main.rs:41:1
[INFO] [stderr]    |
[INFO] [stderr] 41 | #[protocol]
[INFO] [stderr]    | ^----------
[INFO] [stderr]    | |
[INFO] [stderr]    | `Coalesce` is not local
[INFO] [stderr]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_Product` and up 2 bodies
[INFO] [stderr] 42 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stderr] 43 | pub struct Product {
[INFO] [stderr]    |            ------- `Product` is not local
[INFO] [stderr]    |
[INFO] [stderr]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stderr]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p derive`
[INFO] [stderr]    = 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] [stderr]    = 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] [stderr]    = note: this warning originates in the attribute macro `protocol` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stderr]   --> src/main.rs:41:1
[INFO] [stderr]    |
[INFO] [stderr] 41 | #[protocol]
[INFO] [stderr]    | ^----------
[INFO] [stderr]    | |
[INFO] [stderr]    | `Unravel` is not local
[INFO] [stderr]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_Product` and up 2 bodies
[INFO] [stderr] 42 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stderr] 43 | pub struct Product {
[INFO] [stderr]    |            ------- `Product` is not local
[INFO] [stderr]    |
[INFO] [stderr]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stderr]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p derive`
[INFO] [stderr]    = 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] [stderr]    = 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] [stderr]    = note: this warning originates in the attribute macro `protocol` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stderr]   --> src/main.rs:47:1
[INFO] [stderr]    |
[INFO] [stderr] 47 | #[protocol]
[INFO] [stderr]    | ^----------
[INFO] [stderr]    | |
[INFO] [stderr]    | `Coalesce` is not local
[INFO] [stderr]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_Variant` and up 2 bodies
[INFO] [stderr] 48 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stderr] 49 | pub struct Variant {
[INFO] [stderr]    |            ------- `Variant` is not local
[INFO] [stderr]    |
[INFO] [stderr]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stderr]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p derive`
[INFO] [stderr]    = 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] [stderr]    = 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] [stderr]    = note: this warning originates in the attribute macro `protocol` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stderr]   --> src/main.rs:47:1
[INFO] [stderr]    |
[INFO] [stderr] 47 | #[protocol]
[INFO] [stderr]    | ^----------
[INFO] [stderr]    | |
[INFO] [stderr]    | `Unravel` is not local
[INFO] [stderr]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_Variant` and up 2 bodies
[INFO] [stderr] 48 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stderr] 49 | pub struct Variant {
[INFO] [stderr]    |            ------- `Variant` is not local
[INFO] [stderr]    |
[INFO] [stderr]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stderr]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p derive`
[INFO] [stderr]    = 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] [stderr]    = 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] [stderr]    = note: this warning originates in the attribute macro `protocol` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stderr]   --> src/main.rs:54:1
[INFO] [stderr]    |
[INFO] [stderr] 54 | #[protocol]
[INFO] [stderr]    | ^----------
[INFO] [stderr]    | |
[INFO] [stderr]    | `Coalesce` is not local
[INFO] [stderr]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_Receiver` and up 2 bodies
[INFO] [stderr] 55 | #[derive(Debug, Clone, Copy, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stderr] 56 | pub enum Receiver {
[INFO] [stderr]    |          -------- `Receiver` is not local
[INFO] [stderr]    |
[INFO] [stderr]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stderr]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p derive`
[INFO] [stderr]    = 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] [stderr]    = 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] [stderr]    = note: this warning originates in the attribute macro `protocol` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stderr]   --> src/main.rs:54:1
[INFO] [stderr]    |
[INFO] [stderr] 54 | #[protocol]
[INFO] [stderr]    | ^----------
[INFO] [stderr]    | |
[INFO] [stderr]    | `Unravel` is not local
[INFO] [stderr]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_Receiver` and up 2 bodies
[INFO] [stderr] 55 | #[derive(Debug, Clone, Copy, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stderr] 56 | pub enum Receiver {
[INFO] [stderr]    |          -------- `Receiver` is not local
[INFO] [stderr]    |
[INFO] [stderr]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stderr]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p derive`
[INFO] [stderr]    = 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] [stderr]    = 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] [stderr]    = note: this warning originates in the attribute macro `protocol` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stderr]   --> src/main.rs:62:1
[INFO] [stderr]    |
[INFO] [stderr] 62 | #[protocol]
[INFO] [stderr]    | ^----------
[INFO] [stderr]    | |
[INFO] [stderr]    | `Coalesce` is not local
[INFO] [stderr]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_Method` and up 2 bodies
[INFO] [stderr] 63 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stderr] 64 | pub struct Method {
[INFO] [stderr]    |            ------ `Method` is not local
[INFO] [stderr]    |
[INFO] [stderr]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stderr]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p derive`
[INFO] [stderr]    = 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] [stderr]    = 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] [stderr]    = note: this warning originates in the attribute macro `protocol` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stderr]   --> src/main.rs:62:1
[INFO] [stderr]    |
[INFO] [stderr] 62 | #[protocol]
[INFO] [stderr]    | ^----------
[INFO] [stderr]    | |
[INFO] [stderr]    | `Unravel` is not local
[INFO] [stderr]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_Method` and up 2 bodies
[INFO] [stderr] 63 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stderr] 64 | pub struct Method {
[INFO] [stderr]    |            ------ `Method` is not local
[INFO] [stderr]    |
[INFO] [stderr]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stderr]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p derive`
[INFO] [stderr]    = 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] [stderr]    = 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] [stderr]    = note: this warning originates in the attribute macro `protocol` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stderr]   --> src/main.rs:70:1
[INFO] [stderr]    |
[INFO] [stderr] 70 | #[protocol]
[INFO] [stderr]    | ^----------
[INFO] [stderr]    | |
[INFO] [stderr]    | `Coalesce` is not local
[INFO] [stderr]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_Capture` and up 2 bodies
[INFO] [stderr] 71 | #[derive(Debug, Clone, Copy, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stderr] 72 | pub enum Capture {
[INFO] [stderr]    |          ------- `Capture` is not local
[INFO] [stderr]    |
[INFO] [stderr]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stderr]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p derive`
[INFO] [stderr]    = 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] [stderr]    = 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] [stderr]    = note: this warning originates in the attribute macro `protocol` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stderr]   --> src/main.rs:70:1
[INFO] [stderr]    |
[INFO] [stderr] 70 | #[protocol]
[INFO] [stderr]    | ^----------
[INFO] [stderr]    | |
[INFO] [stderr]    | `Unravel` is not local
[INFO] [stderr]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_Capture` and up 2 bodies
[INFO] [stderr] 71 | #[derive(Debug, Clone, Copy, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stderr] 72 | pub enum Capture {
[INFO] [stderr]    |          ------- `Capture` is not local
[INFO] [stderr]    |
[INFO] [stderr]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stderr]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p derive`
[INFO] [stderr]    = 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] [stderr]    = 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] [stderr]    = note: this warning originates in the attribute macro `protocol` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stderr]   --> src/main.rs:78:1
[INFO] [stderr]    |
[INFO] [stderr] 78 | #[protocol]
[INFO] [stderr]    | ^----------
[INFO] [stderr]    | |
[INFO] [stderr]    | `Coalesce` is not local
[INFO] [stderr]    | move the `impl` block outside of this constant `_DERIVE_protocol_Coalesce_C_FOR_Type` and up 2 bodies
[INFO] [stderr] 79 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stderr] 80 | pub enum Type {
[INFO] [stderr]    |          ---- `Type` is not local
[INFO] [stderr]    |
[INFO] [stderr]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stderr]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p derive`
[INFO] [stderr]    = 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] [stderr]    = 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] [stderr]    = note: this warning originates in the attribute macro `protocol` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item
[INFO] [stderr]   --> src/main.rs:78:1
[INFO] [stderr]    |
[INFO] [stderr] 78 | #[protocol]
[INFO] [stderr]    | ^----------
[INFO] [stderr]    | |
[INFO] [stderr]    | `Unravel` is not local
[INFO] [stderr]    | move the `impl` block outside of this constant `_DERIVE_protocol_Unravel_C_FOR_Type` and up 2 bodies
[INFO] [stderr] 79 | #[derive(Debug, Clone, Eq, Hash, PartialEq, Deserialize, Serialize)]
[INFO] [stderr] 80 | pub enum Type {
[INFO] [stderr]    |          ---- `Type` is not local
[INFO] [stderr]    |
[INFO] [stderr]    = note: the attribute macro `protocol` defines the non-local `impl`, and may need to be changed
[INFO] [stderr]    = note: the attribute macro `protocol` may come from an old version of the `derive` crate, try updating your dependency with `cargo update -p derive`
[INFO] [stderr]    = 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] [stderr]    = 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] [stderr]    = note: this warning originates in the attribute macro `protocol` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: `compilemem` (bin "compilemem" test) generated 25 warnings (run `cargo fix --bin "compilemem" -p compilemem --tests` to apply 2 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.10s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/compilemem-088d308bd603cf15)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "1a4c1159d13fa895da32a7f2883e9e11893d4528c71656ee7377623787e99a6a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1a4c1159d13fa895da32a7f2883e9e11893d4528c71656ee7377623787e99a6a", kill_on_drop: false }`
[INFO] [stdout] 1a4c1159d13fa895da32a7f2883e9e11893d4528c71656ee7377623787e99a6a
