[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] testing bool-rus/torrent-rs against 1.47.0 for beta-1.48-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbool-rus%2Ftorrent-rs" "/workspace/builds/worker-12/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-12/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/bool-rus/torrent-rs on toolchain 1.47.0
[INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+1.47.0" "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-12/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" "+1.47.0" "fetch" "--locked" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-12/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-12/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:d92eaeed33fa75130ca1ee6c8a01d1ffb62bac859dfdfb3450e3e5d1c0146529" "/opt/rustwide/cargo-home/bin/cargo" "+1.47.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] [stdout] 341548213da85c9c305ed83c42d068d1de3f8a25515a4b7f20e7005e5658e3ad
[INFO] running `Command { std: "docker" "start" "-a" "341548213da85c9c305ed83c42d068d1de3f8a25515a4b7f20e7005e5658e3ad", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "341548213da85c9c305ed83c42d068d1de3f8a25515a4b7f20e7005e5658e3ad", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "341548213da85c9c305ed83c42d068d1de3f8a25515a4b7f20e7005e5658e3ad", kill_on_drop: false }`
[INFO] [stdout] 341548213da85c9c305ed83c42d068d1de3f8a25515a4b7f20e7005e5658e3ad
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-12/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-12/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=warn" "-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:d92eaeed33fa75130ca1ee6c8a01d1ffb62bac859dfdfb3450e3e5d1c0146529" "/opt/rustwide/cargo-home/bin/cargo" "+1.47.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] [stdout] b37a59ca5655ea4444dc6f80c3ec7fedf38e9d2b87040b308d47fb4f08da892d
[INFO] running `Command { std: "docker" "start" "-a" "b37a59ca5655ea4444dc6f80c3ec7fedf38e9d2b87040b308d47fb4f08da892d", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v1.0.8
[INFO] [stderr]    Compiling futures-sink-preview v0.3.0-alpha.19
[INFO] [stderr]    Compiling futures-io v0.3.1
[INFO] [stderr]    Compiling futures-sink v0.3.1
[INFO] [stderr]    Compiling nom v5.0.1
[INFO] [stderr]    Compiling async-macros v2.0.0
[INFO] [stderr]    Compiling async-task v1.0.0
[INFO] [stderr]    Compiling log v0.4.8
[INFO] [stderr]    Compiling lexical-core v0.4.6
[INFO] [stderr]    Compiling crossbeam-utils v0.7.0
[INFO] [stderr]    Compiling net2 v0.2.33
[INFO] [stderr]    Compiling num-complex v0.1.43
[INFO] [stderr]    Compiling parking_lot_core v0.6.2
[INFO] [stderr]    Compiling num-bigint v0.1.44
[INFO] [stderr]    Compiling backtrace v0.3.40
[INFO] [stderr]    Compiling rust-crypto v0.2.36
[INFO] [stderr]    Compiling futures-util-preview v0.3.0-alpha.19
[INFO] [stderr]    Compiling futures-channel-preview v0.3.0-alpha.19
[INFO] [stderr]    Compiling mio v0.6.20
[INFO] [stderr]    Compiling kv-log-macro v1.0.4
[INFO] [stderr]    Compiling error-chain v0.11.0
[INFO] [stderr]    Compiling parking_lot v0.9.0
[INFO] [stderr]    Compiling crossbeam-epoch v0.8.0
[INFO] [stderr]    Compiling crossbeam-channel v0.4.0
[INFO] [stderr]    Compiling bip_bencode v0.4.4
[INFO] [stderr]    Compiling crossbeam-deque v0.7.2
[INFO] [stderr]    Compiling num-rational v0.1.42
[INFO] [stderr]    Compiling mio-uds v0.6.7
[INFO] [stderr]    Compiling num v0.1.42
[INFO] [stderr]    Compiling chrono v0.2.25
[INFO] [stderr]    Compiling broadcaster v0.2.6
[INFO] [stderr]    Compiling async-std v1.1.0
[INFO] [stderr]    Compiling bip_util v0.5.0
[INFO] [stderr]    Compiling bip_metainfo v0.12.0
[INFO] [stderr]    Compiling synstructure v0.12.3
[INFO] [stderr]    Compiling proc-macro-hack v0.5.11
[INFO] [stderr]    Compiling failure_derive v0.1.6
[INFO] [stderr]    Compiling async-trait v0.1.19
[INFO] [stderr]    Compiling failure v0.1.6
[INFO] [stderr]    Compiling futures-macro v0.3.1
[INFO] [stderr]    Compiling futures-util v0.3.1
[INFO] [stderr]    Compiling 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: 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/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: 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] [stderr]     Finished dev [unoptimized + debuginfo] target(s) in 1m 04s
[INFO] running `Command { std: "docker" "inspect" "b37a59ca5655ea4444dc6f80c3ec7fedf38e9d2b87040b308d47fb4f08da892d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b37a59ca5655ea4444dc6f80c3ec7fedf38e9d2b87040b308d47fb4f08da892d", kill_on_drop: false }`
[INFO] [stdout] b37a59ca5655ea4444dc6f80c3ec7fedf38e9d2b87040b308d47fb4f08da892d
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-12/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-12/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=warn" "-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:d92eaeed33fa75130ca1ee6c8a01d1ffb62bac859dfdfb3450e3e5d1c0146529" "/opt/rustwide/cargo-home/bin/cargo" "+1.47.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] aa81bf253f9509249e1a5454ba1b592c7c9d4d1c892e1523df7794f2e133a8f8
[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" "aa81bf253f9509249e1a5454ba1b592c7c9d4d1c892e1523df7794f2e133a8f8", kill_on_drop: false }`
[INFO] [stderr]    Compiling 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: 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/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: 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: 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: `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 test [unoptimized + debuginfo] target(s) in 6.53s
[INFO] running `Command { std: "docker" "inspect" "aa81bf253f9509249e1a5454ba1b592c7c9d4d1c892e1523df7794f2e133a8f8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "aa81bf253f9509249e1a5454ba1b592c7c9d4d1c892e1523df7794f2e133a8f8", kill_on_drop: false }`
[INFO] [stdout] aa81bf253f9509249e1a5454ba1b592c7c9d4d1c892e1523df7794f2e133a8f8
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-12/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-12/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=warn" "-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:d92eaeed33fa75130ca1ee6c8a01d1ffb62bac859dfdfb3450e3e5d1c0146529" "/opt/rustwide/cargo-home/bin/cargo" "+1.47.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 15f49098a48c400f8bdb2b233bf55829b4cbd6a4b68dd18ab28844063772c487
[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" "15f49098a48c400f8bdb2b233bf55829b4cbd6a4b68dd18ab28844063772c487", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `async_std::net::ToSocketAddrs`
[INFO] [stderr]  --> src/faces.rs:6:5
[INFO] [stderr]   |
[INFO] [stderr] 6 | use async_std::net::ToSocketAddrs;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `super::*`
[INFO] [stderr]   --> src/faces.rs:53:9
[INFO] [stderr]    |
[INFO] [stderr] 53 |     use super::*;
[INFO] [stderr]    |         ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::sync::Arc`
[INFO] [stderr]   --> src/faces.rs:54:9
[INFO] [stderr]    |
[INFO] [stderr] 54 |     use std::sync::Arc;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `block_on`, `spawn`
[INFO] [stderr]   --> src/faces.rs:55:27
[INFO] [stderr]    |
[INFO] [stderr] 55 |     use async_std::task::{block_on, spawn};
[INFO] [stderr]    |                           ^^^^^^^^  ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `AbortHandle`, `AbortRegistration`, `Abortable`
[INFO] [stderr]  --> src/implements.rs:3:28
[INFO] [stderr]   |
[INFO] [stderr] 3 | use futures_util::future::{AbortHandle, Abortable, AbortRegistration};
[INFO] [stderr]   |                            ^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `TcpListener`
[INFO] [stderr]  --> src/implements.rs:5:24
[INFO] [stderr]   |
[INFO] [stderr] 5 | use std::net::{IpAddr, TcpListener};
[INFO] [stderr]   |                        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `ToSocketAddrs`
[INFO] [stderr]  --> src/implements.rs:8:33
[INFO] [stderr]   |
[INFO] [stderr] 8 | use async_std::net::{TcpStream, ToSocketAddrs};
[INFO] [stderr]   |                                 ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::message::Handshake`
[INFO] [stderr]   --> src/implements.rs:11:5
[INFO] [stderr]    |
[INFO] [stderr] 11 | use crate::message::Handshake;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `TcpListener`, `TcpStream`
[INFO] [stderr]    --> src/peer.rs:211:26
[INFO] [stderr]     |
[INFO] [stderr] 211 |     use async_std::net::{TcpListener, TcpStream};
[INFO] [stderr]     |                          ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `AsyncWriteExt`
[INFO] [stderr]    --> src/peer.rs:212:24
[INFO] [stderr]     |
[INFO] [stderr] 212 |     use futures_util::{AsyncWriteExt, AsyncReadExt};
[INFO] [stderr]     |                        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `BytesMut`
[INFO] [stderr]  --> src/io.rs:5:20
[INFO] [stderr]   |
[INFO] [stderr] 5 | use bytes::{Bytes, BytesMut};
[INFO] [stderr]   |                    ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `async_std::io::prelude::*`
[INFO] [stderr]    --> src/io.rs:185:9
[INFO] [stderr]     |
[INFO] [stderr] 185 |     use async_std::io::prelude::*;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Error`
[INFO] [stderr]   --> src/lib.rs:30:19
[INFO] [stderr]    |
[INFO] [stderr] 30 |     use failure::{Error, Fail};
[INFO] [stderr]    |                   ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/peer.rs:130:27
[INFO] [stderr]     |
[INFO] [stderr] 130 |     async fn daemon<S, C>(mut self, mut stream: S, cache: C) -> Result<(), PeerError>
[INFO] [stderr]     |                           ----^^^^
[INFO] [stderr]     |                           |
[INFO] [stderr]     |                           help: remove this `mut`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/peer.rs:157:25
[INFO] [stderr]     |
[INFO] [stderr] 157 |                     let mut response;
[INFO] [stderr]     |                         ----^^^^^^^^
[INFO] [stderr]     |                         |
[INFO] [stderr]     |                         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/peer.rs:80:14
[INFO] [stderr]    |
[INFO] [stderr] 80 |         let (mut sender, receiver) = async_std::sync::channel(10);
[INFO] [stderr]    |              ----^^^^^^
[INFO] [stderr]    |              |
[INFO] [stderr]    |              help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/peer.rs:63:13
[INFO] [stderr]    |
[INFO] [stderr] 63 |         let mut bytes: Bytes = handshake.clone().into();
[INFO] [stderr]    |             ----^^^^^
[INFO] [stderr]    |             |
[INFO] [stderr]    |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable call
[INFO] [stderr]    --> src/io.rs:100:35
[INFO] [stderr]     |
[INFO] [stderr] 100 |             State::Busy(_, _) => {Err(unimplemented!())},
[INFO] [stderr]     |                                   ^^^ ---------------- any code following this expression is unreachable
[INFO] [stderr]     |                                   |
[INFO] [stderr]     |                                   unreachable call
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unreachable_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `futures_util::AsyncReadExt`
[INFO] [stderr]   --> src/implements.rs:10:5
[INFO] [stderr]    |
[INFO] [stderr] 10 | use futures_util::AsyncReadExt;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `AsyncRead`
[INFO] [stderr]   --> src/io.rs:10:24
[INFO] [stderr]    |
[INFO] [stderr] 10 | use futures_util::io::{AsyncRead, Error};
[INFO] [stderr]    |                        ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `i`
[INFO] [stderr]   --> src/message.rs:47:13
[INFO] [stderr]    |
[INFO] [stderr] 47 |         for i in 1..capacity { //все, кроме последнего
[INFO] [stderr]    |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `f`
[INFO] [stderr]   --> src/faces.rs:61:13
[INFO] [stderr]    |
[INFO] [stderr] 61 |         let f = async move {
[INFO] [stderr]    |             ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `handles`
[INFO] [stderr]   --> src/implements.rs:52:13
[INFO] [stderr]    |
[INFO] [stderr] 52 |         let handles = self.handles.write().await;
[INFO] [stderr]    |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_handles`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `buf`
[INFO] [stderr]    --> src/parser.rs:100:14
[INFO] [stderr]     |
[INFO] [stderr] 100 |         let (buf, handshake) = parse_res.unwrap();
[INFO] [stderr]     |              ^^^ help: if this is intentional, prefix it with an underscore: `_buf`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `handshake`
[INFO] [stderr]    --> src/parser.rs:100:19
[INFO] [stderr]     |
[INFO] [stderr] 100 |         let (buf, handshake) = parse_res.unwrap();
[INFO] [stderr]     |                   ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_handshake`
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `async_std::net::ToSocketAddrs`
[INFO] [stderr]  --> src/faces.rs:6:5
[INFO] [stderr]   |
[INFO] [stderr] 6 | use async_std::net::ToSocketAddrs;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `AbortHandle`, `AbortRegistration`, `Abortable`
[INFO] [stderr]  --> src/implements.rs:3:28
[INFO] [stderr]   |
[INFO] [stderr] 3 | use futures_util::future::{AbortHandle, Abortable, AbortRegistration};
[INFO] [stderr]   |                            ^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `TcpListener`
[INFO] [stderr]  --> src/implements.rs:5:24
[INFO] [stderr]   |
[INFO] [stderr] 5 | use std::net::{IpAddr, TcpListener};
[INFO] [stderr]   |                        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `ToSocketAddrs`
[INFO] [stderr]  --> src/implements.rs:8:33
[INFO] [stderr]   |
[INFO] [stderr] 8 | use async_std::net::{TcpStream, ToSocketAddrs};
[INFO] [stderr]   |                                 ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::message::Handshake`
[INFO] [stderr]   --> src/implements.rs:11:5
[INFO] [stderr]    |
[INFO] [stderr] 11 | use crate::message::Handshake;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `super::*`
[INFO] [stderr]   --> src/parser.rs:86:9
[INFO] [stderr]    |
[INFO] [stderr] 86 |     use super::*;
[INFO] [stderr]    |         ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `bytes::Bytes`
[INFO] [stderr]   --> src/parser.rs:87:9
[INFO] [stderr]    |
[INFO] [stderr] 87 |     use bytes::Bytes;
[INFO] [stderr]    |         ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `BytesMut`
[INFO] [stderr]  --> src/io.rs:5:20
[INFO] [stderr]   |
[INFO] [stderr] 5 | use bytes::{Bytes, BytesMut};
[INFO] [stderr]   |                    ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Error`
[INFO] [stderr]   --> src/io.rs:10:35
[INFO] [stderr]    |
[INFO] [stderr] 10 | use futures_util::io::{AsyncRead, Error};
[INFO] [stderr]    |                                   ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/peer.rs:130:27
[INFO] [stderr]     |
[INFO] [stderr] 130 |     async fn daemon<S, C>(mut self, mut stream: S, cache: C) -> Result<(), PeerError>
[INFO] [stderr]     |                           ----^^^^
[INFO] [stderr]     |                           |
[INFO] [stderr]     |                           help: remove this `mut`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/peer.rs:157:25
[INFO] [stderr]     |
[INFO] [stderr] 157 |                     let mut response;
[INFO] [stderr]     |                         ----^^^^^^^^
[INFO] [stderr]     |                         |
[INFO] [stderr]     |                         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/peer.rs:80:14
[INFO] [stderr]    |
[INFO] [stderr] 80 |         let (mut sender, receiver) = async_std::sync::channel(10);
[INFO] [stderr]    |              ----^^^^^^
[INFO] [stderr]    |              |
[INFO] [stderr]    |              help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/peer.rs:63:13
[INFO] [stderr]    |
[INFO] [stderr] 63 |         let mut bytes: Bytes = handshake.clone().into();
[INFO] [stderr]    |             ----^^^^^
[INFO] [stderr]    |             |
[INFO] [stderr]    |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable call
[INFO] [stderr]    --> src/io.rs:100:35
[INFO] [stderr]     |
[INFO] [stderr] 100 |             State::Busy(_, _) => {Err(unimplemented!())},
[INFO] [stderr]     |                                   ^^^ ---------------- any code following this expression is unreachable
[INFO] [stderr]     |                                   |
[INFO] [stderr]     |                                   unreachable call
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unreachable_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `futures_util::AsyncReadExt`
[INFO] [stderr]   --> src/implements.rs:10:5
[INFO] [stderr]    |
[INFO] [stderr] 10 | use futures_util::AsyncReadExt;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `AsyncRead`
[INFO] [stderr]   --> src/io.rs:10:24
[INFO] [stderr]    |
[INFO] [stderr] 10 | use futures_util::io::{AsyncRead, Error};
[INFO] [stderr]    |                        ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `port`
[INFO] [stderr]    --> src/peer.rs:190:22
[INFO] [stderr]     |
[INFO] [stderr] 190 |                 Port(port) => { unimplemented!() }
[INFO] [stderr]     |                      ^^^^ help: if this is intentional, prefix it with an underscore: `_port`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `i`
[INFO] [stderr]   --> src/message.rs:47:13
[INFO] [stderr]    |
[INFO] [stderr] 47 |         for i in 1..capacity { //все, кроме последнего
[INFO] [stderr]    |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `handles`
[INFO] [stderr]   --> src/implements.rs:52:13
[INFO] [stderr]    |
[INFO] [stderr] 52 |         let handles = self.handles.write().await;
[INFO] [stderr]    |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_handles`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `port`
[INFO] [stderr]    --> src/peer.rs:190:22
[INFO] [stderr]     |
[INFO] [stderr] 190 |                 Port(port) => { unimplemented!() }
[INFO] [stderr]     |                      ^^^^ help: if this is intentional, prefix it with an underscore: `_port`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `e`
[INFO] [stderr]   --> src/io.rs:50:37
[INFO] [stderr]    |
[INFO] [stderr] 50 |                     Poll::Ready(Err(e)) => Poll::Ready(None),
[INFO] [stderr]    |                                     ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `e`
[INFO] [stderr]   --> src/io.rs:50:37
[INFO] [stderr]    |
[INFO] [stderr] 50 |                     Poll::Ready(Err(e)) => Poll::Ready(None),
[INFO] [stderr]    |                                     ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `e`
[INFO] [stderr]   --> src/io.rs:66:37
[INFO] [stderr]    |
[INFO] [stderr] 66 |                     Poll::Ready(Err(e)) => Poll::Ready(None)
[INFO] [stderr]    |                                     ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `e`
[INFO] [stderr]   --> src/io.rs:66:37
[INFO] [stderr]    |
[INFO] [stderr] 66 |                     Poll::Ready(Err(e)) => Poll::Ready(None)
[INFO] [stderr]    |                                     ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `cx`
[INFO] [stderr]   --> src/io.rs:87:41
[INFO] [stderr]    |
[INFO] [stderr] 87 |     fn poll_ready(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
[INFO] [stderr]    |                                         ^^ help: if this is intentional, prefix it with an underscore: `_cx`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/io.rs:31:18
[INFO] [stderr]    |
[INFO] [stderr] 31 |     fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<Self::Item>> {
[INFO] [stderr]    |                  ----^^^^
[INFO] [stderr]    |                  |
[INFO] [stderr]    |                  help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `cx`
[INFO] [stderr]   --> src/io.rs:87:41
[INFO] [stderr]    |
[INFO] [stderr] 87 |     fn poll_ready(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
[INFO] [stderr]    |                                         ^^ help: if this is intentional, prefix it with an underscore: `_cx`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/io.rs:104:19
[INFO] [stderr]     |
[INFO] [stderr] 104 |     fn poll_flush(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
[INFO] [stderr]     |                   ----^^^^
[INFO] [stderr]     |                   |
[INFO] [stderr]     |                   help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `new`
[INFO] [stderr]   --> src/implements.rs:31:8
[INFO] [stderr]    |
[INFO] [stderr] 31 |     fn new(cache: T, peers: Vec<Peer>, info_hash: InfoHash, config: TorrentConfig) -> Self {
[INFO] [stderr]    |        ^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `cx`
[INFO] [stderr]    --> src/io.rs:216:45
[INFO] [stderr]     |
[INFO] [stderr] 216 |         fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<(), Error>> {
[INFO] [stderr]     |                                             ^^ help: if this is intentional, prefix it with an underscore: `_cx`
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `add_peer`
[INFO] [stderr]   --> src/implements.rs:50:18
[INFO] [stderr]    |
[INFO] [stderr] 50 |     pub async fn add_peer<S>(&self, stream: S) -> Result<(), PeerError>
[INFO] [stderr]    |                  ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `download`
[INFO] [stderr]   --> src/implements.rs:62:18
[INFO] [stderr]    |
[INFO] [stderr] 62 |     pub async fn download(&self, block: u32, offset: u32, length: u32) -> bool {
[INFO] [stderr]    |                  ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `stop`
[INFO] [stderr]   --> src/implements.rs:70:12
[INFO] [stderr]    |
[INFO] [stderr] 70 |     pub fn stop(&self) {
[INFO] [stderr]    |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `cx`
[INFO] [stderr]    --> src/io.rs:220:45
[INFO] [stderr]     |
[INFO] [stderr] 220 |         fn poll_close(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<(), Error>> {
[INFO] [stderr]     |                                             ^^ help: if this is intentional, prefix it with an underscore: `_cx`
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `parse_hash_string`
[INFO] [stderr]   --> src/parser.rs:12:4
[INFO] [stderr]    |
[INFO] [stderr] 12 | fn parse_hash_string(i: &[u8]) -> IResult<&[u8], HashString> {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `parse_torrent_extentions`
[INFO] [stderr]   --> src/parser.rs:19:4
[INFO] [stderr]    |
[INFO] [stderr] 19 | fn parse_torrent_extentions(i: &[u8]) -> IResult<&[u8], TorrentExtentions> {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `parse_handshake`
[INFO] [stderr]   --> src/parser.rs:26:15
[INFO] [stderr]    |
[INFO] [stderr] 26 | pub(crate) fn parse_handshake(i: &[u8], size: u8) -> IResult<&[u8], Handshake> {
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant is never constructed: `Simple`
[INFO] [stderr]   --> src/peer.rs:18:5
[INFO] [stderr]    |
[INFO] [stderr] 18 |     Simple(String),
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/io.rs:31:18
[INFO] [stderr]    |
[INFO] [stderr] 31 |     fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<Self::Item>> {
[INFO] [stderr]    |                  ----^^^^
[INFO] [stderr]    |                  |
[INFO] [stderr]    |                  help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variant is never constructed: `Handshake`
[INFO] [stderr]   --> src/peer.rs:20:5
[INFO] [stderr]    |
[INFO] [stderr] 20 |     Handshake,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant is never constructed: `PeerIsBusy`
[INFO] [stderr]   --> src/peer.rs:22:5
[INFO] [stderr]    |
[INFO] [stderr] 22 |     PeerIsBusy,
[INFO] [stderr]    |     ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant is never constructed: `BlockNotFound`
[INFO] [stderr]   --> src/peer.rs:26:5
[INFO] [stderr]    |
[INFO] [stderr] 26 |     BlockNotFound,
[INFO] [stderr]    |     ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/io.rs:104:19
[INFO] [stderr]     |
[INFO] [stderr] 104 |     fn poll_flush(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
[INFO] [stderr]     |                   ----^^^^
[INFO] [stderr]     |                   |
[INFO] [stderr]     |                   help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/io.rs:189:22
[INFO] [stderr]     |
[INFO] [stderr] 189 |         fn poll_read(mut self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &mut [u8]) -> Poll<Result<usize, Error>> {
[INFO] [stderr]     |                      ----^^^^
[INFO] [stderr]     |                      |
[INFO] [stderr]     |                      help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/io.rs:206:23
[INFO] [stderr]     |
[INFO] [stderr] 206 |         fn poll_write(mut self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8]) -> Poll<Result<usize, Error>> {
[INFO] [stderr]     |                       ----^^^^
[INFO] [stderr]     |                       |
[INFO] [stderr]     |                       help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `is_send`
[INFO] [stderr]   --> src/faces.rs:58:8
[INFO] [stderr]    |
[INFO] [stderr] 58 |     fn is_send<T: Send>(obj: T) -> T {obj}
[INFO] [stderr]    |        ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `use_cache`
[INFO] [stderr]   --> src/faces.rs:60:8
[INFO] [stderr]    |
[INFO] [stderr] 60 |     fn use_cache<T: Write + Unpin>(mut w: T) {
[INFO] [stderr]    |        ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `new`
[INFO] [stderr]   --> src/implements.rs:31:8
[INFO] [stderr]    |
[INFO] [stderr] 31 |     fn new(cache: T, peers: Vec<Peer>, info_hash: InfoHash, config: TorrentConfig) -> Self {
[INFO] [stderr]    |        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `add_peer`
[INFO] [stderr]   --> src/implements.rs:50:18
[INFO] [stderr]    |
[INFO] [stderr] 50 |     pub async fn add_peer<S>(&self, stream: S) -> Result<(), PeerError>
[INFO] [stderr]    |                  ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `download`
[INFO] [stderr]   --> src/implements.rs:62:18
[INFO] [stderr]    |
[INFO] [stderr] 62 |     pub async fn download(&self, block: u32, offset: u32, length: u32) -> bool {
[INFO] [stderr]    |                  ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `stop`
[INFO] [stderr]   --> src/implements.rs:70:12
[INFO] [stderr]    |
[INFO] [stderr] 70 |     pub fn stop(&self) {
[INFO] [stderr]    |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant is never constructed: `Simple`
[INFO] [stderr]   --> src/peer.rs:18:5
[INFO] [stderr]    |
[INFO] [stderr] 18 |     Simple(String),
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant is never constructed: `PeerIsBusy`
[INFO] [stderr]   --> src/peer.rs:22:5
[INFO] [stderr]    |
[INFO] [stderr] 22 |     PeerIsBusy,
[INFO] [stderr]    |     ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant is never constructed: `BlockNotFound`
[INFO] [stderr]   --> src/peer.rs:26:5
[INFO] [stderr]    |
[INFO] [stderr] 26 |     BlockNotFound,
[INFO] [stderr]    |     ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant is never constructed: `Chocked`
[INFO] [stderr]   --> src/peer.rs:42:5
[INFO] [stderr]    |
[INFO] [stderr] 42 |     Chocked,
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant is never constructed: `Unchocked`
[INFO] [stderr]   --> src/peer.rs:43:5
[INFO] [stderr]    |
[INFO] [stderr] 43 |     Unchocked,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `new`
[INFO] [stderr]   --> src/peer.rs:75:18
[INFO] [stderr]    |
[INFO] [stderr] 75 |     pub async fn new<S, C>(stream: S, cache: C, handshake: Handshake) -> Result<Self, PeerError>
[INFO] [stderr]    |                  ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `get_id`
[INFO] [stderr]   --> src/peer.rs:94:12
[INFO] [stderr]    |
[INFO] [stderr] 94 |     pub fn get_id(&self) -> PeerId {
[INFO] [stderr]    |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `request`
[INFO] [stderr]   --> src/peer.rs:97:18
[INFO] [stderr]    |
[INFO] [stderr] 97 |     pub async fn request(&self, block: u32, offset: u32, length: u32) -> Result<(), PeerError> {
[INFO] [stderr]    |                  ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `choke`
[INFO] [stderr]    --> src/peer.rs:118:18
[INFO] [stderr]     |
[INFO] [stderr] 118 |     pub async fn choke(&self) {
[INFO] [stderr]     |                  ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `unchoke`
[INFO] [stderr]    --> src/peer.rs:122:18
[INFO] [stderr]     |
[INFO] [stderr] 122 |     pub async fn unchoke(&self) {
[INFO] [stderr]     |                  ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `stats`
[INFO] [stderr]    --> src/peer.rs:126:12
[INFO] [stderr]     |
[INFO] [stderr] 126 |     pub fn stats(&self) -> (u64, u64) {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `daemon`
[INFO] [stderr]    --> src/peer.rs:130:14
[INFO] [stderr]     |
[INFO] [stderr] 130 |     async fn daemon<S, C>(mut self, mut stream: S, cache: C) -> Result<(), PeerError>
[INFO] [stderr]     |              ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `sender`
[INFO] [stderr]    --> src/peer.rs:199:14
[INFO] [stderr]     |
[INFO] [stderr] 199 |     async fn sender<W: Write + Unpin>(mut sink: MessageSink<W>, receiver: Receiver<PeerMessage>) -> Result<(), PeerError> {
[INFO] [stderr]     |              ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `new`
[INFO] [stderr]   --> src/io.rs:79:12
[INFO] [stderr]    |
[INFO] [stderr] 79 |     pub fn new(writer: W) -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct is never constructed: `Impl`
[INFO] [stderr]   --> src/lib.rs:32:12
[INFO] [stderr]    |
[INFO] [stderr] 32 |     struct Impl;
[INFO] [stderr]    |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `impl_foo`
[INFO] [stderr]   --> src/lib.rs:34:12
[INFO] [stderr]    |
[INFO] [stderr] 34 |         fn impl_foo<T: Fail>(obj: T) -> impl Foo {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused `std::result::Result` that must be used
[INFO] [stderr]   --> src/implements.rs:44:21
[INFO] [stderr]    |
[INFO] [stderr] 44 |                     connection.add_peer(stream).await; //TODO must use
[INFO] [stderr]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_must_use)]` on by default
[INFO] [stderr]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] 
[INFO] [stderr] warning: 58 warnings emitted
[INFO] [stderr] 
[INFO] [stderr] warning: variant is never constructed: `Chocked`
[INFO] [stderr]   --> src/peer.rs:42:5
[INFO] [stderr]    |
[INFO] [stderr] 42 |     Chocked,
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant is never constructed: `Unchocked`
[INFO] [stderr]   --> src/peer.rs:43:5
[INFO] [stderr]    |
[INFO] [stderr] 43 |     Unchocked,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `do_handshake`
[INFO] [stderr]   --> src/peer.rs:60:14
[INFO] [stderr]    |
[INFO] [stderr] 60 |     async fn do_handshake<R, W>(reader: &mut R, writer: &mut W, handshake: Handshake) -> Result<Handshake, PeerError>
[INFO] [stderr]    |              ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `new`
[INFO] [stderr]   --> src/peer.rs:75:18
[INFO] [stderr]    |
[INFO] [stderr] 75 |     pub async fn new<S, C>(stream: S, cache: C, handshake: Handshake) -> Result<Self, PeerError>
[INFO] [stderr]    |                  ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `get_id`
[INFO] [stderr]   --> src/peer.rs:94:12
[INFO] [stderr]    |
[INFO] [stderr] 94 |     pub fn get_id(&self) -> PeerId {
[INFO] [stderr]    |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `request`
[INFO] [stderr]   --> src/peer.rs:97:18
[INFO] [stderr]    |
[INFO] [stderr] 97 |     pub async fn request(&self, block: u32, offset: u32, length: u32) -> Result<(), PeerError> {
[INFO] [stderr]    |                  ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `choke`
[INFO] [stderr]    --> src/peer.rs:118:18
[INFO] [stderr]     |
[INFO] [stderr] 118 |     pub async fn choke(&self) {
[INFO] [stderr]     |                  ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `unchoke`
[INFO] [stderr]    --> src/peer.rs:122:18
[INFO] [stderr]     |
[INFO] [stderr] 122 |     pub async fn unchoke(&self) {
[INFO] [stderr]     |                  ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `stats`
[INFO] [stderr]    --> src/peer.rs:126:12
[INFO] [stderr]     |
[INFO] [stderr] 126 |     pub fn stats(&self) -> (u64, u64) {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `daemon`
[INFO] [stderr]    --> src/peer.rs:130:14
[INFO] [stderr]     |
[INFO] [stderr] 130 |     async fn daemon<S, C>(mut self, mut stream: S, cache: C) -> Result<(), PeerError>
[INFO] [stderr]     |              ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `sender`
[INFO] [stderr]    --> src/peer.rs:199:14
[INFO] [stderr]     |
[INFO] [stderr] 199 |     async fn sender<W: Write + Unpin>(mut sink: MessageSink<W>, receiver: Receiver<PeerMessage>) -> Result<(), PeerError> {
[INFO] [stderr]     |              ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `new`
[INFO] [stderr]   --> src/io.rs:79:12
[INFO] [stderr]    |
[INFO] [stderr] 79 |     pub fn new(writer: W) -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `read_handshake`
[INFO] [stderr]    --> src/io.rs:141:21
[INFO] [stderr]     |
[INFO] [stderr] 141 | pub(crate) async fn read_handshake<T: ReadExt + Unpin>(read: &mut T) -> Result<Handshake, std::io::Error> {
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `new`
[INFO] [stderr]    --> src/io.rs:160:12
[INFO] [stderr]     |
[INFO] [stderr] 160 |     pub fn new() -> (MessageChannel<A,Q>, MessageChannel<Q,A>) {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `with_capacity`
[INFO] [stderr]    --> src/io.rs:163:12
[INFO] [stderr]     |
[INFO] [stderr] 163 |     pub fn with_capacity(cap: usize) -> (MessageChannel<A,Q>, MessageChannel<Q,A>) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `recv`
[INFO] [stderr]    --> src/io.rs:169:18
[INFO] [stderr]     |
[INFO] [stderr] 169 |     pub async fn recv(&self) -> Option<A> {
[INFO] [stderr]     |                  ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `send`
[INFO] [stderr]    --> src/io.rs:172:18
[INFO] [stderr]     |
[INFO] [stderr] 172 |     pub async fn send(&self, msg: Q) {
[INFO] [stderr]     |                  ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused `std::result::Result` that must be used
[INFO] [stderr]   --> src/implements.rs:44:21
[INFO] [stderr]    |
[INFO] [stderr] 44 |                     connection.add_peer(stream).await; //TODO must use
[INFO] [stderr]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_must_use)]` on by default
[INFO] [stderr]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] 
[INFO] [stderr] warning: 53 warnings emitted
[INFO] [stderr] 
[INFO] [stderr]     Finished test [unoptimized + debuginfo] target(s) in 0.40s
[INFO] [stderr]      Running /opt/rustwide/target/debug/deps/torrent_rs-46571453d8a85acb
[INFO] [stdout] 
[INFO] [stdout] running 18 tests
[INFO] [stdout] test parser::test::test_parse_bitfield ... ok
[INFO] [stdout] test parser::test::test_parse_have ... ok
[INFO] [stdout] test parser::test::test_parse_handshake ... ok
[INFO] [stdout] test parser::test::test_parse_keep_alive ... ok
[INFO] [stdout] test message::tests::test_bitfield ... ok
[INFO] [stdout] test parser::test::test_parse_piece ... ok
[INFO] [stdout] test parser::test::test_parse_port ... ok
[INFO] [stdout] test tests::it_works ... ok
[INFO] [stdout] test parser::test::test_parse_cancel ... ok
[INFO] [stdout] test parser::test::test_parse_interested ... ok
[INFO] [stdout] test io::test::test_message_channel ... ok
[INFO] [stdout] test message::tests::test_bit_ops ... ok
[INFO] [stdout] test message::tests::test_simple_messages ... ok
[INFO] [stdout] test io::test::test_stream ... ok
[INFO] [stdout] test parser::test::test_parse_request ... ok
[INFO] [stdout] test message::tests::test_empty_messages ... ok
[INFO] [stdout] test peer::test::test_connect_handshake_err ... ok
[INFO] [stdout] test peer::test::test_connect_handshake_ok ... test peer::test::test_connect_handshake_ok has been running for over 60 seconds
[ERROR] error running command: no output for 300 seconds
[INFO] running `Command { std: "docker" "inspect" "15f49098a48c400f8bdb2b233bf55829b4cbd6a4b68dd18ab28844063772c487", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "15f49098a48c400f8bdb2b233bf55829b4cbd6a4b68dd18ab28844063772c487", kill_on_drop: false }`
[INFO] [stdout] 15f49098a48c400f8bdb2b233bf55829b4cbd6a4b68dd18ab28844063772c487
