[INFO] fetching crate pi_quic 0.10.0...
[INFO] checking pi_quic-0.10.0 against 49a6044d37d694890450f52ceaceb66277a36b1e for pr-161154
[INFO] extracting crate pi_quic 0.10.0 into /workspace/builds/worker-3-tc2/source
[INFO] started tweaking crates.io crate pi_quic 0.10.0
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate pi_quic 0.10.0
[INFO] tweaked toml for crates.io crate pi_quic 0.10.0 written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate pi_quic 0.10.0 on toolchain 49a6044d37d694890450f52ceaceb66277a36b1e
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+49a6044d37d694890450f52ceaceb66277a36b1e" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate pi_quic 0.10.0 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" "+49a6044d37d694890450f52ceaceb66277a36b1e" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] fff07289859c0b9d84948d387b4a24b37b1bcbeb970f25f0e34ac77b38a91c30
[INFO] running `Command { std: "docker" "start" "fff07289859c0b9d84948d387b4a24b37b1bcbeb970f25f0e34ac77b38a91c30", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "fff07289859c0b9d84948d387b4a24b37b1bcbeb970f25f0e34ac77b38a91c30", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "fff07289859c0b9d84948d387b4a24b37b1bcbeb970f25f0e34ac77b38a91c30" "/opt/rustwide/cargo-home/bin/cargo" "+49a6044d37d694890450f52ceaceb66277a36b1e" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "fff07289859c0b9d84948d387b4a24b37b1bcbeb970f25f0e34ac77b38a91c30", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "fff07289859c0b9d84948d387b4a24b37b1bcbeb970f25f0e34ac77b38a91c30" "/opt/rustwide/cargo-home/bin/cargo" "+49a6044d37d694890450f52ceaceb66277a36b1e" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.183
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]     Checking memchr v2.8.0
[INFO] [stderr]    Compiling find-msvc-tools v0.1.9
[INFO] [stderr]     Checking pin-project-lite v0.2.17
[INFO] [stderr]     Checking once_cell v1.21.4
[INFO] [stderr]    Compiling zerocopy v0.8.48
[INFO] [stderr]     Checking futures-core v0.3.32
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]     Checking futures-sink v0.3.32
[INFO] [stderr]     Checking crossbeam-epoch v0.9.18
[INFO] [stderr]     Checking crossbeam-channel v0.5.15
[INFO] [stderr]     Checking crossbeam-queue v0.3.12
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]     Checking slab v0.4.12
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]     Checking pi_null v0.1.12
[INFO] [stderr]     Checking futures-channel v0.3.32
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling pi_slotmap v0.3.0
[INFO] [stderr]     Checking pi_share v0.6.0
[INFO] [stderr]     Checking futures-io v0.3.32
[INFO] [stderr]    Compiling cc v1.2.58
[INFO] [stderr]     Checking untrusted v0.9.0
[INFO] [stderr]     Checking futures-task v0.3.32
[INFO] [stderr]     Checking crossbeam-deque v0.8.6
[INFO] [stderr]     Checking fxhash v0.2.1
[INFO] [stderr]     Checking tracing-core v0.1.36
[INFO] [stderr]     Checking untrusted v0.7.1
[INFO] [stderr]     Checking spin v0.5.2
[INFO] [stderr]     Checking bitflags v2.11.0
[INFO] [stderr]     Checking base64 v0.21.7
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling time-core v0.1.9
[INFO] [stderr]    Compiling object v0.37.3
[INFO] [stderr]     Checking bytes v1.11.1
[INFO] [stderr]    Compiling rustls v0.20.9
[INFO] [stderr]     Checking minimal-lexical v0.2.1
[INFO] [stderr]    Compiling num-conv v0.2.2
[INFO] [stderr]     Checking concurrent-queue v2.5.0
[INFO] [stderr]     Checking parking v2.2.1
[INFO] [stderr]     Checking crossbeam v0.8.4
[INFO] [stderr]     Checking adler2 v2.0.1
[INFO] [stderr]     Checking pi_key_alloter v0.7.0
[INFO] [stderr]     Checking aho-corasick v1.1.4
[INFO] [stderr]     Checking deranged v0.5.8
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]     Checking rustls-pemfile v1.0.4
[INFO] [stderr]     Checking gimli v0.32.3
[INFO] [stderr]     Checking openssl-probe v0.1.6
[INFO] [stderr]    Compiling time-macros v0.2.30
[INFO] [stderr]     Checking base64 v0.13.1
[INFO] [stderr]     Checking regex-syntax v0.8.10
[INFO] [stderr]     Checking pi_ext_heap v0.1.1
[INFO] [stderr]     Checking linux-raw-sys v0.12.1
[INFO] [stderr]     Checking rustls-native-certs v0.6.3
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]     Checking rustls-pemfile v0.2.1
[INFO] [stderr]     Checking event-listener v5.4.1
[INFO] [stderr]     Checking tinyvec v1.11.0
[INFO] [stderr]     Checking raw-cpuid v11.6.0
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]    Compiling ring v0.16.20
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]     Checking rand_core v0.9.5
[INFO] [stderr]     Checking nanorand v0.7.0
[INFO] [stderr]     Checking addr2line v0.25.1
[INFO] [stderr]     Checking errno v0.3.14
[INFO] [stderr]     Checking spin v0.9.8
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]     Checking rustc-demangle v0.1.27
[INFO] [stderr]     Checking pi_wheel v0.1.1
[INFO] [stderr]     Checking flume v0.11.1
[INFO] [stderr]     Checking pi_timer v0.1.1
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]     Checking mio v1.2.0
[INFO] [stderr]     Checking time v0.3.51
[INFO] [stderr]     Checking num_cpus v1.17.0
[INFO] [stderr]     Checking socket2 v0.6.3
[INFO] [stderr]     Checking event-listener-strategy v0.5.4
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking st3 v0.4.1
[INFO] [stderr]     Checking rusticata-macros v4.1.0
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]    Compiling oid-registry v0.6.1
[INFO] [stderr]     Checking pi_wrr v0.1.1
[INFO] [stderr]     Checking async-channel v2.5.0
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]     Checking socket2 v0.4.10
[INFO] [stderr]     Checking quanta v0.12.6
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking sharded-slab v0.1.7
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking thread_local v1.1.9
[INFO] [stderr]     Checking humantime v2.3.0
[INFO] [stderr]     Checking dashmap v6.1.0
[INFO] [stderr]     Checking data-encoding v2.10.0
[INFO] [stderr]     Checking nu-ansi-term v0.50.3
[INFO] [stderr]     Checking termcolor v1.4.1
[INFO] [stderr]     Checking pem v2.0.1
[INFO] [stderr]     Checking polling v3.11.0
[INFO] [stderr]    Compiling synstructure v0.12.6
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tokio-macros v2.6.1
[INFO] [stderr]     Checking tokio v1.50.0
[INFO] [stderr]     Checking async-stream v0.3.6
[INFO] [stderr]     Checking backtrace v0.3.76
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]    Compiling asn1-rs-impl v0.1.0
[INFO] [stderr]    Compiling asn1-rs-derive v0.4.0
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]     Checking regex v1.12.3
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking sct v0.7.1
[INFO] [stderr]     Checking webpki v0.22.4
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]     Checking env_logger v0.9.3
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking asn1-rs v0.5.2
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]     Checking twox-hash v1.6.3
[INFO] [stderr]     Checking pi_hash v0.1.1
[INFO] [stderr]     Checking der-parser v8.2.0
[INFO] [stderr]     Checking futures-executor v0.3.32
[INFO] [stderr]     Checking futures v0.3.32
[INFO] [stderr]     Checking x509-parser v0.15.1
[INFO] [stderr]     Checking quinn-proto v0.8.4
[INFO] [stderr]     Checking pi_slot_deque v0.4.0
[INFO] [stderr]     Checking pi_slot_wheel v0.4.0
[INFO] [stderr]     Checking pi_cancel_timer v0.4.0
[INFO] [stderr]     Checking pi-async-rt v0.5.0
[INFO] [stderr]     Checking pi_blocking_udp v0.7.0
[INFO] [stderr]     Checking pi_quic v0.10.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Checking quinn-udp v0.1.4
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/connect.rs:890:42
[INFO] [stdout]     |
[INFO] [stdout] 890 |                         ready_reader.set((*stream.ready_len.get())); //设置实际读取的字节数
[INFO] [stdout]     |                                          ^                       ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 890 -                         ready_reader.set((*stream.ready_len.get())); //设置实际读取的字节数
[INFO] [stdout] 890 +                         ready_reader.set(*stream.ready_len.get()); //设置实际读取的字节数
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `let` scrutinee expression
[INFO] [stdout]     --> src/connect.rs:1033:66
[INFO] [stdout]      |
[INFO] [stdout] 1033 | ...                   if let Some(write_buf) = (&mut *stream.write_buf.get()) {
[INFO] [stdout]      |                                                ^                            ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1033 -                                         if let Some(write_buf) = (&mut *stream.write_buf.get()) {
[INFO] [stdout] 1033 +                                         if let Some(write_buf) = &mut *stream.write_buf.get() {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `let` scrutinee expression
[INFO] [stdout]     --> src/connect.rs:1078:50
[INFO] [stdout]      |
[INFO] [stdout] 1078 |                         if let Some(write_buf) = (&mut *stream.write_buf.get()) {
[INFO] [stdout]      |                                                  ^                            ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1078 -                         if let Some(write_buf) = (&mut *stream.write_buf.get()) {
[INFO] [stdout] 1078 +                         if let Some(write_buf) = &mut *stream.write_buf.get() {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing`
[INFO] [stdout]   --> src/connect_pool.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use tracing;
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/connect_pool.rs:287:28
[INFO] [stdout]     |
[INFO] [stdout] 287 |                         if (expired != &time) {
[INFO] [stdout]     |                            ^                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 287 -                         if (expired != &time) {
[INFO] [stdout] 287 +                         if expired != &time {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/connect_pool.rs:323:23
[INFO] [stdout]     |
[INFO] [stdout] 323 |                 .poll((&*socket.get()),
[INFO] [stdout]     |                       ^              ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 323 -                 .poll((&*socket.get()),
[INFO] [stdout] 323 +                 .poll(&*socket.get(),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/connect_pool.rs:347:46
[INFO] [stdout]     |
[INFO] [stdout] 347 | ...                   let socket_mut = (&mut *socket.get());
[INFO] [stdout]     |                                        ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 347 -                             let socket_mut = (&mut *socket.get());
[INFO] [stdout] 347 +                             let socket_mut = &mut *socket.get();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/connect_pool.rs:384:46
[INFO] [stdout]     |
[INFO] [stdout] 384 | ...                   let socket_mut = (&mut *socket.get());
[INFO] [stdout]     |                                        ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 384 -                             let socket_mut = (&mut *socket.get());
[INFO] [stdout] 384 +                             let socket_mut = &mut *socket.get();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/connect_pool.rs:556:35
[INFO] [stdout]     |
[INFO] [stdout] 556 |         let socket_mut = unsafe { (&mut *socket.get()) };
[INFO] [stdout]     |                                   ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 556 -         let socket_mut = unsafe { (&mut *socket.get()) };
[INFO] [stdout] 556 +         let socket_mut = unsafe { &mut *socket.get() };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/connect_pool.rs:598:43
[INFO] [stdout]     |
[INFO] [stdout] 598 |                 let socket_mut = unsafe { (&mut *socket_copy.get()) };
[INFO] [stdout]     |                                           ^                       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 598 -                 let socket_mut = unsafe { (&mut *socket_copy.get()) };
[INFO] [stdout] 598 +                 let socket_mut = unsafe { &mut *socket_copy.get() };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/connect_pool.rs:640:47
[INFO] [stdout]     |
[INFO] [stdout] 640 |                     let socket_mut = unsafe { (&mut *socket_copy.get()) };
[INFO] [stdout]     |                                               ^                       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 640 -                     let socket_mut = unsafe { (&mut *socket_copy.get()) };
[INFO] [stdout] 640 +                     let socket_mut = unsafe { &mut *socket_copy.get() };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::convert::TryInto`
[INFO] [stdout]  --> src/client.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::convert::TryInto;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/client.rs:1094:32
[INFO] [stdout]      |
[INFO] [stdout] 1094 | ...                   mut len: usize) -> Option<Bytes> {
[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] [stderr]     Checking quinn v0.8.5
[INFO] [stdout] warning: unused import: `serial::AsyncRuntime`
[INFO] [stdout]   --> src/connect_pool.rs:17:20
[INFO] [stdout]    |
[INFO] [stdout] 17 |                    serial::AsyncRuntime,
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Socket`
[INFO] [stdout]   --> src/connect_pool.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | use udp::{Socket, SocketHandle as UdpSocketHandle};
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `futures::task::SpawnExt`
[INFO] [stdout]   --> src/server.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use futures::task::SpawnExt;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AsyncRuntime`
[INFO] [stdout]   --> src/client.rs:27:21
[INFO] [stdout]    |
[INFO] [stdout] 27 |                rt::{AsyncRuntime, serial::AsyncValue,
[INFO] [stdout]    |                     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `futures::task::SpawnExt`
[INFO] [stdout]   --> src/client.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use futures::task::SpawnExt;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `futures::AsyncReadExt`
[INFO] [stdout]   --> src/client.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use futures::AsyncReadExt;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/connect.rs:543:17
[INFO] [stdout]     |
[INFO] [stdout] 543 |             let mut len = data.contents.len(); //数据报文的大小
[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/connect.rs:705:21
[INFO] [stdout]     |
[INFO] [stdout] 705 |                 let mut stream = if let Some(id) = &self.main_stream_id {
[INFO] [stdout]     |                     ----^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/connect.rs:831:29
[INFO] [stdout]     |
[INFO] [stdout] 831 |             let remaining = unsafe {
[INFO] [stdout]     |                             ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/connect_pool.rs:85:13
[INFO] [stdout]    |
[INFO] [stdout] 85 |         let mut pool = self;
[INFO] [stdout]    |             ----^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `keep_going` is assigned to, but never used
[INFO] [stdout]    --> src/connect_pool.rs:247:17
[INFO] [stdout]     |
[INFO] [stdout] 247 |             let mut keep_going = false;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_keep_going` instead
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/connect_pool.rs:268:28
[INFO] [stdout]     |
[INFO] [stdout] 268 |                 if let Err(e) = (&*socket.get()).write_transmit(t) {
[INFO] [stdout]     |                            ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]    --> src/connect_pool.rs:370:52
[INFO] [stdout]     |
[INFO] [stdout] 370 |                     Stream(StreamEvent::Writable { id }) => {
[INFO] [stdout]     |                                                    ^^ help: try ignoring the field: `id: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dir`
[INFO] [stdout]    --> src/connect_pool.rs:440:53
[INFO] [stdout]     |
[INFO] [stdout] 440 |                     Stream(StreamEvent::Available { dir }) => {
[INFO] [stdout]     |                                                     ^^^ help: try ignoring the field: `dir: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `keep_going` is never read
[INFO] [stdout]    --> src/connect_pool.rs:274:21
[INFO] [stdout]     |
[INFO] [stdout] 274 |                     keep_going = true;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 312 |                 keep_going = false;
[INFO] [stdout]     |                 ------------------ `keep_going` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `keep_going` is never read
[INFO] [stdout]    --> src/connect_pool.rs:312:17
[INFO] [stdout]     |
[INFO] [stdout] 312 |                 keep_going = false;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/connect_pool.rs:520:24
[INFO] [stdout]     |
[INFO] [stdout] 520 |             if let Err(e) = (&*socket.get()).send_transmit(transmit) {
[INFO] [stdout]     |                        ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `close_reason` is assigned to, but never used
[INFO] [stdout]    --> src/connect_pool.rs:637:21
[INFO] [stdout]     |
[INFO] [stdout] 637 |                 let mut close_reason: Option<Result<()>> = None;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_close_reason` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `close_reason` is never read
[INFO] [stdout]    --> src/connect_pool.rs:658:29
[INFO] [stdout]     |
[INFO] [stdout] 658 | ...                   close_reason = Some(Err(e));
[INFO] [stdout]     |                       ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `close_reason` is assigned to, but never used
[INFO] [stdout]    --> src/connect_pool.rs:596:21
[INFO] [stdout]     |
[INFO] [stdout] 596 |                 let mut close_reason: Option<Result<()>> = None;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_close_reason` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `close_reason` is never read
[INFO] [stdout]    --> src/connect_pool.rs:625:25
[INFO] [stdout]     |
[INFO] [stdout] 625 |                         close_reason = Some(Err(e));
[INFO] [stdout]     |                         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rt`
[INFO] [stdout]    --> src/connect_pool.rs:669:43
[INFO] [stdout]     |
[INFO] [stdout] 669 | fn handle_stream_close<P: EndPointPoller>(rt: &LocalTaskRuntime<()>,
[INFO] [stdout]     |                                           ^^ help: if this is intentional, prefix it with an underscore: `_rt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/client.rs:855:9
[INFO] [stdout]     |
[INFO] [stdout] 855 |         unsafe {
[INFO] [stdout]     |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `readed_len` is never read
[INFO] [stdout]     --> src/client.rs:1103:30
[INFO] [stdout]      |
[INFO] [stdout] 1103 |         let mut readed_len = 0;
[INFO] [stdout]      |                              ^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 1119 |             readed_len = remaining;
[INFO] [stdout]      |             ---------------------- `readed_len` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/utils.rs:229:13
[INFO] [stdout]     |
[INFO] [stdout] 229 |     fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `sender` is never read
[INFO] [stdout]    --> src/lib.rs:412:5
[INFO] [stdout]     |
[INFO] [stdout] 406 | struct InnerSocketHandle {
[INFO] [stdout]     |        ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 412 |     sender:         Sender<QuicEvent>,                                          //Quic事件发送器
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIN_EXPAND_STREAMS_LEN` is never used
[INFO] [stdout]   --> src/connect.rs:46:7
[INFO] [stdout]    |
[INFO] [stdout] 46 | const MIN_EXPAND_STREAMS_LEN: usize = 0;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_EXPAND_STREAMS_LEN` is never used
[INFO] [stdout]   --> src/connect.rs:49:7
[INFO] [stdout]    |
[INFO] [stdout] 49 | const MAX_EXPAND_STREAMS_LEN: usize = 0x10000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_connection` is never used
[INFO] [stdout]    --> src/connect.rs:206:19
[INFO] [stdout]     |
[INFO] [stdout]  91 | impl QuicSocket {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub(crate) fn get_connection(&self) -> &Connection {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `stream_type` is never read
[INFO] [stdout]     --> src/connect.rs:1391:5
[INFO] [stdout]      |
[INFO] [stdout] 1390 | pub struct QuicStream {
[INFO] [stdout]      |            ---------- field in this struct
[INFO] [stdout] 1391 |     stream_type:        Dir,                                                //流类型
[INFO] [stdout]      |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `id` is never read
[INFO] [stdout]   --> src/connect_pool.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct QuicSocketPool<P: EndPointPoller> {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] 43 |     id:                     usize,                                          //连接池唯一id
[INFO] [stdout]    |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `clock` is never read
[INFO] [stdout]    --> src/server.rs:304:5
[INFO] [stdout]     |
[INFO] [stdout] 296 | struct InnerQuicListener {
[INFO] [stdout]     |        ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 304 |     clock:                      Instant,                                                        //内部时钟
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InsecureClientCertVerifier` is never constructed
[INFO] [stdout]    --> src/server.rs:316:8
[INFO] [stdout]     |
[INFO] [stdout] 316 | struct InsecureClientCertVerifier;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/connect.rs:468:13
[INFO] [stdout]     |
[INFO] [stdout] 468 | /             sender
[INFO] [stdout] 469 | |                 .send(QuicEvent::Timeout(self.handle, Some((timeout, event))));
[INFO] [stdout]     | |______________________________________________________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 468 |             let _ = sender
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/connect.rs:476:13
[INFO] [stdout]     |
[INFO] [stdout] 476 | /             sender
[INFO] [stdout] 477 | |                 .send(QuicEvent::Timeout(self.handle, None));
[INFO] [stdout]     | |____________________________________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 476 |             let _ = sender
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/connect.rs:566:13
[INFO] [stdout]     |
[INFO] [stdout] 566 | /             sender
[INFO] [stdout] 567 | |                 .send(QuicEvent::StreamReady(self.handle, stream_id, ready));
[INFO] [stdout]     | |____________________________________________________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 566 |             let _ = sender
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/connect.rs:777:29
[INFO] [stdout]     |
[INFO] [stdout] 777 | / ...                   sender
[INFO] [stdout] 778 | | ...                       .send(QuicEvent::StreamReady(self.handle, stream_id, QuicSocketReady::Readable));
[INFO] [stdout]     | |__________________________________________________________________________________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 777 |                             let _ = sender
[INFO] [stdout]     |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `quinn_proto::connection::streams::ShouldTransmit` that must be used
[INFO] [stdout]    --> src/connect.rs:784:17
[INFO] [stdout]     |
[INFO] [stdout] 784 |                 chunks.finalize();
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: A frame might need to be enqueued
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 784 |                 let _ = chunks.finalize();
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]    --> src/connect.rs:997:17
[INFO] [stdout]     |
[INFO] [stdout] 997 |                 drop(write_buf);
[INFO] [stdout]     |                 ^^^^^---------^
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      argument has type `&mut BytesMut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dropping_references)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     |
[INFO] [stdout] 997 -                 drop(write_buf);
[INFO] [stdout] 997 +                 let _ = write_buf;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/connect.rs:1134:17
[INFO] [stdout]      |
[INFO] [stdout] 1134 |                 sender.send(QuicEvent::StreamWrite(self.handle, stream_id, buf.as_ref().to_vec()));
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1134 |                 let _ = sender.send(QuicEvent::StreamWrite(self.handle, stream_id, buf.as_ref().to_vec()));
[INFO] [stdout]      |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `futures::Future` that must be used
[INFO] [stdout]    --> src/connect_pool.rs:159:25
[INFO] [stdout]     |
[INFO] [stdout] 159 | /                         handle_timeout_timer(&mut pool,
[INFO] [stdout] 160 | |                                              handle,
[INFO] [stdout] 161 | |                                              timeout_event);
[INFO] [stdout]     | |___________________________________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: futures do nothing unless you `.await` or poll them
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]    --> src/connect_pool.rs:618:33
[INFO] [stdout]     |
[INFO] [stdout] 618 | ...                   drop(socket_mut); //在继续调用前释放连接引用
[INFO] [stdout]     |                       ^^^^^----------^
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            argument has type `&mut QuicSocket`
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     |
[INFO] [stdout] 618 -                                 drop(socket_mut); //在继续调用前释放连接引用
[INFO] [stdout] 618 +                                 let _ = socket_mut; //在继续调用前释放连接引用
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]    --> src/connect_pool.rs:652:33
[INFO] [stdout]     |
[INFO] [stdout] 652 | ...                   drop(socket_mut); //在继续调用前释放连接引用
[INFO] [stdout]     |                       ^^^^^----------^
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            argument has type `&mut QuicSocket`
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     |
[INFO] [stdout] 652 -                                 drop(socket_mut); //在继续调用前释放连接引用
[INFO] [stdout] 652 +                                 let _ = socket_mut; //在继续调用前释放连接引用
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/server.rs:62:21
[INFO] [stdout]    |
[INFO] [stdout] 62 | /                     handle.close(Err(Error::new(ErrorKind::Other,
[INFO] [stdout] 63 | |                                                     format!("Receive udp failed, uid: {:?}, remote: {:?}, local: {:?}, reason: {:?}",
[INFO] [stdout] 64 | |                                                         handle.get_uid(),
[INFO] [stdout] 65 | |                                                         handle.get_remote(),
[INFO] [stdout] 66 | |                                                         handle.get_local(),
[INFO] [stdout] 67 | |                                                         e))));
[INFO] [stdout]    | |_____________________________________________________________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 62 |                     let _ = handle.close(Err(Error::new(ErrorKind::Other,
[INFO] [stdout]    |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/client.rs:91:21
[INFO] [stdout]    |
[INFO] [stdout] 91 | /                     handle.close(Err(Error::new(ErrorKind::Other,
[INFO] [stdout] 92 | |                                                 format!("Read udp failed, uid: {:?}, remote: {:?}, local: {:?}, reason: {:?}",
[INFO] [stdout] 93 | |                                                         handle.get_uid(),
[INFO] [stdout] 94 | |                                                         handle.get_remote(),
[INFO] [stdout] 95 | |                                                         handle.get_local(),
[INFO] [stdout] 96 | |                                                         e))));
[INFO] [stdout]    | |_____________________________________________________________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 91 |                     let _ = handle.close(Err(Error::new(ErrorKind::Other,
[INFO] [stdout]    |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/connect.rs:890:42
[INFO] [stdout]     |
[INFO] [stdout] 890 |                         ready_reader.set((*stream.ready_len.get())); //设置实际读取的字节数
[INFO] [stdout]     |                                          ^                       ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 890 -                         ready_reader.set((*stream.ready_len.get())); //设置实际读取的字节数
[INFO] [stdout] 890 +                         ready_reader.set(*stream.ready_len.get()); //设置实际读取的字节数
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `let` scrutinee expression
[INFO] [stdout]     --> src/connect.rs:1033:66
[INFO] [stdout]      |
[INFO] [stdout] 1033 | ...                   if let Some(write_buf) = (&mut *stream.write_buf.get()) {
[INFO] [stdout]      |                                                ^                            ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1033 -                                         if let Some(write_buf) = (&mut *stream.write_buf.get()) {
[INFO] [stdout] 1033 +                                         if let Some(write_buf) = &mut *stream.write_buf.get() {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `let` scrutinee expression
[INFO] [stdout]     --> src/connect.rs:1078:50
[INFO] [stdout]      |
[INFO] [stdout] 1078 |                         if let Some(write_buf) = (&mut *stream.write_buf.get()) {
[INFO] [stdout]      |                                                  ^                            ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1078 -                         if let Some(write_buf) = (&mut *stream.write_buf.get()) {
[INFO] [stdout] 1078 +                         if let Some(write_buf) = &mut *stream.write_buf.get() {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing`
[INFO] [stdout]   --> src/connect_pool.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use tracing;
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/connect_pool.rs:287:28
[INFO] [stdout]     |
[INFO] [stdout] 287 |                         if (expired != &time) {
[INFO] [stdout]     |                            ^                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 287 -                         if (expired != &time) {
[INFO] [stdout] 287 +                         if expired != &time {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/connect_pool.rs:323:23
[INFO] [stdout]     |
[INFO] [stdout] 323 |                 .poll((&*socket.get()),
[INFO] [stdout]     |                       ^              ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 323 -                 .poll((&*socket.get()),
[INFO] [stdout] 323 +                 .poll(&*socket.get(),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/connect_pool.rs:347:46
[INFO] [stdout]     |
[INFO] [stdout] 347 | ...                   let socket_mut = (&mut *socket.get());
[INFO] [stdout]     |                                        ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 347 -                             let socket_mut = (&mut *socket.get());
[INFO] [stdout] 347 +                             let socket_mut = &mut *socket.get();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/connect_pool.rs:384:46
[INFO] [stdout]     |
[INFO] [stdout] 384 | ...                   let socket_mut = (&mut *socket.get());
[INFO] [stdout]     |                                        ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 384 -                             let socket_mut = (&mut *socket.get());
[INFO] [stdout] 384 +                             let socket_mut = &mut *socket.get();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/connect_pool.rs:556:35
[INFO] [stdout]     |
[INFO] [stdout] 556 |         let socket_mut = unsafe { (&mut *socket.get()) };
[INFO] [stdout]     |                                   ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 556 -         let socket_mut = unsafe { (&mut *socket.get()) };
[INFO] [stdout] 556 +         let socket_mut = unsafe { &mut *socket.get() };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/connect_pool.rs:598:43
[INFO] [stdout]     |
[INFO] [stdout] 598 |                 let socket_mut = unsafe { (&mut *socket_copy.get()) };
[INFO] [stdout]     |                                           ^                       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 598 -                 let socket_mut = unsafe { (&mut *socket_copy.get()) };
[INFO] [stdout] 598 +                 let socket_mut = unsafe { &mut *socket_copy.get() };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/connect_pool.rs:640:47
[INFO] [stdout]     |
[INFO] [stdout] 640 |                     let socket_mut = unsafe { (&mut *socket_copy.get()) };
[INFO] [stdout]     |                                               ^                       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 640 -                     let socket_mut = unsafe { (&mut *socket_copy.get()) };
[INFO] [stdout] 640 +                     let socket_mut = unsafe { &mut *socket_copy.get() };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::convert::TryInto`
[INFO] [stdout]  --> src/client.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::convert::TryInto;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/client.rs:1094:32
[INFO] [stdout]      |
[INFO] [stdout] 1094 | ...                   mut len: usize) -> Option<Bytes> {
[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: unused import: `AsyncService`
[INFO] [stdout]   --> tests/test.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 | use udp::{AsyncService,
[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 import: `std::fs::read`
[INFO] [stdout]     --> tests/test.rs:1692:13
[INFO] [stdout]      |
[INFO] [stdout] 1692 |         use std::fs::read;
[INFO] [stdout]      |             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serial::AsyncRuntime`
[INFO] [stdout]   --> src/connect_pool.rs:17:20
[INFO] [stdout]    |
[INFO] [stdout] 17 |                    serial::AsyncRuntime,
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Socket`
[INFO] [stdout]   --> src/connect_pool.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | use udp::{Socket, SocketHandle as UdpSocketHandle};
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `futures::task::SpawnExt`
[INFO] [stdout]   --> src/server.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use futures::task::SpawnExt;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AsyncRuntime`
[INFO] [stdout]   --> src/client.rs:27:21
[INFO] [stdout]    |
[INFO] [stdout] 27 |                rt::{AsyncRuntime, serial::AsyncValue,
[INFO] [stdout]    |                     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `futures::task::SpawnExt`
[INFO] [stdout]   --> src/client.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use futures::task::SpawnExt;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `futures::AsyncReadExt`
[INFO] [stdout]   --> src/client.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use futures::AsyncReadExt;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/connect.rs:543:17
[INFO] [stdout]     |
[INFO] [stdout] 543 |             let mut len = data.contents.len(); //数据报文的大小
[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/connect.rs:705:21
[INFO] [stdout]     |
[INFO] [stdout] 705 |                 let mut stream = if let Some(id) = &self.main_stream_id {
[INFO] [stdout]     |                     ----^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/connect.rs:831:29
[INFO] [stdout]     |
[INFO] [stdout] 831 |             let remaining = unsafe {
[INFO] [stdout]     |                             ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/connect_pool.rs:85:13
[INFO] [stdout]    |
[INFO] [stdout] 85 |         let mut pool = self;
[INFO] [stdout]    |             ----^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `keep_going` is assigned to, but never used
[INFO] [stdout]    --> src/connect_pool.rs:247:17
[INFO] [stdout]     |
[INFO] [stdout] 247 |             let mut keep_going = false;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_keep_going` instead
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/connect_pool.rs:268:28
[INFO] [stdout]     |
[INFO] [stdout] 268 |                 if let Err(e) = (&*socket.get()).write_transmit(t) {
[INFO] [stdout]     |                            ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]    --> src/connect_pool.rs:370:52
[INFO] [stdout]     |
[INFO] [stdout] 370 |                     Stream(StreamEvent::Writable { id }) => {
[INFO] [stdout]     |                                                    ^^ help: try ignoring the field: `id: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dir`
[INFO] [stdout]    --> src/connect_pool.rs:440:53
[INFO] [stdout]     |
[INFO] [stdout] 440 |                     Stream(StreamEvent::Available { dir }) => {
[INFO] [stdout]     |                                                     ^^^ help: try ignoring the field: `dir: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `keep_going` is never read
[INFO] [stdout]    --> src/connect_pool.rs:274:21
[INFO] [stdout]     |
[INFO] [stdout] 274 |                     keep_going = true;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 312 |                 keep_going = false;
[INFO] [stdout]     |                 ------------------ `keep_going` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `keep_going` is never read
[INFO] [stdout]    --> src/connect_pool.rs:312:17
[INFO] [stdout]     |
[INFO] [stdout] 312 |                 keep_going = false;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/connect_pool.rs:520:24
[INFO] [stdout]     |
[INFO] [stdout] 520 |             if let Err(e) = (&*socket.get()).send_transmit(transmit) {
[INFO] [stdout]     |                        ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `close_reason` is assigned to, but never used
[INFO] [stdout]    --> src/connect_pool.rs:637:21
[INFO] [stdout]     |
[INFO] [stdout] 637 |                 let mut close_reason: Option<Result<()>> = None;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_close_reason` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `close_reason` is never read
[INFO] [stdout]    --> src/connect_pool.rs:658:29
[INFO] [stdout]     |
[INFO] [stdout] 658 | ...                   close_reason = Some(Err(e));
[INFO] [stdout]     |                       ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `close_reason` is assigned to, but never used
[INFO] [stdout]    --> src/connect_pool.rs:596:21
[INFO] [stdout]     |
[INFO] [stdout] 596 |                 let mut close_reason: Option<Result<()>> = None;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_close_reason` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `close_reason` is never read
[INFO] [stdout]    --> src/connect_pool.rs:625:25
[INFO] [stdout]     |
[INFO] [stdout] 625 |                         close_reason = Some(Err(e));
[INFO] [stdout]     |                         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rt`
[INFO] [stdout]    --> src/connect_pool.rs:669:43
[INFO] [stdout]     |
[INFO] [stdout] 669 | fn handle_stream_close<P: EndPointPoller>(rt: &LocalTaskRuntime<()>,
[INFO] [stdout]     |                                           ^^ help: if this is intentional, prefix it with an underscore: `_rt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing_subscriber::prelude`
[INFO] [stdout]   --> tests/test.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use tracing_subscriber::prelude::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AsyncRuntime`
[INFO] [stdout]   --> tests/test.rs:14:32
[INFO] [stdout]    |
[INFO] [stdout] 14 | use pi_async_rt::rt::{serial::{AsyncRuntime, AsyncRuntimeBuilder}};
[INFO] [stdout]    |                                ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AsyncWriteExt`
[INFO] [stdout]   --> tests/test.rs:13:34
[INFO] [stdout]    |
[INFO] [stdout] 13 |               stream::StreamExt, AsyncWriteExt};
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> tests/test.rs:49:13
[INFO] [stdout]    |
[INFO] [stdout] 49 |         let mut server_crypto = rustls::ServerConfig::builder()
[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]   --> tests/test.rs:90:13
[INFO] [stdout]    |
[INFO] [stdout] 90 |         let mut client_crypto = rustls::ClientConfig::builder()
[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]    --> tests/test.rs:110:14
[INFO] [stdout]     |
[INFO] [stdout] 110 |         let (mut send, recv) = con
[INFO] [stdout]     |              ----^^^^
[INFO] [stdout]     |              |
[INFO] [stdout]     |              help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `endpoint`
[INFO] [stdout]   --> tests/test.rs:59:14
[INFO] [stdout]    |
[INFO] [stdout] 59 |         let (endpoint, mut incoming) = quinn::Endpoint::server(server_config,
[INFO] [stdout]    |              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_endpoint`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/client.rs:855:9
[INFO] [stdout]     |
[INFO] [stdout] 855 |         unsafe {
[INFO] [stdout]     |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `readed_len` is never read
[INFO] [stdout]     --> src/client.rs:1103:30
[INFO] [stdout]      |
[INFO] [stdout] 1103 |         let mut readed_len = 0;
[INFO] [stdout]      |                              ^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 1119 |             readed_len = remaining;
[INFO] [stdout]      |             ---------------------- `readed_len` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `ready_len` is never read
[INFO] [stdout]    --> tests/test.rs:280:33
[INFO] [stdout]     |
[INFO] [stdout] 280 |               let mut ready_len = 0;
[INFO] [stdout]     |                                   ^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 290 | /                 ready_len = match handle.read_ready(&stream_id, 0) {
[INFO] [stdout] 291 | |                     Err(len) => len,
[INFO] [stdout] 292 | |                     Ok(value) => {
[INFO] [stdout] 293 | |                         println!("!!!!!!wait read_ready");
[INFO] [stdout] ...   |
[INFO] [stdout] 297 | |                     },
[INFO] [stdout] 298 | |                 };
[INFO] [stdout]     | |_________________- `ready_len` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `handle`
[INFO] [stdout]    --> tests/test.rs:357:25
[INFO] [stdout]     |
[INFO] [stdout] 357 |                         handle: SocketHandle,
[INFO] [stdout]     |                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_handle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]    --> tests/test.rs:358:25
[INFO] [stdout]     |
[INFO] [stdout] 358 |                         result: Result<SocketEvent>) -> LocalBoxFuture<'static, ()> {
[INFO] [stdout]     |                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/utils.rs:229:13
[INFO] [stdout]     |
[INFO] [stdout] 229 |     fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
[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]    --> tests/test.rs:415:21
[INFO] [stdout]     |
[INFO] [stdout] 415 |                 let mut client_crypto = rustls::ClientConfig::builder()
[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]    --> tests/test.rs:427:21
[INFO] [stdout]     |
[INFO] [stdout] 427 |                 let mut con = endpoint
[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]    --> tests/test.rs:435:22
[INFO] [stdout]     |
[INFO] [stdout] 435 |                 let (mut send, recv) = con
[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]    --> tests/test.rs:470:13
[INFO] [stdout]     |
[INFO] [stdout] 470 |         let mut server_crypto = rustls::ServerConfig::builder()
[INFO] [stdout]     |             ----^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `endpoint`
[INFO] [stdout]    --> tests/test.rs:480:14
[INFO] [stdout]     |
[INFO] [stdout] 480 |         let (endpoint, mut incoming) = quinn::Endpoint::server(server_config,
[INFO] [stdout]     |              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_endpoint`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `sender` is never read
[INFO] [stdout]    --> src/lib.rs:412:5
[INFO] [stdout]     |
[INFO] [stdout] 406 | struct InnerSocketHandle {
[INFO] [stdout]     |        ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 412 |     sender:         Sender<QuicEvent>,                                          //Quic事件发送器
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIN_EXPAND_STREAMS_LEN` is never used
[INFO] [stdout]   --> src/connect.rs:46:7
[INFO] [stdout]    |
[INFO] [stdout] 46 | const MIN_EXPAND_STREAMS_LEN: usize = 0;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_EXPAND_STREAMS_LEN` is never used
[INFO] [stdout]   --> src/connect.rs:49:7
[INFO] [stdout]    |
[INFO] [stdout] 49 | const MAX_EXPAND_STREAMS_LEN: usize = 0x10000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_connection` is never used
[INFO] [stdout]    --> src/connect.rs:206:19
[INFO] [stdout]     |
[INFO] [stdout]  91 | impl QuicSocket {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub(crate) fn get_connection(&self) -> &Connection {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `stream_type` is never read
[INFO] [stdout]     --> src/connect.rs:1391:5
[INFO] [stdout]      |
[INFO] [stdout] 1390 | pub struct QuicStream {
[INFO] [stdout]      |            ---------- field in this struct
[INFO] [stdout] 1391 |     stream_type:        Dir,                                                //流类型
[INFO] [stdout]      |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `id` is never read
[INFO] [stdout]   --> src/connect_pool.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct QuicSocketPool<P: EndPointPoller> {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] 43 |     id:                     usize,                                          //连接池唯一id
[INFO] [stdout]    |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `clock` is never read
[INFO] [stdout]    --> src/server.rs:304:5
[INFO] [stdout]     |
[INFO] [stdout] 296 | struct InnerQuicListener {
[INFO] [stdout]     |        ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 304 |     clock:                      Instant,                                                        //内部时钟
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InsecureClientCertVerifier` is never constructed
[INFO] [stdout]    --> src/server.rs:316:8
[INFO] [stdout]     |
[INFO] [stdout] 316 | struct InsecureClientCertVerifier;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/connect.rs:468:13
[INFO] [stdout]     |
[INFO] [stdout] 468 | /             sender
[INFO] [stdout] 469 | |                 .send(QuicEvent::Timeout(self.handle, Some((timeout, event))));
[INFO] [stdout]     | |______________________________________________________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 468 |             let _ = sender
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/connect.rs:476:13
[INFO] [stdout]     |
[INFO] [stdout] 476 | /             sender
[INFO] [stdout] 477 | |                 .send(QuicEvent::Timeout(self.handle, None));
[INFO] [stdout]     | |____________________________________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 476 |             let _ = sender
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/connect.rs:566:13
[INFO] [stdout]     |
[INFO] [stdout] 566 | /             sender
[INFO] [stdout] 567 | |                 .send(QuicEvent::StreamReady(self.handle, stream_id, ready));
[INFO] [stdout]     | |____________________________________________________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 566 |             let _ = sender
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/connect.rs:777:29
[INFO] [stdout]     |
[INFO] [stdout] 777 | / ...                   sender
[INFO] [stdout] 778 | | ...                       .send(QuicEvent::StreamReady(self.handle, stream_id, QuicSocketReady::Readable));
[INFO] [stdout]     | |__________________________________________________________________________________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 777 |                             let _ = sender
[INFO] [stdout]     |                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `quinn_proto::connection::streams::ShouldTransmit` that must be used
[INFO] [stdout]    --> src/connect.rs:784:17
[INFO] [stdout]     |
[INFO] [stdout] 784 |                 chunks.finalize();
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: A frame might need to be enqueued
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 784 |                 let _ = chunks.finalize();
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]    --> src/connect.rs:997:17
[INFO] [stdout]     |
[INFO] [stdout] 997 |                 drop(write_buf);
[INFO] [stdout]     |                 ^^^^^---------^
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      argument has type `&mut BytesMut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dropping_references)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     |
[INFO] [stdout] 997 -                 drop(write_buf);
[INFO] [stdout] 997 +                 let _ = write_buf;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/connect.rs:1134:17
[INFO] [stdout]      |
[INFO] [stdout] 1134 |                 sender.send(QuicEvent::StreamWrite(self.handle, stream_id, buf.as_ref().to_vec()));
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1134 |                 let _ = sender.send(QuicEvent::StreamWrite(self.handle, stream_id, buf.as_ref().to_vec()));
[INFO] [stdout]      |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `futures::Future` that must be used
[INFO] [stdout]    --> src/connect_pool.rs:159:25
[INFO] [stdout]     |
[INFO] [stdout] 159 | /                         handle_timeout_timer(&mut pool,
[INFO] [stdout] 160 | |                                              handle,
[INFO] [stdout] 161 | |                                              timeout_event);
[INFO] [stdout]     | |___________________________________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: futures do nothing unless you `.await` or poll them
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]    --> src/connect_pool.rs:618:33
[INFO] [stdout]     |
[INFO] [stdout] 618 | ...                   drop(socket_mut); //在继续调用前释放连接引用
[INFO] [stdout]     |                       ^^^^^----------^
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            argument has type `&mut QuicSocket`
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     |
[INFO] [stdout] 618 -                                 drop(socket_mut); //在继续调用前释放连接引用
[INFO] [stdout] 618 +                                 let _ = socket_mut; //在继续调用前释放连接引用
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]    --> src/connect_pool.rs:652:33
[INFO] [stdout]     |
[INFO] [stdout] 652 | ...                   drop(socket_mut); //在继续调用前释放连接引用
[INFO] [stdout]     |                       ^^^^^----------^
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            argument has type `&mut QuicSocket`
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     |
[INFO] [stdout] 652 -                                 drop(socket_mut); //在继续调用前释放连接引用
[INFO] [stdout] 652 +                                 let _ = socket_mut; //在继续调用前释放连接引用
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/server.rs:62:21
[INFO] [stdout]    |
[INFO] [stdout] 62 | /                     handle.close(Err(Error::new(ErrorKind::Other,
[INFO] [stdout] 63 | |                                                     format!("Receive udp failed, uid: {:?}, remote: {:?}, local: {:?}, reason: {:?}",
[INFO] [stdout] 64 | |                                                         handle.get_uid(),
[INFO] [stdout] 65 | |                                                         handle.get_remote(),
[INFO] [stdout] 66 | |                                                         handle.get_local(),
[INFO] [stdout] 67 | |                                                         e))));
[INFO] [stdout]    | |_____________________________________________________________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 62 |                     let _ = handle.close(Err(Error::new(ErrorKind::Other,
[INFO] [stdout]    |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/client.rs:91:21
[INFO] [stdout]    |
[INFO] [stdout] 91 | /                     handle.close(Err(Error::new(ErrorKind::Other,
[INFO] [stdout] 92 | |                                                 format!("Read udp failed, uid: {:?}, remote: {:?}, local: {:?}, reason: {:?}",
[INFO] [stdout] 93 | |                                                         handle.get_uid(),
[INFO] [stdout] 94 | |                                                         handle.get_remote(),
[INFO] [stdout] 95 | |                                                         handle.get_local(),
[INFO] [stdout] 96 | |                                                         e))));
[INFO] [stdout]    | |_____________________________________________________________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 91 |                     let _ = handle.close(Err(Error::new(ErrorKind::Other,
[INFO] [stdout]    |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `buf`
[INFO] [stdout]     --> tests/test.rs:1196:25
[INFO] [stdout]      |
[INFO] [stdout] 1196 |             if let Some(buf) = handle.get_read_buffer(&stream_id).as_ref().unwrap().lock().as_mut() {
[INFO] [stdout]      |                         ^^^ help: if this is intentional, prefix it with an underscore: `_buf`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `ready_len` is never read
[INFO] [stdout]     --> tests/test.rs:1170:33
[INFO] [stdout]      |
[INFO] [stdout] 1170 |               let mut ready_len = 0;
[INFO] [stdout]      |                                   ^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 1180 | /                 ready_len = match handle.read_ready(&stream_id, 0) {
[INFO] [stdout] 1181 | |                     Err(len) => len,
[INFO] [stdout] 1182 | |                     Ok(value) => {
[INFO] [stdout] 1183 | |                         println!("!!!!!!wait read_ready");
[INFO] [stdout] ...    |
[INFO] [stdout] 1187 | |                     },
[INFO] [stdout] 1188 | |                 };
[INFO] [stdout]      | |_________________- `ready_len` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `handle`
[INFO] [stdout]     --> tests/test.rs:1238:25
[INFO] [stdout]      |
[INFO] [stdout] 1238 |                         handle: SocketHandle,
[INFO] [stdout]      |                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_handle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]     --> tests/test.rs:1239:25
[INFO] [stdout]      |
[INFO] [stdout] 1239 |                         result: Result<SocketEvent>) -> LocalBoxFuture<'static, ()> {
[INFO] [stdout]      |                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `buf`
[INFO] [stdout]     --> tests/test.rs:1488:25
[INFO] [stdout]      |
[INFO] [stdout] 1488 |             if let Some(buf) = handle.get_read_buffer(&stream_id).as_ref().unwrap().lock().as_mut() {
[INFO] [stdout]      |                         ^^^ help: if this is intentional, prefix it with an underscore: `_buf`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `ready_len` is never read
[INFO] [stdout]     --> tests/test.rs:1462:33
[INFO] [stdout]      |
[INFO] [stdout] 1462 |               let mut ready_len = 0;
[INFO] [stdout]      |                                   ^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 1472 | /                 ready_len = match handle.read_ready(&stream_id, 0) {
[INFO] [stdout] 1473 | |                     Err(len) => len,
[INFO] [stdout] 1474 | |                     Ok(value) => {
[INFO] [stdout] 1475 | |                         println!("!!!!!!wait read_ready");
[INFO] [stdout] ...    |
[INFO] [stdout] 1479 | |                     },
[INFO] [stdout] 1480 | |                 };
[INFO] [stdout]      | |_________________- `ready_len` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `handle`
[INFO] [stdout]     --> tests/test.rs:1530:25
[INFO] [stdout]      |
[INFO] [stdout] 1530 |                         handle: SocketHandle,
[INFO] [stdout]      |                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_handle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]     --> tests/test.rs:1531:25
[INFO] [stdout]      |
[INFO] [stdout] 1531 |                         result: Result<SocketEvent>) -> LocalBoxFuture<'static, ()> {
[INFO] [stdout]      |                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> tests/test.rs:1694:13
[INFO] [stdout]      |
[INFO] [stdout] 1694 |         let mut pem = Pem {
[INFO] [stdout]      |             ----^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `intermediates`
[INFO] [stdout]     --> tests/test.rs:1687:27
[INFO] [stdout]      |
[INFO] [stdout] 1687 |                           intermediates: &[rustls::Certificate],
[INFO] [stdout]      |                           ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_intermediates`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `scts`
[INFO] [stdout]     --> tests/test.rs:1689:27
[INFO] [stdout]      |
[INFO] [stdout] 1689 |                           scts: &mut dyn Iterator<Item=&[u8]>,
[INFO] [stdout]      |                           ^^^^ help: if this is intentional, prefix it with an underscore: `_scts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ocsp_response`
[INFO] [stdout]     --> tests/test.rs:1690:27
[INFO] [stdout]      |
[INFO] [stdout] 1690 |                           ocsp_response: &[u8],
[INFO] [stdout]      |                           ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ocsp_response`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `now`
[INFO] [stdout]     --> tests/test.rs:1691:27
[INFO] [stdout]      |
[INFO] [stdout] 1691 |                           now: SystemTime) -> std::result::Result<rustls::client::ServerCertVerified, rustls::Error> {
[INFO] [stdout]      |                           ^^^ help: if this is intentional, prefix it with an underscore: `_now`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> tests/test.rs:173:21
[INFO] [stdout]     |
[INFO] [stdout] 173 |                     send_stream.write_all(buf.as_slice()).await;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 173 |                     let _ = send_stream.write_all(buf.as_slice()).await;
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> tests/test.rs:192:9
[INFO] [stdout]     |
[INFO] [stdout] 192 |         send_stream.write_all(b"Hello World!").await;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 192 |         let _ = send_stream.write_all(b"Hello World!").await;
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 50.30s
[INFO] running `Command { std: "docker" "inspect" "fff07289859c0b9d84948d387b4a24b37b1bcbeb970f25f0e34ac77b38a91c30", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "fff07289859c0b9d84948d387b4a24b37b1bcbeb970f25f0e34ac77b38a91c30", kill_on_drop: false }`
[INFO] [stdout] fff07289859c0b9d84948d387b4a24b37b1bcbeb970f25f0e34ac77b38a91c30
