[INFO] cloning repository https://github.com/hustxiaoc/learningblockchain
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/hustxiaoc/learningblockchain" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhustxiaoc%2Flearningblockchain", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhustxiaoc%2Flearningblockchain'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] a541eea6172e3e526cbd40469c77755aa7c3e070
[INFO] checking hustxiaoc/learningblockchain against try#dcc22e5232dd0dbe95a4b3ab84c8d24a0880771e for pr-153721
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhustxiaoc%2Flearningblockchain" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/hustxiaoc/learningblockchain
[INFO] finished tweaking git repo https://github.com/hustxiaoc/learningblockchain
[INFO] tweaked toml for git repo https://github.com/hustxiaoc/learningblockchain written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/hustxiaoc/learningblockchain on toolchain dcc22e5232dd0dbe95a4b3ab84c8d24a0880771e
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dcc22e5232dd0dbe95a4b3ab84c8d24a0880771e" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/hustxiaoc/learningblockchain 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" "+dcc22e5232dd0dbe95a4b3ab84c8d24a0880771e" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3e793bdf10248eb2ddbd6b0faebed8155c11b4589982e2893733958d93e8d540" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 8a29e8bbc5051177ef889db837e3234dfd87b7996e183cdcabf2dc32a9525d6b
[INFO] running `Command { std: "docker" "start" "8a29e8bbc5051177ef889db837e3234dfd87b7996e183cdcabf2dc32a9525d6b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "8a29e8bbc5051177ef889db837e3234dfd87b7996e183cdcabf2dc32a9525d6b" "/opt/rustwide/cargo-home/bin/cargo" "+dcc22e5232dd0dbe95a4b3ab84c8d24a0880771e" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "8a29e8bbc5051177ef889db837e3234dfd87b7996e183cdcabf2dc32a9525d6b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "8a29e8bbc5051177ef889db837e3234dfd87b7996e183cdcabf2dc32a9525d6b" "/opt/rustwide/cargo-home/bin/cargo" "+dcc22e5232dd0dbe95a4b3ab84c8d24a0880771e" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.77
[INFO] [stderr]    Compiling typenum v1.12.0
[INFO] [stderr]    Compiling byteorder v1.3.4
[INFO] [stderr]    Compiling proc-macro2 v1.0.21
[INFO] [stderr]    Compiling unicode-xid v0.2.1
[INFO] [stderr]    Compiling syn v1.0.41
[INFO] [stderr]    Compiling serde_derive v1.0.116
[INFO] [stderr]    Compiling serde v1.0.116
[INFO] [stderr]     Checking rand_core v0.4.2
[INFO] [stderr]     Checking cfg-if v0.1.10
[INFO] [stderr]     Checking rustc-hex v2.1.0
[INFO] [stderr]    Compiling crunchy v0.2.2
[INFO] [stderr]    Compiling autocfg v0.1.7
[INFO] [stderr]     Checking rand_core v0.3.1
[INFO] [stderr]    Compiling getrandom v0.1.15
[INFO] [stderr]     Checking byte-tools v0.3.1
[INFO] [stderr]     Checking opaque-debug v0.2.3
[INFO] [stderr]     Checking nodrop v0.1.14
[INFO] [stderr]     Checking block-padding v0.1.5
[INFO] [stderr]    Compiling heapsize v0.4.2
[INFO] [stderr]     Checking ppv-lite86 v0.2.9
[INFO] [stderr]    Compiling crunchy v0.1.6
[INFO] [stderr]     Checking radium v0.3.0
[INFO] [stderr]     Checking either v1.6.1
[INFO] [stderr]     Checking fake-simd v0.1.2
[INFO] [stderr]    Compiling rand_chacha v0.1.1
[INFO] [stderr]    Compiling quote v1.0.7
[INFO] [stderr]     Checking bitvec v0.17.4
[INFO] [stderr]     Checking rand v0.4.6
[INFO] [stderr]    Compiling rand_pcg v0.1.2
[INFO] [stderr]     Checking rlp v0.4.5
[INFO] [stderr]     Checking subtle v1.0.0
[INFO] [stderr]    Compiling tiny-keccak v2.0.2
[INFO] [stderr]    Compiling log v0.4.11
[INFO] [stderr]     Checking rand_core v0.5.1
[INFO] [stderr]     Checking arrayvec v0.5.1
[INFO] [stderr]     Checking byte-slice-cast v0.3.5
[INFO] [stderr]    Compiling cc v1.0.41
[INFO] [stderr]     Checking generic-array v0.12.3
[INFO] [stderr]     Checking generic-array v0.8.3
[INFO] [stderr]     Checking rand_chacha v0.2.2
[INFO] [stderr]     Checking rand v0.7.3
[INFO] [stderr]     Checking digest v0.6.2
[INFO] [stderr]     Checking impl-rlp v0.2.1
[INFO] [stderr]     Checking block-cipher-trait v0.6.2
[INFO] [stderr]     Checking digest v0.8.1
[INFO] [stderr]     Checking block-buffer v0.7.3
[INFO] [stderr]     Checking crypto-mac v0.7.0
[INFO] [stderr]     Checking iovec v0.1.4
[INFO] [stderr]    Compiling rand v0.6.5
[INFO] [stderr]     Checking constant_time_eq v0.1.5
[INFO] [stderr]     Checking safemem v0.3.3
[INFO] [stderr]     Checking base64 v0.9.3
[INFO] [stderr]     Checking crypto-mac v0.4.0
[INFO] [stderr]     Checking fixed-hash v0.2.5
[INFO] [stderr]     Checking hmac v0.7.1
[INFO] [stderr]     Checking sha2 v0.8.2
[INFO] [stderr]     Checking aes-soft v0.3.3
[INFO] [stderr]     Checking stream-cipher v0.3.2
[INFO] [stderr]     Checking rand_os v0.1.3
[INFO] [stderr]    Compiling secp256k1-sys v0.1.2
[INFO] [stderr]     Checking rand v0.5.6
[INFO] [stderr]     Checking net2 v0.2.35
[INFO] [stderr]     Checking uint v0.8.5
[INFO] [stderr]     Checking tiny-keccak v1.5.0
[INFO] [stderr]     Checking rand_xorshift v0.1.1
[INFO] [stderr]     Checking rand_hc v0.1.0
[INFO] [stderr]     Checking rand_isaac v0.1.1
[INFO] [stderr]     Checking rand_jitter v0.1.4
[INFO] [stderr]     Checking slab v0.4.2
[INFO] [stderr]    Compiling ryu v1.0.5
[INFO] [stderr]     Checking byte-tools v0.2.0
[INFO] [stderr]    Compiling memchr v2.3.3
[INFO] [stderr]     Checking fixed-hash v0.6.1
[INFO] [stderr]     Checking block-buffer v0.2.0
[INFO] [stderr]     Checking mio v0.6.22
[INFO] [stderr]     Checking ctr v0.3.2
[INFO] [stderr]     Checking hmac v0.4.2
[INFO] [stderr]     Checking uint v0.4.1
[INFO] [stderr]     Checking lazy_static v1.4.0
[INFO] [stderr]    Compiling serde_json v1.0.57
[INFO] [stderr]     Checking arc-swap v0.4.7
[INFO] [stderr]     Checking aes-ctr v0.3.0
[INFO] [stderr]     Checking pbkdf2 v0.3.0
[INFO] [stderr]     Checking hmac-drbg v0.1.2
[INFO] [stderr]     Checking scrypt v0.2.0
[INFO] [stderr]     Checking signal-hook-registry v1.2.1
[INFO] [stderr]     Checking sha2 v0.6.0
[INFO] [stderr]     Checking aes v0.3.2
[INFO] [stderr]     Checking ripemd160 v0.8.0
[INFO] [stderr]     Checking block-modes v0.3.3
[INFO] [stderr]     Checking mio-uds v0.6.8
[INFO] [stderr]     Checking num_cpus v1.13.0
[INFO] [stderr]     Checking itoa v0.4.6
[INFO] [stderr]     Checking futures-core v0.3.5
[INFO] [stderr]     Checking zeroize v1.1.1
[INFO] [stderr]     Checking subtle v2.3.0
[INFO] [stderr]     Checking arrayref v0.3.6
[INFO] [stderr]     Checking pin-project-lite v0.1.7
[INFO] [stderr]     Checking bytes v0.5.6
[INFO] [stderr]     Checking libsecp256k1 v0.2.2
[INFO] [stderr]     Checking bytes v0.4.12
[INFO] [stderr]     Checking hex v0.4.2
[INFO] [stderr]     Checking parity-bytes v0.1.2
[INFO] [stderr]     Checking secp256k1 v0.17.2
[INFO] [stderr]    Compiling tokio-macros v0.2.5
[INFO] [stderr]     Checking tokio v0.2.22
[INFO] [stderr]     Checking impl-serde v0.3.1
[INFO] [stderr]     Checking parity-scale-codec v1.3.5
[INFO] [stderr]     Checking ethereum-types-serialize v0.2.2
[INFO] [stderr]     Checking ethbloom v0.5.3
[INFO] [stderr]     Checking ethbloom v0.9.2
[INFO] [stderr]     Checking ethereum-types v0.4.2
[INFO] [stderr]     Checking keccak-hash v0.1.2
[INFO] [stderr]     Checking impl-codec v0.4.2
[INFO] [stderr]     Checking primitive-types v0.7.2
[INFO] [stderr]     Checking ethereum-types v0.9.2
[INFO] [stderr]     Checking parity-crypto v0.6.2
[INFO] [stderr]     Checking rusteth v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `Read` and `Write`
[INFO] [stdout]  --> src/main.rs:2:15
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::io::{Read, Write};
[INFO] [stdout]   |               ^^^^  ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `keccak` and `write_keccak`
[INFO] [stdout]  --> src/main.rs:5:19
[INFO] [stdout]   |
[INFO] [stdout] 5 | use keccak_hash::{keccak, write_keccak};
[INFO] [stdout]   |                   ^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Message`, `RecoveryId`, and `Signature`
[INFO] [stdout]  --> src/main.rs:6:39
[INFO] [stdout]   |
[INFO] [stdout] 6 | use secp256k1::{SecretKey, PublicKey, Message, RecoveryId, Signature};
[INFO] [stdout]   |                                       ^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `RlpStream` and `Rlp`
[INFO] [stdout]  --> src/main.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | use rlp::{Rlp, RlpStream};
[INFO] [stdout]   |           ^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::VecDeque`
[INFO] [stdout]  --> src/main.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::VecDeque;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TcpListener` and `TcpStream`
[INFO] [stdout]   --> src/main.rs:10:19
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tokio::net::{ TcpStream, TcpListener};
[INFO] [stdout]    |                   ^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::mpsc`
[INFO] [stdout]   --> src/main.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tokio::sync::mpsc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `delay_for`
[INFO] [stdout]   --> src/main.rs:12:19
[INFO] [stdout]    |
[INFO] [stdout] 12 | use tokio::time::{delay_for, Duration};
[INFO] [stdout]    |                   ^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AsyncReadExt`, `AsyncWriteExt`, and `self`
[INFO] [stdout]   --> src/main.rs:13:17
[INFO] [stdout]    |
[INFO] [stdout] 13 | use tokio::io::{self, AsyncReadExt, AsyncWriteExt};
[INFO] [stdout]    |                 ^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Generator`, `KeyPair`, `Public`, `Random`, `ecdh`, `ecies`, `recover`, and `sign`
[INFO] [stdout]   --> src/main.rs:14:32
[INFO] [stdout]    |
[INFO] [stdout] 14 | use parity_crypto::publickey::{Generator, KeyPair, Public, Random, recover, Secret, sign, ecdh, ecies};
[INFO] [stdout]    |                                ^^^^^^^^^  ^^^^^^^  ^^^^^^  ^^^^^^  ^^^^^^^          ^^^^  ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Read` and `Write`
[INFO] [stdout]  --> src/peer.rs:2:15
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::io::{Read, Write};
[INFO] [stdout]   |               ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Rng` and `thread_rng`
[INFO] [stdout]  --> src/peer.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | use rand::{thread_rng, Rng};
[INFO] [stdout]   |            ^^^^^^^^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sign`
[INFO] [stdout]  --> src/peer.rs:6:71
[INFO] [stdout]   |
[INFO] [stdout] 6 | use secp256k1::{SecretKey, PublicKey, Message, RecoveryId, Signature, sign, recover};
[INFO] [stdout]   |                                                                       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RlpStream`
[INFO] [stdout]  --> src/peer.rs:7:16
[INFO] [stdout]   |
[INFO] [stdout] 7 | use rlp::{Rlp, RlpStream};
[INFO] [stdout]   |                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::VecDeque`
[INFO] [stdout]  --> src/peer.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::VecDeque;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TcpListener`
[INFO] [stdout]   --> src/peer.rs:10:19
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tokio::net::{ TcpListener, UdpSocket as TokioUdp};
[INFO] [stdout]    |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `UnboundedReceiver`
[INFO] [stdout]   --> src/peer.rs:11:42
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tokio::sync::mpsc::{UnboundedSender, UnboundedReceiver, self};
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `LittleEndian`
[INFO] [stdout]  --> src/message.rs:1:17
[INFO] [stdout]   |
[INFO] [stdout] 1 | use byteorder::{LittleEndian, BigEndian, WriteBytesExt};
[INFO] [stdout]   |                 ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::error::Error`
[INFO] [stdout]  --> src/dht.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::error::Error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Read` and `Write`
[INFO] [stdout]  --> src/dht.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::io::{Read, Write};
[INFO] [stdout]   |               ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hex`
[INFO] [stdout]  --> src/dht.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use hex;
[INFO] [stdout]   |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Rng` and `thread_rng`
[INFO] [stdout]  --> src/dht.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{thread_rng, Rng};
[INFO] [stdout]   |            ^^^^^^^^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `keccak_hash::keccak`
[INFO] [stdout]  --> src/dht.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use keccak_hash::keccak;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Message`, `PublicKey`, `RecoveryId`, `SecretKey`, `Signature`, `recover`, and `sign`
[INFO] [stdout]  --> src/dht.rs:8:17
[INFO] [stdout]   |
[INFO] [stdout] 8 | use secp256k1::{SecretKey, PublicKey, Message, RecoveryId, Signature, sign, recover};
[INFO] [stdout]   |                 ^^^^^^^^^  ^^^^^^^^^  ^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^  ^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `RlpStream` and `Rlp`
[INFO] [stdout]  --> src/dht.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | use rlp::{Rlp, RlpStream};
[INFO] [stdout]   |           ^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::VecDeque`
[INFO] [stdout]   --> src/dht.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::collections::VecDeque;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SocketAddr`
[INFO] [stdout]   --> src/dht.rs:11:17
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::net::{ SocketAddr };
[INFO] [stdout]    |                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TcpListener` and `UdpSocket as TokioUdp`
[INFO] [stdout]   --> src/dht.rs:12:19
[INFO] [stdout]    |
[INFO] [stdout] 12 | use tokio::net::{ TcpListener, UdpSocket as TokioUdp};
[INFO] [stdout]    |                   ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `UnboundedReceiver`, `UnboundedSender`, and `self`
[INFO] [stdout]   --> src/dht.rs:13:25
[INFO] [stdout]    |
[INFO] [stdout] 13 | use tokio::sync::mpsc::{UnboundedSender, UnboundedReceiver, self};
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `delay_for`
[INFO] [stdout]   --> src/dht.rs:14:19
[INFO] [stdout]    |
[INFO] [stdout] 14 | use tokio::time::{delay_for, Duration};
[INFO] [stdout]    |                   ^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::Cell`
[INFO] [stdout]   --> src/dht.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::cell::Cell;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]   --> src/dht.rs:16:22
[INFO] [stdout]    |
[INFO] [stdout] 16 | use crate::message::{self, PeerInfo};
[INFO] [stdout]    |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hex`
[INFO] [stdout]  --> src/node.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use hex;
[INFO] [stdout]   |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BigEndian`, `LittleEndian`, and `WriteBytesExt`
[INFO] [stdout]  --> src/node.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use byteorder::{LittleEndian, BigEndian, WriteBytesExt};
[INFO] [stdout]   |                 ^^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Message`, `RecoveryId`, `SecretKey`, and `Signature`
[INFO] [stdout]  --> src/node.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | use secp256k1::{SecretKey, PublicKey, Message, RecoveryId, Signature};
[INFO] [stdout]   |                 ^^^^^^^^^             ^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::VecDeque`
[INFO] [stdout]  --> src/node.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::collections::VecDeque;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TcpListener`
[INFO] [stdout]   --> src/node.rs:11:30
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tokio::net::{ TcpStream, TcpListener};
[INFO] [stdout]    |                              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `delay_for`
[INFO] [stdout]   --> src/node.rs:13:19
[INFO] [stdout]    |
[INFO] [stdout] 13 | use tokio::time::{delay_for, Duration};
[INFO] [stdout]    |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]   --> src/node.rs:14:17
[INFO] [stdout]    |
[INFO] [stdout] 14 | use tokio::io::{self, split, ReadHalf, WriteHalf, AsyncReadExt, AsyncWriteExt};
[INFO] [stdout]    |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `recover`
[INFO] [stdout]   --> src/node.rs:15:68
[INFO] [stdout]    |
[INFO] [stdout] 15 | use parity_crypto::publickey::{Generator, KeyPair, Public, Random, recover, Secret, sign, ecdh, ecies};
[INFO] [stdout]    |                                                                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::future::Future`
[INFO] [stdout]   --> src/node.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use std::future::Future;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Context` and `Poll`
[INFO] [stdout]   --> src/node.rs:19:17
[INFO] [stdout]    |
[INFO] [stdout] 19 | use std::task::{Context, Poll};
[INFO] [stdout]    |                 ^^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::pin::Pin`
[INFO] [stdout]   --> src/node.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use std::pin::Pin;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufMut` and `Buf`
[INFO] [stdout]   --> src/node.rs:23:13
[INFO] [stdout]    |
[INFO] [stdout] 23 | use bytes::{Buf, BufMut};
[INFO] [stdout]    |             ^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PeerInfo`
[INFO] [stdout]   --> src/node.rs:25:28
[INFO] [stdout]    |
[INFO] [stdout] 25 | use crate::message::{self, PeerInfo};
[INFO] [stdout]    |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/node.rs:107:10
[INFO] [stdout]     |
[INFO] [stdout] 107 |             /// MAC for egress data
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 108 |             egress_mac: Keccak::v256(),
[INFO] [stdout]     |             -------------------------- rustdoc does not generate documentation for expression fields
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout]     = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/node.rs:109:10
[INFO] [stdout]     |
[INFO] [stdout] 109 |             /// MAC for ingress data
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 110 |             ingress_mac: Keccak::v256(),
[INFO] [stdout]     |             --------------------------- rustdoc does not generate documentation for expression fields
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]    --> src/node.rs:184:57
[INFO] [stdout]     |
[INFO] [stdout] 184 |     fn read_header(&mut self, mut header: Bytes) -> Result<(usize), Box<dyn Error>> {
[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] 184 -     fn read_header(&mut self, mut header: Bytes) -> Result<(usize), Box<dyn Error>> {
[INFO] [stdout] 184 +     fn read_header(&mut self, mut header: Bytes) -> Result<usize , Box<dyn Error>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `dht::DHT`
[INFO] [stdout]   --> src/main.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use dht::DHT;
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `peer::Peer`
[INFO] [stdout]   --> src/main.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use peer::Peer;
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/peer.rs:121:13
[INFO] [stdout]     |
[INFO] [stdout] 121 |         let mut socket = TokioUdp::bind(local_udp_addr).await?;
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/peer.rs:131:14
[INFO] [stdout]     |
[INFO] [stdout] 131 |         let (mut tx, mut rx) = mpsc::unbounded_channel::<Vec<u8>>();
[INFO] [stdout]     |              ----^^
[INFO] [stdout]     |              |
[INFO] [stdout]     |              help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Read` and `Write`
[INFO] [stdout]  --> src/main.rs:2:15
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::io::{Read, Write};
[INFO] [stdout]   |               ^^^^  ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `keccak` and `write_keccak`
[INFO] [stdout]  --> src/main.rs:5:19
[INFO] [stdout]   |
[INFO] [stdout] 5 | use keccak_hash::{keccak, write_keccak};
[INFO] [stdout]   |                   ^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Message`, `RecoveryId`, and `Signature`
[INFO] [stdout]  --> src/main.rs:6:39
[INFO] [stdout]   |
[INFO] [stdout] 6 | use secp256k1::{SecretKey, PublicKey, Message, RecoveryId, Signature};
[INFO] [stdout]   |                                       ^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `RlpStream` and `Rlp`
[INFO] [stdout]  --> src/main.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | use rlp::{Rlp, RlpStream};
[INFO] [stdout]   |           ^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::VecDeque`
[INFO] [stdout]  --> src/main.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::VecDeque;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TcpListener` and `TcpStream`
[INFO] [stdout]   --> src/main.rs:10:19
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tokio::net::{ TcpStream, TcpListener};
[INFO] [stdout]    |                   ^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::mpsc`
[INFO] [stdout]   --> src/main.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tokio::sync::mpsc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `delay_for`
[INFO] [stdout]   --> src/main.rs:12:19
[INFO] [stdout]    |
[INFO] [stdout] 12 | use tokio::time::{delay_for, Duration};
[INFO] [stdout]    |                   ^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AsyncReadExt`, `AsyncWriteExt`, and `self`
[INFO] [stdout]   --> src/main.rs:13:17
[INFO] [stdout]    |
[INFO] [stdout] 13 | use tokio::io::{self, AsyncReadExt, AsyncWriteExt};
[INFO] [stdout]    |                 ^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Generator`, `KeyPair`, `Public`, `Random`, `ecdh`, `ecies`, `recover`, and `sign`
[INFO] [stdout]   --> src/main.rs:14:32
[INFO] [stdout]    |
[INFO] [stdout] 14 | use parity_crypto::publickey::{Generator, KeyPair, Public, Random, recover, Secret, sign, ecdh, ecies};
[INFO] [stdout]    |                                ^^^^^^^^^  ^^^^^^^  ^^^^^^  ^^^^^^  ^^^^^^^          ^^^^  ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Read` and `Write`
[INFO] [stdout]  --> src/peer.rs:2:15
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::io::{Read, Write};
[INFO] [stdout]   |               ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Rng` and `thread_rng`
[INFO] [stdout]  --> src/peer.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | use rand::{thread_rng, Rng};
[INFO] [stdout]   |            ^^^^^^^^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sign`
[INFO] [stdout]  --> src/peer.rs:6:71
[INFO] [stdout]   |
[INFO] [stdout] 6 | use secp256k1::{SecretKey, PublicKey, Message, RecoveryId, Signature, sign, recover};
[INFO] [stdout]   |                                                                       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RlpStream`
[INFO] [stdout]  --> src/peer.rs:7:16
[INFO] [stdout]   |
[INFO] [stdout] 7 | use rlp::{Rlp, RlpStream};
[INFO] [stdout]   |                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::VecDeque`
[INFO] [stdout]  --> src/peer.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::VecDeque;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TcpListener`
[INFO] [stdout]   --> src/peer.rs:10:19
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tokio::net::{ TcpListener, UdpSocket as TokioUdp};
[INFO] [stdout]    |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `UnboundedReceiver`
[INFO] [stdout]   --> src/peer.rs:11:42
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tokio::sync::mpsc::{UnboundedSender, UnboundedReceiver, self};
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `LittleEndian`
[INFO] [stdout]  --> src/message.rs:1:17
[INFO] [stdout]   |
[INFO] [stdout] 1 | use byteorder::{LittleEndian, BigEndian, WriteBytesExt};
[INFO] [stdout]   |                 ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::error::Error`
[INFO] [stdout]  --> src/dht.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::error::Error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Read` and `Write`
[INFO] [stdout]  --> src/dht.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::io::{Read, Write};
[INFO] [stdout]   |               ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hex`
[INFO] [stdout]  --> src/dht.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use hex;
[INFO] [stdout]   |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Rng` and `thread_rng`
[INFO] [stdout]  --> src/dht.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{thread_rng, Rng};
[INFO] [stdout]   |            ^^^^^^^^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `keccak_hash::keccak`
[INFO] [stdout]  --> src/dht.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use keccak_hash::keccak;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Message`, `PublicKey`, `RecoveryId`, `SecretKey`, `Signature`, `recover`, and `sign`
[INFO] [stdout]  --> src/dht.rs:8:17
[INFO] [stdout]   |
[INFO] [stdout] 8 | use secp256k1::{SecretKey, PublicKey, Message, RecoveryId, Signature, sign, recover};
[INFO] [stdout]   |                 ^^^^^^^^^  ^^^^^^^^^  ^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^  ^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `RlpStream` and `Rlp`
[INFO] [stdout]  --> src/dht.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | use rlp::{Rlp, RlpStream};
[INFO] [stdout]   |           ^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::VecDeque`
[INFO] [stdout]   --> src/dht.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::collections::VecDeque;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SocketAddr`
[INFO] [stdout]   --> src/dht.rs:11:17
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::net::{ SocketAddr };
[INFO] [stdout]    |                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TcpListener` and `UdpSocket as TokioUdp`
[INFO] [stdout]   --> src/dht.rs:12:19
[INFO] [stdout]    |
[INFO] [stdout] 12 | use tokio::net::{ TcpListener, UdpSocket as TokioUdp};
[INFO] [stdout]    |                   ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `UnboundedReceiver`, `UnboundedSender`, and `self`
[INFO] [stdout]   --> src/dht.rs:13:25
[INFO] [stdout]    |
[INFO] [stdout] 13 | use tokio::sync::mpsc::{UnboundedSender, UnboundedReceiver, self};
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `delay_for`
[INFO] [stdout]   --> src/dht.rs:14:19
[INFO] [stdout]    |
[INFO] [stdout] 14 | use tokio::time::{delay_for, Duration};
[INFO] [stdout]    |                   ^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::Cell`
[INFO] [stdout]   --> src/dht.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::cell::Cell;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]   --> src/dht.rs:16:22
[INFO] [stdout]    |
[INFO] [stdout] 16 | use crate::message::{self, PeerInfo};
[INFO] [stdout]    |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hex`
[INFO] [stdout]  --> src/node.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use hex;
[INFO] [stdout]   |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BigEndian`, `LittleEndian`, and `WriteBytesExt`
[INFO] [stdout]  --> src/node.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use byteorder::{LittleEndian, BigEndian, WriteBytesExt};
[INFO] [stdout]   |                 ^^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Message`, `RecoveryId`, `SecretKey`, and `Signature`
[INFO] [stdout]  --> src/node.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | use secp256k1::{SecretKey, PublicKey, Message, RecoveryId, Signature};
[INFO] [stdout]   |                 ^^^^^^^^^             ^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::VecDeque`
[INFO] [stdout]  --> src/node.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::collections::VecDeque;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TcpListener`
[INFO] [stdout]   --> src/node.rs:11:30
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tokio::net::{ TcpStream, TcpListener};
[INFO] [stdout]    |                              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `delay_for`
[INFO] [stdout]   --> src/node.rs:13:19
[INFO] [stdout]    |
[INFO] [stdout] 13 | use tokio::time::{delay_for, Duration};
[INFO] [stdout]    |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]   --> src/node.rs:14:17
[INFO] [stdout]    |
[INFO] [stdout] 14 | use tokio::io::{self, split, ReadHalf, WriteHalf, AsyncReadExt, AsyncWriteExt};
[INFO] [stdout]    |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `recover`
[INFO] [stdout]   --> src/node.rs:15:68
[INFO] [stdout]    |
[INFO] [stdout] 15 | use parity_crypto::publickey::{Generator, KeyPair, Public, Random, recover, Secret, sign, ecdh, ecies};
[INFO] [stdout]    |                                                                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::future::Future`
[INFO] [stdout]   --> src/node.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use std::future::Future;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Context` and `Poll`
[INFO] [stdout]   --> src/node.rs:19:17
[INFO] [stdout]    |
[INFO] [stdout] 19 | use std::task::{Context, Poll};
[INFO] [stdout]    |                 ^^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::pin::Pin`
[INFO] [stdout]   --> src/node.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use std::pin::Pin;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufMut` and `Buf`
[INFO] [stdout]   --> src/node.rs:23:13
[INFO] [stdout]    |
[INFO] [stdout] 23 | use bytes::{Buf, BufMut};
[INFO] [stdout]    |             ^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PeerInfo`
[INFO] [stdout]   --> src/node.rs:25:28
[INFO] [stdout]    |
[INFO] [stdout] 25 | use crate::message::{self, PeerInfo};
[INFO] [stdout]    |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/node.rs:107:10
[INFO] [stdout]     |
[INFO] [stdout] 107 |             /// MAC for egress data
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 108 |             egress_mac: Keccak::v256(),
[INFO] [stdout]     |             -------------------------- rustdoc does not generate documentation for expression fields
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout]     = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/node.rs:109:10
[INFO] [stdout]     |
[INFO] [stdout] 109 |             /// MAC for ingress data
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 110 |             ingress_mac: Keccak::v256(),
[INFO] [stdout]     |             --------------------------- rustdoc does not generate documentation for expression fields
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]    --> src/node.rs:184:57
[INFO] [stdout]     |
[INFO] [stdout] 184 |     fn read_header(&mut self, mut header: Bytes) -> Result<(usize), Box<dyn Error>> {
[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] 184 -     fn read_header(&mut self, mut header: Bytes) -> Result<(usize), Box<dyn Error>> {
[INFO] [stdout] 184 +     fn read_header(&mut self, mut header: Bytes) -> Result<usize , Box<dyn Error>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `dht::DHT`
[INFO] [stdout]   --> src/main.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use dht::DHT;
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `peer::Peer`
[INFO] [stdout]   --> src/main.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use peer::Peer;
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/node.rs:498:18
[INFO] [stdout]     |
[INFO] [stdout] 498 |         let (tx, mut rx) = mpsc::unbounded_channel::<Vec<u8>>();
[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/peer.rs:121:13
[INFO] [stdout]     |
[INFO] [stdout] 121 |         let mut socket = TokioUdp::bind(local_udp_addr).await?;
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/peer.rs:131:14
[INFO] [stdout]     |
[INFO] [stdout] 131 |         let (mut tx, mut rx) = mpsc::unbounded_channel::<Vec<u8>>();
[INFO] [stdout]     |              ----^^
[INFO] [stdout]     |              |
[INFO] [stdout]     |              help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/node.rs:2:21
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::io::{Read, Write};
[INFO] [stdout]   |                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Read`
[INFO] [stdout]  --> src/node.rs:2:15
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::io::{Read, Write};
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pubkey`
[INFO] [stdout]   --> src/peer.rs:67:74
[INFO] [stdout]    |
[INFO] [stdout] 67 |     pub fn on_packet(&self, message_type: u8, rlp: Rlp, read_buf: &[u8], pubkey: PublicKey) -> Result<(), Box<dyn Error>> {
[INFO] [stdout]    |                                                                          ^^^^^^ help: if this is intentional, prefix it with an underscore: `_pubkey`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hash_bytes`
[INFO] [stdout]   --> src/peer.rs:91:17
[INFO] [stdout]    |
[INFO] [stdout] 91 |             let hash_bytes = rlp.at(1)?.data()?;
[INFO] [stdout]    |                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_hash_bytes`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `private_key`
[INFO] [stdout]    --> src/peer.rs:118:13
[INFO] [stdout]     |
[INFO] [stdout] 118 |         let private_key = &self.private_key;
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_private_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hash_signed`
[INFO] [stdout]    --> src/peer.rs:160:21
[INFO] [stdout]     |
[INFO] [stdout] 160 |                 let hash_signed = keccak(&read_buf[32..]);
[INFO] [stdout]     |                     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_hash_signed`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/node.rs:498:18
[INFO] [stdout]     |
[INFO] [stdout] 498 |         let (tx, mut rx) = mpsc::unbounded_channel::<Vec<u8>>();
[INFO] [stdout]     |                  ----^^
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `peer`
[INFO] [stdout]   --> src/dht.rs:31:29
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub fn bootstrap(&self, peer: PeerInfo) {
[INFO] [stdout]    |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_peer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `header_buf` is never read
[INFO] [stdout]    --> src/node.rs:127:9
[INFO] [stdout]     |
[INFO] [stdout] 127 |         header_buf[5] = 0x80;
[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: `protocol_id`
[INFO] [stdout]    --> src/node.rs:200:7
[INFO] [stdout]     |
[INFO] [stdout] 200 |         let protocol_id = header_rlp.val_at::<u16>(0)?;
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_protocol_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `header`
[INFO] [stdout]    --> src/node.rs:405:13
[INFO] [stdout]     |
[INFO] [stdout] 405 |         let header = &buf[..16];
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_header`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mac`
[INFO] [stdout]    --> src/node.rs:406:13
[INFO] [stdout]     |
[INFO] [stdout] 406 |         let mac = &buf[16..32];
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_mac`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rx`
[INFO] [stdout]    --> src/node.rs:498:18
[INFO] [stdout]     |
[INFO] [stdout] 498 |         let (tx, mut rx) = mpsc::unbounded_channel::<Vec<u8>>();
[INFO] [stdout]     |                  ^^^^^^ help: if this is intentional, prefix it with an underscore: `_rx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_message_type` is never used
[INFO] [stdout]   --> src/peer.rs:17:4
[INFO] [stdout]    |
[INFO] [stdout] 17 | fn print_message_type(message_type: u8) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NodePoint` is never constructed
[INFO] [stdout]   --> src/peer.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | struct NodePoint {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Peer` is never constructed
[INFO] [stdout]   --> src/peer.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub struct Peer {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `on_packet`, and `run` are never used
[INFO] [stdout]    --> src/peer.rs:55:12
[INFO] [stdout]     |
[INFO] [stdout]  54 | impl Peer {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout]  55 |     pub fn new(addr: SocketAddr, private_key: SecretKey) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  67 |     pub fn on_packet(&self, message_type: u8, rlp: Rlp, read_buf: &[u8], pubkey: PublicKey) -> Result<(), Box<dyn Error>> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub async fn run(&mut self) -> Result<(), Box<dyn Error>> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXPIRY_TIME` is never used
[INFO] [stdout]   --> src/message.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const EXPIRY_TIME: Duration = Duration::from_secs(20);
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PeerInfo` is never constructed
[INFO] [stdout]   --> src/message.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct PeerInfo {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `RlpItem` is never used
[INFO] [stdout]   --> src/message.rs:30:10
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub type RlpItem = Vec<u8>;
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `RlpList` is never used
[INFO] [stdout]   --> src/message.rs:31:10
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub type RlpList = Vec<RlpItem>;
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `from_sock_addr`, `encode_rlp`, `decode_rlp`, and `get_ip_bytes` are never used
[INFO] [stdout]   --> src/message.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl PeerInfo {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 34 |     pub fn new(ip: IpAddr, port: u16) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn from_sock_addr(addr: &SocketAddr) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn encode_rlp(&self, rlp: &mut RlpStream) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn decode_rlp(r: &Rlp) -> Result<Self, Box<dyn Error>> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91 |     pub fn get_ip_bytes(&self) -> Vec<u8> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Capabilitiy` is never constructed
[INFO] [stdout]    --> src/message.rs:122:12
[INFO] [stdout]     |
[INFO] [stdout] 122 | pub struct Capabilitiy {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `int_u16_2buttfer` is never used
[INFO] [stdout]    --> src/message.rs:143:4
[INFO] [stdout]     |
[INFO] [stdout] 143 | fn int_u16_2buttfer(number: u16) -> [u8; 2] {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `int_u32_2buttfer` is never used
[INFO] [stdout]    --> src/message.rs:149:4
[INFO] [stdout]     |
[INFO] [stdout] 149 | fn int_u32_2buttfer(number: u32) -> [u8; 4] {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encode_ping` is never used
[INFO] [stdout]    --> src/message.rs:155:8
[INFO] [stdout]     |
[INFO] [stdout] 155 | pub fn encode_ping(from: &PeerInfo, to: &PeerInfo, secret: &SecretKey) -> Vec<u8>  {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encode_pong` is never used
[INFO] [stdout]    --> src/message.rs:196:8
[INFO] [stdout]     |
[INFO] [stdout] 196 | pub fn encode_pong(from: &PeerInfo, hashbuf: &Vec<u8>, timestamp: &u64, secret: &SecretKey) -> Vec<u8> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encode_find_node` is never used
[INFO] [stdout]    --> src/message.rs:232:8
[INFO] [stdout]     |
[INFO] [stdout] 232 | pub fn encode_find_node(secret: &SecretKey) -> Vec<u8> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DHT` is never constructed
[INFO] [stdout]   --> src/dht.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct DHT {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `bootstrap` are never used
[INFO] [stdout]   --> src/dht.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl DHT {
[INFO] [stdout]    | -------- associated items in this implementation
[INFO] [stdout] 25 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn bootstrap(&self, peer: PeerInfo) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Header` and `Body` are never constructed
[INFO] [stdout]   --> src/node.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | enum NodeState {
[INFO] [stdout]    |      --------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 33 |     Header,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 34 |     Body,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `NodeState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Rx` is never used
[INFO] [stdout]   --> src/node.rs:39:6
[INFO] [stdout]    |
[INFO] [stdout] 39 | type Rx = UnboundedReceiver<Vec<u8>>;
[INFO] [stdout]    |      ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `secret`, `id`, `remote_ephemeral_public_key`, and `remote_nonce` are never read
[INFO] [stdout]   --> src/node.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct  Node {
[INFO] [stdout]    |             ---- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 47 |     secret: Secret,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     id: Public,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 51 |     remote_ephemeral_public_key: RefCell<Public>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 52 |     remote_nonce: RefCell<H256>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RECEIVE_PAYLOAD` is never used
[INFO] [stdout]   --> src/node.rs:66:7
[INFO] [stdout]    |
[INFO] [stdout] 66 | const RECEIVE_PAYLOAD: Duration = Duration::from_secs(30);
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PAYLOAD_SOFT_LIMIT` is never used
[INFO] [stdout]   --> src/node.rs:71:11
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub const PAYLOAD_SOFT_LIMIT: usize = (1 << 22) - 1; // 4Mb
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PACKET_DISCONNECT` is never used
[INFO] [stdout]   --> src/node.rs:75:7
[INFO] [stdout]    |
[INFO] [stdout] 75 | const PACKET_DISCONNECT: u8 = 0x01;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PACKET_PING` is never used
[INFO] [stdout]   --> src/node.rs:76:7
[INFO] [stdout]    |
[INFO] [stdout] 76 | const PACKET_PING: u8 = 0x02;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PACKET_PONG` is never used
[INFO] [stdout]   --> src/node.rs:77:7
[INFO] [stdout]    |
[INFO] [stdout] 77 | const PACKET_PONG: u8 = 0x03;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PACKET_GET_PEERS` is never used
[INFO] [stdout]   --> src/node.rs:78:7
[INFO] [stdout]    |
[INFO] [stdout] 78 | const PACKET_GET_PEERS: u8 = 0x04;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PACKET_PEERS` is never used
[INFO] [stdout]   --> src/node.rs:79:7
[INFO] [stdout]    |
[INFO] [stdout] 79 | const PACKET_PEERS: u8 = 0x05;
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PACKET_USER` is never used
[INFO] [stdout]   --> src/node.rs:80:7
[INFO] [stdout]    |
[INFO] [stdout] 80 | const PACKET_USER: u8 = 0x10;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PACKET_LAST` is never used
[INFO] [stdout]   --> src/node.rs:81:7
[INFO] [stdout]    |
[INFO] [stdout] 81 | const PACKET_LAST: u8 = 0x7f;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `encode_frame`, `read_payload`, `handle_header`, and `write` are never used
[INFO] [stdout]    --> src/node.rs:114:8
[INFO] [stdout]     |
[INFO] [stdout]  83 | impl Node {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 114 |     fn encode_frame(message_code: u64, data: &[u8]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 215 |     fn read_payload(&mut self, mut payload: Bytes, payload_len: usize) -> Result<(), Box<dyn Error>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 404 |     fn handle_header(&self, buf: &[u8]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 409 |     async fn write(&self, rx: &mut Rx, stream: &mut WriteHalf<TcpStream>) {
[INFO] [stdout]     |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/peer.rs:86:13
[INFO] [stdout]    |
[INFO] [stdout] 86 |             tx.send(bytes);
[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] 86 |             let _ = tx.send(bytes);
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/peer.rs:99:13
[INFO] [stdout]    |
[INFO] [stdout] 99 |             tx.send(bytes);
[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] 99 |             let _ = tx.send(bytes);
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/peer.rs:149:17
[INFO] [stdout]     |
[INFO] [stdout] 149 |                 tx.send(ping);
[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] 149 |                 let _ = tx.send(ping);
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `cecoveryId` should have a snake case name
[INFO] [stdout]    --> src/message.rs:176:21
[INFO] [stdout]     |
[INFO] [stdout] 176 |     let (signature, cecoveryId) = match sign(&Message::parse_slice(&sighash).unwrap(), secret) {
[INFO] [stdout]     |                     ^^^^^^^^^^ help: convert the identifier to snake case: `cecovery_id`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `cecoveryId` should have a snake case name
[INFO] [stdout]    --> src/message.rs:212:21
[INFO] [stdout]     |
[INFO] [stdout] 212 |     let (signature, cecoveryId) = match sign(&Message::parse_slice(&sighash).unwrap(), secret) {
[INFO] [stdout]     |                     ^^^^^^^^^^ help: convert the identifier to snake case: `cecovery_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `cecoveryId` should have a snake case name
[INFO] [stdout]    --> src/message.rs:253:21
[INFO] [stdout]     |
[INFO] [stdout] 253 |     let (signature, cecoveryId) = match sign(&Message::parse_slice(&sighash).unwrap(), secret) {
[INFO] [stdout]     |                     ^^^^^^^^^^ help: convert the identifier to snake case: `cecovery_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]    --> src/node.rs:142:3
[INFO] [stdout]     |
[INFO] [stdout] 142 |         &mut enc[..].copy_from_slice(prev.as_bytes());
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 142 |         let _ = &mut enc[..].copy_from_slice(prev.as_bytes());
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]    --> src/node.rs:166:3
[INFO] [stdout]     |
[INFO] [stdout] 166 |         &mut packet[..HEADER_LEN].copy_from_slice(&mut header);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 166 |         let _ = &mut packet[..HEADER_LEN].copy_from_slice(&mut header);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]    --> src/node.rs:170:3
[INFO] [stdout]     |
[INFO] [stdout] 170 |         &mut packet[32..32 + len].copy_from_slice(payload);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 170 |         let _ = &mut packet[32..32 + len].copy_from_slice(payload);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/node.rs:2:21
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::io::{Read, Write};
[INFO] [stdout]   |                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Read`
[INFO] [stdout]  --> src/node.rs:2:15
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::io::{Read, Write};
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pubkey`
[INFO] [stdout]   --> src/peer.rs:67:74
[INFO] [stdout]    |
[INFO] [stdout] 67 |     pub fn on_packet(&self, message_type: u8, rlp: Rlp, read_buf: &[u8], pubkey: PublicKey) -> Result<(), Box<dyn Error>> {
[INFO] [stdout]    |                                                                          ^^^^^^ help: if this is intentional, prefix it with an underscore: `_pubkey`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hash_bytes`
[INFO] [stdout]   --> src/peer.rs:91:17
[INFO] [stdout]    |
[INFO] [stdout] 91 |             let hash_bytes = rlp.at(1)?.data()?;
[INFO] [stdout]    |                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_hash_bytes`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `private_key`
[INFO] [stdout]    --> src/peer.rs:118:13
[INFO] [stdout]     |
[INFO] [stdout] 118 |         let private_key = &self.private_key;
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_private_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hash_signed`
[INFO] [stdout]    --> src/peer.rs:160:21
[INFO] [stdout]     |
[INFO] [stdout] 160 |                 let hash_signed = keccak(&read_buf[32..]);
[INFO] [stdout]     |                     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_hash_signed`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `peer`
[INFO] [stdout]   --> src/dht.rs:31:29
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub fn bootstrap(&self, peer: PeerInfo) {
[INFO] [stdout]    |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_peer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `header_buf` is never read
[INFO] [stdout]    --> src/node.rs:127:9
[INFO] [stdout]     |
[INFO] [stdout] 127 |         header_buf[5] = 0x80;
[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: `protocol_id`
[INFO] [stdout]    --> src/node.rs:200:7
[INFO] [stdout]     |
[INFO] [stdout] 200 |         let protocol_id = header_rlp.val_at::<u16>(0)?;
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_protocol_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `header`
[INFO] [stdout]    --> src/node.rs:405:13
[INFO] [stdout]     |
[INFO] [stdout] 405 |         let header = &buf[..16];
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_header`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mac`
[INFO] [stdout]    --> src/node.rs:406:13
[INFO] [stdout]     |
[INFO] [stdout] 406 |         let mac = &buf[16..32];
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_mac`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rx`
[INFO] [stdout]    --> src/node.rs:498:18
[INFO] [stdout]     |
[INFO] [stdout] 498 |         let (tx, mut rx) = mpsc::unbounded_channel::<Vec<u8>>();
[INFO] [stdout]     |                  ^^^^^^ help: if this is intentional, prefix it with an underscore: `_rx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_message_type` is never used
[INFO] [stdout]   --> src/peer.rs:17:4
[INFO] [stdout]    |
[INFO] [stdout] 17 | fn print_message_type(message_type: u8) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NodePoint` is never constructed
[INFO] [stdout]   --> src/peer.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | struct NodePoint {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Peer` is never constructed
[INFO] [stdout]   --> src/peer.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub struct Peer {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `on_packet`, and `run` are never used
[INFO] [stdout]    --> src/peer.rs:55:12
[INFO] [stdout]     |
[INFO] [stdout]  54 | impl Peer {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout]  55 |     pub fn new(addr: SocketAddr, private_key: SecretKey) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  67 |     pub fn on_packet(&self, message_type: u8, rlp: Rlp, read_buf: &[u8], pubkey: PublicKey) -> Result<(), Box<dyn Error>> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub async fn run(&mut self) -> Result<(), Box<dyn Error>> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXPIRY_TIME` is never used
[INFO] [stdout]   --> src/message.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const EXPIRY_TIME: Duration = Duration::from_secs(20);
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PeerInfo` is never constructed
[INFO] [stdout]   --> src/message.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct PeerInfo {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `RlpItem` is never used
[INFO] [stdout]   --> src/message.rs:30:10
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub type RlpItem = Vec<u8>;
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `RlpList` is never used
[INFO] [stdout]   --> src/message.rs:31:10
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub type RlpList = Vec<RlpItem>;
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `from_sock_addr`, `encode_rlp`, `decode_rlp`, and `get_ip_bytes` are never used
[INFO] [stdout]   --> src/message.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl PeerInfo {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 34 |     pub fn new(ip: IpAddr, port: u16) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn from_sock_addr(addr: &SocketAddr) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn encode_rlp(&self, rlp: &mut RlpStream) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn decode_rlp(r: &Rlp) -> Result<Self, Box<dyn Error>> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91 |     pub fn get_ip_bytes(&self) -> Vec<u8> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Capabilitiy` is never constructed
[INFO] [stdout]    --> src/message.rs:122:12
[INFO] [stdout]     |
[INFO] [stdout] 122 | pub struct Capabilitiy {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `int_u16_2buttfer` is never used
[INFO] [stdout]    --> src/message.rs:143:4
[INFO] [stdout]     |
[INFO] [stdout] 143 | fn int_u16_2buttfer(number: u16) -> [u8; 2] {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `int_u32_2buttfer` is never used
[INFO] [stdout]    --> src/message.rs:149:4
[INFO] [stdout]     |
[INFO] [stdout] 149 | fn int_u32_2buttfer(number: u32) -> [u8; 4] {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encode_ping` is never used
[INFO] [stdout]    --> src/message.rs:155:8
[INFO] [stdout]     |
[INFO] [stdout] 155 | pub fn encode_ping(from: &PeerInfo, to: &PeerInfo, secret: &SecretKey) -> Vec<u8>  {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encode_pong` is never used
[INFO] [stdout]    --> src/message.rs:196:8
[INFO] [stdout]     |
[INFO] [stdout] 196 | pub fn encode_pong(from: &PeerInfo, hashbuf: &Vec<u8>, timestamp: &u64, secret: &SecretKey) -> Vec<u8> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encode_find_node` is never used
[INFO] [stdout]    --> src/message.rs:232:8
[INFO] [stdout]     |
[INFO] [stdout] 232 | pub fn encode_find_node(secret: &SecretKey) -> Vec<u8> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DHT` is never constructed
[INFO] [stdout]   --> src/dht.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct DHT {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `bootstrap` are never used
[INFO] [stdout]   --> src/dht.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl DHT {
[INFO] [stdout]    | -------- associated items in this implementation
[INFO] [stdout] 25 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn bootstrap(&self, peer: PeerInfo) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Header` and `Body` are never constructed
[INFO] [stdout]   --> src/node.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | enum NodeState {
[INFO] [stdout]    |      --------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 33 |     Header,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 34 |     Body,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `NodeState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Rx` is never used
[INFO] [stdout]   --> src/node.rs:39:6
[INFO] [stdout]    |
[INFO] [stdout] 39 | type Rx = UnboundedReceiver<Vec<u8>>;
[INFO] [stdout]    |      ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `secret`, `id`, `remote_ephemeral_public_key`, and `remote_nonce` are never read
[INFO] [stdout]   --> src/node.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct  Node {
[INFO] [stdout]    |             ---- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 47 |     secret: Secret,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     id: Public,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 51 |     remote_ephemeral_public_key: RefCell<Public>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 52 |     remote_nonce: RefCell<H256>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RECEIVE_PAYLOAD` is never used
[INFO] [stdout]   --> src/node.rs:66:7
[INFO] [stdout]    |
[INFO] [stdout] 66 | const RECEIVE_PAYLOAD: Duration = Duration::from_secs(30);
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PAYLOAD_SOFT_LIMIT` is never used
[INFO] [stdout]   --> src/node.rs:71:11
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub const PAYLOAD_SOFT_LIMIT: usize = (1 << 22) - 1; // 4Mb
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PACKET_DISCONNECT` is never used
[INFO] [stdout]   --> src/node.rs:75:7
[INFO] [stdout]    |
[INFO] [stdout] 75 | const PACKET_DISCONNECT: u8 = 0x01;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PACKET_PING` is never used
[INFO] [stdout]   --> src/node.rs:76:7
[INFO] [stdout]    |
[INFO] [stdout] 76 | const PACKET_PING: u8 = 0x02;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PACKET_PONG` is never used
[INFO] [stdout]   --> src/node.rs:77:7
[INFO] [stdout]    |
[INFO] [stdout] 77 | const PACKET_PONG: u8 = 0x03;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PACKET_GET_PEERS` is never used
[INFO] [stdout]   --> src/node.rs:78:7
[INFO] [stdout]    |
[INFO] [stdout] 78 | const PACKET_GET_PEERS: u8 = 0x04;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PACKET_PEERS` is never used
[INFO] [stdout]   --> src/node.rs:79:7
[INFO] [stdout]    |
[INFO] [stdout] 79 | const PACKET_PEERS: u8 = 0x05;
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PACKET_USER` is never used
[INFO] [stdout]   --> src/node.rs:80:7
[INFO] [stdout]    |
[INFO] [stdout] 80 | const PACKET_USER: u8 = 0x10;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PACKET_LAST` is never used
[INFO] [stdout]   --> src/node.rs:81:7
[INFO] [stdout]    |
[INFO] [stdout] 81 | const PACKET_LAST: u8 = 0x7f;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `encode_frame`, `read_payload`, `handle_header`, and `write` are never used
[INFO] [stdout]    --> src/node.rs:114:8
[INFO] [stdout]     |
[INFO] [stdout]  83 | impl Node {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 114 |     fn encode_frame(message_code: u64, data: &[u8]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 215 |     fn read_payload(&mut self, mut payload: Bytes, payload_len: usize) -> Result<(), Box<dyn Error>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 404 |     fn handle_header(&self, buf: &[u8]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 409 |     async fn write(&self, rx: &mut Rx, stream: &mut WriteHalf<TcpStream>) {
[INFO] [stdout]     |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/peer.rs:86:13
[INFO] [stdout]    |
[INFO] [stdout] 86 |             tx.send(bytes);
[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] 86 |             let _ = tx.send(bytes);
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/peer.rs:99:13
[INFO] [stdout]    |
[INFO] [stdout] 99 |             tx.send(bytes);
[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] 99 |             let _ = tx.send(bytes);
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/peer.rs:149:17
[INFO] [stdout]     |
[INFO] [stdout] 149 |                 tx.send(ping);
[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] 149 |                 let _ = tx.send(ping);
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `cecoveryId` should have a snake case name
[INFO] [stdout]    --> src/message.rs:176:21
[INFO] [stdout]     |
[INFO] [stdout] 176 |     let (signature, cecoveryId) = match sign(&Message::parse_slice(&sighash).unwrap(), secret) {
[INFO] [stdout]     |                     ^^^^^^^^^^ help: convert the identifier to snake case: `cecovery_id`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `cecoveryId` should have a snake case name
[INFO] [stdout]    --> src/message.rs:212:21
[INFO] [stdout]     |
[INFO] [stdout] 212 |     let (signature, cecoveryId) = match sign(&Message::parse_slice(&sighash).unwrap(), secret) {
[INFO] [stdout]     |                     ^^^^^^^^^^ help: convert the identifier to snake case: `cecovery_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `cecoveryId` should have a snake case name
[INFO] [stdout]    --> src/message.rs:253:21
[INFO] [stdout]     |
[INFO] [stdout] 253 |     let (signature, cecoveryId) = match sign(&Message::parse_slice(&sighash).unwrap(), secret) {
[INFO] [stdout]     |                     ^^^^^^^^^^ help: convert the identifier to snake case: `cecovery_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]    --> src/node.rs:142:3
[INFO] [stdout]     |
[INFO] [stdout] 142 |         &mut enc[..].copy_from_slice(prev.as_bytes());
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 142 |         let _ = &mut enc[..].copy_from_slice(prev.as_bytes());
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]    --> src/node.rs:166:3
[INFO] [stdout]     |
[INFO] [stdout] 166 |         &mut packet[..HEADER_LEN].copy_from_slice(&mut header);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 166 |         let _ = &mut packet[..HEADER_LEN].copy_from_slice(&mut header);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]    --> src/node.rs:170:3
[INFO] [stdout]     |
[INFO] [stdout] 170 |         &mut packet[32..32 + len].copy_from_slice(payload);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 170 |         let _ = &mut packet[32..32 + len].copy_from_slice(payload);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 42.23s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: uint v0.4.1
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 2`
[INFO] running `Command { std: "docker" "inspect" "8a29e8bbc5051177ef889db837e3234dfd87b7996e183cdcabf2dc32a9525d6b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8a29e8bbc5051177ef889db837e3234dfd87b7996e183cdcabf2dc32a9525d6b", kill_on_drop: false }`
[INFO] [stdout] 8a29e8bbc5051177ef889db837e3234dfd87b7996e183cdcabf2dc32a9525d6b
