[INFO] cloning repository https://github.com/bool-rus/torrent-rs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/bool-rus/torrent-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbool-rus%2Ftorrent-rs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbool-rus%2Ftorrent-rs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 5a024e81a7a32ea94cf4c1114b192846b8639900
[INFO] checking bool-rus/torrent-rs against master#7f5a42b073dc2bee2aa625052eb066ee07072048 for pr-78991
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbool-rus%2Ftorrent-rs" "/workspace/builds/worker-7/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/bool-rus/torrent-rs on toolchain 7f5a42b073dc2bee2aa625052eb066ee07072048
[INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+7f5a42b073dc2bee2aa625052eb066ee07072048" "read-manifest" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/bool-rus/torrent-rs
[INFO] finished tweaking git repo https://github.com/bool-rus/torrent-rs
[INFO] tweaked toml for git repo https://github.com/bool-rus/torrent-rs written to /workspace/builds/worker-7/source/Cargo.toml
[INFO] crate git repo https://github.com/bool-rus/torrent-rs already has a lockfile, it will not be regenerated
[INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+7f5a42b073dc2bee2aa625052eb066ee07072048" "fetch" "--locked" "--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-7/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7/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" "rustops/crates-build-env@sha256:6eabd152ff4036248d66efda456a36cb33d24b7291b33f25f75140726c88da35" "/opt/rustwide/cargo-home/bin/cargo" "+7f5a42b073dc2bee2aa625052eb066ee07072048" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 9dfc6c5a0f64ba23ee3ce20860ed048ca6808da2355c3fe1f15ac4cf031c6ce2
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] running `Command { std: "docker" "start" "-a" "9dfc6c5a0f64ba23ee3ce20860ed048ca6808da2355c3fe1f15ac4cf031c6ce2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "9dfc6c5a0f64ba23ee3ce20860ed048ca6808da2355c3fe1f15ac4cf031c6ce2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9dfc6c5a0f64ba23ee3ce20860ed048ca6808da2355c3fe1f15ac4cf031c6ce2", kill_on_drop: false }`
[INFO] [stdout] 9dfc6c5a0f64ba23ee3ce20860ed048ca6808da2355c3fe1f15ac4cf031c6ce2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7/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" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "rustops/crates-build-env@sha256:6eabd152ff4036248d66efda456a36cb33d24b7291b33f25f75140726c88da35" "/opt/rustwide/cargo-home/bin/cargo" "+7f5a42b073dc2bee2aa625052eb066ee07072048" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] c07e12953a6557510013ccff3c3829b6b8941d110c4a44ca29a3741fb5d217d2
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] running `Command { std: "docker" "start" "-a" "c07e12953a6557510013ccff3c3829b6b8941d110c4a44ca29a3741fb5d217d2", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]    Compiling libc v0.2.65
[INFO] [stderr]    Compiling autocfg v0.1.7
[INFO] [stderr]     Checking cfg-if v0.1.9
[INFO] [stderr]    Compiling semver-parser v0.7.0
[INFO] [stderr]    Compiling proc-macro2 v1.0.6
[INFO] [stderr]    Compiling unicode-xid v0.2.0
[INFO] [stderr]    Compiling syn v1.0.8
[INFO] [stderr]     Checking rustc-serialize v0.3.24
[INFO] [stderr]     Checking lazy_static v1.4.0
[INFO] [stderr]     Checking scopeguard v1.0.0
[INFO] [stderr]     Checking slab v0.4.2
[INFO] [stderr]    Compiling gcc v0.3.55
[INFO] [stderr]     Checking rustc-demangle v0.1.16
[INFO] [stderr]    Compiling memchr v2.2.1
[INFO] [stderr]    Compiling arrayvec v0.4.12
[INFO] [stderr]    Compiling ryu v1.0.2
[INFO] [stderr]     Checking nodrop v0.1.14
[INFO] [stderr]    Compiling version_check v0.1.5
[INFO] [stderr]    Compiling failure_derive v0.1.6
[INFO] [stderr]    Compiling proc-macro-nested v0.1.3
[INFO] [stderr]    Compiling byteorder v1.3.2
[INFO] [stderr]     Checking same-file v1.0.5
[INFO] [stderr]     Checking static_assertions v0.3.4
[INFO] [stderr]     Checking once_cell v1.2.0
[INFO] [stderr]     Checking futures-sink v0.3.1
[INFO] [stderr]     Checking futures-task v0.3.1
[INFO] [stderr]     Checking futures-timer v2.0.2
[INFO] [stderr]     Checking lock_api v0.3.2
[INFO] [stderr]     Checking crossbeam-utils v0.6.6
[INFO] [stderr]     Checking futures-util-preview v0.3.0-alpha.19
[INFO] [stderr]     Checking async-macros v2.0.0
[INFO] [stderr]    Compiling semver v0.9.0
[INFO] [stderr]     Checking walkdir v2.2.9
[INFO] [stderr]     Checking log v0.4.8
[INFO] [stderr]    Compiling num-traits v0.2.10
[INFO] [stderr]    Compiling num-integer v0.1.41
[INFO] [stderr]    Compiling num-iter v0.1.39
[INFO] [stderr]    Compiling crossbeam-utils v0.7.0
[INFO] [stderr]    Compiling crossbeam-epoch v0.8.0
[INFO] [stderr]    Compiling nom v5.0.1
[INFO] [stderr]     Checking kv-log-macro v1.0.4
[INFO] [stderr]     Checking async-task v1.0.0
[INFO] [stderr]    Compiling rustc_version v0.2.3
[INFO] [stderr]    Compiling rust-crypto v0.2.36
[INFO] [stderr]     Checking rand v0.4.6
[INFO] [stderr]     Checking backtrace-sys v0.1.32
[INFO] [stderr]     Checking time v0.1.42
[INFO] [stderr]     Checking iovec v0.1.4
[INFO] [stderr]     Checking net2 v0.2.33
[INFO] [stderr]     Checking num_cpus v1.11.1
[INFO] [stderr]    Compiling quote v1.0.2
[INFO] [stderr]     Checking backtrace v0.3.40
[INFO] [stderr]    Compiling parking_lot_core v0.6.2
[INFO] [stderr]    Compiling memoffset v0.5.3
[INFO] [stderr]    Compiling parking_lot v0.9.0
[INFO] [stderr]    Compiling lexical-core v0.4.6
[INFO] [stderr]     Checking crossbeam-channel v0.4.0
[INFO] [stderr]     Checking bytes v0.4.12
[INFO] [stderr]     Checking mio v0.6.20
[INFO] [stderr]     Checking error-chain v0.11.0
[INFO] [stderr]     Checking rand v0.3.23
[INFO] [stderr]     Checking bip_bencode v0.4.4
[INFO] [stderr]     Checking num-complex v0.1.43
[INFO] [stderr]     Checking crossbeam-deque v0.7.2
[INFO] [stderr]     Checking broadcaster v0.2.6
[INFO] [stderr]     Checking mio-uds v0.6.7
[INFO] [stderr]     Checking num-bigint v0.1.44
[INFO] [stderr]     Checking async-std v1.1.0
[INFO] [stderr]     Checking num-rational v0.1.42
[INFO] [stderr]     Checking num v0.1.42
[INFO] [stderr]     Checking chrono v0.2.25
[INFO] [stderr]     Checking bip_util v0.5.0
[INFO] [stderr]     Checking bip_metainfo v0.12.0
[INFO] [stderr]    Compiling synstructure v0.12.3
[INFO] [stderr]    Compiling proc-macro-hack v0.5.11
[INFO] [stderr]    Compiling async-trait v0.1.19
[INFO] [stderr]     Checking failure v0.1.6
[INFO] [stderr]    Compiling futures-macro v0.3.1
[INFO] [stderr]     Checking futures-util v0.3.1
[INFO] [stderr]     Checking torrent-rs v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `async_std::net::ToSocketAddrs`
[INFO] [stdout]  --> src/faces.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use async_std::net::ToSocketAddrs;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AbortHandle`, `AbortRegistration`, `Abortable`
[INFO] [stdout]  --> src/implements.rs:3:28
[INFO] [stdout]   |
[INFO] [stdout] 3 | use futures_util::future::{AbortHandle, Abortable, AbortRegistration};
[INFO] [stdout]   |                            ^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TcpListener`
[INFO] [stdout]  --> src/implements.rs:5:24
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::net::{IpAddr, TcpListener};
[INFO] [stdout]   |                        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ToSocketAddrs`
[INFO] [stdout]  --> src/implements.rs:8:33
[INFO] [stdout]   |
[INFO] [stdout] 8 | use async_std::net::{TcpStream, ToSocketAddrs};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::message::Handshake`
[INFO] [stdout]   --> src/implements.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::message::Handshake;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]   --> src/parser.rs:86:9
[INFO] [stdout]    |
[INFO] [stdout] 86 |     use super::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `bytes::Bytes`
[INFO] [stdout]   --> src/parser.rs:87:9
[INFO] [stdout]    |
[INFO] [stdout] 87 |     use bytes::Bytes;
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BytesMut`
[INFO] [stdout]  --> src/io.rs:5:20
[INFO] [stdout]   |
[INFO] [stdout] 5 | use bytes::{Bytes, BytesMut};
[INFO] [stdout]   |                    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Error`
[INFO] [stdout]   --> src/io.rs:10:35
[INFO] [stdout]    |
[INFO] [stdout] 10 | use futures_util::io::{AsyncRead, Error};
[INFO] [stdout]    |                                   ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `async_std::net::ToSocketAddrs`
[INFO] [stdout]  --> src/faces.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use async_std::net::ToSocketAddrs;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]   --> src/faces.rs:53:9
[INFO] [stdout]    |
[INFO] [stdout] 53 |     use super::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/faces.rs:54:9
[INFO] [stdout]    |
[INFO] [stdout] 54 |     use std::sync::Arc;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `block_on`, `spawn`
[INFO] [stdout]   --> src/faces.rs:55:27
[INFO] [stdout]    |
[INFO] [stdout] 55 |     use async_std::task::{block_on, spawn};
[INFO] [stdout]    |                           ^^^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AbortHandle`, `AbortRegistration`, `Abortable`
[INFO] [stdout]  --> src/implements.rs:3:28
[INFO] [stdout]   |
[INFO] [stdout] 3 | use futures_util::future::{AbortHandle, Abortable, AbortRegistration};
[INFO] [stdout]   |                            ^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TcpListener`
[INFO] [stdout]  --> src/implements.rs:5:24
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::net::{IpAddr, TcpListener};
[INFO] [stdout]   |                        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ToSocketAddrs`
[INFO] [stdout]  --> src/implements.rs:8:33
[INFO] [stdout]   |
[INFO] [stdout] 8 | use async_std::net::{TcpStream, ToSocketAddrs};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::message::Handshake`
[INFO] [stdout]   --> src/implements.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::message::Handshake;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TcpListener`, `TcpStream`
[INFO] [stdout]    --> src/peer.rs:211:26
[INFO] [stdout]     |
[INFO] [stdout] 211 |     use async_std::net::{TcpListener, TcpStream};
[INFO] [stdout]     |                          ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AsyncWriteExt`
[INFO] [stdout]    --> src/peer.rs:212:24
[INFO] [stdout]     |
[INFO] [stdout] 212 |     use futures_util::{AsyncWriteExt, AsyncReadExt};
[INFO] [stdout]     |                        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BytesMut`
[INFO] [stdout]  --> src/io.rs:5:20
[INFO] [stdout]   |
[INFO] [stdout] 5 | use bytes::{Bytes, BytesMut};
[INFO] [stdout]   |                    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `async_std::io::prelude::*`
[INFO] [stdout]    --> src/io.rs:185:9
[INFO] [stdout]     |
[INFO] [stdout] 185 |     use async_std::io::prelude::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Error`
[INFO] [stdout]   --> src/lib.rs:30:19
[INFO] [stdout]    |
[INFO] [stdout] 30 |     use failure::{Error, Fail};
[INFO] [stdout]    |                   ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/peer.rs:130:27
[INFO] [stdout]     |
[INFO] [stdout] 130 |     async fn daemon<S, C>(mut self, mut stream: S, cache: C) -> Result<(), PeerError>
[INFO] [stdout]     |                           ----^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/peer.rs:157:25
[INFO] [stdout]     |
[INFO] [stdout] 157 |                     let mut response;
[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:80:14
[INFO] [stdout]    |
[INFO] [stdout] 80 |         let (mut sender, receiver) = async_std::sync::channel(10);
[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:63:13
[INFO] [stdout]    |
[INFO] [stdout] 63 |         let mut bytes: Bytes = handshake.clone().into();
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable call
[INFO] [stdout]    --> src/io.rs:100:35
[INFO] [stdout]     |
[INFO] [stdout] 100 |             State::Busy(_, _) => {Err(unimplemented!())},
[INFO] [stdout]     |                                   ^^^ ---------------- any code following this expression is unreachable
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   unreachable call
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `futures_util::AsyncReadExt`
[INFO] [stdout]   --> src/implements.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use futures_util::AsyncReadExt;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AsyncRead`
[INFO] [stdout]   --> src/io.rs:10:24
[INFO] [stdout]    |
[INFO] [stdout] 10 | use futures_util::io::{AsyncRead, Error};
[INFO] [stdout]    |                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/message.rs:47:13
[INFO] [stdout]    |
[INFO] [stdout] 47 |         for i in 1..capacity { //все, кроме последнего
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `handles`
[INFO] [stdout]   --> src/implements.rs:52:13
[INFO] [stdout]    |
[INFO] [stdout] 52 |         let handles = self.handles.write().await;
[INFO] [stdout]    |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_handles`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `port`
[INFO] [stdout]    --> src/peer.rs:190:22
[INFO] [stdout]     |
[INFO] [stdout] 190 |                 Port(port) => { unimplemented!() }
[INFO] [stdout]     |                      ^^^^ help: if this is intentional, prefix it with an underscore: `_port`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> src/io.rs:50:37
[INFO] [stdout]    |
[INFO] [stdout] 50 |                     Poll::Ready(Err(e)) => Poll::Ready(None),
[INFO] [stdout]    |                                     ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> src/io.rs:66:37
[INFO] [stdout]    |
[INFO] [stdout] 66 |                     Poll::Ready(Err(e)) => Poll::Ready(None)
[INFO] [stdout]    |                                     ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cx`
[INFO] [stdout]   --> src/io.rs:87:41
[INFO] [stdout]    |
[INFO] [stdout] 87 |     fn poll_ready(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
[INFO] [stdout]    |                                         ^^ help: if this is intentional, prefix it with an underscore: `_cx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/peer.rs:130:27
[INFO] [stdout]     |
[INFO] [stdout] 130 |     async fn daemon<S, C>(mut self, mut stream: S, cache: C) -> Result<(), PeerError>
[INFO] [stdout]     |                           ----^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/peer.rs:157:25
[INFO] [stdout]     |
[INFO] [stdout] 157 |                     let mut response;
[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:80:14
[INFO] [stdout]    |
[INFO] [stdout] 80 |         let (mut sender, receiver) = async_std::sync::channel(10);
[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/io.rs:31:18
[INFO] [stdout]    |
[INFO] [stdout] 31 |     fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<Self::Item>> {
[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:63:13
[INFO] [stdout]    |
[INFO] [stdout] 63 |         let mut bytes: Bytes = handshake.clone().into();
[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/io.rs:104:19
[INFO] [stdout]     |
[INFO] [stdout] 104 |     fn poll_flush(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
[INFO] [stdout]     |                   ----^^^^
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `new`
[INFO] [stdout]   --> src/implements.rs:31:8
[INFO] [stdout]    |
[INFO] [stdout] 31 |     fn new(cache: T, peers: Vec<Peer>, info_hash: InfoHash, config: TorrentConfig) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `add_peer`
[INFO] [stdout]   --> src/implements.rs:50:18
[INFO] [stdout]    |
[INFO] [stdout] 50 |     pub async fn add_peer<S>(&self, stream: S) -> Result<(), PeerError>
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `download`
[INFO] [stdout]   --> src/implements.rs:62:18
[INFO] [stdout]    |
[INFO] [stdout] 62 |     pub async fn download(&self, block: u32, offset: u32, length: u32) -> bool {
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `stop`
[INFO] [stdout]   --> src/implements.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 70 |     pub fn stop(&self) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `parse_hash_string`
[INFO] [stdout]   --> src/parser.rs:12:4
[INFO] [stdout]    |
[INFO] [stdout] 12 | fn parse_hash_string(i: &[u8]) -> IResult<&[u8], HashString> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `parse_torrent_extentions`
[INFO] [stdout]   --> src/parser.rs:19:4
[INFO] [stdout]    |
[INFO] [stdout] 19 | fn parse_torrent_extentions(i: &[u8]) -> IResult<&[u8], TorrentExtentions> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `parse_handshake`
[INFO] [stdout]   --> src/parser.rs:26:15
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub(crate) fn parse_handshake(i: &[u8], size: u8) -> IResult<&[u8], Handshake> {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant is never constructed: `Simple`
[INFO] [stdout]   --> src/peer.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     Simple(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant is never constructed: `Handshake`
[INFO] [stdout]   --> src/peer.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     Handshake,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant is never constructed: `PeerIsBusy`
[INFO] [stdout]   --> src/peer.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     PeerIsBusy,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant is never constructed: `BlockNotFound`
[INFO] [stdout]   --> src/peer.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     BlockNotFound,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant is never constructed: `Chocked`
[INFO] [stdout]   --> src/peer.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 42 |     Chocked,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant is never constructed: `Unchocked`
[INFO] [stdout]   --> src/peer.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 43 |     Unchocked,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `do_handshake`
[INFO] [stdout]   --> src/peer.rs:60:14
[INFO] [stdout]    |
[INFO] [stdout] 60 |     async fn do_handshake<R, W>(reader: &mut R, writer: &mut W, handshake: Handshake) -> Result<Handshake, PeerError>
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `new`
[INFO] [stdout]   --> src/peer.rs:75:18
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub async fn new<S, C>(stream: S, cache: C, handshake: Handshake) -> Result<Self, PeerError>
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `get_id`
[INFO] [stdout]   --> src/peer.rs:94:12
[INFO] [stdout]    |
[INFO] [stdout] 94 |     pub fn get_id(&self) -> PeerId {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `request`
[INFO] [stdout]   --> src/peer.rs:97:18
[INFO] [stdout]    |
[INFO] [stdout] 97 |     pub async fn request(&self, block: u32, offset: u32, length: u32) -> Result<(), PeerError> {
[INFO] [stdout]    |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `choke`
[INFO] [stdout]    --> src/peer.rs:118:18
[INFO] [stdout]     |
[INFO] [stdout] 118 |     pub async fn choke(&self) {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `unchoke`
[INFO] [stdout]    --> src/peer.rs:122:18
[INFO] [stdout]     |
[INFO] [stdout] 122 |     pub async fn unchoke(&self) {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `stats`
[INFO] [stdout]    --> src/peer.rs:126:12
[INFO] [stdout]     |
[INFO] [stdout] 126 |     pub fn stats(&self) -> (u64, u64) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `daemon`
[INFO] [stdout]    --> src/peer.rs:130:14
[INFO] [stdout]     |
[INFO] [stdout] 130 |     async fn daemon<S, C>(mut self, mut stream: S, cache: C) -> Result<(), PeerError>
[INFO] [stdout]     |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `sender`
[INFO] [stdout]    --> src/peer.rs:199:14
[INFO] [stdout]     |
[INFO] [stdout] 199 |     async fn sender<W: Write + Unpin>(mut sink: MessageSink<W>, receiver: Receiver<PeerMessage>) -> Result<(), PeerError> {
[INFO] [stdout]     |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `new`
[INFO] [stdout]   --> src/io.rs:79:12
[INFO] [stdout]    |
[INFO] [stdout] 79 |     pub fn new(writer: W) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `read_handshake`
[INFO] [stdout]    --> src/io.rs:141:21
[INFO] [stdout]     |
[INFO] [stdout] 141 | pub(crate) async fn read_handshake<T: ReadExt + Unpin>(read: &mut T) -> Result<Handshake, std::io::Error> {
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `new`
[INFO] [stdout]    --> src/io.rs:160:12
[INFO] [stdout]     |
[INFO] [stdout] 160 |     pub fn new() -> (MessageChannel<A,Q>, MessageChannel<Q,A>) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `with_capacity`
[INFO] [stdout]    --> src/io.rs:163:12
[INFO] [stdout]     |
[INFO] [stdout] 163 |     pub fn with_capacity(cap: usize) -> (MessageChannel<A,Q>, MessageChannel<Q,A>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `recv`
[INFO] [stdout]    --> src/io.rs:169:18
[INFO] [stdout]     |
[INFO] [stdout] 169 |     pub async fn recv(&self) -> Option<A> {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `send`
[INFO] [stdout]    --> src/io.rs:172:18
[INFO] [stdout]     |
[INFO] [stdout] 172 |     pub async fn send(&self, msg: Q) {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> src/implements.rs:44:21
[INFO] [stdout]    |
[INFO] [stdout] 44 |                     connection.add_peer(stream).await; //TODO must use
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 53 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable call
[INFO] [stdout]    --> src/io.rs:100:35
[INFO] [stdout]     |
[INFO] [stdout] 100 |             State::Busy(_, _) => {Err(unimplemented!())},
[INFO] [stdout]     |                                   ^^^ ---------------- any code following this expression is unreachable
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   unreachable call
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `futures_util::AsyncReadExt`
[INFO] [stdout]   --> src/implements.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use futures_util::AsyncReadExt;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AsyncRead`
[INFO] [stdout]   --> src/io.rs:10:24
[INFO] [stdout]    |
[INFO] [stdout] 10 | use futures_util::io::{AsyncRead, Error};
[INFO] [stdout]    |                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/message.rs:47:13
[INFO] [stdout]    |
[INFO] [stdout] 47 |         for i in 1..capacity { //все, кроме последнего
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> src/faces.rs:61:13
[INFO] [stdout]    |
[INFO] [stdout] 61 |         let f = async move {
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `handles`
[INFO] [stdout]   --> src/implements.rs:52:13
[INFO] [stdout]    |
[INFO] [stdout] 52 |         let handles = self.handles.write().await;
[INFO] [stdout]    |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_handles`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `buf`
[INFO] [stdout]    --> src/parser.rs:100:14
[INFO] [stdout]     |
[INFO] [stdout] 100 |         let (buf, handshake) = parse_res.unwrap();
[INFO] [stdout]     |              ^^^ help: if this is intentional, prefix it with an underscore: `_buf`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `handshake`
[INFO] [stdout]    --> src/parser.rs:100:19
[INFO] [stdout]     |
[INFO] [stdout] 100 |         let (buf, handshake) = parse_res.unwrap();
[INFO] [stdout]     |                   ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_handshake`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `port`
[INFO] [stdout]    --> src/peer.rs:190:22
[INFO] [stdout]     |
[INFO] [stdout] 190 |                 Port(port) => { unimplemented!() }
[INFO] [stdout]     |                      ^^^^ help: if this is intentional, prefix it with an underscore: `_port`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> src/io.rs:50:37
[INFO] [stdout]    |
[INFO] [stdout] 50 |                     Poll::Ready(Err(e)) => Poll::Ready(None),
[INFO] [stdout]    |                                     ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> src/io.rs:66:37
[INFO] [stdout]    |
[INFO] [stdout] 66 |                     Poll::Ready(Err(e)) => Poll::Ready(None)
[INFO] [stdout]    |                                     ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cx`
[INFO] [stdout]   --> src/io.rs:87:41
[INFO] [stdout]    |
[INFO] [stdout] 87 |     fn poll_ready(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
[INFO] [stdout]    |                                         ^^ help: if this is intentional, prefix it with an underscore: `_cx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cx`
[INFO] [stdout]    --> src/io.rs:216:45
[INFO] [stdout]     |
[INFO] [stdout] 216 |         fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<(), Error>> {
[INFO] [stdout]     |                                             ^^ help: if this is intentional, prefix it with an underscore: `_cx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cx`
[INFO] [stdout]    --> src/io.rs:220:45
[INFO] [stdout]     |
[INFO] [stdout] 220 |         fn poll_close(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<(), Error>> {
[INFO] [stdout]     |                                             ^^ help: if this is intentional, prefix it with an underscore: `_cx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/io.rs:31:18
[INFO] [stdout]    |
[INFO] [stdout] 31 |     fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<Self::Item>> {
[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/io.rs:104:19
[INFO] [stdout]     |
[INFO] [stdout] 104 |     fn poll_flush(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
[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/io.rs:189:22
[INFO] [stdout]     |
[INFO] [stdout] 189 |         fn poll_read(mut self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &mut [u8]) -> Poll<Result<usize, Error>> {
[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/io.rs:206:23
[INFO] [stdout]     |
[INFO] [stdout] 206 |         fn poll_write(mut self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8]) -> Poll<Result<usize, Error>> {
[INFO] [stdout]     |                       ----^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `is_send`
[INFO] [stdout]   --> src/faces.rs:58:8
[INFO] [stdout]    |
[INFO] [stdout] 58 |     fn is_send<T: Send>(obj: T) -> T {obj}
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `use_cache`
[INFO] [stdout]   --> src/faces.rs:60:8
[INFO] [stdout]    |
[INFO] [stdout] 60 |     fn use_cache<T: Write + Unpin>(mut w: T) {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `new`
[INFO] [stdout]   --> src/implements.rs:31:8
[INFO] [stdout]    |
[INFO] [stdout] 31 |     fn new(cache: T, peers: Vec<Peer>, info_hash: InfoHash, config: TorrentConfig) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `add_peer`
[INFO] [stdout]   --> src/implements.rs:50:18
[INFO] [stdout]    |
[INFO] [stdout] 50 |     pub async fn add_peer<S>(&self, stream: S) -> Result<(), PeerError>
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `download`
[INFO] [stdout]   --> src/implements.rs:62:18
[INFO] [stdout]    |
[INFO] [stdout] 62 |     pub async fn download(&self, block: u32, offset: u32, length: u32) -> bool {
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `stop`
[INFO] [stdout]   --> src/implements.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 70 |     pub fn stop(&self) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant is never constructed: `Simple`
[INFO] [stdout]   --> src/peer.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     Simple(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant is never constructed: `PeerIsBusy`
[INFO] [stdout]   --> src/peer.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     PeerIsBusy,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant is never constructed: `BlockNotFound`
[INFO] [stdout]   --> src/peer.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     BlockNotFound,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant is never constructed: `Chocked`
[INFO] [stdout]   --> src/peer.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 42 |     Chocked,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant is never constructed: `Unchocked`
[INFO] [stdout]   --> src/peer.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 43 |     Unchocked,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `new`
[INFO] [stdout]   --> src/peer.rs:75:18
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub async fn new<S, C>(stream: S, cache: C, handshake: Handshake) -> Result<Self, PeerError>
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `get_id`
[INFO] [stdout]   --> src/peer.rs:94:12
[INFO] [stdout]    |
[INFO] [stdout] 94 |     pub fn get_id(&self) -> PeerId {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `request`
[INFO] [stdout]   --> src/peer.rs:97:18
[INFO] [stdout]    |
[INFO] [stdout] 97 |     pub async fn request(&self, block: u32, offset: u32, length: u32) -> Result<(), PeerError> {
[INFO] [stdout]    |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `choke`
[INFO] [stdout]    --> src/peer.rs:118:18
[INFO] [stdout]     |
[INFO] [stdout] 118 |     pub async fn choke(&self) {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `unchoke`
[INFO] [stdout]    --> src/peer.rs:122:18
[INFO] [stdout]     |
[INFO] [stdout] 122 |     pub async fn unchoke(&self) {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `stats`
[INFO] [stdout]    --> src/peer.rs:126:12
[INFO] [stdout]     |
[INFO] [stdout] 126 |     pub fn stats(&self) -> (u64, u64) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `daemon`
[INFO] [stdout]    --> src/peer.rs:130:14
[INFO] [stdout]     |
[INFO] [stdout] 130 |     async fn daemon<S, C>(mut self, mut stream: S, cache: C) -> Result<(), PeerError>
[INFO] [stdout]     |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `sender`
[INFO] [stdout]    --> src/peer.rs:199:14
[INFO] [stdout]     |
[INFO] [stdout] 199 |     async fn sender<W: Write + Unpin>(mut sink: MessageSink<W>, receiver: Receiver<PeerMessage>) -> Result<(), PeerError> {
[INFO] [stdout]     |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `new`
[INFO] [stdout]   --> src/io.rs:79:12
[INFO] [stdout]    |
[INFO] [stdout] 79 |     pub fn new(writer: W) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct is never constructed: `Impl`
[INFO] [stdout]   --> src/lib.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 |     struct Impl;
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `impl_foo`
[INFO] [stdout]   --> src/lib.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 34 |         fn impl_foo<T: Fail>(obj: T) -> impl Foo {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]   --> src/implements.rs:44:21
[INFO] [stdout]    |
[INFO] [stdout] 44 |                     connection.add_peer(stream).await; //TODO must use
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 58 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished dev [unoptimized + debuginfo] target(s) in 1m 22s
[INFO] running `Command { std: "docker" "inspect" "c07e12953a6557510013ccff3c3829b6b8941d110c4a44ca29a3741fb5d217d2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c07e12953a6557510013ccff3c3829b6b8941d110c4a44ca29a3741fb5d217d2", kill_on_drop: false }`
[INFO] [stdout] c07e12953a6557510013ccff3c3829b6b8941d110c4a44ca29a3741fb5d217d2