[INFO] fetching crate twist 0.7.1...
[INFO] building twist-0.7.1 against try#d79d87d4c0f7f0d0785ad6e493cf8cf718ed89a6 for pr-146237-1
[INFO] extracting crate twist 0.7.1 into /workspace/builds/worker-7-tc2/source
[INFO] started tweaking crates.io crate twist 0.7.1
[INFO] finished tweaking crates.io crate twist 0.7.1
[INFO] tweaked toml for crates.io crate twist 0.7.1 written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate twist 0.7.1 on toolchain d79d87d4c0f7f0d0785ad6e493cf8cf718ed89a6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+d79d87d4c0f7f0d0785ad6e493cf8cf718ed89a6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+d79d87d4c0f7f0d0785ad6e493cf8cf718ed89a6" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 101 packages to latest compatible versions
[INFO] [stderr]       Adding base64 v0.4.2 (available: v0.22.1)
[INFO] [stderr]       Adding bytes v0.4.12 (available: v1.10.1)
[INFO] [stderr]       Adding futures v0.1.31 (available: v0.3.31)
[INFO] [stderr]       Adding rand v0.3.23 (available: v0.9.2)
[INFO] [stderr]       Adding sha1 v0.2.0 (available: v0.10.6)
[INFO] [stderr]       Adding slog v1.7.1 (available: v2.7.0)
[INFO] [stderr]       Adding slog-atomic v0.4.3 (available: v3.1.0)
[INFO] [stderr]       Adding slog-term v1.5.0 (available: v2.9.2)
[INFO] [stderr]       Adding uuid v0.4.0 (available: v1.18.1)
[INFO] [stderr]       Adding wasi v0.10.0+wasi-snapshot-preview1 (available: v0.10.2+wasi-snapshot-preview1)
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+d79d87d4c0f7f0d0785ad6e493cf8cf718ed89a6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+d79d87d4c0f7f0d0785ad6e493cf8cf718ed89a6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] be68458b133fe799204ee40b3a44a02ce3bd43466033b3266d12952d7fbe56d7
[INFO] running `Command { std: "docker" "start" "-a" "be68458b133fe799204ee40b3a44a02ce3bd43466033b3266d12952d7fbe56d7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "be68458b133fe799204ee40b3a44a02ce3bd43466033b3266d12952d7fbe56d7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "be68458b133fe799204ee40b3a44a02ce3bd43466033b3266d12952d7fbe56d7", kill_on_drop: false }`
[INFO] [stdout] be68458b133fe799204ee40b3a44a02ce3bd43466033b3266d12952d7fbe56d7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+d79d87d4c0f7f0d0785ad6e493cf8cf718ed89a6" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 299028d7095025119f1c8cfebda0c3c7d74804cac4a53c4ae5df310e67fffee4
[INFO] running `Command { std: "docker" "start" "-a" "299028d7095025119f1c8cfebda0c3c7d74804cac4a53c4ae5df310e67fffee4", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr]    Compiling crossbeam-utils v0.7.2
[INFO] [stderr]    Compiling futures v0.1.31
[INFO] [stderr]    Compiling memoffset v0.5.6
[INFO] [stderr]    Compiling crossbeam-epoch v0.8.2
[INFO] [stderr]    Compiling lock_api v0.3.4
[INFO] [stderr]    Compiling slog v1.7.1
[INFO] [stderr]    Compiling thread_local v0.3.6
[INFO] [stderr]    Compiling scoped-tls v0.1.2
[INFO] [stderr]    Compiling iovec v0.1.4
[INFO] [stderr]    Compiling parking_lot_core v0.6.3
[INFO] [stderr]    Compiling parking_lot v0.9.0
[INFO] [stderr]    Compiling net2 v0.2.39
[INFO] [stderr]    Compiling num_cpus v1.17.0
[INFO] [stderr]    Compiling num-iter v0.1.45
[INFO] [stderr]    Compiling error-chain v0.10.0
[INFO] [stderr]    Compiling isatty v0.1.9
[INFO] [stderr]    Compiling num v0.1.43
[INFO] [stderr]    Compiling log v0.3.9
[INFO] [stderr]    Compiling slab v0.3.0
[INFO] [stderr]    Compiling bytes v0.4.12
[INFO] [stderr]    Compiling chrono v0.2.25
[INFO] [stderr]    Compiling smallvec v0.2.1
[INFO] [stderr]    Compiling crossbeam v0.2.12
[INFO] [stderr]    Compiling slog-extra v0.1.2
[INFO] [stderr]    Compiling take v0.1.0
[INFO] [stderr]    Compiling vatfluid v0.3.0
[INFO] [stderr]    Compiling base64 v0.4.2
[INFO] [stderr]    Compiling sha1 v0.2.0
[INFO] [stderr]    Compiling slog-stream v1.2.1
[INFO] [stderr]    Compiling mio v0.6.23
[INFO] [stderr]    Compiling slog-atomic v0.4.3
[INFO] [stderr]    Compiling slog-term v1.5.0
[INFO] [stderr]    Compiling crossbeam-queue v0.2.3
[INFO] [stderr]    Compiling tokio-executor v0.1.10
[INFO] [stderr]    Compiling tokio-io v0.1.13
[INFO] [stderr]    Compiling tokio-sync v0.1.8
[INFO] [stderr]    Compiling mio-uds v0.6.8
[INFO] [stderr]    Compiling tokio-service v0.1.0
[INFO] [stderr]    Compiling tokio-current-thread v0.1.7
[INFO] [stderr]    Compiling crossbeam-deque v0.7.4
[INFO] [stderr]    Compiling tokio-timer v0.2.13
[INFO] [stderr]    Compiling tokio-codec v0.1.2
[INFO] [stderr]    Compiling tokio-threadpool v0.1.18
[INFO] [stderr]    Compiling tokio-reactor v0.1.12
[INFO] [stderr]    Compiling tokio-tcp v0.1.4
[INFO] [stderr]    Compiling tokio-uds v0.2.7
[INFO] [stderr]    Compiling tokio-udp v0.1.6
[INFO] [stderr]    Compiling tokio-fs v0.1.7
[INFO] [stderr]    Compiling tokio v0.1.22
[INFO] [stderr]    Compiling tokio-core v0.1.18
[INFO] [stderr]    Compiling tokio-proto v0.1.1
[INFO] [stderr]    Compiling twist v0.7.1 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `str`
[INFO] [stdout]   --> src/codec/mod.rs:11:15
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::{io, str};
[INFO] [stdout]    |               ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `cargo-clippy`
[INFO] [stdout]    --> src/codec/base.rs:250:40
[INFO] [stdout]     |
[INFO] [stdout] 250 | ...                   #[cfg_attr(feature = "cargo-clippy", allow(cast_possible_truncation))]
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default` and `ext`
[INFO] [stdout]     = help: consider adding `cargo-clippy` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]     = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `cargo-clippy`
[INFO] [stdout]    --> src/codec/base.rs:305:24
[INFO] [stdout]     |
[INFO] [stdout] 305 |             #[cfg_attr(feature = "cargo-clippy", allow(cast_possible_truncation))]
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default` and `ext`
[INFO] [stdout]     = help: consider adding `cargo-clippy` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `cargo-clippy`
[INFO] [stdout]    --> src/codec/base.rs:312:24
[INFO] [stdout]     |
[INFO] [stdout] 312 |             #[cfg_attr(feature = "cargo-clippy", allow(cast_possible_truncation))]
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default` and `ext`
[INFO] [stdout]     = help: consider adding `cargo-clippy` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/codec/server/handshake.rs:141:9
[INFO] [stdout]     |
[INFO] [stdout] 141 |           /// Add the other headers to the response.
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 142 | /         for (k, v) in msg.others().iter() {
[INFO] [stdout] 143 | |             response.push_str(&format!("{}: {}\r\n", *k, *v));
[INFO] [stdout] 144 | |         }
[INFO] [stdout]     | |_________- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout]     = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/proto/client/mod.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 42 |         /// Setup the protocol middleware chain.
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 43 |         Ok(handshake)
[INFO] [stdout]    |         ------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/proto/server/close.rs:53:14
[INFO] [stdout]    |
[INFO] [stdout] 53 |             0...999 => ReasonCode::Unused,
[INFO] [stdout]    |              ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(ellipsis_inclusive_range_patterns)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/proto/server/close.rs:65:38
[INFO] [stdout]    |
[INFO] [stdout] 65 |             1012 | 1013 | 1014 | 1016...2999 => ReasonCode::Reserved5,
[INFO] [stdout]    |                                      ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/proto/server/close.rs:67:17
[INFO] [stdout]    |
[INFO] [stdout] 67 |             3000...3999 => ReasonCode::AppSpecific,
[INFO] [stdout]    |                 ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/proto/server/close.rs:68:17
[INFO] [stdout]    |
[INFO] [stdout] 68 |             4000...4999 => ReasonCode::Undefined,
[INFO] [stdout]    |                 ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `str`
[INFO] [stdout]  --> src/proto/server/fragmented.rs:8:15
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::{io, str};
[INFO] [stdout]   |               ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/proto/server/mod.rs:86:9
[INFO] [stdout]    |
[INFO] [stdout] 86 |         /// Setup the protocol middleware chain.
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 87 |         Ok(handshake)
[INFO] [stdout]    |         ------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `tokio_io::codec::Framed`: Moved to tokio-codec
[INFO] [stdout]  --> src/proto/client/mod.rs:7:22
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tokio_io::codec::Framed;
[INFO] [stdout]   |                      ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `tokio_io::codec::Framed`: Moved to tokio-codec
[INFO] [stdout]   --> src/proto/server/mod.rs:10:22
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tokio_io::codec::Framed;
[INFO] [stdout]    |                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `tokio_io::codec::Framed`: Moved to tokio-codec
[INFO] [stdout]   --> src/proto/server/mod.rs:21:21
[INFO] [stdout]    |
[INFO] [stdout] 21 | type BaseCodec<T> = Framed<T, Twist>;
[INFO] [stdout]    |                     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `tokio_io::codec::Framed`: Moved to tokio-codec
[INFO] [stdout]   --> src/proto/client/mod.rs:17:38
[INFO] [stdout]    |
[INFO] [stdout] 17 |     type Transport = ClientHandshake<Framed<T, Twist>>;
[INFO] [stdout]    |                                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/extension.rs:9:65
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub type PerMessageExtensions = Arc<Mutex<HashMap<Uuid, Vec<Box<PerMessage>>>>>;
[INFO] [stdout]   |                                                                 ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]   = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub type PerMessageExtensions = Arc<Mutex<HashMap<Uuid, Vec<Box<dyn PerMessage>>>>>;
[INFO] [stdout]   |                                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/extension.rs:11:63
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub type PerFrameExtensions = Arc<Mutex<HashMap<Uuid, Vec<Box<PerFrame>>>>>;
[INFO] [stdout]    |                                                               ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub type PerFrameExtensions = Arc<Mutex<HashMap<Uuid, Vec<Box<dyn PerFrame>>>>>;
[INFO] [stdout]    |                                                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `bytes::BufMut::put_u16`: use put_u16_be or put_u16_le
[INFO] [stdout]    --> src/codec/base.rs:314:21
[INFO] [stdout]     |
[INFO] [stdout] 314 |             len_buf.put_u16::<BigEndian>(cast_len);
[INFO] [stdout]     |                     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `bytes::BufMut::put_u64`: use put_u64_be or put_u64_le
[INFO] [stdout]    --> src/codec/base.rs:320:21
[INFO] [stdout]     |
[INFO] [stdout] 320 |             len_buf.put_u64::<BigEndian>(len);
[INFO] [stdout]     |                     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `bytes::BufMut::put_u32`: use put_u32_be or put_u32_le
[INFO] [stdout]    --> src/codec/base.rs:327:22
[INFO] [stdout]     |
[INFO] [stdout] 327 |             mask_buf.put_u32::<BigEndian>(msg.mask());
[INFO] [stdout]     |                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `bytes::BufMut::put_u32`: use put_u32_be or put_u32_le
[INFO] [stdout]    --> src/codec/base.rs:114:14
[INFO] [stdout]     |
[INFO] [stdout] 114 |     mask_buf.put_u32::<BigEndian>(mask);
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `core::str::<impl str>::trim_right_matches`: superseded by `trim_end_matches`
[INFO] [stdout]    --> src/codec/mod.rs:207:34
[INFO] [stdout]     |
[INFO] [stdout] 207 |         hc.set_ext_resp(ext_resp.trim_right_matches(", "));
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: replace the use of the deprecated method
[INFO] [stdout]     |
[INFO] [stdout] 207 -         hc.set_ext_resp(ext_resp.trim_right_matches(", "));
[INFO] [stdout] 207 +         hc.set_ext_resp(ext_resp.trim_end_matches(", "));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `bytes::Buf::get_u16`: use get_u16_be or get_u16_le
[INFO] [stdout]    --> src/codec/base.rs:186:64
[INFO] [stdout]     |
[INFO] [stdout] 186 |                         let len = Cursor::new(buf.split_to(2)).get_u16::<BigEndian>();
[INFO] [stdout]     |                                                                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `bytes::Buf::get_u64`: use get_u64_be or get_u64_le
[INFO] [stdout]    --> src/codec/base.rs:195:64
[INFO] [stdout]     |
[INFO] [stdout] 195 |                         let len = Cursor::new(buf.split_to(8)).get_u64::<BigEndian>();
[INFO] [stdout]     |                                                                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `bytes::Buf::get_u32`: use get_u32_be or get_u32_le
[INFO] [stdout]    --> src/codec/base.rs:213:65
[INFO] [stdout]     |
[INFO] [stdout] 213 |                         let mask = Cursor::new(buf.split_to(4)).get_u32::<BigEndian>();
[INFO] [stdout]     |                                                                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]    --> src/proto/server/close.rs:195:57
[INFO] [stdout]     |
[INFO] [stdout] 195 |                         try_error!(self.stderr, "{}", e.description());
[INFO] [stdout]     |                                                         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `tokio_io::AsyncRead::framed`: Use tokio_codec::Decoder::framed instead
[INFO] [stdout]   --> src/proto/client/mod.rs:35:53
[INFO] [stdout]    |
[INFO] [stdout] 35 |         let mut handshake = ClientHandshake::new(io.framed(twist));
[INFO] [stdout]    |                                                     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `tokio_io::AsyncRead::framed`: Use tokio_codec::Decoder::framed instead
[INFO] [stdout]   --> src/proto/server/mod.rs:48:49
[INFO] [stdout]    |
[INFO] [stdout] 48 |         let mut fragmented = Fragmented::new(io.framed(twist),
[INFO] [stdout]    |                                                 ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/codec/client/handshake.rs:80:25
[INFO] [stdout]    |
[INFO] [stdout] 80 |                     let mut entry = headers.entry(key).or_insert_with(String::new);
[INFO] [stdout]    |                         ----^^^^^
[INFO] [stdout]    |                         |
[INFO] [stdout]    |                         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/proto/mod.rs:76:13
[INFO] [stdout]    |
[INFO] [stdout] 76 |         let mut vec = map.entry(self.uuid).or_insert_with(Vec::new);
[INFO] [stdout]    |             ----^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/proto/mod.rs:90:13
[INFO] [stdout]    |
[INFO] [stdout] 90 |         let mut vec = map.entry(self.uuid).or_insert_with(Vec::new);
[INFO] [stdout]    |             ----^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/codec/server/handshake.rs:80:25
[INFO] [stdout]    |
[INFO] [stdout] 80 |                     let mut entry = headers.entry(key).or_insert_with(String::new);
[INFO] [stdout]    |                         ----^^^^^
[INFO] [stdout]    |                         |
[INFO] [stdout]    |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 7.25s
[INFO] running `Command { std: "docker" "inspect" "299028d7095025119f1c8cfebda0c3c7d74804cac4a53c4ae5df310e67fffee4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "299028d7095025119f1c8cfebda0c3c7d74804cac4a53c4ae5df310e67fffee4", kill_on_drop: false }`
[INFO] [stdout] 299028d7095025119f1c8cfebda0c3c7d74804cac4a53c4ae5df310e67fffee4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+d79d87d4c0f7f0d0785ad6e493cf8cf718ed89a6" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] a3ada94e1395b1c4383edf99b71eaf5da503d7d0d3f8a79215d273b24b3fc3d3
[INFO] running `Command { std: "docker" "start" "-a" "a3ada94e1395b1c4383edf99b71eaf5da503d7d0d3f8a79215d273b24b3fc3d3", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stdout] warning: unused import: `str`
[INFO] [stdout]   --> src/codec/mod.rs:11:15
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::{io, str};
[INFO] [stdout]    |               ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `cargo-clippy`
[INFO] [stdout]    --> src/codec/base.rs:250:40
[INFO] [stdout]     |
[INFO] [stdout] 250 | ...                   #[cfg_attr(feature = "cargo-clippy", allow(cast_possible_truncation))]
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default` and `ext`
[INFO] [stdout]     = help: consider adding `cargo-clippy` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]     = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `cargo-clippy`
[INFO] [stdout]    --> src/codec/base.rs:305:24
[INFO] [stdout]     |
[INFO] [stdout] 305 |             #[cfg_attr(feature = "cargo-clippy", allow(cast_possible_truncation))]
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default` and `ext`
[INFO] [stdout]     = help: consider adding `cargo-clippy` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `cargo-clippy`
[INFO] [stdout]    --> src/codec/base.rs:312:24
[INFO] [stdout]     |
[INFO] [stdout] 312 |             #[cfg_attr(feature = "cargo-clippy", allow(cast_possible_truncation))]
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default` and `ext`
[INFO] [stdout]     = help: consider adding `cargo-clippy` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/codec/server/handshake.rs:141:9
[INFO] [stdout]     |
[INFO] [stdout] 141 |           /// Add the other headers to the response.
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 142 | /         for (k, v) in msg.others().iter() {
[INFO] [stdout] 143 | |             response.push_str(&format!("{}: {}\r\n", *k, *v));
[INFO] [stdout] 144 | |         }
[INFO] [stdout]     | |_________- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout]     = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/proto/client/mod.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 42 |         /// Setup the protocol middleware chain.
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 43 |         Ok(handshake)
[INFO] [stdout]    |         ------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/proto/server/close.rs:53:14
[INFO] [stdout]    |
[INFO] [stdout] 53 |             0...999 => ReasonCode::Unused,
[INFO] [stdout]    |              ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(ellipsis_inclusive_range_patterns)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/proto/server/close.rs:65:38
[INFO] [stdout]    |
[INFO] [stdout] 65 |             1012 | 1013 | 1014 | 1016...2999 => ReasonCode::Reserved5,
[INFO] [stdout]    |                                      ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/proto/server/close.rs:67:17
[INFO] [stdout]    |
[INFO] [stdout] 67 |             3000...3999 => ReasonCode::AppSpecific,
[INFO] [stdout]    |                 ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/proto/server/close.rs:68:17
[INFO] [stdout]    |
[INFO] [stdout] 68 |             4000...4999 => ReasonCode::Undefined,
[INFO] [stdout]    |                 ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `str`
[INFO] [stdout]  --> src/proto/server/fragmented.rs:8:15
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::{io, str};
[INFO] [stdout]   |               ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/proto/server/mod.rs:86:9
[INFO] [stdout]    |
[INFO] [stdout] 86 |         /// Setup the protocol middleware chain.
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 87 |         Ok(handshake)
[INFO] [stdout]    |         ------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `tokio_io::codec::Framed`: Moved to tokio-codec
[INFO] [stdout]  --> src/proto/client/mod.rs:7:22
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tokio_io::codec::Framed;
[INFO] [stdout]   |                      ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `tokio_io::codec::Framed`: Moved to tokio-codec
[INFO] [stdout]   --> src/proto/server/mod.rs:10:22
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tokio_io::codec::Framed;
[INFO] [stdout]    |                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `tokio_io::codec::Framed`: Moved to tokio-codec
[INFO] [stdout]   --> src/proto/server/mod.rs:21:21
[INFO] [stdout]    |
[INFO] [stdout] 21 | type BaseCodec<T> = Framed<T, Twist>;
[INFO] [stdout]    |                     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `tokio_io::codec::Framed`: Moved to tokio-codec
[INFO] [stdout]   --> src/proto/client/mod.rs:17:38
[INFO] [stdout]    |
[INFO] [stdout] 17 |     type Transport = ClientHandshake<Framed<T, Twist>>;
[INFO] [stdout]    |                                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/extension.rs:9:65
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub type PerMessageExtensions = Arc<Mutex<HashMap<Uuid, Vec<Box<PerMessage>>>>>;
[INFO] [stdout]   |                                                                 ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]   = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub type PerMessageExtensions = Arc<Mutex<HashMap<Uuid, Vec<Box<dyn PerMessage>>>>>;
[INFO] [stdout]   |                                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/extension.rs:11:63
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub type PerFrameExtensions = Arc<Mutex<HashMap<Uuid, Vec<Box<PerFrame>>>>>;
[INFO] [stdout]    |                                                               ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub type PerFrameExtensions = Arc<Mutex<HashMap<Uuid, Vec<Box<dyn PerFrame>>>>>;
[INFO] [stdout]    |                                                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `bytes::BufMut::put_u16`: use put_u16_be or put_u16_le
[INFO] [stdout]    --> src/codec/base.rs:314:21
[INFO] [stdout]     |
[INFO] [stdout] 314 |             len_buf.put_u16::<BigEndian>(cast_len);
[INFO] [stdout]     |                     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `bytes::BufMut::put_u64`: use put_u64_be or put_u64_le
[INFO] [stdout]    --> src/codec/base.rs:320:21
[INFO] [stdout]     |
[INFO] [stdout] 320 |             len_buf.put_u64::<BigEndian>(len);
[INFO] [stdout]     |                     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `bytes::BufMut::put_u32`: use put_u32_be or put_u32_le
[INFO] [stdout]    --> src/codec/base.rs:327:22
[INFO] [stdout]     |
[INFO] [stdout] 327 |             mask_buf.put_u32::<BigEndian>(msg.mask());
[INFO] [stdout]     |                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `bytes::BufMut::put_u32`: use put_u32_be or put_u32_le
[INFO] [stdout]    --> src/codec/base.rs:114:14
[INFO] [stdout]     |
[INFO] [stdout] 114 |     mask_buf.put_u32::<BigEndian>(mask);
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `core::str::<impl str>::trim_right_matches`: superseded by `trim_end_matches`
[INFO] [stdout]    --> src/codec/mod.rs:207:34
[INFO] [stdout]     |
[INFO] [stdout] 207 |         hc.set_ext_resp(ext_resp.trim_right_matches(", "));
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: replace the use of the deprecated method
[INFO] [stdout]     |
[INFO] [stdout] 207 -         hc.set_ext_resp(ext_resp.trim_right_matches(", "));
[INFO] [stdout] 207 +         hc.set_ext_resp(ext_resp.trim_end_matches(", "));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `bytes::Buf::get_u16`: use get_u16_be or get_u16_le
[INFO] [stdout]    --> src/codec/base.rs:186:64
[INFO] [stdout]     |
[INFO] [stdout] 186 |                         let len = Cursor::new(buf.split_to(2)).get_u16::<BigEndian>();
[INFO] [stdout]     |                                                                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `bytes::Buf::get_u64`: use get_u64_be or get_u64_le
[INFO] [stdout]    --> src/codec/base.rs:195:64
[INFO] [stdout]     |
[INFO] [stdout] 195 |                         let len = Cursor::new(buf.split_to(8)).get_u64::<BigEndian>();
[INFO] [stdout]     |                                                                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `bytes::Buf::get_u32`: use get_u32_be or get_u32_le
[INFO] [stdout]    --> src/codec/base.rs:213:65
[INFO] [stdout]     |
[INFO] [stdout] 213 |                         let mask = Cursor::new(buf.split_to(4)).get_u32::<BigEndian>();
[INFO] [stdout]     |                                                                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]    --> src/proto/server/close.rs:195:57
[INFO] [stdout]     |
[INFO] [stdout] 195 |                         try_error!(self.stderr, "{}", e.description());
[INFO] [stdout]     |                                                         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `tokio_io::AsyncRead::framed`: Use tokio_codec::Decoder::framed instead
[INFO] [stdout]   --> src/proto/client/mod.rs:35:53
[INFO] [stdout]    |
[INFO] [stdout] 35 |         let mut handshake = ClientHandshake::new(io.framed(twist));
[INFO] [stdout]    |                                                     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `tokio_io::AsyncRead::framed`: Use tokio_codec::Decoder::framed instead
[INFO] [stdout]   --> src/proto/server/mod.rs:48:49
[INFO] [stdout]    |
[INFO] [stdout] 48 |         let mut fragmented = Fragmented::new(io.framed(twist),
[INFO] [stdout]    |                                                 ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/codec/client/handshake.rs:80:25
[INFO] [stdout]    |
[INFO] [stdout] 80 |                     let mut entry = headers.entry(key).or_insert_with(String::new);
[INFO] [stdout]    |                         ----^^^^^
[INFO] [stdout]    |                         |
[INFO] [stdout]    |                         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/proto/mod.rs:76:13
[INFO] [stdout]    |
[INFO] [stdout] 76 |         let mut vec = map.entry(self.uuid).or_insert_with(Vec::new);
[INFO] [stdout]    |             ----^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/proto/mod.rs:90:13
[INFO] [stdout]    |
[INFO] [stdout] 90 |         let mut vec = map.entry(self.uuid).or_insert_with(Vec::new);
[INFO] [stdout]    |             ----^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling twist v0.7.1 (/opt/rustwide/workdir)
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/codec/server/handshake.rs:80:25
[INFO] [stdout]    |
[INFO] [stdout] 80 |                     let mut entry = headers.entry(key).or_insert_with(String::new);
[INFO] [stdout]    |                         ----^^^^^
[INFO] [stdout]    |                         |
[INFO] [stdout]    |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `str`
[INFO] [stdout]   --> src/codec/mod.rs:11:15
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::{io, str};
[INFO] [stdout]    |               ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `cargo-clippy`
[INFO] [stdout]    --> src/codec/base.rs:250:40
[INFO] [stdout]     |
[INFO] [stdout] 250 | ...                   #[cfg_attr(feature = "cargo-clippy", allow(cast_possible_truncation))]
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default` and `ext`
[INFO] [stdout]     = help: consider adding `cargo-clippy` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]     = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `cargo-clippy`
[INFO] [stdout]    --> src/codec/base.rs:305:24
[INFO] [stdout]     |
[INFO] [stdout] 305 |             #[cfg_attr(feature = "cargo-clippy", allow(cast_possible_truncation))]
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default` and `ext`
[INFO] [stdout]     = help: consider adding `cargo-clippy` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `cargo-clippy`
[INFO] [stdout]    --> src/codec/base.rs:312:24
[INFO] [stdout]     |
[INFO] [stdout] 312 |             #[cfg_attr(feature = "cargo-clippy", allow(cast_possible_truncation))]
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default` and `ext`
[INFO] [stdout]     = help: consider adding `cargo-clippy` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/codec/server/handshake.rs:141:9
[INFO] [stdout]     |
[INFO] [stdout] 141 |           /// Add the other headers to the response.
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 142 | /         for (k, v) in msg.others().iter() {
[INFO] [stdout] 143 | |             response.push_str(&format!("{}: {}\r\n", *k, *v));
[INFO] [stdout] 144 | |         }
[INFO] [stdout]     | |_________- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout]     = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/proto/client/mod.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 42 |         /// Setup the protocol middleware chain.
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 43 |         Ok(handshake)
[INFO] [stdout]    |         ------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/proto/server/close.rs:53:14
[INFO] [stdout]    |
[INFO] [stdout] 53 |             0...999 => ReasonCode::Unused,
[INFO] [stdout]    |              ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(ellipsis_inclusive_range_patterns)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/proto/server/close.rs:65:38
[INFO] [stdout]    |
[INFO] [stdout] 65 |             1012 | 1013 | 1014 | 1016...2999 => ReasonCode::Reserved5,
[INFO] [stdout]    |                                      ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/proto/server/close.rs:67:17
[INFO] [stdout]    |
[INFO] [stdout] 67 |             3000...3999 => ReasonCode::AppSpecific,
[INFO] [stdout]    |                 ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/proto/server/close.rs:68:17
[INFO] [stdout]    |
[INFO] [stdout] 68 |             4000...4999 => ReasonCode::Undefined,
[INFO] [stdout]    |                 ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `str`
[INFO] [stdout]  --> src/proto/server/fragmented.rs:8:15
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::{io, str};
[INFO] [stdout]   |               ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/proto/server/mod.rs:86:9
[INFO] [stdout]    |
[INFO] [stdout] 86 |         /// Setup the protocol middleware chain.
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 87 |         Ok(handshake)
[INFO] [stdout]    |         ------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `tokio_io::codec::Framed`: Moved to tokio-codec
[INFO] [stdout]  --> src/proto/client/mod.rs:7:22
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tokio_io::codec::Framed;
[INFO] [stdout]   |                      ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `tokio_io::codec::Framed`: Moved to tokio-codec
[INFO] [stdout]   --> src/proto/server/mod.rs:10:22
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tokio_io::codec::Framed;
[INFO] [stdout]    |                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `tokio_io::codec::Framed`: Moved to tokio-codec
[INFO] [stdout]   --> src/proto/server/mod.rs:21:21
[INFO] [stdout]    |
[INFO] [stdout] 21 | type BaseCodec<T> = Framed<T, Twist>;
[INFO] [stdout]    |                     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `tokio_io::codec::Framed`: Moved to tokio-codec
[INFO] [stdout]   --> src/proto/client/mod.rs:17:38
[INFO] [stdout]    |
[INFO] [stdout] 17 |     type Transport = ClientHandshake<Framed<T, Twist>>;
[INFO] [stdout]    |                                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/extension.rs:9:65
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub type PerMessageExtensions = Arc<Mutex<HashMap<Uuid, Vec<Box<PerMessage>>>>>;
[INFO] [stdout]   |                                                                 ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]   = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub type PerMessageExtensions = Arc<Mutex<HashMap<Uuid, Vec<Box<dyn PerMessage>>>>>;
[INFO] [stdout]   |                                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/extension.rs:11:63
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub type PerFrameExtensions = Arc<Mutex<HashMap<Uuid, Vec<Box<PerFrame>>>>>;
[INFO] [stdout]    |                                                               ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub type PerFrameExtensions = Arc<Mutex<HashMap<Uuid, Vec<Box<dyn PerFrame>>>>>;
[INFO] [stdout]    |                                                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `bytes::BufMut::put_u32`: use put_u32_be or put_u32_le
[INFO] [stdout]    --> src/codec/base.rs:114:14
[INFO] [stdout]     |
[INFO] [stdout] 114 |     mask_buf.put_u32::<BigEndian>(mask);
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `core::str::<impl str>::trim_right_matches`: superseded by `trim_end_matches`
[INFO] [stdout]    --> src/codec/mod.rs:207:34
[INFO] [stdout]     |
[INFO] [stdout] 207 |         hc.set_ext_resp(ext_resp.trim_right_matches(", "));
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: replace the use of the deprecated method
[INFO] [stdout]     |
[INFO] [stdout] 207 -         hc.set_ext_resp(ext_resp.trim_right_matches(", "));
[INFO] [stdout] 207 +         hc.set_ext_resp(ext_resp.trim_end_matches(", "));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `tokio_io::AsyncRead::framed`: Use tokio_codec::Decoder::framed instead
[INFO] [stdout]   --> src/proto/client/mod.rs:35:53
[INFO] [stdout]    |
[INFO] [stdout] 35 |         let mut handshake = ClientHandshake::new(io.framed(twist));
[INFO] [stdout]    |                                                     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `tokio_io::AsyncRead::framed`: Use tokio_codec::Decoder::framed instead
[INFO] [stdout]   --> src/proto/server/mod.rs:48:49
[INFO] [stdout]    |
[INFO] [stdout] 48 |         let mut fragmented = Fragmented::new(io.framed(twist),
[INFO] [stdout]    |                                                 ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `bytes::Buf::get_u16`: use get_u16_be or get_u16_le
[INFO] [stdout]    --> src/codec/base.rs:186:64
[INFO] [stdout]     |
[INFO] [stdout] 186 |                         let len = Cursor::new(buf.split_to(2)).get_u16::<BigEndian>();
[INFO] [stdout]     |                                                                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `bytes::Buf::get_u64`: use get_u64_be or get_u64_le
[INFO] [stdout]    --> src/codec/base.rs:195:64
[INFO] [stdout]     |
[INFO] [stdout] 195 |                         let len = Cursor::new(buf.split_to(8)).get_u64::<BigEndian>();
[INFO] [stdout]     |                                                                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `bytes::Buf::get_u32`: use get_u32_be or get_u32_le
[INFO] [stdout]    --> src/codec/base.rs:213:65
[INFO] [stdout]     |
[INFO] [stdout] 213 |                         let mask = Cursor::new(buf.split_to(4)).get_u32::<BigEndian>();
[INFO] [stdout]     |                                                                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]    --> src/proto/server/close.rs:195:57
[INFO] [stdout]     |
[INFO] [stdout] 195 |                         try_error!(self.stderr, "{}", e.description());
[INFO] [stdout]     |                                                         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `bytes::BufMut::put_u16`: use put_u16_be or put_u16_le
[INFO] [stdout]    --> src/codec/base.rs:314:21
[INFO] [stdout]     |
[INFO] [stdout] 314 |             len_buf.put_u16::<BigEndian>(cast_len);
[INFO] [stdout]     |                     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `bytes::BufMut::put_u64`: use put_u64_be or put_u64_le
[INFO] [stdout]    --> src/codec/base.rs:320:21
[INFO] [stdout]     |
[INFO] [stdout] 320 |             len_buf.put_u64::<BigEndian>(len);
[INFO] [stdout]     |                     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `bytes::BufMut::put_u32`: use put_u32_be or put_u32_le
[INFO] [stdout]    --> src/codec/base.rs:327:22
[INFO] [stdout]     |
[INFO] [stdout] 327 |             mask_buf.put_u32::<BigEndian>(msg.mask());
[INFO] [stdout]     |                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/codec/server/handshake.rs:80:25
[INFO] [stdout]    |
[INFO] [stdout] 80 |                     let mut entry = headers.entry(key).or_insert_with(String::new);
[INFO] [stdout]    |                         ----^^^^^
[INFO] [stdout]    |                         |
[INFO] [stdout]    |                         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/codec/client/handshake.rs:80:25
[INFO] [stdout]    |
[INFO] [stdout] 80 |                     let mut entry = headers.entry(key).or_insert_with(String::new);
[INFO] [stdout]    |                         ----^^^^^
[INFO] [stdout]    |                         |
[INFO] [stdout]    |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/proto/mod.rs:76:13
[INFO] [stdout]    |
[INFO] [stdout] 76 |         let mut vec = map.entry(self.uuid).or_insert_with(Vec::new);
[INFO] [stdout]    |             ----^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/proto/mod.rs:90:13
[INFO] [stdout]    |
[INFO] [stdout] 90 |         let mut vec = map.entry(self.uuid).or_insert_with(Vec::new);
[INFO] [stdout]    |             ----^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1.58s
[INFO] running `Command { std: "docker" "inspect" "a3ada94e1395b1c4383edf99b71eaf5da503d7d0d3f8a79215d273b24b3fc3d3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a3ada94e1395b1c4383edf99b71eaf5da503d7d0d3f8a79215d273b24b3fc3d3", kill_on_drop: false }`
[INFO] [stdout] a3ada94e1395b1c4383edf99b71eaf5da503d7d0d3f8a79215d273b24b3fc3d3
