[INFO] fetching crate pi_quic 0.7.0...
[INFO] building pi_quic-0.7.0 against master#ad85bc524b1ad696e42061ad8338d382dffbdbe5 for pr-146237-1
[INFO] extracting crate pi_quic 0.7.0 into /workspace/builds/worker-5-tc1/source
[INFO] started tweaking crates.io crate pi_quic 0.7.0
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate pi_quic 0.7.0
[INFO] tweaked toml for crates.io crate pi_quic 0.7.0 written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate pi_quic 0.7.0 on toolchain ad85bc524b1ad696e42061ad8338d382dffbdbe5
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate pi_quic 0.7.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" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded time-core v0.1.3
[INFO] [stderr]   Downloaded asn1-rs-derive v0.4.0
[INFO] [stderr]   Downloaded asn1-rs-impl v0.1.0
[INFO] [stderr]   Downloaded asn1-rs v0.5.2
[INFO] [stderr]   Downloaded pem v2.0.1
[INFO] [stderr]   Downloaded oid-registry v0.6.1
[INFO] [stderr]   Downloaded pi_blocking_udp v0.3.0
[INFO] [stderr]   Downloaded quinn v0.8.5
[INFO] [stderr]   Downloaded der-parser v8.2.0
[INFO] [stderr]   Downloaded quinn-udp v0.1.4
[INFO] [stderr]   Downloaded x509-parser v0.15.1
[INFO] [stderr]   Downloaded quinn-proto v0.8.4
[INFO] [stderr]   Downloaded time v0.3.39
[INFO] [stderr]   Downloaded rustls-pemfile v0.2.1
[INFO] [stderr]   Downloaded time-macros v0.2.20
[INFO] [stderr]   Downloaded rustls v0.20.9
[INFO] [stderr]   Downloaded tokio v1.44.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] e13efd5db2f3d1c499c5ce6c32a9bf6986f3ec49094bba7efe2151fc13576596
[INFO] running `Command { std: "docker" "start" "-a" "e13efd5db2f3d1c499c5ce6c32a9bf6986f3ec49094bba7efe2151fc13576596", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "e13efd5db2f3d1c499c5ce6c32a9bf6986f3ec49094bba7efe2151fc13576596", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e13efd5db2f3d1c499c5ce6c32a9bf6986f3ec49094bba7efe2151fc13576596", kill_on_drop: false }`
[INFO] [stdout] e13efd5db2f3d1c499c5ce6c32a9bf6986f3ec49094bba7efe2151fc13576596
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=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" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 95ab6f7954451dbd77658be044140e7bdf8f45218601f9c286177715fe3f742c
[INFO] running `Command { std: "docker" "start" "-a" "95ab6f7954451dbd77658be044140e7bdf8f45218601f9c286177715fe3f742c", kill_on_drop: false }`
[INFO] [stderr]    Compiling zerocopy v0.8.23
[INFO] [stderr]    Compiling cc v1.2.16
[INFO] [stderr]    Compiling once_cell v1.21.0
[INFO] [stderr]    Compiling getrandom v0.2.15
[INFO] [stderr]    Compiling syn v2.0.100
[INFO] [stderr]    Compiling slotmap v1.0.7
[INFO] [stderr]    Compiling getrandom v0.3.1
[INFO] [stderr]    Compiling futures-channel v0.3.31
[INFO] [stderr]    Compiling object v0.36.7
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling smallvec v1.14.0
[INFO] [stderr]    Compiling fxhash v0.2.1
[INFO] [stderr]    Compiling rand_core v0.9.3
[INFO] [stderr]    Compiling concurrent-queue v2.5.0
[INFO] [stderr]    Compiling gimli v0.31.1
[INFO] [stderr]    Compiling parking_lot_core v0.9.10
[INFO] [stderr]    Compiling pi_ext_heap v0.1.1
[INFO] [stderr]    Compiling log v0.4.26
[INFO] [stderr]    Compiling raw-cpuid v11.5.0
[INFO] [stderr]    Compiling pi_slot_deque v0.2.1
[INFO] [stderr]    Compiling miniz_oxide v0.8.5
[INFO] [stderr]    Compiling event-listener v5.4.0
[INFO] [stderr]    Compiling pi_slot_wheel v0.2.0
[INFO] [stderr]    Compiling nanorand v0.7.0
[INFO] [stderr]    Compiling spin v0.9.8
[INFO] [stderr]    Compiling pi_wheel v0.1.0
[INFO] [stderr]    Compiling rustls v0.20.9
[INFO] [stderr]    Compiling pi_timer v0.1.0
[INFO] [stderr]    Compiling flume v0.11.1
[INFO] [stderr]    Compiling event-listener-strategy v0.5.3
[INFO] [stderr]    Compiling pi_cancel_timer v0.2.0
[INFO] [stderr]    Compiling parking_lot v0.12.3
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling ring v0.16.20
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling quanta v0.12.5
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling rand v0.9.0
[INFO] [stderr]    Compiling addr2line v0.24.2
[INFO] [stderr]    Compiling twox-hash v1.6.3
[INFO] [stderr]    Compiling tracing-core v0.1.33
[INFO] [stderr]    Compiling crossbeam-channel v0.5.14
[INFO] [stderr]    Compiling pi_hash v0.1.1
[INFO] [stderr]    Compiling st3 v0.4.1
[INFO] [stderr]    Compiling num_cpus v1.16.0
[INFO] [stderr]    Compiling pi_wrr v0.1.1
[INFO] [stderr]    Compiling rustls-pemfile v0.2.1
[INFO] [stderr]    Compiling dashmap v6.1.0
[INFO] [stderr]    Compiling rustls-native-certs v0.6.3
[INFO] [stderr]    Compiling tinyvec v1.9.0
[INFO] [stderr]    Compiling async-channel v2.3.1
[INFO] [stderr]    Compiling socket2 v0.5.8
[INFO] [stderr]    Compiling backtrace v0.3.74
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling tracing-attributes v0.1.28
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling async-stream v0.3.6
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling tracing v0.1.41
[INFO] [stderr]    Compiling sct v0.7.1
[INFO] [stderr]    Compiling webpki v0.22.4
[INFO] [stderr]    Compiling quinn-proto v0.8.4
[INFO] [stderr]    Compiling futures-executor v0.3.31
[INFO] [stderr]    Compiling futures v0.3.31
[INFO] [stderr]    Compiling pi-async-rt v0.2.5
[INFO] [stderr]    Compiling pi_blocking_udp v0.3.0
[INFO] [stderr]    Compiling pi_quic v0.7.0 (/opt/rustwide/workdir)
[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:289:28
[INFO] [stdout]     |
[INFO] [stdout] 289 |                         if (expired != &time) {
[INFO] [stdout]     |                            ^                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 289 -                         if (expired != &time) {
[INFO] [stdout] 289 +                         if expired != &time {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/connect_pool.rs:325:23
[INFO] [stdout]     |
[INFO] [stdout] 325 |                 .poll((&*socket.get()),
[INFO] [stdout]     |                       ^              ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 325 -                 .poll((&*socket.get()),
[INFO] [stdout] 325 +                 .poll(&*socket.get(),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/connect_pool.rs:349:46
[INFO] [stdout]     |
[INFO] [stdout] 349 | ...                   let socket_mut = (&mut *socket.get());
[INFO] [stdout]     |                                        ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 349 -                             let socket_mut = (&mut *socket.get());
[INFO] [stdout] 349 +                             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:386:46
[INFO] [stdout]     |
[INFO] [stdout] 386 | ...                   let socket_mut = (&mut *socket.get());
[INFO] [stdout]     |                                        ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 386 -                             let socket_mut = (&mut *socket.get());
[INFO] [stdout] 386 +                             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:558:35
[INFO] [stdout]     |
[INFO] [stdout] 558 |         let socket_mut = unsafe { (&mut *socket.get()) };
[INFO] [stdout]     |                                   ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 558 -         let socket_mut = unsafe { (&mut *socket.get()) };
[INFO] [stdout] 558 +         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:600:43
[INFO] [stdout]     |
[INFO] [stdout] 600 |                 let socket_mut = unsafe { (&mut *socket_copy.get()) };
[INFO] [stdout]     |                                           ^                       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 600 -                 let socket_mut = unsafe { (&mut *socket_copy.get()) };
[INFO] [stdout] 600 +                 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:642:47
[INFO] [stdout]     |
[INFO] [stdout] 642 |                     let socket_mut = unsafe { (&mut *socket_copy.get()) };
[INFO] [stdout]     |                                               ^                       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 642 -                     let socket_mut = unsafe { (&mut *socket_copy.get()) };
[INFO] [stdout] 642 +                     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: value assigned to `readed_len` is never read
[INFO] [stdout]     --> src/client.rs:1103:17
[INFO] [stdout]      |
[INFO] [stdout] 1103 |         let mut readed_len = 0;
[INFO] [stdout]      |                 ^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout]      = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[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: `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:249:21
[INFO] [stdout]     |
[INFO] [stdout] 249 |             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:270:28
[INFO] [stdout]     |
[INFO] [stdout] 270 |                 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: value assigned to `keep_going` is never read
[INFO] [stdout]    --> src/connect_pool.rs:276:21
[INFO] [stdout]     |
[INFO] [stdout] 276 |                     keep_going = true;
[INFO] [stdout]     |                     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `keep_going` is never read
[INFO] [stdout]    --> src/connect_pool.rs:314:17
[INFO] [stdout]     |
[INFO] [stdout] 314 |                 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: `id`
[INFO] [stdout]    --> src/connect_pool.rs:372:52
[INFO] [stdout]     |
[INFO] [stdout] 372 |                     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:442:53
[INFO] [stdout]     |
[INFO] [stdout] 442 |                     Stream(StreamEvent::Available { dir }) => {
[INFO] [stdout]     |                                                     ^^^ help: try ignoring the field: `dir: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/connect_pool.rs:522:24
[INFO] [stdout]     |
[INFO] [stdout] 522 |             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:598:25
[INFO] [stdout]     |
[INFO] [stdout] 598 |                 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:627:25
[INFO] [stdout]     |
[INFO] [stdout] 627 |                         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:639:25
[INFO] [stdout]     |
[INFO] [stdout] 639 |                 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:660:29
[INFO] [stdout]     |
[INFO] [stdout] 660 | ...                   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:671:43
[INFO] [stdout]     |
[INFO] [stdout] 671 | 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: 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:620:33
[INFO] [stdout]     |
[INFO] [stdout] 620 | ...                   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] 620 -                                 drop(socket_mut); //在继续调用前释放连接引用
[INFO] [stdout] 620 +                                 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:654:33
[INFO] [stdout]     |
[INFO] [stdout] 654 | ...                   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] 654 -                                 drop(socket_mut); //在继续调用前释放连接引用
[INFO] [stdout] 654 +                                 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] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 01s
[INFO] running `Command { std: "docker" "inspect" "95ab6f7954451dbd77658be044140e7bdf8f45218601f9c286177715fe3f742c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "95ab6f7954451dbd77658be044140e7bdf8f45218601f9c286177715fe3f742c", kill_on_drop: false }`
[INFO] [stdout] 95ab6f7954451dbd77658be044140e7bdf8f45218601f9c286177715fe3f742c
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=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" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] ded32f109a1379f17e0a8b9cafe1cbab3c5dec5311dc08bea065403f52df9f96
[INFO] running `Command { std: "docker" "start" "-a" "ded32f109a1379f17e0a8b9cafe1cbab3c5dec5311dc08bea065403f52df9f96", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling time-core v0.1.3
[INFO] [stderr]    Compiling rusticata-macros v4.1.0
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling regex-automata v0.4.9
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling oid-registry v0.6.1
[INFO] [stderr]    Compiling time-macros v0.2.20
[INFO] [stderr]    Compiling socket2 v0.4.10
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling tokio v1.44.0
[INFO] [stderr]    Compiling thread_local v1.1.8
[INFO] [stderr]    Compiling atty v0.2.14
[INFO] [stderr]    Compiling pem v2.0.1
[INFO] [stderr]    Compiling num-integer v0.1.46
[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:289:28
[INFO] [stdout]     |
[INFO] [stdout] 289 |                         if (expired != &time) {
[INFO] [stdout]     |                            ^                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 289 -                         if (expired != &time) {
[INFO] [stdout] 289 +                         if expired != &time {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/connect_pool.rs:325:23
[INFO] [stdout]     |
[INFO] [stdout] 325 |                 .poll((&*socket.get()),
[INFO] [stdout]     |                       ^              ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 325 -                 .poll((&*socket.get()),
[INFO] [stdout] 325 +                 .poll(&*socket.get(),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/connect_pool.rs:349:46
[INFO] [stdout]     |
[INFO] [stdout] 349 | ...                   let socket_mut = (&mut *socket.get());
[INFO] [stdout]     |                                        ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 349 -                             let socket_mut = (&mut *socket.get());
[INFO] [stdout] 349 +                             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:386:46
[INFO] [stdout]     |
[INFO] [stdout] 386 | ...                   let socket_mut = (&mut *socket.get());
[INFO] [stdout]     |                                        ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 386 -                             let socket_mut = (&mut *socket.get());
[INFO] [stdout] 386 +                             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:558:35
[INFO] [stdout]     |
[INFO] [stdout] 558 |         let socket_mut = unsafe { (&mut *socket.get()) };
[INFO] [stdout]     |                                   ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 558 -         let socket_mut = unsafe { (&mut *socket.get()) };
[INFO] [stdout] 558 +         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:600:43
[INFO] [stdout]     |
[INFO] [stdout] 600 |                 let socket_mut = unsafe { (&mut *socket_copy.get()) };
[INFO] [stdout]     |                                           ^                       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 600 -                 let socket_mut = unsafe { (&mut *socket_copy.get()) };
[INFO] [stdout] 600 +                 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:642:47
[INFO] [stdout]     |
[INFO] [stdout] 642 |                     let socket_mut = unsafe { (&mut *socket_copy.get()) };
[INFO] [stdout]     |                                               ^                       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 642 -                     let socket_mut = unsafe { (&mut *socket_copy.get()) };
[INFO] [stdout] 642 +                     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: value assigned to `readed_len` is never read
[INFO] [stdout]     --> src/client.rs:1103:17
[INFO] [stdout]      |
[INFO] [stdout] 1103 |         let mut readed_len = 0;
[INFO] [stdout]      |                 ^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout]      = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[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: `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:249:21
[INFO] [stdout]     |
[INFO] [stdout] 249 |             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:270:28
[INFO] [stdout]     |
[INFO] [stdout] 270 |                 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: value assigned to `keep_going` is never read
[INFO] [stdout]    --> src/connect_pool.rs:276:21
[INFO] [stdout]     |
[INFO] [stdout] 276 |                     keep_going = true;
[INFO] [stdout]     |                     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `keep_going` is never read
[INFO] [stdout]    --> src/connect_pool.rs:314:17
[INFO] [stdout]     |
[INFO] [stdout] 314 |                 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: `id`
[INFO] [stdout]    --> src/connect_pool.rs:372:52
[INFO] [stdout]     |
[INFO] [stdout] 372 |                     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:442:53
[INFO] [stdout]     |
[INFO] [stdout] 442 |                     Stream(StreamEvent::Available { dir }) => {
[INFO] [stdout]     |                                                     ^^^ help: try ignoring the field: `dir: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/connect_pool.rs:522:24
[INFO] [stdout]     |
[INFO] [stdout] 522 |             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:598:25
[INFO] [stdout]     |
[INFO] [stdout] 598 |                 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:627:25
[INFO] [stdout]     |
[INFO] [stdout] 627 |                         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:639:25
[INFO] [stdout]     |
[INFO] [stdout] 639 |                 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:660:29
[INFO] [stdout]     |
[INFO] [stdout] 660 | ...                   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:671:43
[INFO] [stdout]     |
[INFO] [stdout] 671 | 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: 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:620:33
[INFO] [stdout]     |
[INFO] [stdout] 620 | ...                   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] 620 -                                 drop(socket_mut); //在继续调用前释放连接引用
[INFO] [stdout] 620 +                                 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:654:33
[INFO] [stdout]     |
[INFO] [stdout] 654 | ...                   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] 654 -                                 drop(socket_mut); //在继续调用前释放连接引用
[INFO] [stdout] 654 +                                 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] [stderr]    Compiling num-bigint v0.4.6
[INFO] [stderr]    Compiling time v0.3.39
[INFO] [stderr]    Compiling regex v1.11.1
[INFO] [stderr]    Compiling env_logger v0.9.3
[INFO] [stderr]    Compiling tracing-subscriber v0.3.19
[INFO] [stderr]    Compiling synstructure v0.12.6
[INFO] [stderr]    Compiling asn1-rs-impl v0.1.0
[INFO] [stderr]    Compiling asn1-rs-derive v0.4.0
[INFO] [stderr]    Compiling asn1-rs v0.5.2
[INFO] [stderr]    Compiling quinn-udp v0.1.4
[INFO] [stderr]    Compiling quinn v0.8.5
[INFO] [stderr]    Compiling der-parser v8.2.0
[INFO] [stderr]    Compiling x509-parser v0.15.1
[INFO] [stderr]    Compiling pi_quic v0.7.0 (/opt/rustwide/workdir)
[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:289:28
[INFO] [stdout]     |
[INFO] [stdout] 289 |                         if (expired != &time) {
[INFO] [stdout]     |                            ^                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 289 -                         if (expired != &time) {
[INFO] [stdout] 289 +                         if expired != &time {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/connect_pool.rs:325:23
[INFO] [stdout]     |
[INFO] [stdout] 325 |                 .poll((&*socket.get()),
[INFO] [stdout]     |                       ^              ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 325 -                 .poll((&*socket.get()),
[INFO] [stdout] 325 +                 .poll(&*socket.get(),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/connect_pool.rs:349:46
[INFO] [stdout]     |
[INFO] [stdout] 349 | ...                   let socket_mut = (&mut *socket.get());
[INFO] [stdout]     |                                        ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 349 -                             let socket_mut = (&mut *socket.get());
[INFO] [stdout] 349 +                             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:386:46
[INFO] [stdout]     |
[INFO] [stdout] 386 | ...                   let socket_mut = (&mut *socket.get());
[INFO] [stdout]     |                                        ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 386 -                             let socket_mut = (&mut *socket.get());
[INFO] [stdout] 386 +                             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:558:35
[INFO] [stdout]     |
[INFO] [stdout] 558 |         let socket_mut = unsafe { (&mut *socket.get()) };
[INFO] [stdout]     |                                   ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 558 -         let socket_mut = unsafe { (&mut *socket.get()) };
[INFO] [stdout] 558 +         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:600:43
[INFO] [stdout]     |
[INFO] [stdout] 600 |                 let socket_mut = unsafe { (&mut *socket_copy.get()) };
[INFO] [stdout]     |                                           ^                       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 600 -                 let socket_mut = unsafe { (&mut *socket_copy.get()) };
[INFO] [stdout] 600 +                 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:642:47
[INFO] [stdout]     |
[INFO] [stdout] 642 |                     let socket_mut = unsafe { (&mut *socket_copy.get()) };
[INFO] [stdout]     |                                               ^                       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 642 -                     let socket_mut = unsafe { (&mut *socket_copy.get()) };
[INFO] [stdout] 642 +                     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: 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: value assigned to `readed_len` is never read
[INFO] [stdout]     --> src/client.rs:1103:17
[INFO] [stdout]      |
[INFO] [stdout] 1103 |         let mut readed_len = 0;
[INFO] [stdout]      |                 ^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout]      = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[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: `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: 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: 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: value assigned to `ready_len` is never read
[INFO] [stdout]    --> tests/test.rs:280:21
[INFO] [stdout]     |
[INFO] [stdout] 280 |             let mut ready_len = 0;
[INFO] [stdout]     |                     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[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: 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]    --> 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: 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: 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: 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:249:21
[INFO] [stdout]     |
[INFO] [stdout] 249 |             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:270:28
[INFO] [stdout]     |
[INFO] [stdout] 270 |                 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: value assigned to `keep_going` is never read
[INFO] [stdout]    --> src/connect_pool.rs:276:21
[INFO] [stdout]     |
[INFO] [stdout] 276 |                     keep_going = true;
[INFO] [stdout]     |                     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `keep_going` is never read
[INFO] [stdout]    --> src/connect_pool.rs:314:17
[INFO] [stdout]     |
[INFO] [stdout] 314 |                 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: `id`
[INFO] [stdout]    --> src/connect_pool.rs:372:52
[INFO] [stdout]     |
[INFO] [stdout] 372 |                     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:442:53
[INFO] [stdout]     |
[INFO] [stdout] 442 |                     Stream(StreamEvent::Available { dir }) => {
[INFO] [stdout]     |                                                     ^^^ help: try ignoring the field: `dir: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `ready_len` is never read
[INFO] [stdout]     --> tests/test.rs:1170:21
[INFO] [stdout]      |
[INFO] [stdout] 1170 |             let mut ready_len = 0;
[INFO] [stdout]      |                     ^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[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: 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: `e`
[INFO] [stdout]    --> src/connect_pool.rs:522:24
[INFO] [stdout]     |
[INFO] [stdout] 522 |             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:598:25
[INFO] [stdout]     |
[INFO] [stdout] 598 |                 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:627:25
[INFO] [stdout]     |
[INFO] [stdout] 627 |                         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:639:25
[INFO] [stdout]     |
[INFO] [stdout] 639 |                 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:660:29
[INFO] [stdout]     |
[INFO] [stdout] 660 | ...                   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:671:43
[INFO] [stdout]     |
[INFO] [stdout] 671 | 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: value assigned to `ready_len` is never read
[INFO] [stdout]     --> tests/test.rs:1462:21
[INFO] [stdout]      |
[INFO] [stdout] 1462 |             let mut ready_len = 0;
[INFO] [stdout]      |                     ^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[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: 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: 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: 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 `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] [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: 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:620:33
[INFO] [stdout]     |
[INFO] [stdout] 620 | ...                   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] 620 -                                 drop(socket_mut); //在继续调用前释放连接引用
[INFO] [stdout] 620 +                                 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:654:33
[INFO] [stdout]     |
[INFO] [stdout] 654 | ...                   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] 654 -                                 drop(socket_mut); //在继续调用前释放连接引用
[INFO] [stdout] 654 +                                 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] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 47.08s
[INFO] running `Command { std: "docker" "inspect" "ded32f109a1379f17e0a8b9cafe1cbab3c5dec5311dc08bea065403f52df9f96", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ded32f109a1379f17e0a8b9cafe1cbab3c5dec5311dc08bea065403f52df9f96", kill_on_drop: false }`
[INFO] [stdout] ded32f109a1379f17e0a8b9cafe1cbab3c5dec5311dc08bea065403f52df9f96
