[INFO] cloning repository https://github.com/xin-water/bittorrent-rs [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/xin-water/bittorrent-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fxin-water%2Fbittorrent-rs", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fxin-water%2Fbittorrent-rs'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] d82daa9c31fb10e880deb4135efb9a8479d92d60 [INFO] testing xin-water/bittorrent-rs against try#d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2 for pr-86479 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fxin-water%2Fbittorrent-rs" "/workspace/builds/worker-4/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-4/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/xin-water/bittorrent-rs on toolchain d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2 [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/xin-water/bittorrent-rs [INFO] finished tweaking git repo https://github.com/xin-water/bittorrent-rs [INFO] tweaked toml for git repo https://github.com/xin-water/bittorrent-rs written to /workspace/builds/worker-4/source/Cargo.toml [INFO] crate git repo https://github.com/xin-water/bittorrent-rs already has a lockfile, it will not be regenerated [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded base32 v0.3.1 [INFO] [stderr] Downloaded umio v0.3.0 [INFO] [stderr] Downloaded bencode v0.1.16 [INFO] [stderr] Downloaded pendulum v0.3.1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:34b6a614d2c27851fe6cbf88fbd1137609cefab8b10d0615aaeb6fd47975d74e" "/opt/rustwide/cargo-home/bin/cargo" "+d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] cb8346d06d90d6e809242f3f61e68d138fd25383b46113a9a65e0b3873b25b9d [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" "cb8346d06d90d6e809242f3f61e68d138fd25383b46113a9a65e0b3873b25b9d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "cb8346d06d90d6e809242f3f61e68d138fd25383b46113a9a65e0b3873b25b9d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "cb8346d06d90d6e809242f3f61e68d138fd25383b46113a9a65e0b3873b25b9d", kill_on_drop: false }` [INFO] [stdout] cb8346d06d90d6e809242f3f61e68d138fd25383b46113a9a65e0b3873b25b9d [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:34b6a614d2c27851fe6cbf88fbd1137609cefab8b10d0615aaeb6fd47975d74e" "/opt/rustwide/cargo-home/bin/cargo" "+d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] dcceb8fc96259e383fd3b4c3fa6cdbd1f1fc13ccf825949fe493583b9ea82bfc [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" "dcceb8fc96259e383fd3b4c3fa6cdbd1f1fc13ccf825949fe493583b9ea82bfc", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.94 [INFO] [stderr] Compiling log v0.4.14 [INFO] [stderr] Compiling proc-macro2 v1.0.26 [INFO] [stderr] Compiling unicode-xid v0.2.2 [INFO] [stderr] Compiling lazy_static v1.4.0 [INFO] [stderr] Compiling cc v1.0.67 [INFO] [stderr] Compiling memchr v2.4.0 [INFO] [stderr] Compiling winapi-build v0.1.1 [INFO] [stderr] Compiling cfg-if v0.1.10 [INFO] [stderr] Compiling slab v0.4.3 [INFO] [stderr] Compiling version_check v0.9.3 [INFO] [stderr] Compiling proc-macro-hack v0.5.19 [INFO] [stderr] Compiling pin-project-lite v0.2.6 [INFO] [stderr] Compiling proc-macro-nested v0.1.7 [INFO] [stderr] Compiling winapi v0.2.8 [INFO] [stderr] Compiling fnv v1.0.7 [INFO] [stderr] Compiling pin-utils v0.1.0 [INFO] [stderr] Compiling bytes v1.0.1 [INFO] [stderr] Compiling itoa v0.4.7 [INFO] [stderr] Compiling tinyvec_macros v0.1.0 [INFO] [stderr] Compiling once_cell v1.7.2 [INFO] [stderr] Compiling openssl v0.10.34 [INFO] [stderr] Compiling native-tls v0.2.7 [INFO] [stderr] Compiling tower-service v0.3.1 [INFO] [stderr] Compiling httpdate v0.3.2 [INFO] [stderr] Compiling byteorder v1.4.3 [INFO] [stderr] Compiling smallvec v1.6.1 [INFO] [stderr] Compiling encoding_rs v0.8.28 [INFO] [stderr] Compiling adler v1.0.2 [INFO] [stderr] Compiling gimli v0.24.0 [INFO] [stderr] Compiling bitflags v0.4.0 [INFO] [stderr] Compiling rustc-demangle v0.1.19 [INFO] [stderr] Compiling object v0.24.0 [INFO] [stderr] Compiling ipnet v2.3.0 [INFO] [stderr] Compiling bit-vec v0.4.4 [INFO] [stderr] Compiling same-file v1.0.6 [INFO] [stderr] Compiling base64 v0.13.0 [INFO] [stderr] Compiling sha1 v0.6.0 [INFO] [stderr] Compiling base32 v0.3.1 [INFO] [stderr] Compiling hex-literal v0.3.1 [INFO] [stderr] Compiling bittorrent-client v0.1.0 (/opt/rustwide/workdir/bittorrent-client) [INFO] [stderr] Compiling num-traits v0.2.14 [INFO] [stderr] Compiling futures-macro v0.3.15 [INFO] [stderr] Compiling futures-util v0.3.15 [INFO] [stderr] Compiling num-integer v0.1.44 [INFO] [stderr] Compiling crossbeam-utils v0.8.4 [INFO] [stderr] Compiling indexmap v1.6.2 [INFO] [stderr] Compiling memoffset v0.6.3 [INFO] [stderr] Compiling miniz_oxide v0.4.4 [INFO] [stderr] Compiling num-iter v0.1.42 [INFO] [stderr] Compiling tokio v1.6.0 [INFO] [stderr] Compiling instant v0.1.9 [INFO] [stderr] Compiling unicode-bidi v0.3.5 [INFO] [stderr] Compiling unicode-bidi v0.2.6 [INFO] [stderr] Compiling tracing-core v0.1.18 [INFO] [stderr] Compiling lock_api v0.4.4 [INFO] [stderr] Compiling tinyvec v1.2.0 [INFO] [stderr] Compiling form_urlencoded v1.0.1 [INFO] [stderr] Compiling kernel32-sys v0.2.2 [INFO] [stderr] Compiling ws2_32-sys v0.2.1 [INFO] [stderr] Compiling http v0.2.4 [INFO] [stderr] Compiling unicase v2.6.0 [INFO] [stderr] Compiling error-chain v0.12.4 [INFO] [stderr] Compiling walkdir v2.3.2 [INFO] [stderr] Compiling bit-set v0.4.0 [INFO] [stderr] Compiling serde_urlencoded v0.7.0 [INFO] [stderr] Compiling unicode-normalization v0.1.17 [INFO] [stderr] Compiling tracing v0.1.26 [INFO] [stderr] Compiling log v0.3.9 [INFO] [stderr] Compiling want v0.3.0 [INFO] [stderr] Compiling openssl-sys v0.9.63 [INFO] [stderr] Compiling backtrace v0.3.59 [INFO] [stderr] Compiling quote v1.0.9 [INFO] [stderr] Compiling net2 v0.2.37 [INFO] [stderr] Compiling iovec v0.1.4 [INFO] [stderr] Compiling num_cpus v1.13.0 [INFO] [stderr] Compiling rand v0.4.6 [INFO] [stderr] Compiling time v0.1.43 [INFO] [stderr] Compiling memchr v0.1.11 [INFO] [stderr] Compiling socket2 v0.3.19 [INFO] [stderr] Compiling getrandom v0.1.16 [INFO] [stderr] Compiling parking_lot_core v0.8.3 [INFO] [stderr] Compiling nix v0.5.1 [INFO] [stderr] Compiling mio v0.7.11 [INFO] [stderr] Compiling atty v0.2.14 [INFO] [stderr] Compiling memchr v1.0.2 [INFO] [stderr] Compiling signal-hook-registry v1.3.0 [INFO] [stderr] Compiling idna v0.2.3 [INFO] [stderr] Compiling thread-id v2.0.0 [INFO] [stderr] Compiling crossbeam-epoch v0.9.4 [INFO] [stderr] Compiling crossbeam-channel v0.5.1 [INFO] [stderr] Compiling crossbeam-queue v0.3.1 [INFO] [stderr] Compiling num-traits v0.1.43 [INFO] [stderr] Compiling num-complex v0.1.43 [INFO] [stderr] Compiling bytes v0.4.12 [INFO] [stderr] Compiling mime_guess v2.0.3 [INFO] [stderr] Compiling threadpool v1.8.1 [INFO] [stderr] Compiling syn v1.0.72 [INFO] [stderr] Compiling mio v0.6.23 [INFO] [stderr] Compiling miow v0.1.5 [INFO] [stderr] Compiling aho-corasick v0.5.3 [INFO] [stderr] Compiling http-body v0.3.1 [INFO] [stderr] Compiling addr2line v0.15.1 [INFO] [stderr] Compiling rand_core v0.5.1 [INFO] [stderr] Compiling parking_lot v0.11.1 [INFO] [stderr] Compiling clap v2.33.3 [INFO] [stderr] Compiling nom v3.2.1 [INFO] [stderr] Compiling rand v0.3.23 [INFO] [stderr] Compiling thread_local v0.2.7 [INFO] [stderr] Compiling bencode v0.1.16 [INFO] [stderr] Compiling crossbeam-deque v0.8.0 [INFO] [stderr] Compiling url v2.2.2 [INFO] [stderr] Compiling num-bigint v0.1.44 [INFO] [stderr] Compiling chrono v0.4.19 [INFO] [stderr] Compiling mio v0.5.1 [INFO] [stderr] Compiling rand_chacha v0.2.2 [INFO] [stderr] Compiling uuid v0.2.3 [INFO] [stderr] Compiling rust-crypto v0.2.36 [INFO] [stderr] Compiling tokio v0.2.25 [INFO] [stderr] Compiling regex v0.1.80 [INFO] [stderr] Compiling crossbeam v0.8.0 [INFO] [stderr] Compiling rand v0.7.3 [INFO] [stderr] Compiling url v0.5.10 [INFO] [stderr] Compiling umio v0.3.0 [INFO] [stderr] Compiling num-rational v0.1.42 [INFO] [stderr] Compiling simplelog v0.10.0 [INFO] [stderr] Compiling env_logger v0.3.5 [INFO] [stderr] Compiling num v0.1.42 [INFO] [stderr] Compiling quickcheck v0.4.1 [INFO] [stderr] Compiling tokio-util v0.3.1 [INFO] [stderr] Compiling tokio-tls v0.3.1 [INFO] [stderr] Compiling pin-project-internal v1.0.7 [INFO] [stderr] Compiling tokio-macros v1.2.0 [INFO] [stderr] Compiling pin-project v1.0.7 [INFO] [stderr] Compiling tracing-futures v0.2.5 [INFO] [stderr] Compiling h2 v0.2.7 [INFO] [stderr] Compiling futures-executor v0.3.15 [INFO] [stderr] Compiling futures v0.3.15 [INFO] [stderr] Compiling bittorrent-protocol v0.3.0-bate (/opt/rustwide/workdir/bittorrent-protocol) [INFO] [stdout] warning: unused `#[macro_use]` import [INFO] [stdout] --> bittorrent-protocol/src/lib.rs:15:1 [INFO] [stdout] | [INFO] [stdout] 15 | #[macro_use] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused macro definition [INFO] [stdout] --> bittorrent-protocol/src/bencode/mod.rs:134:1 [INFO] [stdout] | [INFO] [stdout] 134 | / macro_rules! bt_ben_list { [INFO] [stdout] 135 | | ( $($ben:expr),* ) => { [INFO] [stdout] 136 | | { [INFO] [stdout] 137 | | use crate::bencode::{BencodeMut, BMutAccess}; [INFO] [stdout] ... | [INFO] [stdout] 149 | | } [INFO] [stdout] 150 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_macros)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `futures::sink::Sink` [INFO] [stdout] --> bittorrent-protocol/src/disk/tasks/context.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use futures::sink::Sink; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> bittorrent-protocol/src/disk/tasks/helpers/piece_checker.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc::Sender` [INFO] [stdout] --> bittorrent-protocol/src/disk/tasks/helpers/piece_checker.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use tokio::sync::mpsc::Sender; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ODiskMessage` [INFO] [stdout] --> bittorrent-protocol/src/disk/tasks/helpers/piece_checker.rs:10:46 [INFO] [stdout] | [INFO] [stdout] 10 | use crate::disk::{BlockMetadata, FileSystem, ODiskMessage}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> bittorrent-protocol/src/disk/tasks/mod.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `threadpool::ThreadPool` [INFO] [stdout] --> bittorrent-protocol/src/disk/manager.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use threadpool::ThreadPool; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `FutureExt`, `Future`, `SinkExt`, `StreamExt`, `TryFutureExt`, `TryFuture`, `TryStreamExt`, `TryStream` [INFO] [stdout] --> bittorrent-protocol/src/disk/manager.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | Future, FutureExt, Sink, SinkExt, Stream, StreamExt, TryFuture, TryFutureExt, TryStream, [INFO] [stdout] | ^^^^^^ ^^^^^^^^^ ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stdout] 12 | TryStreamExt, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused doc comment [INFO] [stdout] --> bittorrent-protocol/src/utracker/option.rs:157:1 [INFO] [stdout] | [INFO] [stdout] 157 | /// Parse an end of buffer or the end of option byte. [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ rustdoc does not generate documentation for macro invocations [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_doc_comments)]` on by default [INFO] [stdout] = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused doc comment [INFO] [stdout] --> bittorrent-protocol/src/utracker/option.rs:191:1 [INFO] [stdout] | [INFO] [stdout] 191 | /// Parse a single byte as an unsigned pointer size. [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ rustdoc does not generate documentation for macro invocations [INFO] [stdout] | [INFO] [stdout] = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::cmp` [INFO] [stdout] --> bittorrent-protocol/src/handshake/manager/mod.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::cmp; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `HandshakeType` [INFO] [stdout] --> bittorrent-protocol/src/handshake/manager/mod.rs:27:56 [INFO] [stdout] | [INFO] [stdout] 27 | use crate::handshake::handler::{handshaker, initiator, HandshakeType}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io` [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/listener.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use std::io; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Cursor` [INFO] [stdout] --> bittorrent-protocol/src/handshake/message/bittorrent/framed.rs:4:21 [INFO] [stdout] | [INFO] [stdout] 4 | use std::io::{self, Cursor, Write, Read}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::error::Error` [INFO] [stdout] --> bittorrent-protocol/src/handshake/message/bittorrent/framed.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use std::error::Error; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Incoming` [INFO] [stdout] --> bittorrent-protocol/src/handshake/transport.rs:7:28 [INFO] [stdout] | [INFO] [stdout] 7 | use std::net::{SocketAddr, Incoming}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::option::Option::Some` [INFO] [stdout] --> bittorrent-protocol/src/handshake/transport.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use std::option::Option::Some; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `UtpStream` [INFO] [stdout] --> bittorrent-protocol/src/handshake/transport.rs:10:42 [INFO] [stdout] | [INFO] [stdout] 10 | use crate::utp::{UtpSocket, UtpListener, UtpStream}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Sender` [INFO] [stdout] --> bittorrent-protocol/src/handshake/stream.rs:2:26 [INFO] [stdout] | [INFO] [stdout] 2 | use crossbeam::channel::{Sender,Receiver}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ManagedMessage` [INFO] [stdout] --> bittorrent-protocol/src/peer/manager/builder.rs:3:13 [INFO] [stdout] | [INFO] [stdout] 3 | use super::{ManagedMessage, PeerManager}; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::net::TcpStream` [INFO] [stdout] --> bittorrent-protocol/src/peer/manager/mod.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | use std::net::TcpStream; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::net::TcpStream` [INFO] [stdout] --> bittorrent-protocol/src/peer/manager/task_one_thread.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use std::net::TcpStream; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Arc`, `Mutex` [INFO] [stdout] --> bittorrent-protocol/src/peer/manager/task_one_thread.rs:11:17 [INFO] [stdout] | [INFO] [stdout] 11 | use std::sync::{Arc, Mutex}; [INFO] [stdout] | ^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::peer::manager::TryClone` [INFO] [stdout] --> bittorrent-protocol/src/peer/manager/task_one_thread.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::peer::manager::TryClone; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::peer::message::PeerWireProtocolMessage` [INFO] [stdout] --> bittorrent-protocol/src/peer/manager/task_split.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::peer::message::PeerWireProtocolMessage; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::net::TcpStream` [INFO] [stdout] --> bittorrent-protocol/src/peer/manager/task_split.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use std::net::TcpStream; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::select::discovery::error::DiscoveryError` [INFO] [stdout] --> bittorrent-protocol/src/select/uber.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::select::discovery::error::DiscoveryError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::mem::uninitialized`: use `mem::MaybeUninit` instead [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:479:1 [INFO] [stdout] | [INFO] [stdout] 479 | / named!(parse_ipv4<&[u8], Ipv4Addr>, [INFO] [stdout] 480 | | map!(count_fixed!(u8, be_u8, 4), |b| convert::bytes_be_to_ipv4(b)) [INFO] [stdout] 481 | | ); [INFO] [stdout] | |__^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] = note: this warning originates in the macro `count_fixed` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::mem::uninitialized`: use `mem::MaybeUninit` instead [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:490:1 [INFO] [stdout] | [INFO] [stdout] 490 | / named!(parse_ipv6<&[u8], Ipv6Addr>, [INFO] [stdout] 491 | | map!(count_fixed!(u8, be_u8, 16), |b| convert::bytes_be_to_ipv6(b)) [INFO] [stdout] 492 | | ); [INFO] [stdout] | |__^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `count_fixed` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::mem::uninitialized`: use `mem::MaybeUninit` instead [INFO] [stdout] --> bittorrent-protocol/src/handshake/message/extensions.rs:96:5 [INFO] [stdout] | [INFO] [stdout] 96 | / do_parse!( [INFO] [stdout] 97 | | bytes, [INFO] [stdout] 98 | | bytes: count_fixed!(u8, be_u8, NUM_EXTENSION_BYTES) >> (Extensions::with_bytes(bytes)) [INFO] [stdout] 99 | | ) [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `count_fixed` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `std::error::Error::description`: use the Display impl or to_string() [INFO] [stdout] --> bittorrent-protocol/src/utp/error.rs:33:26 [INFO] [stdout] | [INFO] [stdout] 33 | f.write_str(self.description()) [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `std::error::Error::description`: use the Display impl or to_string() [INFO] [stdout] --> bittorrent-protocol/src/utp/error.rs:49:36 [INFO] [stdout] | [INFO] [stdout] 49 | io::Error::new(kind, error.description()) [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `std::error::Error::description`: use the Display impl or to_string() [INFO] [stdout] --> bittorrent-protocol/src/utp/error.rs:63:30 [INFO] [stdout] | [INFO] [stdout] 63 | write!(f, "{}", self.description()) [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `std::error::Error::description`: use the Display impl or to_string() [INFO] [stdout] --> bittorrent-protocol/src/utp/error.rs:81:48 [INFO] [stdout] | [INFO] [stdout] 81 | io::Error::new(ErrorKind::Other, error.description()) [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `stream_capacity` [INFO] [stdout] --> bittorrent-protocol/src/disk/manager.rs:28:13 [INFO] [stdout] | [INFO] [stdout] 28 | let stream_capacity = builder.stream_buffer_capacity(); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_stream_capacity` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cx` [INFO] [stdout] --> bittorrent-protocol/src/disk/manager.rs:109:41 [INFO] [stdout] | [INFO] [stdout] 109 | fn poll_ready(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { [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] --> bittorrent-protocol/src/disk/manager.rs:125:41 [INFO] [stdout] | [INFO] [stdout] 125 | fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { [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] --> bittorrent-protocol/src/disk/manager.rs:129:41 [INFO] [stdout] | [INFO] [stdout] 129 | fn poll_close(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { [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] --> bittorrent-protocol/src/disk/manager.rs:159:40 [INFO] [stdout] | [INFO] [stdout] 159 | fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_cx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `curr_piece_buffer` is never read [INFO] [stdout] --> bittorrent-protocol/src/metainfo/builder/worker.rs:100:25 [INFO] [stdout] | [INFO] [stdout] 100 | let mut curr_piece_buffer = PieceBuffer::new(1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_assignments)]` on by default [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `timer` [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/initiator.rs:16:44 [INFO] [stdout] | [INFO] [stdout] 16 | let &(ref transport, ref filters, ref timer) = context; [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_timer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tasks_available` [INFO] [stdout] --> bittorrent-protocol/src/select/discovery/ut_metadata.rs:462:13 [INFO] [stdout] | [INFO] [stdout] 462 | let tasks_available = self.initialize_pending(); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tasks_available` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `free_task_queue_space` [INFO] [stdout] --> bittorrent-protocol/src/select/discovery/ut_metadata.rs:463:13 [INFO] [stdout] | [INFO] [stdout] 463 | let free_task_queue_space = self.active_requests.len() != MAX_ACTIVE_REQUESTS; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_free_task_queue_space` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `peer_requests_available` [INFO] [stdout] --> bittorrent-protocol/src/select/discovery/ut_metadata.rs:465:13 [INFO] [stdout] | [INFO] [stdout] 465 | let peer_requests_available = !self.peer_requests.is_empty(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_peer_requests_available` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `downloads_available` [INFO] [stdout] --> bittorrent-protocol/src/select/discovery/ut_metadata.rs:468:13 [INFO] [stdout] | [INFO] [stdout] 468 | let downloads_available = self.validate_downloaded(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_downloads_available` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> bittorrent-protocol/src/disk/tasks/mod.rs:21:13 [INFO] [stdout] | [INFO] [stdout] 21 | let mut blocking_sender = context.blocking_sender(); [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] --> bittorrent-protocol/src/disk/tasks/helpers/piece_checker.rs:214:40 [INFO] [stdout] | [INFO] [stdout] 214 | pub fn run_with_diff(&mut self, mut callback: F) [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] --> bittorrent-protocol/src/disk/manager.rs:26:25 [INFO] [stdout] | [INFO] [stdout] 26 | pub fn from_builder(mut builder: DiskManagerBuilder, fs: F) -> DiskManager { [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] --> bittorrent-protocol/src/select/uber.rs:162:17 [INFO] [stdout] | [INFO] [stdout] 162 | let mut opt_next_state = get_next_state(self); [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] --> bittorrent-protocol/src/utp/packet.rs:245:13 [INFO] [stdout] | [INFO] [stdout] 245 | let mut header = unsafe { &mut *(self.0.as_mut_ptr() as *mut PacketHeader) }; [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] --> bittorrent-protocol/src/utp/socket.rs:465:17 [INFO] [stdout] | [INFO] [stdout] 465 | let mut packet = &mut self.send_window[0]; [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling hyper v0.13.10 [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:1110:9 [INFO] [stdout] | [INFO] [stdout] 1110 | let mut socket = self.socket.try_clone().expect("UtpSocket clone fail"); [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] --> bittorrent-protocol/src/utp/socket.rs:1111:9 [INFO] [stdout] | [INFO] [stdout] 1111 | let mut connected_to = self.connected_to.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1112:9 [INFO] [stdout] | [INFO] [stdout] 1112 | let mut sender_connection_id = self.sender_connection_id; [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] --> bittorrent-protocol/src/utp/socket.rs:1113:9 [INFO] [stdout] | [INFO] [stdout] 1113 | let mut receiver_connection_id = self.receiver_connection_id; [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] --> bittorrent-protocol/src/utp/socket.rs:1114:9 [INFO] [stdout] | [INFO] [stdout] 1114 | let mut seq_nr = self.seq_nr; [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] --> bittorrent-protocol/src/utp/socket.rs:1115:9 [INFO] [stdout] | [INFO] [stdout] 1115 | let mut ack_nr = self.ack_nr; [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] --> bittorrent-protocol/src/utp/socket.rs:1116:9 [INFO] [stdout] | [INFO] [stdout] 1116 | let mut state = self.state.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1117:9 [INFO] [stdout] | [INFO] [stdout] 1117 | let mut incoming_buffer = self.incoming_buffer.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1118:9 [INFO] [stdout] | [INFO] [stdout] 1118 | let mut send_window = self.send_window.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1119:9 [INFO] [stdout] | [INFO] [stdout] 1119 | let mut unsent_queue = self.unsent_queue.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1120:9 [INFO] [stdout] | [INFO] [stdout] 1120 | let mut duplicate_ack_count = self.duplicate_ack_count.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1121:9 [INFO] [stdout] | [INFO] [stdout] 1121 | let mut last_acked = self.last_acked.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1122:9 [INFO] [stdout] | [INFO] [stdout] 1122 | let mut last_acked_timestamp = self.last_acked_timestamp.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1123:9 [INFO] [stdout] | [INFO] [stdout] 1123 | let mut last_dropped = self.last_dropped.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1124:9 [INFO] [stdout] | [INFO] [stdout] 1124 | let mut rtt = self.rtt.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1125:9 [INFO] [stdout] | [INFO] [stdout] 1125 | let mut pending_data = self.pending_data.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1126:9 [INFO] [stdout] | [INFO] [stdout] 1126 | let mut rtt_variance = self.rtt_variance.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1127:9 [INFO] [stdout] | [INFO] [stdout] 1127 | let mut curr_window = self.curr_window.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1128:9 [INFO] [stdout] | [INFO] [stdout] 1128 | let mut remote_wnd_size= self.remote_wnd_size.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1129:9 [INFO] [stdout] | [INFO] [stdout] 1129 | let mut base_delays= self.base_delays.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1130:9 [INFO] [stdout] | [INFO] [stdout] 1130 | let mut current_delays= self.current_delays.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1131:9 [INFO] [stdout] | [INFO] [stdout] 1131 | let mut their_delay = self.their_delay.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1132:9 [INFO] [stdout] | [INFO] [stdout] 1132 | let mut last_rollover = self.last_rollover.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1133:9 [INFO] [stdout] | [INFO] [stdout] 1133 | let mut congestion_timeout = self.congestion_timeout.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1134:9 [INFO] [stdout] | [INFO] [stdout] 1134 | let mut cwnd = self.cwnd.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1135:9 [INFO] [stdout] | [INFO] [stdout] 1135 | let mut max_retransmission_retries = self.max_retransmission_retries.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1137:9 [INFO] [stdout] | [INFO] [stdout] 1137 | let mut utp_socket = UtpSocket { [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function is never used: `run_peer` [INFO] [stdout] --> bittorrent-protocol/src/peer/manager/task_one_thread.rs:16:8 [INFO] [stdout] | [INFO] [stdout] 16 | pub fn run_peer( [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant is never used: `DEFAULT_TIMER_SLOTS` [INFO] [stdout] --> bittorrent-protocol/src/peer/manager/mod.rs:26:1 [INFO] [stdout] | [INFO] [stdout] 26 | const DEFAULT_TIMER_SLOTS: usize = 2048; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused attribute [INFO] [stdout] --> bittorrent-protocol/src/peer/macros.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | #[macro_use] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_attributes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused attribute [INFO] [stdout] --> bittorrent-protocol/src/peer/macros.rs:24:1 [INFO] [stdout] | [INFO] [stdout] 24 | #[macro_use] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/handshaker.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | framed.send(handshake_msg).map_err(|_| ()); [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: unused `Result` that must be used [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/handshaker.rs:122:21 [INFO] [stdout] | [INFO] [stdout] 122 | framed.send(handshake_msg); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> bittorrent-protocol/src/handshake/message/bittorrent/framed.rs:68:17 [INFO] [stdout] | [INFO] [stdout] 68 | self.sock.flush(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 86 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling hyper-tls v0.4.3 [INFO] [stderr] Compiling reqwest v0.10.10 [INFO] [stderr] Compiling bittorrent-client-demo v0.1.0 (/opt/rustwide/workdir/bittorrent-client-demo) [INFO] [stdout] warning: variant `decoderError` should have an upper camel case name [INFO] [stdout] --> bittorrent-client-demo/src/tracker_response.rs:134:5 [INFO] [stdout] | [INFO] [stdout] 134 | decoderError(decoder::Error), [INFO] [stdout] | ^^^^^^^^^^^^ help: convert the identifier to upper camel case: `DecoderError` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_camel_case_types)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `streamingError` should have an upper camel case name [INFO] [stdout] --> bittorrent-client-demo/src/tracker_response.rs:135:5 [INFO] [stdout] | [INFO] [stdout] 135 | streamingError(bencode::streaming::Error), [INFO] [stdout] | ^^^^^^^^^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `StreamingError` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `selfError` should have an upper camel case name [INFO] [stdout] --> bittorrent-client-demo/src/tracker_response.rs:136:5 [INFO] [stdout] | [INFO] [stdout] 136 | selfError, [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `SelfError` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Upstream_Error` should have an upper camel case name [INFO] [stdout] --> bittorrent-client-demo/src/peer/ipc.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | Upstream_Error, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `UpstreamError` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Downstream_Error` should have an upper camel case name [INFO] [stdout] --> bittorrent-client-demo/src/peer/ipc.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | Downstream_Error, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `DownstreamError` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::panic` [INFO] [stdout] --> bittorrent-client-demo/src/peer/peer_connection.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::panic; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `SystemTime`, `UNIX_EPOCH` [INFO] [stdout] --> bittorrent-client-demo/src/peer/peer_connection.rs:7:17 [INFO] [stdout] | [INFO] [stdout] 7 | use std::time::{SystemTime, UNIX_EPOCH}; [INFO] [stdout] | ^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `fmt` [INFO] [stdout] --> bittorrent-client-demo/src/peer/peer_connection.rs:8:25 [INFO] [stdout] | [INFO] [stdout] 8 | use std::{any, convert, fmt, io, thread}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around method argument [INFO] [stdout] --> bittorrent-client-demo/src/peer/peer_connection.rs:367:29 [INFO] [stdout] | [INFO] [stdout] 367 | ... (self.download_size as f64 / 1024.0 / 1024.0), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::tracker_response::Peer` [INFO] [stdout] --> bittorrent-client-demo/src/main.rs:26:5 [INFO] [stdout] | [INFO] [stdout] 26 | use crate::tracker_response::Peer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `peers` is never read [INFO] [stdout] --> bittorrent-client-demo/src/main.rs:77:13 [INFO] [stdout] | [INFO] [stdout] 77 | let mut peers = Vec::new(); [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_assignments)]` on by default [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `m` [INFO] [stdout] --> bittorrent-client-demo/src/meta_info.rs:97:32 [INFO] [stdout] | [INFO] [stdout] 97 | &Bencode::Dict(ref m) => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_m` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `url` [INFO] [stdout] --> bittorrent-client-demo/src/tracker.rs:127:17 [INFO] [stdout] | [INFO] [stdout] 127 | let url = link.as_str(); [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_url` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `src` [INFO] [stdout] --> bittorrent-client-demo/src/tracker.rs:194:15 [INFO] [stdout] | [INFO] [stdout] 194 | let (num, src) = { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_src` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `src` [INFO] [stdout] --> bittorrent-client-demo/src/tracker.rs:225:15 [INFO] [stdout] | [INFO] [stdout] 225 | let (num, src) = { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_src` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `time` [INFO] [stdout] --> bittorrent-client-demo/src/tracker.rs:263:9 [INFO] [stdout] | [INFO] [stdout] 263 | let time = &peer_data[8..12]; [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_time` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `download_num` [INFO] [stdout] --> bittorrent-client-demo/src/tracker.rs:265:9 [INFO] [stdout] | [INFO] [stdout] 265 | let download_num = &peer_data[12..16]; [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_download_num` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `upload_num` [INFO] [stdout] --> bittorrent-client-demo/src/tracker.rs:268:9 [INFO] [stdout] | [INFO] [stdout] 268 | let upload_num = &peer_data[16..20]; [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_upload_num` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> bittorrent-client-demo/src/tracker.rs:272:9 [INFO] [stdout] | [INFO] [stdout] 272 | for i in 0..(num - 20) / 6 { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> bittorrent-client-demo/src/tracker.rs:331:9 [INFO] [stdout] | [INFO] [stdout] 331 | for i in 0..(v.len()) { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `port` [INFO] [stdout] --> bittorrent-client-demo/src/tracker.rs:362:18 [INFO] [stdout] | [INFO] [stdout] 362 | fn get_udpsocket(port: &str) -> Option<(UdpSocket, SocketAddr)> { [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] --> bittorrent-client-demo/src/tracker_response.rs:63:21 [INFO] [stdout] | [INFO] [stdout] 63 | Err(e) => return Err(Error::selfError), [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> bittorrent-client-demo/src/tracker_response.rs:123:13 [INFO] [stdout] | [INFO] [stdout] 123 | for i in 0..(v.len() / 6) { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `start` [INFO] [stdout] --> bittorrent-client-demo/src/peer/download.rs:103:13 [INFO] [stdout] | [INFO] [stdout] 103 | let start = SystemTime::now() [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_start` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `num` [INFO] [stdout] --> bittorrent-client-demo/src/peer/peer_connection.rs:242:22 [INFO] [stdout] | [INFO] [stdout] 242 | let (num, hase_pieces) = request; [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_num` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> bittorrent-client-demo/src/peer/peer_connection.rs:248:21 [INFO] [stdout] | [INFO] [stdout] 248 | for i in 0..self.cat_num_list.len() { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> bittorrent-client-demo/src/peer/peer_connection.rs:341:21 [INFO] [stdout] | [INFO] [stdout] 341 | for i in 0..self.request_size { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> bittorrent-client-demo/src/peer/peer_connection.rs:432:25 [INFO] [stdout] | [INFO] [stdout] 432 | for i in 0..self.request_size { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> bittorrent-client-demo/src/main.rs:187:9 [INFO] [stdout] | [INFO] [stdout] 187 | let mut peer_id_prefix = String::from(PEER_ID_PREFIX); [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] --> bittorrent-client-demo/src/meta_info.rs:71:21 [INFO] [stdout] | [INFO] [stdout] 71 | let mut torrent = MetaInfo { [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] --> bittorrent-client-demo/src/meta_info.rs:192:9 [INFO] [stdout] | [INFO] [stdout] 192 | let mut result: MetaInfo = FromBencode::from_bencode(&bencode).unwrap(); [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] --> bittorrent-client-demo/src/tracker.rs:24:9 [INFO] [stdout] | [INFO] [stdout] 24 | let mut info_hash_ascii = torrent.info_hash_ascii.clone().unwrap(); [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] --> bittorrent-client-demo/src/tracker.rs:90:14 [INFO] [stdout] | [INFO] [stdout] 90 | Some(mut v) => v, [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] --> bittorrent-client-demo/src/tracker.rs:106:13 [INFO] [stdout] | [INFO] [stdout] 106 | let mut address = announce.pop().unwrap(); [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] --> bittorrent-client-demo/src/tracker.rs:167:9 [INFO] [stdout] | [INFO] [stdout] 167 | for mut tracker_response in tracker_response_list { [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] --> bittorrent-client-demo/src/tracker.rs:200:9 [INFO] [stdout] | [INFO] [stdout] 200 | let mut input = &mut buffer[0..num]; [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] --> bittorrent-client-demo/src/tracker.rs:231:9 [INFO] [stdout] | [INFO] [stdout] 231 | let mut peer_data = &mut buffer2[0..num]; [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] --> bittorrent-client-demo/src/peer/download.rs:38:13 [INFO] [stdout] | [INFO] [stdout] 38 | let mut torrent; [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] --> bittorrent-client-demo/src/peer/download.rs:40:23 [INFO] [stdout] | [INFO] [stdout] 40 | if let Ok(mut download) = downloader_mutex.lock() { [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] --> bittorrent-client-demo/src/peer/download.rs:61:13 [INFO] [stdout] | [INFO] [stdout] 61 | let mut xc: Vec = piece_list.remove(0); [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] --> bittorrent-client-demo/src/peer/download.rs:97:13 [INFO] [stdout] | [INFO] [stdout] 97 | let mut file = OpenOptions::new() [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] --> bittorrent-client-demo/src/peer/download.rs:109:13 [INFO] [stdout] | [INFO] [stdout] 109 | let mut pieces = vec![]; [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] --> bittorrent-client-demo/src/peer/peer_connection.rs:68:13 [INFO] [stdout] | [INFO] [stdout] 68 | let mut request; [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] --> bittorrent-client-demo/src/peer/peer_connection.rs:70:23 [INFO] [stdout] | [INFO] [stdout] 70 | if let Ok(mut download) = download_mutex.lock() { [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] --> bittorrent-client-demo/src/peer/peer_connection.rs:164:17 [INFO] [stdout] | [INFO] [stdout] 164 | let mut download; [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] --> bittorrent-client-demo/src/peer/peer_connection.rs:234:21 [INFO] [stdout] | [INFO] [stdout] 234 | let mut request; [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] --> bittorrent-client-demo/src/peer/peer_connection.rs:236:31 [INFO] [stdout] | [INFO] [stdout] 236 | if let Ok(mut download) = self.download_mutex.lock() { [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] --> bittorrent-client-demo/src/peer/peer_connection.rs:398:21 [INFO] [stdout] | [INFO] [stdout] 398 | let mut request; [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] --> bittorrent-client-demo/src/peer/peer_connection.rs:400:31 [INFO] [stdout] | [INFO] [stdout] 400 | if let Ok(mut download) = self.download_mutex.lock() { [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] --> bittorrent-client-demo/src/peer/peer_connection.rs:471:13 [INFO] [stdout] | [INFO] [stdout] 471 | let mut incomplete_blocks: Vec<(u32, u32)>; [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] --> bittorrent-client-demo/src/peer/peer_connection.rs:473:23 [INFO] [stdout] | [INFO] [stdout] 473 | if let Ok(mut download) = self.download_mutex.lock() { [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] --> bittorrent-client-demo/src/peer/peer_connection.rs:572:21 [INFO] [stdout] | [INFO] [stdout] 572 | let mut data; [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] --> bittorrent-client-demo/src/tracker_response.rs:85:12 [INFO] [stdout] | [INFO] [stdout] 85 | pub fn new(bytes: &[u8]) -> Result { [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: `defalut` [INFO] [stdout] --> bittorrent-client-demo/src/tracker_response.rs:107:12 [INFO] [stdout] | [INFO] [stdout] 107 | pub fn defalut() -> Peer { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `list_from_bytes` [INFO] [stdout] --> bittorrent-client-demo/src/tracker_response.rs:119:12 [INFO] [stdout] | [INFO] [stdout] 119 | pub fn list_from_bytes(v: &[u8]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `cat_status` [INFO] [stdout] --> bittorrent-client-demo/src/peer/download.rs:127:12 [INFO] [stdout] | [INFO] [stdout] 127 | pub fn cat_status(&mut self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `get_close_connext` [INFO] [stdout] --> bittorrent-client-demo/src/peer/download.rs:139:12 [INFO] [stdout] | [INFO] [stdout] 139 | pub fn get_close_connext(&mut self) -> HashSet { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `peer_channels_num` [INFO] [stdout] --> bittorrent-client-demo/src/peer/download.rs:143:12 [INFO] [stdout] | [INFO] [stdout] 143 | pub fn peer_channels_num(&mut self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `active_peer_reset` [INFO] [stdout] --> bittorrent-client-demo/src/peer/download.rs:147:12 [INFO] [stdout] | [INFO] [stdout] 147 | pub fn active_peer_reset(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `active_peer_connect` [INFO] [stdout] --> bittorrent-client-demo/src/peer/download.rs:150:12 [INFO] [stdout] | [INFO] [stdout] 150 | pub fn active_peer_connect(&mut self) -> HashMap { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 60 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 1m 34s [INFO] running `Command { std: "docker" "inspect" "dcceb8fc96259e383fd3b4c3fa6cdbd1f1fc13ccf825949fe493583b9ea82bfc", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "dcceb8fc96259e383fd3b4c3fa6cdbd1f1fc13ccf825949fe493583b9ea82bfc", kill_on_drop: false }` [INFO] [stdout] dcceb8fc96259e383fd3b4c3fa6cdbd1f1fc13ccf825949fe493583b9ea82bfc [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:34b6a614d2c27851fe6cbf88fbd1137609cefab8b10d0615aaeb6fd47975d74e" "/opt/rustwide/cargo-home/bin/cargo" "+d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 73b410419d0aaf2ce2aec529bafeb4a25d6d8b7f0bf9ff8db41ee7c3f5fbb876 [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" "73b410419d0aaf2ce2aec529bafeb4a25d6d8b7f0bf9ff8db41ee7c3f5fbb876", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Compiling futures v0.1.31 [INFO] [stderr] Compiling crossbeam v0.3.2 [INFO] [stderr] Compiling hex v0.3.2 [INFO] [stderr] Compiling bittorrent-client v0.1.0 (/opt/rustwide/workdir/bittorrent-client) [INFO] [stderr] Compiling pbr v1.0.4 [INFO] [stdout] warning: unused `#[macro_use]` import [INFO] [stdout] --> bittorrent-protocol/src/lib.rs:15:1 [INFO] [stdout] | [INFO] [stdout] 15 | #[macro_use] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused macro definition [INFO] [stdout] --> bittorrent-protocol/src/bencode/mod.rs:134:1 [INFO] [stdout] | [INFO] [stdout] 134 | / macro_rules! bt_ben_list { [INFO] [stdout] 135 | | ( $($ben:expr),* ) => { [INFO] [stdout] 136 | | { [INFO] [stdout] 137 | | use crate::bencode::{BencodeMut, BMutAccess}; [INFO] [stdout] ... | [INFO] [stdout] 149 | | } [INFO] [stdout] 150 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_macros)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `futures::sink::Sink` [INFO] [stdout] --> bittorrent-protocol/src/disk/tasks/context.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use futures::sink::Sink; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> bittorrent-protocol/src/disk/tasks/helpers/piece_checker.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc::Sender` [INFO] [stdout] --> bittorrent-protocol/src/disk/tasks/helpers/piece_checker.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use tokio::sync::mpsc::Sender; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ODiskMessage` [INFO] [stdout] --> bittorrent-protocol/src/disk/tasks/helpers/piece_checker.rs:10:46 [INFO] [stdout] | [INFO] [stdout] 10 | use crate::disk::{BlockMetadata, FileSystem, ODiskMessage}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> bittorrent-protocol/src/disk/tasks/mod.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `threadpool::ThreadPool` [INFO] [stdout] --> bittorrent-protocol/src/disk/manager.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use threadpool::ThreadPool; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `FutureExt`, `Future`, `SinkExt`, `StreamExt`, `TryFutureExt`, `TryFuture`, `TryStreamExt`, `TryStream` [INFO] [stdout] --> bittorrent-protocol/src/disk/manager.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | Future, FutureExt, Sink, SinkExt, Stream, StreamExt, TryFuture, TryFutureExt, TryStream, [INFO] [stdout] | ^^^^^^ ^^^^^^^^^ ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stdout] 12 | TryStreamExt, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused doc comment [INFO] [stdout] --> bittorrent-protocol/src/utracker/option.rs:157:1 [INFO] [stdout] | [INFO] [stdout] 157 | /// Parse an end of buffer or the end of option byte. [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ rustdoc does not generate documentation for macro invocations [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_doc_comments)]` on by default [INFO] [stdout] = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused doc comment [INFO] [stdout] --> bittorrent-protocol/src/utracker/option.rs:191:1 [INFO] [stdout] | [INFO] [stdout] 191 | /// Parse a single byte as an unsigned pointer size. [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ rustdoc does not generate documentation for macro invocations [INFO] [stdout] | [INFO] [stdout] = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::cmp` [INFO] [stdout] --> bittorrent-protocol/src/handshake/manager/mod.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::cmp; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `HandshakeType` [INFO] [stdout] --> bittorrent-protocol/src/handshake/manager/mod.rs:27:56 [INFO] [stdout] | [INFO] [stdout] 27 | use crate::handshake::handler::{handshaker, initiator, HandshakeType}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io` [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/listener.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use std::io; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Cursor` [INFO] [stdout] --> bittorrent-protocol/src/handshake/message/bittorrent/framed.rs:4:21 [INFO] [stdout] | [INFO] [stdout] 4 | use std::io::{self, Cursor, Write, Read}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::error::Error` [INFO] [stdout] --> bittorrent-protocol/src/handshake/message/bittorrent/framed.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use std::error::Error; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Incoming` [INFO] [stdout] --> bittorrent-protocol/src/handshake/transport.rs:7:28 [INFO] [stdout] | [INFO] [stdout] 7 | use std::net::{SocketAddr, Incoming}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::option::Option::Some` [INFO] [stdout] --> bittorrent-protocol/src/handshake/transport.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use std::option::Option::Some; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `UtpStream` [INFO] [stdout] --> bittorrent-protocol/src/handshake/transport.rs:10:42 [INFO] [stdout] | [INFO] [stdout] 10 | use crate::utp::{UtpSocket, UtpListener, UtpStream}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Sender` [INFO] [stdout] --> bittorrent-protocol/src/handshake/stream.rs:2:26 [INFO] [stdout] | [INFO] [stdout] 2 | use crossbeam::channel::{Sender,Receiver}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ManagedMessage` [INFO] [stdout] --> bittorrent-protocol/src/peer/manager/builder.rs:3:13 [INFO] [stdout] | [INFO] [stdout] 3 | use super::{ManagedMessage, PeerManager}; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::net::TcpStream` [INFO] [stdout] --> bittorrent-protocol/src/peer/manager/mod.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | use std::net::TcpStream; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::net::TcpStream` [INFO] [stdout] --> bittorrent-protocol/src/peer/manager/task_one_thread.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use std::net::TcpStream; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Arc`, `Mutex` [INFO] [stdout] --> bittorrent-protocol/src/peer/manager/task_one_thread.rs:11:17 [INFO] [stdout] | [INFO] [stdout] 11 | use std::sync::{Arc, Mutex}; [INFO] [stdout] | ^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::peer::manager::TryClone` [INFO] [stdout] --> bittorrent-protocol/src/peer/manager/task_one_thread.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::peer::manager::TryClone; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::peer::message::PeerWireProtocolMessage` [INFO] [stdout] --> bittorrent-protocol/src/peer/manager/task_split.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::peer::message::PeerWireProtocolMessage; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::net::TcpStream` [INFO] [stdout] --> bittorrent-protocol/src/peer/manager/task_split.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use std::net::TcpStream; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::select::discovery::error::DiscoveryError` [INFO] [stdout] --> bittorrent-protocol/src/select/uber.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::select::discovery::error::DiscoveryError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::mem::uninitialized`: use `mem::MaybeUninit` instead [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:479:1 [INFO] [stdout] | [INFO] [stdout] 479 | / named!(parse_ipv4<&[u8], Ipv4Addr>, [INFO] [stdout] 480 | | map!(count_fixed!(u8, be_u8, 4), |b| convert::bytes_be_to_ipv4(b)) [INFO] [stdout] 481 | | ); [INFO] [stdout] | |__^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] = note: this warning originates in the macro `count_fixed` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::mem::uninitialized`: use `mem::MaybeUninit` instead [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:490:1 [INFO] [stdout] | [INFO] [stdout] 490 | / named!(parse_ipv6<&[u8], Ipv6Addr>, [INFO] [stdout] 491 | | map!(count_fixed!(u8, be_u8, 16), |b| convert::bytes_be_to_ipv6(b)) [INFO] [stdout] 492 | | ); [INFO] [stdout] | |__^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `count_fixed` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::mem::uninitialized`: use `mem::MaybeUninit` instead [INFO] [stdout] --> bittorrent-protocol/src/handshake/message/extensions.rs:96:5 [INFO] [stdout] | [INFO] [stdout] 96 | / do_parse!( [INFO] [stdout] 97 | | bytes, [INFO] [stdout] 98 | | bytes: count_fixed!(u8, be_u8, NUM_EXTENSION_BYTES) >> (Extensions::with_bytes(bytes)) [INFO] [stdout] 99 | | ) [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `count_fixed` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `std::error::Error::description`: use the Display impl or to_string() [INFO] [stdout] --> bittorrent-protocol/src/utp/error.rs:33:26 [INFO] [stdout] | [INFO] [stdout] 33 | f.write_str(self.description()) [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `std::error::Error::description`: use the Display impl or to_string() [INFO] [stdout] --> bittorrent-protocol/src/utp/error.rs:49:36 [INFO] [stdout] | [INFO] [stdout] 49 | io::Error::new(kind, error.description()) [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `std::error::Error::description`: use the Display impl or to_string() [INFO] [stdout] --> bittorrent-protocol/src/utp/error.rs:63:30 [INFO] [stdout] | [INFO] [stdout] 63 | write!(f, "{}", self.description()) [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `std::error::Error::description`: use the Display impl or to_string() [INFO] [stdout] --> bittorrent-protocol/src/utp/error.rs:81:48 [INFO] [stdout] | [INFO] [stdout] 81 | io::Error::new(ErrorKind::Other, error.description()) [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `stream_capacity` [INFO] [stdout] --> bittorrent-protocol/src/disk/manager.rs:28:13 [INFO] [stdout] | [INFO] [stdout] 28 | let stream_capacity = builder.stream_buffer_capacity(); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_stream_capacity` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cx` [INFO] [stdout] --> bittorrent-protocol/src/disk/manager.rs:109:41 [INFO] [stdout] | [INFO] [stdout] 109 | fn poll_ready(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { [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] --> bittorrent-protocol/src/disk/manager.rs:125:41 [INFO] [stdout] | [INFO] [stdout] 125 | fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { [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] --> bittorrent-protocol/src/disk/manager.rs:129:41 [INFO] [stdout] | [INFO] [stdout] 129 | fn poll_close(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { [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] --> bittorrent-protocol/src/disk/manager.rs:159:40 [INFO] [stdout] | [INFO] [stdout] 159 | fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_cx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `curr_piece_buffer` is never read [INFO] [stdout] --> bittorrent-protocol/src/metainfo/builder/worker.rs:100:25 [INFO] [stdout] | [INFO] [stdout] 100 | let mut curr_piece_buffer = PieceBuffer::new(1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_assignments)]` on by default [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `timer` [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/initiator.rs:16:44 [INFO] [stdout] | [INFO] [stdout] 16 | let &(ref transport, ref filters, ref timer) = context; [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_timer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tasks_available` [INFO] [stdout] --> bittorrent-protocol/src/select/discovery/ut_metadata.rs:462:13 [INFO] [stdout] | [INFO] [stdout] 462 | let tasks_available = self.initialize_pending(); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tasks_available` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `free_task_queue_space` [INFO] [stdout] --> bittorrent-protocol/src/select/discovery/ut_metadata.rs:463:13 [INFO] [stdout] | [INFO] [stdout] 463 | let free_task_queue_space = self.active_requests.len() != MAX_ACTIVE_REQUESTS; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_free_task_queue_space` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `peer_requests_available` [INFO] [stdout] --> bittorrent-protocol/src/select/discovery/ut_metadata.rs:465:13 [INFO] [stdout] | [INFO] [stdout] 465 | let peer_requests_available = !self.peer_requests.is_empty(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_peer_requests_available` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `downloads_available` [INFO] [stdout] --> bittorrent-protocol/src/select/discovery/ut_metadata.rs:468:13 [INFO] [stdout] | [INFO] [stdout] 468 | let downloads_available = self.validate_downloaded(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_downloads_available` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> bittorrent-protocol/src/disk/tasks/mod.rs:21:13 [INFO] [stdout] | [INFO] [stdout] 21 | let mut blocking_sender = context.blocking_sender(); [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] --> bittorrent-protocol/src/disk/tasks/helpers/piece_checker.rs:214:40 [INFO] [stdout] | [INFO] [stdout] 214 | pub fn run_with_diff(&mut self, mut callback: F) [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] --> bittorrent-protocol/src/disk/manager.rs:26:25 [INFO] [stdout] | [INFO] [stdout] 26 | pub fn from_builder(mut builder: DiskManagerBuilder, fs: F) -> DiskManager { [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] --> bittorrent-protocol/src/select/uber.rs:162:17 [INFO] [stdout] | [INFO] [stdout] 162 | let mut opt_next_state = get_next_state(self); [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] --> bittorrent-protocol/src/utp/packet.rs:245:13 [INFO] [stdout] | [INFO] [stdout] 245 | let mut header = unsafe { &mut *(self.0.as_mut_ptr() as *mut PacketHeader) }; [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling bittorrent-client-demo v0.1.0 (/opt/rustwide/workdir/bittorrent-client-demo) [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:465:17 [INFO] [stdout] | [INFO] [stdout] 465 | let mut packet = &mut self.send_window[0]; [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] --> bittorrent-protocol/src/utp/socket.rs:1110:9 [INFO] [stdout] | [INFO] [stdout] 1110 | let mut socket = self.socket.try_clone().expect("UtpSocket clone fail"); [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] --> bittorrent-protocol/src/utp/socket.rs:1111:9 [INFO] [stdout] | [INFO] [stdout] 1111 | let mut connected_to = self.connected_to.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1112:9 [INFO] [stdout] | [INFO] [stdout] 1112 | let mut sender_connection_id = self.sender_connection_id; [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] --> bittorrent-protocol/src/utp/socket.rs:1113:9 [INFO] [stdout] | [INFO] [stdout] 1113 | let mut receiver_connection_id = self.receiver_connection_id; [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] --> bittorrent-protocol/src/utp/socket.rs:1114:9 [INFO] [stdout] | [INFO] [stdout] 1114 | let mut seq_nr = self.seq_nr; [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] --> bittorrent-protocol/src/utp/socket.rs:1115:9 [INFO] [stdout] | [INFO] [stdout] 1115 | let mut ack_nr = self.ack_nr; [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] --> bittorrent-protocol/src/utp/socket.rs:1116:9 [INFO] [stdout] | [INFO] [stdout] 1116 | let mut state = self.state.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1117:9 [INFO] [stdout] | [INFO] [stdout] 1117 | let mut incoming_buffer = self.incoming_buffer.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1118:9 [INFO] [stdout] | [INFO] [stdout] 1118 | let mut send_window = self.send_window.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1119:9 [INFO] [stdout] | [INFO] [stdout] 1119 | let mut unsent_queue = self.unsent_queue.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1120:9 [INFO] [stdout] | [INFO] [stdout] 1120 | let mut duplicate_ack_count = self.duplicate_ack_count.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1121:9 [INFO] [stdout] | [INFO] [stdout] 1121 | let mut last_acked = self.last_acked.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1122:9 [INFO] [stdout] | [INFO] [stdout] 1122 | let mut last_acked_timestamp = self.last_acked_timestamp.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1123:9 [INFO] [stdout] | [INFO] [stdout] 1123 | let mut last_dropped = self.last_dropped.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1124:9 [INFO] [stdout] | [INFO] [stdout] 1124 | let mut rtt = self.rtt.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1125:9 [INFO] [stdout] | [INFO] [stdout] 1125 | let mut pending_data = self.pending_data.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1126:9 [INFO] [stdout] | [INFO] [stdout] 1126 | let mut rtt_variance = self.rtt_variance.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1127:9 [INFO] [stdout] | [INFO] [stdout] 1127 | let mut curr_window = self.curr_window.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1128:9 [INFO] [stdout] | [INFO] [stdout] 1128 | let mut remote_wnd_size= self.remote_wnd_size.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1129:9 [INFO] [stdout] | [INFO] [stdout] 1129 | let mut base_delays= self.base_delays.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1130:9 [INFO] [stdout] | [INFO] [stdout] 1130 | let mut current_delays= self.current_delays.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1131:9 [INFO] [stdout] | [INFO] [stdout] 1131 | let mut their_delay = self.their_delay.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1132:9 [INFO] [stdout] | [INFO] [stdout] 1132 | let mut last_rollover = self.last_rollover.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1133:9 [INFO] [stdout] | [INFO] [stdout] 1133 | let mut congestion_timeout = self.congestion_timeout.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1134:9 [INFO] [stdout] | [INFO] [stdout] 1134 | let mut cwnd = self.cwnd.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1135:9 [INFO] [stdout] | [INFO] [stdout] 1135 | let mut max_retransmission_retries = self.max_retransmission_retries.clone(); [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] --> bittorrent-protocol/src/utp/socket.rs:1137:9 [INFO] [stdout] | [INFO] [stdout] 1137 | let mut utp_socket = UtpSocket { [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function is never used: `run_peer` [INFO] [stdout] --> bittorrent-protocol/src/peer/manager/task_one_thread.rs:16:8 [INFO] [stdout] | [INFO] [stdout] 16 | pub fn run_peer( [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant is never used: `DEFAULT_TIMER_SLOTS` [INFO] [stdout] --> bittorrent-protocol/src/peer/manager/mod.rs:26:1 [INFO] [stdout] | [INFO] [stdout] 26 | const DEFAULT_TIMER_SLOTS: usize = 2048; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused attribute [INFO] [stdout] --> bittorrent-protocol/src/peer/macros.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | #[macro_use] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_attributes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused attribute [INFO] [stdout] --> bittorrent-protocol/src/peer/macros.rs:24:1 [INFO] [stdout] | [INFO] [stdout] 24 | #[macro_use] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/handshaker.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | framed.send(handshake_msg).map_err(|_| ()); [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: unused `Result` that must be used [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/handshaker.rs:122:21 [INFO] [stdout] | [INFO] [stdout] 122 | framed.send(handshake_msg); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> bittorrent-protocol/src/handshake/message/bittorrent/framed.rs:68:17 [INFO] [stdout] | [INFO] [stdout] 68 | self.sock.flush(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 86 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `decoderError` should have an upper camel case name [INFO] [stdout] --> bittorrent-client-demo/src/tracker_response.rs:134:5 [INFO] [stdout] | [INFO] [stdout] 134 | decoderError(decoder::Error), [INFO] [stdout] | ^^^^^^^^^^^^ help: convert the identifier to upper camel case: `DecoderError` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_camel_case_types)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `streamingError` should have an upper camel case name [INFO] [stdout] --> bittorrent-client-demo/src/tracker_response.rs:135:5 [INFO] [stdout] | [INFO] [stdout] 135 | streamingError(bencode::streaming::Error), [INFO] [stdout] | ^^^^^^^^^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `StreamingError` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `selfError` should have an upper camel case name [INFO] [stdout] --> bittorrent-client-demo/src/tracker_response.rs:136:5 [INFO] [stdout] | [INFO] [stdout] 136 | selfError, [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `SelfError` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Upstream_Error` should have an upper camel case name [INFO] [stdout] --> bittorrent-client-demo/src/peer/ipc.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | Upstream_Error, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `UpstreamError` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Downstream_Error` should have an upper camel case name [INFO] [stdout] --> bittorrent-client-demo/src/peer/ipc.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | Downstream_Error, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `DownstreamError` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::panic` [INFO] [stdout] --> bittorrent-client-demo/src/peer/peer_connection.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::panic; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `SystemTime`, `UNIX_EPOCH` [INFO] [stdout] --> bittorrent-client-demo/src/peer/peer_connection.rs:7:17 [INFO] [stdout] | [INFO] [stdout] 7 | use std::time::{SystemTime, UNIX_EPOCH}; [INFO] [stdout] | ^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `fmt` [INFO] [stdout] --> bittorrent-client-demo/src/peer/peer_connection.rs:8:25 [INFO] [stdout] | [INFO] [stdout] 8 | use std::{any, convert, fmt, io, thread}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around method argument [INFO] [stdout] --> bittorrent-client-demo/src/peer/peer_connection.rs:367:29 [INFO] [stdout] | [INFO] [stdout] 367 | ... (self.download_size as f64 / 1024.0 / 1024.0), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::tracker_response::Peer` [INFO] [stdout] --> bittorrent-client-demo/src/main.rs:26:5 [INFO] [stdout] | [INFO] [stdout] 26 | use crate::tracker_response::Peer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `peers` is never read [INFO] [stdout] --> bittorrent-client-demo/src/main.rs:77:13 [INFO] [stdout] | [INFO] [stdout] 77 | let mut peers = Vec::new(); [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_assignments)]` on by default [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `m` [INFO] [stdout] --> bittorrent-client-demo/src/meta_info.rs:97:32 [INFO] [stdout] | [INFO] [stdout] 97 | &Bencode::Dict(ref m) => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_m` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `url` [INFO] [stdout] --> bittorrent-client-demo/src/tracker.rs:127:17 [INFO] [stdout] | [INFO] [stdout] 127 | let url = link.as_str(); [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_url` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `src` [INFO] [stdout] --> bittorrent-client-demo/src/tracker.rs:194:15 [INFO] [stdout] | [INFO] [stdout] 194 | let (num, src) = { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_src` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `src` [INFO] [stdout] --> bittorrent-client-demo/src/tracker.rs:225:15 [INFO] [stdout] | [INFO] [stdout] 225 | let (num, src) = { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_src` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `time` [INFO] [stdout] --> bittorrent-client-demo/src/tracker.rs:263:9 [INFO] [stdout] | [INFO] [stdout] 263 | let time = &peer_data[8..12]; [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_time` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `download_num` [INFO] [stdout] --> bittorrent-client-demo/src/tracker.rs:265:9 [INFO] [stdout] | [INFO] [stdout] 265 | let download_num = &peer_data[12..16]; [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_download_num` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `upload_num` [INFO] [stdout] --> bittorrent-client-demo/src/tracker.rs:268:9 [INFO] [stdout] | [INFO] [stdout] 268 | let upload_num = &peer_data[16..20]; [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_upload_num` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> bittorrent-client-demo/src/tracker.rs:272:9 [INFO] [stdout] | [INFO] [stdout] 272 | for i in 0..(num - 20) / 6 { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> bittorrent-client-demo/src/tracker.rs:331:9 [INFO] [stdout] | [INFO] [stdout] 331 | for i in 0..(v.len()) { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `port` [INFO] [stdout] --> bittorrent-client-demo/src/tracker.rs:362:18 [INFO] [stdout] | [INFO] [stdout] 362 | fn get_udpsocket(port: &str) -> Option<(UdpSocket, SocketAddr)> { [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] --> bittorrent-client-demo/src/tracker_response.rs:63:21 [INFO] [stdout] | [INFO] [stdout] 63 | Err(e) => return Err(Error::selfError), [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> bittorrent-client-demo/src/tracker_response.rs:123:13 [INFO] [stdout] | [INFO] [stdout] 123 | for i in 0..(v.len() / 6) { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `start` [INFO] [stdout] --> bittorrent-client-demo/src/peer/download.rs:103:13 [INFO] [stdout] | [INFO] [stdout] 103 | let start = SystemTime::now() [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_start` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `num` [INFO] [stdout] --> bittorrent-client-demo/src/peer/peer_connection.rs:242:22 [INFO] [stdout] | [INFO] [stdout] 242 | let (num, hase_pieces) = request; [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_num` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> bittorrent-client-demo/src/peer/peer_connection.rs:248:21 [INFO] [stdout] | [INFO] [stdout] 248 | for i in 0..self.cat_num_list.len() { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> bittorrent-client-demo/src/peer/peer_connection.rs:341:21 [INFO] [stdout] | [INFO] [stdout] 341 | for i in 0..self.request_size { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> bittorrent-client-demo/src/peer/peer_connection.rs:432:25 [INFO] [stdout] | [INFO] [stdout] 432 | for i in 0..self.request_size { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> bittorrent-client-demo/src/main.rs:187:9 [INFO] [stdout] | [INFO] [stdout] 187 | let mut peer_id_prefix = String::from(PEER_ID_PREFIX); [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] --> bittorrent-client-demo/src/meta_info.rs:71:21 [INFO] [stdout] | [INFO] [stdout] 71 | let mut torrent = MetaInfo { [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] --> bittorrent-client-demo/src/meta_info.rs:192:9 [INFO] [stdout] | [INFO] [stdout] 192 | let mut result: MetaInfo = FromBencode::from_bencode(&bencode).unwrap(); [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] --> bittorrent-client-demo/src/tracker.rs:24:9 [INFO] [stdout] | [INFO] [stdout] 24 | let mut info_hash_ascii = torrent.info_hash_ascii.clone().unwrap(); [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] --> bittorrent-client-demo/src/tracker.rs:90:14 [INFO] [stdout] | [INFO] [stdout] 90 | Some(mut v) => v, [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] --> bittorrent-client-demo/src/tracker.rs:106:13 [INFO] [stdout] | [INFO] [stdout] 106 | let mut address = announce.pop().unwrap(); [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] --> bittorrent-client-demo/src/tracker.rs:167:9 [INFO] [stdout] | [INFO] [stdout] 167 | for mut tracker_response in tracker_response_list { [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] --> bittorrent-client-demo/src/tracker.rs:200:9 [INFO] [stdout] | [INFO] [stdout] 200 | let mut input = &mut buffer[0..num]; [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] --> bittorrent-client-demo/src/tracker.rs:231:9 [INFO] [stdout] | [INFO] [stdout] 231 | let mut peer_data = &mut buffer2[0..num]; [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] --> bittorrent-client-demo/src/peer/download.rs:38:13 [INFO] [stdout] | [INFO] [stdout] 38 | let mut torrent; [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] --> bittorrent-client-demo/src/peer/download.rs:40:23 [INFO] [stdout] | [INFO] [stdout] 40 | if let Ok(mut download) = downloader_mutex.lock() { [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] --> bittorrent-client-demo/src/peer/download.rs:61:13 [INFO] [stdout] | [INFO] [stdout] 61 | let mut xc: Vec = piece_list.remove(0); [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] --> bittorrent-client-demo/src/peer/download.rs:97:13 [INFO] [stdout] | [INFO] [stdout] 97 | let mut file = OpenOptions::new() [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] --> bittorrent-client-demo/src/peer/download.rs:109:13 [INFO] [stdout] | [INFO] [stdout] 109 | let mut pieces = vec![]; [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] --> bittorrent-client-demo/src/peer/peer_connection.rs:68:13 [INFO] [stdout] | [INFO] [stdout] 68 | let mut request; [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] --> bittorrent-client-demo/src/peer/peer_connection.rs:70:23 [INFO] [stdout] | [INFO] [stdout] 70 | if let Ok(mut download) = download_mutex.lock() { [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] --> bittorrent-client-demo/src/peer/peer_connection.rs:164:17 [INFO] [stdout] | [INFO] [stdout] 164 | let mut download; [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] --> bittorrent-client-demo/src/peer/peer_connection.rs:234:21 [INFO] [stdout] | [INFO] [stdout] 234 | let mut request; [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] --> bittorrent-client-demo/src/peer/peer_connection.rs:236:31 [INFO] [stdout] | [INFO] [stdout] 236 | if let Ok(mut download) = self.download_mutex.lock() { [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] --> bittorrent-client-demo/src/peer/peer_connection.rs:398:21 [INFO] [stdout] | [INFO] [stdout] 398 | let mut request; [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] --> bittorrent-client-demo/src/peer/peer_connection.rs:400:31 [INFO] [stdout] | [INFO] [stdout] 400 | if let Ok(mut download) = self.download_mutex.lock() { [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] --> bittorrent-client-demo/src/peer/peer_connection.rs:471:13 [INFO] [stdout] | [INFO] [stdout] 471 | let mut incomplete_blocks: Vec<(u32, u32)>; [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] --> bittorrent-client-demo/src/peer/peer_connection.rs:473:23 [INFO] [stdout] | [INFO] [stdout] 473 | if let Ok(mut download) = self.download_mutex.lock() { [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] --> bittorrent-client-demo/src/peer/peer_connection.rs:572:21 [INFO] [stdout] | [INFO] [stdout] 572 | let mut data; [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] --> bittorrent-client-demo/src/tracker_response.rs:85:12 [INFO] [stdout] | [INFO] [stdout] 85 | pub fn new(bytes: &[u8]) -> Result { [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: `defalut` [INFO] [stdout] --> bittorrent-client-demo/src/tracker_response.rs:107:12 [INFO] [stdout] | [INFO] [stdout] 107 | pub fn defalut() -> Peer { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `list_from_bytes` [INFO] [stdout] --> bittorrent-client-demo/src/tracker_response.rs:119:12 [INFO] [stdout] | [INFO] [stdout] 119 | pub fn list_from_bytes(v: &[u8]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `cat_status` [INFO] [stdout] --> bittorrent-client-demo/src/peer/download.rs:127:12 [INFO] [stdout] | [INFO] [stdout] 127 | pub fn cat_status(&mut self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `get_close_connext` [INFO] [stdout] --> bittorrent-client-demo/src/peer/download.rs:139:12 [INFO] [stdout] | [INFO] [stdout] 139 | pub fn get_close_connext(&mut self) -> HashSet { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `peer_channels_num` [INFO] [stdout] --> bittorrent-client-demo/src/peer/download.rs:143:12 [INFO] [stdout] | [INFO] [stdout] 143 | pub fn peer_channels_num(&mut self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `active_peer_reset` [INFO] [stdout] --> bittorrent-client-demo/src/peer/download.rs:147:12 [INFO] [stdout] | [INFO] [stdout] 147 | pub fn active_peer_reset(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `active_peer_connect` [INFO] [stdout] --> bittorrent-client-demo/src/peer/download.rs:150:12 [INFO] [stdout] | [INFO] [stdout] 150 | pub fn active_peer_connect(&mut self) -> HashMap { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 60 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling pendulum v0.3.1 [INFO] [stderr] Compiling bittorrent-protocol v0.3.0-bate (/opt/rustwide/workdir/bittorrent-protocol) [INFO] [stdout] warning: unused `#[macro_use]` import [INFO] [stdout] --> bittorrent-protocol/examples/ex2_disk_add_torrent.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | #[macro_use] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufRead`, `Write`, `self` [INFO] [stdout] --> bittorrent-protocol/examples/ex2_disk_add_torrent.rs:8:15 [INFO] [stdout] | [INFO] [stdout] 8 | use std::io::{self, BufRead, Read, Write}; [INFO] [stdout] | ^^^^ ^^^^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `error`, `log_enabled` [INFO] [stdout] --> bittorrent-protocol/examples/ex2_disk_add_torrent.rs:10:18 [INFO] [stdout] | [INFO] [stdout] 10 | use log::{debug, error, log_enabled, info}; [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Future`, `Sink`, `Stream` [INFO] [stdout] --> bittorrent-protocol/examples/ex2_disk_add_torrent.rs:12:15 [INFO] [stdout] | [INFO] [stdout] 12 | use futures::{Future, Sink, SinkExt, Stream, StreamExt}; [INFO] [stdout] | ^^^^^^ ^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::runtime::Runtime` [INFO] [stdout] --> bittorrent-protocol/examples/ex2_disk_add_torrent.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use tokio::runtime::Runtime; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DiskManager` [INFO] [stdout] --> bittorrent-protocol/examples/ex2_disk_add_torrent.rs:16:33 [INFO] [stdout] | [INFO] [stdout] 16 | use bittorrent_protocol::disk::{DiskManager,DiskManagerBuilder, IDiskMessage, ODiskMessage}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::task::Poll` [INFO] [stdout] --> bittorrent-protocol/examples/ex2_disk_add_torrent.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | use std::task::Poll; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::pin::Pin` [INFO] [stdout] --> bittorrent-protocol/examples/ex2_disk_add_torrent.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | use std::pin::Pin; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `#[macro_use]` import [INFO] [stdout] --> bittorrent-protocol/examples/ex4_utp_socket.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | #[macro_use] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `UtpStream` [INFO] [stdout] --> bittorrent-protocol/examples/ex4_utp_socket.rs:5:32 [INFO] [stdout] | [INFO] [stdout] 5 | use bittorrent_protocol::utp::{UtpStream,UtpSocket}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Read`, `Write` [INFO] [stdout] --> bittorrent-protocol/examples/ex4_utp_socket.rs:6:15 [INFO] [stdout] | [INFO] [stdout] 6 | use std::io::{Read, Write}; [INFO] [stdout] | ^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> bittorrent-protocol/examples/ex2_disk_add_torrent.rs:42:9 [INFO] [stdout] | [INFO] [stdout] 42 | let mut disk_manager = DiskManagerBuilder::new().build(native_fs); [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: unused imports: `DiskManagerStream`, `ODiskMessage` [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/mod.rs:11:47 [INFO] [stdout] | [INFO] [stdout] 11 | BlockMetadata, BlockMut, DiskManagerSink, DiskManagerStream, FileSystem, IDiskMessage, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 12 | ODiskMessage, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `MockHandshaker` [INFO] [stdout] --> bittorrent-protocol/tests/test4_utracker/test_server_drop.rs:4:13 [INFO] [stdout] | [INFO] [stdout] 4 | use super::{MockHandshaker, MockTrackerHandler}; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time::Duration` [INFO] [stdout] --> bittorrent-protocol/tests/test5_handshake/test_filter_allow_all.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::test5_handshake::TimeoutResult` [INFO] [stdout] --> bittorrent-protocol/tests/test5_handshake/test_filter_allow_all.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::test5_handshake::TimeoutResult; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time::Duration` [INFO] [stdout] --> bittorrent-protocol/tests/test5_handshake/test_filter_block_all.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::test5_handshake::TimeoutResult` [INFO] [stdout] --> bittorrent-protocol/tests/test5_handshake/test_filter_block_all.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::test5_handshake::TimeoutResult; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time::Duration` [INFO] [stdout] --> bittorrent-protocol/tests/test5_handshake/test_filter_whitelist_diff_data.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::test5_handshake::TimeoutResult` [INFO] [stdout] --> bittorrent-protocol/tests/test5_handshake/test_filter_whitelist_diff_data.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::test5_handshake::TimeoutResult; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `v` [INFO] [stdout] --> bittorrent-protocol/examples/ex4_utp_socket.rs:21:9 [INFO] [stdout] | [INFO] [stdout] 21 | for v in 0..3{ [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_v` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time::Duration` [INFO] [stdout] --> bittorrent-protocol/tests/test5_handshake/test_filter_whitelist_same_data.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::test5_handshake::TimeoutResult` [INFO] [stdout] --> bittorrent-protocol/tests/test5_handshake/test_filter_whitelist_same_data.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::test5_handshake::TimeoutResult; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `#[macro_use]` import [INFO] [stdout] --> bittorrent-protocol/examples/ex3_dht_get_peer.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | #[macro_use] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `LogLevelFilter`, `LogLevel`, `LogMetadata`, `LogRecord` [INFO] [stdout] --> bittorrent-protocol/examples/ex3_dht_get_peer.rs:6:11 [INFO] [stdout] | [INFO] [stdout] 6 | use log::{LogLevel, LogLevelFilter, LogMetadata, LogRecord}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ToSocketAddrs` [INFO] [stdout] --> bittorrent-protocol/examples/ex3_dht_get_peer.rs:10:52 [INFO] [stdout] | [INFO] [stdout] 10 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, ToSocketAddrs}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufRead`, `self` [INFO] [stdout] --> bittorrent-protocol/examples/ex1_metainfo_create_torrent.rs:2:15 [INFO] [stdout] | [INFO] [stdout] 2 | use std::io::{self, BufRead, Write}; [INFO] [stdout] | ^^^^ ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `LogLevelFilter`, `LogLevel`, `LogMetadata`, `LogRecord` [INFO] [stdout] --> bittorrent-protocol/examples/ex7_select_metadata_download.rs:8:11 [INFO] [stdout] | [INFO] [stdout] 8 | use log::{LogLevel, LogLevelFilter, LogMetadata, LogRecord}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io` [INFO] [stdout] --> bittorrent-protocol/examples/ex6_peer_add_peer.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::io; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bittorrent_protocol::peer::messages::PeerWireProtocolMessage` [INFO] [stdout] --> bittorrent-protocol/examples/ex6_peer_add_peer.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use bittorrent_protocol::peer::messages::PeerWireProtocolMessage; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `#[macro_use]` import [INFO] [stdout] --> bittorrent-protocol/examples/ex5_handshake_torrent.rs:2:1 [INFO] [stdout] | [INFO] [stdout] 2 | #[macro_use] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufRead`, `Write`, `self` [INFO] [stdout] --> bittorrent-protocol/examples/ex5_handshake_torrent.rs:7:15 [INFO] [stdout] | [INFO] [stdout] 7 | use std::io::{self, BufRead, Write}; [INFO] [stdout] | ^^^^ ^^^^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TcpTransport` [INFO] [stdout] --> bittorrent-protocol/examples/ex5_handshake_torrent.rs:12:50 [INFO] [stdout] | [INFO] [stdout] 12 | use bittorrent_protocol::handshake::transports::{TcpTransport,UtpTransport}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused doc comment [INFO] [stdout] --> bittorrent-protocol/examples/ex5_handshake_torrent.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 35 | / /** [INFO] [stdout] 36 | | * bittorrent-protocol/examples_data/file/music.zip info-hash [INFO] [stdout] 37 | | */ [INFO] [stdout] | |_______^ [INFO] [stdout] 38 | let hex_hash = "E5B6BECAFD04BA0A9B7BBE6883A86DEDA731AE3C"; [INFO] [stdout] | ---------------------------------------------------------- rustdoc does not generate documentation for statements [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_doc_comments)]` on by default [INFO] [stdout] = help: use `/* */` for a plain comment [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `pendulum::future::TimerBuilder` [INFO] [stdout] --> bittorrent-protocol/examples/ex7_select_metadata_download.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use pendulum::future::TimerBuilder; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `pendulum::HashedWheelBuilder` [INFO] [stdout] --> bittorrent-protocol/examples/ex7_select_metadata_download.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use pendulum::HashedWheelBuilder; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt::Debug` [INFO] [stdout] --> bittorrent-protocol/examples/ex7_select_metadata_download.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use std::fmt::Debug; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `SocketAddr`, `ToSocketAddrs` [INFO] [stdout] --> bittorrent-protocol/examples/ex7_select_metadata_download.rs:15:16 [INFO] [stdout] | [INFO] [stdout] 15 | use std::net::{SocketAddr, ToSocketAddrs}; [INFO] [stdout] | ^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Receiver`, `Sender` [INFO] [stdout] --> bittorrent-protocol/examples/ex7_select_metadata_download.rs:17:23 [INFO] [stdout] | [INFO] [stdout] 17 | use std::sync::mpsc::{Sender, Receiver}; [INFO] [stdout] | ^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `mpsc` [INFO] [stdout] --> bittorrent-protocol/examples/ex7_select_metadata_download.rs:18:17 [INFO] [stdout] | [INFO] [stdout] 18 | use std::sync::{mpsc, Arc, Mutex}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `DhtBuilder`, `DhtEvent`, `Handshaker as DhtHandshake`, `Router` [INFO] [stdout] --> bittorrent-protocol/examples/ex7_select_metadata_download.rs:22:32 [INFO] [stdout] | [INFO] [stdout] 22 | use bittorrent_protocol::dht::{DhtBuilder, DhtEvent, Handshaker as DhtHandshake, Router}; [INFO] [stdout] | ^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `UtpTransport` [INFO] [stdout] --> bittorrent-protocol/examples/ex7_select_metadata_download.rs:40:63 [INFO] [stdout] | [INFO] [stdout] 40 | use bittorrent_protocol::handshake::transports::{TcpTransport,UtpTransport}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused doc comment [INFO] [stdout] --> bittorrent-protocol/examples/ex7_select_metadata_download.rs:65:9 [INFO] [stdout] | [INFO] [stdout] 65 | / /** [INFO] [stdout] 66 | | * bittorrent-protocol/examples_data/file/music.zip info-hash [INFO] [stdout] 67 | | */ [INFO] [stdout] | |___________^ [INFO] [stdout] 68 | None => "E5B6BECAFD04BA0A9B7BBE6883A86DEDA731AE3C", [INFO] [stdout] | -------------------------------------------------- rustdoc does not generate documentation for match arms [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_doc_comments)]` on by default [INFO] [stdout] = help: use `/* */` for a plain comment [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `#[macro_use]` import [INFO] [stdout] --> bittorrent-protocol/examples/ex4_utpcat.rs:2:1 [INFO] [stdout] | [INFO] [stdout] 2 | #[macro_use] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::atomic::ATOMIC_USIZE_INIT`: the `new` function is now preferred [INFO] [stdout] --> bittorrent-protocol/tests/test6_utp/mod.rs:11:42 [INFO] [stdout] | [INFO] [stdout] 11 | use std::sync::atomic::{AtomicUsize, ATOMIC_USIZE_INIT, Ordering}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::atomic::ATOMIC_USIZE_INIT`: the `new` function is now preferred [INFO] [stdout] --> bittorrent-protocol/tests/test6_utp/mod.rs:12:39 [INFO] [stdout] | [INFO] [stdout] 12 | static NEXT_OFFSET: AtomicUsize = ATOMIC_USIZE_INIT; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace the use of the deprecated constant: `AtomicUsize::new(0)` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::cell::RefCell` [INFO] [stdout] --> bittorrent-protocol/examples/ex8_simple_file_download.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use std::cell::RefCell; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::rc::Rc` [INFO] [stdout] --> bittorrent-protocol/examples/ex8_simple_file_download.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use std::rc::Rc; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Receiver`, `Sender` [INFO] [stdout] --> bittorrent-protocol/examples/ex8_simple_file_download.rs:13:28 [INFO] [stdout] | [INFO] [stdout] 13 | use std::sync::mpsc::{self,Sender, Receiver}; [INFO] [stdout] | ^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `chrono::Local` [INFO] [stdout] --> bittorrent-protocol/examples/ex8_simple_file_download.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | use chrono::Local; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `LogLevelFilter`, `LogLevel`, `LogMetadata`, `LogRecord` [INFO] [stdout] --> bittorrent-protocol/examples/ex8_simple_file_download.rs:17:11 [INFO] [stdout] | [INFO] [stdout] 17 | use log::{LogLevel, LogLevelFilter, LogMetadata, LogRecord}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `UtpTransport` [INFO] [stdout] --> bittorrent-protocol/examples/ex8_simple_file_download.rs:23:63 [INFO] [stdout] | [INFO] [stdout] 23 | use bittorrent_protocol::handshake::transports::{TcpTransport,UtpTransport}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bittorrent_protocol::utp::UtpSocket` [INFO] [stdout] --> bittorrent-protocol/examples/ex8_simple_file_download.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 38 | use bittorrent_protocol::utp::UtpSocket; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `s` [INFO] [stdout] --> bittorrent-protocol/examples/ex5_handshake_torrent.rs:65:37 [INFO] [stdout] | [INFO] [stdout] 65 | let (pro,ext,hash, peer_id,addr,s) = completemessage.into_parts(); [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `error` [INFO] [stdout] --> bittorrent-protocol/examples/ex7_select_metadata_download.rs:166:55 [INFO] [stdout] | [INFO] [stdout] 166 | OPeerManagerMessage::PeerError(info, error) => { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_error` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> bittorrent-protocol/examples/ex7_select_metadata_download.rs:107:9 [INFO] [stdout] | [INFO] [stdout] 107 | let mut uber_module = Arc::new(Mutex::new(UberModuleBuilder::new() [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] --> bittorrent-protocol/examples/ex7_select_metadata_download.rs:143:9 [INFO] [stdout] | [INFO] [stdout] 143 | let mut uber_module_clone = uber_module.clone(); [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] --> bittorrent-protocol/examples/ex7_select_metadata_download.rs:202:9 [INFO] [stdout] | [INFO] [stdout] 202 | let mut uber_module_clone = uber_module.clone(); [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/contiguous.rs:158:5 [INFO] [stdout] | [INFO] [stdout] 158 | fn positive_write_no_buffers() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/contiguous.rs:165:5 [INFO] [stdout] | [INFO] [stdout] 165 | fn positive_write_single_buffer_partially_filled() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/contiguous.rs:175:5 [INFO] [stdout] | [INFO] [stdout] 175 | fn positive_write_single_buffer_completely_filled() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/contiguous.rs:185:5 [INFO] [stdout] | [INFO] [stdout] 185 | fn positive_write_mutliple_buffers_partially_filled() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/contiguous.rs:197:5 [INFO] [stdout] | [INFO] [stdout] 197 | fn positive_write_multiple_buffers_completely_filled() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/contiguous.rs:209:5 [INFO] [stdout] | [INFO] [stdout] 209 | fn positive_read_no_buffers() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/contiguous.rs:221:5 [INFO] [stdout] | [INFO] [stdout] 221 | fn positive_read_single_buffer_empty() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/contiguous.rs:234:5 [INFO] [stdout] | [INFO] [stdout] 234 | fn positive_read_multiple_buffers_empty() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/contiguous.rs:248:5 [INFO] [stdout] | [INFO] [stdout] 248 | fn positive_read_single_buffer_partially_filled() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/contiguous.rs:265:5 [INFO] [stdout] | [INFO] [stdout] 265 | fn positive_read_single_buffer_completely_filled() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/contiguous.rs:282:5 [INFO] [stdout] | [INFO] [stdout] 282 | fn positive_read_mutliple_buffers_partially_filled() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/contiguous.rs:301:5 [INFO] [stdout] | [INFO] [stdout] 301 | fn positive_read_multiple_buffers_completely_filled() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/convert.rs:164:5 [INFO] [stdout] | [INFO] [stdout] 164 | fn positive_port_to_bytes_be() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/convert.rs:174:5 [INFO] [stdout] | [INFO] [stdout] 174 | fn positive_sock_v4_to_bytes_be() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/convert.rs:184:5 [INFO] [stdout] | [INFO] [stdout] 184 | fn positive_sock_v6_to_bytes_be() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/convert.rs:213:5 [INFO] [stdout] | [INFO] [stdout] 213 | fn positive_four_bytes_to_array() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/convert.rs:230:5 [INFO] [stdout] | [INFO] [stdout] 230 | fn positive_eight_bytes_to_array() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/convert.rs:247:5 [INFO] [stdout] | [INFO] [stdout] 247 | fn positive_ipv4_to_bytes_be() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/convert.rs:257:5 [INFO] [stdout] | [INFO] [stdout] 257 | fn positive_ipv6_to_bytes_be() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/convert.rs:271:5 [INFO] [stdout] | [INFO] [stdout] 271 | fn positive_bytes_be_to_ipv4() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/convert.rs:281:5 [INFO] [stdout] | [INFO] [stdout] 281 | fn positive_bytes_be_to_ipv6() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/convert.rs:291:5 [INFO] [stdout] | [INFO] [stdout] 291 | fn positive_bytes_be_to_port() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/convert.rs:300:5 [INFO] [stdout] | [INFO] [stdout] 300 | fn positive_bytes_be_to_sock_v4() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/convert.rs:310:5 [INFO] [stdout] | [INFO] [stdout] 310 | fn positive_bytes_be_to_sock_v6() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/send/split_sender.rs:112:5 [INFO] [stdout] | [INFO] [stdout] 112 | fn positive_send_zero_capacity() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/send/split_sender.rs:121:5 [INFO] [stdout] | [INFO] [stdout] 121 | fn positive_send_one_capacity() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/sha/mod.rs:183:5 [INFO] [stdout] | [INFO] [stdout] 183 | fn positive_no_leading_zeroes() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/sha/mod.rs:194:5 [INFO] [stdout] | [INFO] [stdout] 194 | fn positive_all_leading_zeroes() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/sha/mod.rs:205:5 [INFO] [stdout] | [INFO] [stdout] 205 | fn positive_one_leading_zero() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/sha/mod.rs:219:5 [INFO] [stdout] | [INFO] [stdout] 219 | fn positive_one_trailing_zero() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/sha/mod.rs:234:5 [INFO] [stdout] | [INFO] [stdout] 234 | fn negative_from_hash_too_long() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/sha/mod.rs:242:5 [INFO] [stdout] | [INFO] [stdout] 242 | fn negative_from_hash_too_short() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/trans/locally_shuffled.rs:95:5 [INFO] [stdout] | [INFO] [stdout] 95 | fn positive_single_prealloc_u8_overflow() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/trans/locally_shuffled.rs:115:5 [INFO] [stdout] | [INFO] [stdout] 115 | fn positive_multiple_prealloc_u8_overflow() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/trans/locally_shuffled.rs:135:5 [INFO] [stdout] | [INFO] [stdout] 135 | fn positive_single_prealloc_i8_overflow() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/trans/locally_shuffled.rs:155:5 [INFO] [stdout] | [INFO] [stdout] 155 | fn positive_multiple_prealloc_i8_overflow() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/trans/locally_shuffled.rs:175:5 [INFO] [stdout] | [INFO] [stdout] 175 | fn positive_single_prealloc_u32_no_overflow() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/trans/locally_shuffled.rs:191:5 [INFO] [stdout] | [INFO] [stdout] 191 | fn positive_multiple_prealloc_u32_no_overflow() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/trans/old.rs:100:5 [INFO] [stdout] | [INFO] [stdout] 100 | fn positive_single_prealloc_u8_overflow() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/trans/old.rs:120:5 [INFO] [stdout] | [INFO] [stdout] 120 | fn positive_multiple_prealloc_u8_overflow() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/trans/old.rs:140:5 [INFO] [stdout] | [INFO] [stdout] 140 | fn positive_single_prealloc_i8_overflow() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/trans/old.rs:160:5 [INFO] [stdout] | [INFO] [stdout] 160 | fn positive_multiple_prealloc_i8_overflow() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/trans/old.rs:180:5 [INFO] [stdout] | [INFO] [stdout] 180 | fn positive_single_prealloc_u32_no_overflow() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `with_buffer_capacity` found for struct `DiskManagerBuilder` in the current scope [INFO] [stdout] --> bittorrent-protocol/examples/ex8_simple_file_download.rs:171:10 [INFO] [stdout] | [INFO] [stdout] 171 | .with_buffer_capacity(100) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: there is an associated function with a similar name: `sink_buffer_capacity` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/trans/old.rs:196:5 [INFO] [stdout] | [INFO] [stdout] 196 | fn positive_multiple_prealloc_u32_no_overflow() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/trans/old.rs:212:5 [INFO] [stdout] | [INFO] [stdout] 212 | fn positive_multiple_prealloc_u32_overflow() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/trans/sequential.rs:47:5 [INFO] [stdout] | [INFO] [stdout] 47 | fn positive_sequentail_zero_initial() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/trans/sequential.rs:54:5 [INFO] [stdout] | [INFO] [stdout] 54 | fn positive_sequential_u8_overflow() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/trans/sequential.rs:66:5 [INFO] [stdout] | [INFO] [stdout] 66 | fn positive_sequentail_start_at() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/util/mod.rs:64:5 [INFO] [stdout] | [INFO] [stdout] 64 | fn positive_fisher_shuffle() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/mutable/bencode_mut.rs:149:5 [INFO] [stdout] | [INFO] [stdout] 149 | fn positive_int_encode() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/mutable/bencode_mut.rs:157:5 [INFO] [stdout] | [INFO] [stdout] 157 | fn positive_bytes_encode() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/mutable/bencode_mut.rs:165:5 [INFO] [stdout] | [INFO] [stdout] 165 | fn positive_empty_list_encode() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/mutable/bencode_mut.rs:173:5 [INFO] [stdout] | [INFO] [stdout] 173 | fn positive_nonempty_list_encode() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/mutable/bencode_mut.rs:186:5 [INFO] [stdout] | [INFO] [stdout] 186 | fn positive_empty_dict_encode() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/mutable/bencode_mut.rs:194:5 [INFO] [stdout] | [INFO] [stdout] 194 | fn positive_nonempty_dict_encode() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/bencode_ref.rs:136:5 [INFO] [stdout] | [INFO] [stdout] 136 | fn positive_int_buffer() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/bencode_ref.rs:144:5 [INFO] [stdout] | [INFO] [stdout] 144 | fn positive_bytes_buffer() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/bencode_ref.rs:152:5 [INFO] [stdout] | [INFO] [stdout] 152 | fn positive_list_buffer() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/bencode_ref.rs:160:5 [INFO] [stdout] | [INFO] [stdout] 160 | fn positive_dict_buffer() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/bencode_ref.rs:168:5 [INFO] [stdout] | [INFO] [stdout] 168 | fn positive_list_nested_int_buffer() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/bencode_ref.rs:180:5 [INFO] [stdout] | [INFO] [stdout] 180 | fn positive_dict_nested_int_buffer() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/bencode_ref.rs:192:5 [INFO] [stdout] | [INFO] [stdout] 192 | fn positive_list_nested_bytes_buffer() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/bencode_ref.rs:204:5 [INFO] [stdout] | [INFO] [stdout] 204 | fn positive_dict_nested_bytes_buffer() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/bencode_ref.rs:216:5 [INFO] [stdout] | [INFO] [stdout] 216 | fn positive_list_nested_list_buffer() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/bencode_ref.rs:228:5 [INFO] [stdout] | [INFO] [stdout] 228 | fn positive_dict_nested_list_buffer() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/bencode_ref.rs:240:5 [INFO] [stdout] | [INFO] [stdout] 240 | fn positive_list_nested_dict_buffer() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/bencode_ref.rs:252:5 [INFO] [stdout] | [INFO] [stdout] 252 | fn positive_dict_nested_dict_buffer() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/decode.rs:250:5 [INFO] [stdout] | [INFO] [stdout] 250 | fn positive_decode_general() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/decode.rs:285:5 [INFO] [stdout] | [INFO] [stdout] 285 | fn positive_decode_recursion() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/decode.rs:292:5 [INFO] [stdout] | [INFO] [stdout] 292 | fn positive_decode_bytes_utf8() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/decode.rs:299:5 [INFO] [stdout] | [INFO] [stdout] 299 | fn positive_decode_dict() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/decode.rs:328:5 [INFO] [stdout] | [INFO] [stdout] 328 | fn positive_decode_list() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/decode.rs:352:5 [INFO] [stdout] | [INFO] [stdout] 352 | fn positive_decode_bytes() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/decode.rs:363:5 [INFO] [stdout] | [INFO] [stdout] 363 | fn positive_decode_bytes_zero_len() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/decode.rs:369:5 [INFO] [stdout] | [INFO] [stdout] 369 | fn positive_decode_int() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/decode.rs:377:5 [INFO] [stdout] | [INFO] [stdout] 377 | fn positive_decode_int_negative() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/decode.rs:385:5 [INFO] [stdout] | [INFO] [stdout] 385 | fn positive_decode_int_zero() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/decode.rs:393:5 [INFO] [stdout] | [INFO] [stdout] 393 | fn positive_decode_partial() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/decode.rs:401:5 [INFO] [stdout] | [INFO] [stdout] 401 | fn positive_decode_dict_unordered_keys() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/decode.rs:407:5 [INFO] [stdout] | [INFO] [stdout] 407 | fn negative_decode_bytes_neg_len() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/decode.rs:413:5 [INFO] [stdout] | [INFO] [stdout] 413 | fn negative_decode_bytes_extra() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/decode.rs:419:5 [INFO] [stdout] | [INFO] [stdout] 419 | fn negative_decode_bytes_not_utf8() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/decode.rs:427:5 [INFO] [stdout] | [INFO] [stdout] 427 | fn negative_decode_int_nan() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/decode.rs:435:5 [INFO] [stdout] | [INFO] [stdout] 435 | fn negative_decode_int_leading_zero() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/decode.rs:443:5 [INFO] [stdout] | [INFO] [stdout] 443 | fn negative_decode_int_double_zero() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/decode.rs:451:5 [INFO] [stdout] | [INFO] [stdout] 451 | fn negative_decode_int_negative_zero() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/decode.rs:459:5 [INFO] [stdout] | [INFO] [stdout] 459 | fn negative_decode_int_double_negative() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/decode.rs:467:5 [INFO] [stdout] | [INFO] [stdout] 467 | fn negative_decode_dict_unordered_keys() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/decode.rs:473:5 [INFO] [stdout] | [INFO] [stdout] 473 | fn negative_decode_dict_dup_keys_same_data() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/decode.rs:479:5 [INFO] [stdout] | [INFO] [stdout] 479 | fn negative_decode_dict_dup_keys_diff_data() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `send` found for struct `DiskManagerSink` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/mod.rs:50:10 [INFO] [stdout] | [INFO] [stdout] 50 | .send(IDiskMessage::ProcessBlock(block.into())) [INFO] [stdout] | ^^^^ method not found in `DiskManagerSink` [INFO] [stdout] | [INFO] [stdout] ::: /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.15/src/sink/mod.rs:220:8 [INFO] [stdout] | [INFO] [stdout] 220 | fn send(&mut self, item: Item) -> Send<'_, Self, Item> [INFO] [stdout] | ---- the method is available for `DiskManagerSink` here [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is in scope [INFO] [stdout] = note: the following trait is implemented but not in scope; perhaps add a `use` for it: [INFO] [stdout] `use futures_util::sink::SinkExt;` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/disk/tasks/helpers/piece_checker.rs:378:5 [INFO] [stdout] | [INFO] [stdout] 378 | fn positive_merge_duplicate_messages() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/disk/tasks/helpers/piece_checker.rs:387:5 [INFO] [stdout] | [INFO] [stdout] 387 | fn negative_merge_duplicate_messages_diff_hash() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/disk/tasks/helpers/piece_checker.rs:397:5 [INFO] [stdout] | [INFO] [stdout] 397 | fn negative_merge_duplicate_messages_diff_index() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/disk/tasks/helpers/piece_checker.rs:407:5 [INFO] [stdout] | [INFO] [stdout] 407 | fn positive_merge_no_overlap_messages() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/disk/tasks/helpers/piece_checker.rs:417:5 [INFO] [stdout] | [INFO] [stdout] 417 | fn positive_merge_overlap_messages() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/disk/tasks/helpers/piece_checker.rs:428:5 [INFO] [stdout] | [INFO] [stdout] 428 | fn positive_merge_neighbor_messages() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/magnet/mod.rs:135:5 [INFO] [stdout] | [INFO] [stdout] 135 | fn test_wikipedia() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/magnet/mod.rs:178:5 [INFO] [stdout] | [INFO] [stdout] 178 | fn test_tpb() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/metainfo/builder/worker.rs:339:5 [INFO] [stdout] | [INFO] [stdout] 339 | fn positive_piece_length_divisible_region_single_thread() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/metainfo/builder/worker.rs:349:5 [INFO] [stdout] | [INFO] [stdout] 349 | fn positive_piece_length_divisible_region_multiple_threads() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/metainfo/builder/worker.rs:359:5 [INFO] [stdout] | [INFO] [stdout] 359 | fn positive_piece_length_undivisible_region_single_thread() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/metainfo/builder/worker.rs:369:5 [INFO] [stdout] | [INFO] [stdout] 369 | fn positive_piece_length_undivisible_region_multiple_threads() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/metainfo/builder/worker.rs:379:5 [INFO] [stdout] | [INFO] [stdout] 379 | fn positive_piece_length_divisible_regions_single_thread() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/metainfo/builder/worker.rs:395:5 [INFO] [stdout] | [INFO] [stdout] 395 | fn positive_piece_length_divisible_regions_multiple_threads() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/metainfo/builder/worker.rs:411:5 [INFO] [stdout] | [INFO] [stdout] 411 | fn positive_piece_length_undivisible_regions_single_thread() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/metainfo/builder/worker.rs:428:5 [INFO] [stdout] | [INFO] [stdout] 428 | fn positive_piece_length_undivisible_regions_multiple_threads() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/metainfo/metainfo.rs:664:5 [INFO] [stdout] | [INFO] [stdout] 664 | fn positive_parse_from_single_file() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/metainfo/metainfo.rs:687:5 [INFO] [stdout] | [INFO] [stdout] 687 | fn positive_parse_from_multi_file() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/metainfo/metainfo.rs:717:5 [INFO] [stdout] | [INFO] [stdout] 717 | fn positive_parse_from_multi_files() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/metainfo/metainfo.rs:754:5 [INFO] [stdout] | [INFO] [stdout] 754 | fn positive_parse_from_empty_pieces() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/metainfo/metainfo.rs:777:5 [INFO] [stdout] | [INFO] [stdout] 777 | fn positive_parse_with_creation_date() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/metainfo/metainfo.rs:802:5 [INFO] [stdout] | [INFO] [stdout] 802 | fn positive_parse_with_comment() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/metainfo/metainfo.rs:827:5 [INFO] [stdout] | [INFO] [stdout] 827 | fn positive_parse_with_created_by() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/metainfo/metainfo.rs:852:5 [INFO] [stdout] | [INFO] [stdout] 852 | fn positive_parse_with_encoding() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/metainfo/metainfo.rs:877:5 [INFO] [stdout] | [INFO] [stdout] 877 | fn positive_parse_with_private_zero() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/metainfo/metainfo.rs:902:5 [INFO] [stdout] | [INFO] [stdout] 902 | fn positive_parse_with_private_one() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `send` found for struct `DiskManagerSink` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/add_torrent.rs:28:10 [INFO] [stdout] | [INFO] [stdout] 28 | send.send(IDiskMessage::AddTorrent(metainfo_file)).unwrap(); [INFO] [stdout] | ^^^^ method not found in `DiskManagerSink` [INFO] [stdout] | [INFO] [stdout] ::: /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.15/src/sink/mod.rs:220:8 [INFO] [stdout] | [INFO] [stdout] 220 | fn send(&mut self, item: Item) -> Send<'_, Self, Item> [INFO] [stdout] | ---- the method is available for `DiskManagerSink` here [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is in scope [INFO] [stdout] = note: the following trait is implemented but not in scope; perhaps add a `use` for it: [INFO] [stdout] `use futures_util::sink::SinkExt;` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/metainfo/metainfo.rs:927:5 [INFO] [stdout] | [INFO] [stdout] 927 | fn positive_parse_with_private_non_zero() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/metainfo/metainfo.rs:952:5 [INFO] [stdout] | [INFO] [stdout] 952 | fn positive_parse_with_no_main_tracker() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/metainfo/metainfo.rs:975:5 [INFO] [stdout] | [INFO] [stdout] 975 | fn negative_parse_from_empty_bytes() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/metainfo/metainfo.rs:981:5 [INFO] [stdout] | [INFO] [stdout] 981 | fn negative_parse_with_no_piece_length() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/metainfo/metainfo.rs:1006:5 [INFO] [stdout] | [INFO] [stdout] 1006 | fn negative_parse_with_no_pieces() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/metainfo/metainfo.rs:1029:5 [INFO] [stdout] | [INFO] [stdout] 1029 | fn negative_parse_from_single_file_with_no_file_length() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/metainfo/metainfo.rs:1052:5 [INFO] [stdout] | [INFO] [stdout] 1052 | fn negative_parse_from_single_file_with_no_file_name() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/bencode/decode.rs:408:5 [INFO] [stdout] | [INFO] [stdout] 408 | fn positive_decode_general() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/bencode/decode.rs:443:5 [INFO] [stdout] | [INFO] [stdout] 443 | fn positive_decode_recursion() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/bencode/decode.rs:450:5 [INFO] [stdout] | [INFO] [stdout] 450 | fn positive_decode_bytes_utf8() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/bencode/decode.rs:457:5 [INFO] [stdout] | [INFO] [stdout] 457 | fn positive_decode_dict() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `next` found for struct `DiskManagerStream` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/add_torrent.rs:34:24 [INFO] [stdout] | [INFO] [stdout] 34 | let msg = recv.next().unwrap(); [INFO] [stdout] | ^^^^ method not found in `DiskManagerStream` [INFO] [stdout] | [INFO] [stdout] ::: /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.15/src/stream/stream/mod.rs:236:8 [INFO] [stdout] | [INFO] [stdout] 236 | fn next(&mut self) -> Next<'_, Self> [INFO] [stdout] | ---- the method is available for `DiskManagerStream` here [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is in scope [INFO] [stdout] = note: the following trait is implemented but not in scope; perhaps add a `use` for it: [INFO] [stdout] `use futures_util::stream::stream::StreamExt;` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/bencode/decode.rs:486:5 [INFO] [stdout] | [INFO] [stdout] 486 | fn positive_decode_list() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/bencode/decode.rs:510:5 [INFO] [stdout] | [INFO] [stdout] 510 | fn positive_decode_bytes() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/bencode/decode.rs:521:5 [INFO] [stdout] | [INFO] [stdout] 521 | fn positive_decode_bytes_zero_len() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/bencode/decode.rs:527:5 [INFO] [stdout] | [INFO] [stdout] 527 | fn positive_decode_int() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/bencode/decode.rs:535:5 [INFO] [stdout] | [INFO] [stdout] 535 | fn positive_decode_int_negative() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/bencode/decode.rs:543:5 [INFO] [stdout] | [INFO] [stdout] 543 | fn positive_decode_int_zero() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/bencode/decode.rs:552:5 [INFO] [stdout] | [INFO] [stdout] 552 | fn negative_decode_bytes_neg_len() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/bencode/decode.rs:558:5 [INFO] [stdout] | [INFO] [stdout] 558 | fn negative_decode_bytes_extra() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/bencode/decode.rs:564:5 [INFO] [stdout] | [INFO] [stdout] 564 | fn negative_decode_bytes_not_utf8() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/bencode/decode.rs:572:5 [INFO] [stdout] | [INFO] [stdout] 572 | fn negative_decode_int_nan() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/bencode/decode.rs:580:5 [INFO] [stdout] | [INFO] [stdout] 580 | fn negative_decode_int_leading_zero() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/bencode/decode.rs:588:5 [INFO] [stdout] | [INFO] [stdout] 588 | fn negative_decode_int_double_zero() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/bencode/decode.rs:596:5 [INFO] [stdout] | [INFO] [stdout] 596 | fn negative_decode_int_negative_zero() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/bencode/decode.rs:604:5 [INFO] [stdout] | [INFO] [stdout] 604 | fn negative_decode_int_double_negative() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/bencode/decode.rs:612:5 [INFO] [stdout] | [INFO] [stdout] 612 | fn negative_decode_dict_unordered_keys() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/bencode/decode.rs:618:5 [INFO] [stdout] | [INFO] [stdout] 618 | fn negative_decode_dict_dup_keys_same_data() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/bencode/decode.rs:624:5 [INFO] [stdout] | [INFO] [stdout] 624 | fn negative_decode_dict_dup_keys_diff_data() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to previous error; 7 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0599`. [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/message/compact_info.rs:185:5 [INFO] [stdout] | [INFO] [stdout] 185 | fn positive_compact_nodes_empty() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/message/compact_info.rs:193:5 [INFO] [stdout] | [INFO] [stdout] 193 | fn positive_compact_nodes_one() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] error: could not compile `bittorrent-protocol` due to 2 previous errors; 7 warnings emitted [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/message/compact_info.rs:213:5 [INFO] [stdout] | [INFO] [stdout] 213 | fn positive_compact_nodes_many() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `send` found for struct `DiskManagerSink` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/complete_torrent.rs:29:10 [INFO] [stdout] | [INFO] [stdout] 29 | .send(IDiskMessage::AddTorrent(metainfo_file.clone())) [INFO] [stdout] | ^^^^ method not found in `DiskManagerSink` [INFO] [stdout] | [INFO] [stdout] ::: /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.15/src/sink/mod.rs:220:8 [INFO] [stdout] | [INFO] [stdout] 220 | fn send(&mut self, item: Item) -> Send<'_, Self, Item> [INFO] [stdout] | ---- the method is available for `DiskManagerSink` here [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is in scope [INFO] [stdout] = note: the following trait is implemented but not in scope; perhaps add a `use` for it: [INFO] [stdout] `use futures_util::sink::SinkExt;` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `next` found for struct `DiskManagerStream` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/complete_torrent.rs:36:20 [INFO] [stdout] | [INFO] [stdout] 36 | match recv.next().unwrap() { [INFO] [stdout] | ^^^^ method not found in `DiskManagerStream` [INFO] [stdout] | [INFO] [stdout] ::: /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.15/src/stream/stream/mod.rs:236:8 [INFO] [stdout] | [INFO] [stdout] 236 | fn next(&mut self) -> Next<'_, Self> [INFO] [stdout] | ---- the method is available for `DiskManagerStream` here [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is in scope [INFO] [stdout] = note: the following trait is implemented but not in scope; perhaps add a `use` for it: [INFO] [stdout] `use futures_util::stream::stream::StreamExt;` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/message/compact_info.rs:243:5 [INFO] [stdout] | [INFO] [stdout] 243 | fn positive_compact_values_empty() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `next` found for struct `DiskManagerStream` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/complete_torrent.rs:138:24 [INFO] [stdout] | [INFO] [stdout] 138 | let msg = recv.next().unwrap(); [INFO] [stdout] | ^^^^ method not found in `DiskManagerStream` [INFO] [stdout] | [INFO] [stdout] ::: /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.15/src/stream/stream/mod.rs:236:8 [INFO] [stdout] | [INFO] [stdout] 236 | fn next(&mut self) -> Next<'_, Self> [INFO] [stdout] | ---- the method is available for `DiskManagerStream` here [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is in scope [INFO] [stdout] = note: the following trait is implemented but not in scope; perhaps add a `use` for it: [INFO] [stdout] `use futures_util::stream::stream::StreamExt;` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/message/compact_info.rs:253:5 [INFO] [stdout] | [INFO] [stdout] 253 | fn positive_compact_values_one() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/message/compact_info.rs:268:5 [INFO] [stdout] | [INFO] [stdout] 268 | fn positive_compact_values_many() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `next` found for struct `DiskManagerStream` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/complete_torrent.rs:201:24 [INFO] [stdout] | [INFO] [stdout] 201 | let msg = recv.next().unwrap(); [INFO] [stdout] | ^^^^ method not found in `DiskManagerStream` [INFO] [stdout] | [INFO] [stdout] ::: /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.15/src/stream/stream/mod.rs:236:8 [INFO] [stdout] | [INFO] [stdout] 236 | fn next(&mut self) -> Next<'_, Self> [INFO] [stdout] | ---- the method is available for `DiskManagerStream` here [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is in scope [INFO] [stdout] = note: the following trait is implemented but not in scope; perhaps add a `use` for it: [INFO] [stdout] `use futures_util::stream::stream::StreamExt;` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/routing/bucket.rs:170:5 [INFO] [stdout] | [INFO] [stdout] 170 | fn positive_initial_no_nodes() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/routing/bucket.rs:178:5 [INFO] [stdout] | [INFO] [stdout] 178 | fn positive_all_questionable_nodes() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/routing/bucket.rs:193:5 [INFO] [stdout] | [INFO] [stdout] 193 | fn positive_all_good_nodes() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/routing/bucket.rs:208:5 [INFO] [stdout] | [INFO] [stdout] 208 | fn positive_replace_questionable_node() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/routing/bucket.rs:230:5 [INFO] [stdout] | [INFO] [stdout] 230 | fn positive_resist_good_node_churn() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/routing/bucket.rs:264:5 [INFO] [stdout] | [INFO] [stdout] 264 | fn positive_resist_questionable_node_churn() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/routing/node.rs:266:5 [INFO] [stdout] | [INFO] [stdout] 266 | fn positive_encode_node() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/routing/node.rs:292:5 [INFO] [stdout] | [INFO] [stdout] 292 | fn positive_as_bad() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/routing/node.rs:302:5 [INFO] [stdout] | [INFO] [stdout] 302 | fn positive_as_questionable() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/routing/node.rs:312:5 [INFO] [stdout] | [INFO] [stdout] 312 | fn positive_as_good() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/routing/node.rs:322:5 [INFO] [stdout] | [INFO] [stdout] 322 | fn positive_response_renewal() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/routing/node.rs:334:5 [INFO] [stdout] | [INFO] [stdout] 334 | fn positive_request_renewal() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/routing/node.rs:346:5 [INFO] [stdout] | [INFO] [stdout] 346 | fn positive_node_idle() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/routing/node.rs:361:5 [INFO] [stdout] | [INFO] [stdout] 361 | fn positive_node_idle_reqeusts() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/routing/node.rs:375:5 [INFO] [stdout] | [INFO] [stdout] 375 | fn positive_good_status_ordering() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/routing/node.rs:382:5 [INFO] [stdout] | [INFO] [stdout] 382 | fn positive_questionable_status_ordering() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/routing/node.rs:389:5 [INFO] [stdout] | [INFO] [stdout] 389 | fn positive_bad_status_ordering() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/routing/table.rs:475:5 [INFO] [stdout] | [INFO] [stdout] 475 | fn positive_add_node_max_recursion() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `with_buffer_capacity` found for struct `DiskManagerBuilder` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/disk_manager_send_backpressure.rs:27:10 [INFO] [stdout] | [INFO] [stdout] 27 | .with_buffer_capacity(1) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: there is an associated function with a similar name: `sink_buffer_capacity` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/routing/table.rs:494:5 [INFO] [stdout] | [INFO] [stdout] 494 | fn positive_initial_empty_buckets() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/routing/table.rs:519:5 [INFO] [stdout] | [INFO] [stdout] 519 | fn positive_first_bucket_sorted() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `send` found for struct `DiskManagerSink` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/load_block.rs:47:10 [INFO] [stdout] | [INFO] [stdout] 47 | .send(IDiskMessage::AddTorrent(metainfo_file)) [INFO] [stdout] | ^^^^ method not found in `DiskManagerSink` [INFO] [stdout] | [INFO] [stdout] ::: /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.15/src/sink/mod.rs:220:8 [INFO] [stdout] | [INFO] [stdout] 220 | fn send(&mut self, item: Item) -> Send<'_, Self, Item> [INFO] [stdout] | ---- the method is available for `DiskManagerSink` here [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is in scope [INFO] [stdout] = note: the following trait is implemented but not in scope; perhaps add a `use` for it: [INFO] [stdout] `use futures_util::sink::SinkExt;` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/routing/table.rs:567:5 [INFO] [stdout] | [INFO] [stdout] 567 | fn positive_last_bucket_sorted() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/routing/table.rs:613:5 [INFO] [stdout] | [INFO] [stdout] 613 | fn positive_all_sorted_buckets() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/routing/table.rs:638:5 [INFO] [stdout] | [INFO] [stdout] 638 | fn negative_node_id_equal_table_id() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `next` found for struct `DiskManagerStream` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/load_block.rs:51:24 [INFO] [stdout] | [INFO] [stdout] 51 | let msg = recv.next().unwrap(); [INFO] [stdout] | ^^^^ method not found in `DiskManagerStream` [INFO] [stdout] | [INFO] [stdout] ::: /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.15/src/stream/stream/mod.rs:236:8 [INFO] [stdout] | [INFO] [stdout] 236 | fn next(&mut self) -> Next<'_, Self> [INFO] [stdout] | ---- the method is available for `DiskManagerStream` here [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is in scope [INFO] [stdout] = note: the following trait is implemented but not in scope; perhaps add a `use` for it: [INFO] [stdout] `use futures_util::stream::stream::StreamExt;` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `send` found for struct `DiskManagerSink` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/load_block.rs:55:22 [INFO] [stdout] | [INFO] [stdout] 55 | .send(IDiskMessage::ProcessBlock(process_block.clone())) [INFO] [stdout] | ^^^^ method not found in `DiskManagerSink` [INFO] [stdout] | [INFO] [stdout] ::: /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.15/src/sink/mod.rs:220:8 [INFO] [stdout] | [INFO] [stdout] 220 | fn send(&mut self, item: Item) -> Send<'_, Self, Item> [INFO] [stdout] | ---- the method is available for `DiskManagerSink` here [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is in scope [INFO] [stdout] = note: the following trait is implemented but not in scope; perhaps add a `use` for it: [INFO] [stdout] `use futures_util::sink::SinkExt;` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/security.rs:157:5 [INFO] [stdout] | [INFO] [stdout] 157 | fn positive_generate_compliant_ipv4_test_one() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `send` found for struct `DiskManagerSink` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/load_block.rs:62:22 [INFO] [stdout] | [INFO] [stdout] 62 | .send(IDiskMessage::LoadBlock(load_block.clone())) [INFO] [stdout] | ^^^^ method not found in `DiskManagerSink` [INFO] [stdout] | [INFO] [stdout] ::: /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.15/src/sink/mod.rs:220:8 [INFO] [stdout] | [INFO] [stdout] 220 | fn send(&mut self, item: Item) -> Send<'_, Self, Item> [INFO] [stdout] | ---- the method is available for `DiskManagerSink` here [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is in scope [INFO] [stdout] = note: the following trait is implemented but not in scope; perhaps add a `use` for it: [INFO] [stdout] `use futures_util::sink::SinkExt;` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/security.rs:172:5 [INFO] [stdout] | [INFO] [stdout] 172 | fn positive_generate_compliant_ipv4_test_two() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/security.rs:187:5 [INFO] [stdout] | [INFO] [stdout] 187 | fn positive_generate_compliant_ipv4_test_three() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/security.rs:202:5 [INFO] [stdout] | [INFO] [stdout] 202 | fn positive_generate_compliant_ipv4_test_four() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/security.rs:217:5 [INFO] [stdout] | [INFO] [stdout] 217 | fn positive_generate_compliant_ipv4_test_five() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/security.rs:232:5 [INFO] [stdout] | [INFO] [stdout] 232 | fn positive_is_compliant_ipv4_test_one() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/security.rs:263:5 [INFO] [stdout] | [INFO] [stdout] 263 | fn positive_is_compliant_ipv4_test_two() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/security.rs:294:5 [INFO] [stdout] | [INFO] [stdout] 294 | fn positive_is_compliant_ipv4_test_three() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/security.rs:325:5 [INFO] [stdout] | [INFO] [stdout] 325 | fn positive_is_compliant_ipv4_test_four() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `send` found for struct `DiskManagerSink` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/process_block.rs:40:10 [INFO] [stdout] | [INFO] [stdout] 40 | .send(IDiskMessage::AddTorrent(metainfo_file)) [INFO] [stdout] | ^^^^ method not found in `DiskManagerSink` [INFO] [stdout] | [INFO] [stdout] ::: /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.15/src/sink/mod.rs:220:8 [INFO] [stdout] | [INFO] [stdout] 220 | fn send(&mut self, item: Item) -> Send<'_, Self, Item> [INFO] [stdout] | ---- the method is available for `DiskManagerSink` here [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is in scope [INFO] [stdout] = note: the following trait is implemented but not in scope; perhaps add a `use` for it: [INFO] [stdout] `use futures_util::sink::SinkExt;` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/security.rs:356:5 [INFO] [stdout] | [INFO] [stdout] 356 | fn positive_is_compliant_ipv4_test_five() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/storage.rs:215:5 [INFO] [stdout] | [INFO] [stdout] 215 | fn positive_add_and_retrieve_contact() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `next` found for struct `DiskManagerStream` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/process_block.rs:44:24 [INFO] [stdout] | [INFO] [stdout] 44 | let msg = recv.next().unwrap(); [INFO] [stdout] | ^^^^ method not found in `DiskManagerStream` [INFO] [stdout] | [INFO] [stdout] ::: /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.15/src/stream/stream/mod.rs:236:8 [INFO] [stdout] | [INFO] [stdout] 236 | fn next(&mut self) -> Next<'_, Self> [INFO] [stdout] | ---- the method is available for `DiskManagerStream` here [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is in scope [INFO] [stdout] = note: the following trait is implemented but not in scope; perhaps add a `use` for it: [INFO] [stdout] `use futures_util::stream::stream::StreamExt;` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/storage.rs:230:5 [INFO] [stdout] | [INFO] [stdout] 230 | fn positive_add_and_retrieve_contacts() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/storage.rs:249:5 [INFO] [stdout] | [INFO] [stdout] 249 | fn positive_renew_contacts() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `send` found for struct `DiskManagerSink` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/process_block.rs:49:22 [INFO] [stdout] | [INFO] [stdout] 49 | .send(IDiskMessage::ProcessBlock(process_block.clone())) [INFO] [stdout] | ^^^^ method not found in `DiskManagerSink` [INFO] [stdout] | [INFO] [stdout] ::: /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.15/src/sink/mod.rs:220:8 [INFO] [stdout] | [INFO] [stdout] 220 | fn send(&mut self, item: Item) -> Send<'_, Self, Item> [INFO] [stdout] | ---- the method is available for `DiskManagerSink` here [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is in scope [INFO] [stdout] = note: the following trait is implemented but not in scope; perhaps add a `use` for it: [INFO] [stdout] `use futures_util::sink::SinkExt;` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `send` found for struct `DiskManagerSink` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/remove_torrent.rs:33:10 [INFO] [stdout] | [INFO] [stdout] 33 | .send(IDiskMessage::AddTorrent(metainfo_file)) [INFO] [stdout] | ^^^^ method not found in `DiskManagerSink` [INFO] [stdout] | [INFO] [stdout] ::: /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.15/src/sink/mod.rs:220:8 [INFO] [stdout] | [INFO] [stdout] 220 | fn send(&mut self, item: Item) -> Send<'_, Self, Item> [INFO] [stdout] | ---- the method is available for `DiskManagerSink` here [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is in scope [INFO] [stdout] = note: the following trait is implemented but not in scope; perhaps add a `use` for it: [INFO] [stdout] `use futures_util::sink::SinkExt;` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `next` found for struct `DiskManagerStream` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/remove_torrent.rs:39:24 [INFO] [stdout] | [INFO] [stdout] 39 | let msg = recv.next().unwrap(); [INFO] [stdout] | ^^^^ method not found in `DiskManagerStream` [INFO] [stdout] | [INFO] [stdout] ::: /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.15/src/stream/stream/mod.rs:236:8 [INFO] [stdout] | [INFO] [stdout] 236 | fn next(&mut self) -> Next<'_, Self> [INFO] [stdout] | ---- the method is available for `DiskManagerStream` here [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is in scope [INFO] [stdout] = note: the following trait is implemented but not in scope; perhaps add a `use` for it: [INFO] [stdout] `use futures_util::stream::stream::StreamExt;` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/storage.rs:276:5 [INFO] [stdout] | [INFO] [stdout] 276 | fn positive_full_storage_expire_one_infohash() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `send` found for struct `DiskManagerSink` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/remove_torrent.rs:44:22 [INFO] [stdout] | [INFO] [stdout] 44 | .send(IDiskMessage::RemoveTorrent(info_hash)) [INFO] [stdout] | ^^^^ method not found in `DiskManagerSink` [INFO] [stdout] | [INFO] [stdout] ::: /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.15/src/sink/mod.rs:220:8 [INFO] [stdout] | [INFO] [stdout] 220 | fn send(&mut self, item: Item) -> Send<'_, Self, Item> [INFO] [stdout] | ---- the method is available for `DiskManagerSink` here [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is in scope [INFO] [stdout] = note: the following trait is implemented but not in scope; perhaps add a `use` for it: [INFO] [stdout] `use futures_util::sink::SinkExt;` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `send` found for struct `DiskManagerSink` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/remove_torrent.rs:66:10 [INFO] [stdout] | [INFO] [stdout] 66 | .send(IDiskMessage::ProcessBlock(process_block)) [INFO] [stdout] | ^^^^ method not found in `DiskManagerSink` [INFO] [stdout] | [INFO] [stdout] ::: /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.15/src/sink/mod.rs:220:8 [INFO] [stdout] | [INFO] [stdout] 220 | fn send(&mut self, item: Item) -> Send<'_, Self, Item> [INFO] [stdout] | ---- the method is available for `DiskManagerSink` here [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is in scope [INFO] [stdout] = note: the following trait is implemented but not in scope; perhaps add a `use` for it: [INFO] [stdout] `use futures_util::sink::SinkExt;` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `next` found for struct `DiskManagerStream` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/remove_torrent.rs:70:24 [INFO] [stdout] | [INFO] [stdout] 70 | let msg = recv.next().unwrap(); [INFO] [stdout] | ^^^^ method not found in `DiskManagerStream` [INFO] [stdout] | [INFO] [stdout] ::: /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.15/src/stream/stream/mod.rs:236:8 [INFO] [stdout] | [INFO] [stdout] 236 | fn next(&mut self) -> Next<'_, Self> [INFO] [stdout] | ---- the method is available for `DiskManagerStream` here [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is in scope [INFO] [stdout] = note: the following trait is implemented but not in scope; perhaps add a `use` for it: [INFO] [stdout] `use futures_util::stream::stream::StreamExt;` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `send` found for struct `DiskManagerSink` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/resume_torrent.rs:30:10 [INFO] [stdout] | [INFO] [stdout] 30 | .send(IDiskMessage::AddTorrent(metainfo_file.clone())) [INFO] [stdout] | ^^^^ method not found in `DiskManagerSink` [INFO] [stdout] | [INFO] [stdout] ::: /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.15/src/sink/mod.rs:220:8 [INFO] [stdout] | [INFO] [stdout] 220 | fn send(&mut self, item: Item) -> Send<'_, Self, Item> [INFO] [stdout] | ---- the method is available for `DiskManagerSink` here [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is in scope [INFO] [stdout] = note: the following trait is implemented but not in scope; perhaps add a `use` for it: [INFO] [stdout] `use futures_util::sink::SinkExt;` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `next` found for struct `DiskManagerStream` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/resume_torrent.rs:36:24 [INFO] [stdout] | [INFO] [stdout] 36 | let msg = recv.next().unwrap(); [INFO] [stdout] | ^^^^ method not found in `DiskManagerStream` [INFO] [stdout] | [INFO] [stdout] ::: /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.15/src/stream/stream/mod.rs:236:8 [INFO] [stdout] | [INFO] [stdout] 236 | fn next(&mut self) -> Next<'_, Self> [INFO] [stdout] | ---- the method is available for `DiskManagerStream` here [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is in scope [INFO] [stdout] = note: the following trait is implemented but not in scope; perhaps add a `use` for it: [INFO] [stdout] `use futures_util::stream::stream::StreamExt;` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/storage.rs:311:5 [INFO] [stdout] | [INFO] [stdout] 311 | fn positive_full_storage_expire_two_infohash() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `next` found for struct `DiskManagerStream` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/resume_torrent.rs:85:24 [INFO] [stdout] | [INFO] [stdout] 85 | let msg = recv.next().unwrap(); [INFO] [stdout] | ^^^^ method not found in `DiskManagerStream` [INFO] [stdout] | [INFO] [stdout] ::: /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.15/src/stream/stream/mod.rs:236:8 [INFO] [stdout] | [INFO] [stdout] 236 | fn next(&mut self) -> Next<'_, Self> [INFO] [stdout] | ---- the method is available for `DiskManagerStream` here [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is in scope [INFO] [stdout] = note: the following trait is implemented but not in scope; perhaps add a `use` for it: [INFO] [stdout] `use futures_util::stream::stream::StreamExt;` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/token.rs:210:5 [INFO] [stdout] | [INFO] [stdout] 210 | fn positive_accept_valid_v4_token() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `send` found for struct `DiskManagerSink` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/resume_torrent.rs:111:10 [INFO] [stdout] | [INFO] [stdout] 111 | .send(IDiskMessage::RemoveTorrent(info_hash)) [INFO] [stdout] | ^^^^ method not found in `DiskManagerSink` [INFO] [stdout] | [INFO] [stdout] ::: /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.15/src/sink/mod.rs:220:8 [INFO] [stdout] | [INFO] [stdout] 220 | fn send(&mut self, item: Item) -> Send<'_, Self, Item> [INFO] [stdout] | ---- the method is available for `DiskManagerSink` here [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is in scope [INFO] [stdout] = note: the following trait is implemented but not in scope; perhaps add a `use` for it: [INFO] [stdout] `use futures_util::sink::SinkExt;` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `next` found for struct `DiskManagerStream` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/resume_torrent.rs:116:24 [INFO] [stdout] | [INFO] [stdout] 116 | let msg = recv.next().unwrap(); [INFO] [stdout] | ^^^^ method not found in `DiskManagerStream` [INFO] [stdout] | [INFO] [stdout] ::: /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.15/src/stream/stream/mod.rs:236:8 [INFO] [stdout] | [INFO] [stdout] 236 | fn next(&mut self) -> Next<'_, Self> [INFO] [stdout] | ---- the method is available for `DiskManagerStream` here [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is in scope [INFO] [stdout] = note: the following trait is implemented but not in scope; perhaps add a `use` for it: [INFO] [stdout] `use futures_util::stream::stream::StreamExt;` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/token.rs:220:5 [INFO] [stdout] | [INFO] [stdout] 220 | fn positive_accept_valid_v6_token() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `send` found for struct `DiskManagerSink` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/resume_torrent.rs:125:10 [INFO] [stdout] | [INFO] [stdout] 125 | .send(IDiskMessage::AddTorrent(metainfo_file.clone())) [INFO] [stdout] | ^^^^ method not found in `DiskManagerSink` [INFO] [stdout] | [INFO] [stdout] ::: /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.15/src/sink/mod.rs:220:8 [INFO] [stdout] | [INFO] [stdout] 220 | fn send(&mut self, item: Item) -> Send<'_, Self, Item> [INFO] [stdout] | ---- the method is available for `DiskManagerSink` here [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is in scope [INFO] [stdout] = note: the following trait is implemented but not in scope; perhaps add a `use` for it: [INFO] [stdout] `use futures_util::sink::SinkExt;` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/token.rs:230:5 [INFO] [stdout] | [INFO] [stdout] 230 | fn positive_accept_v4_token_from_second_secret() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/token.rs:244:5 [INFO] [stdout] | [INFO] [stdout] 244 | fn positive_accept_v6_token_from_second_secret() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `next` found for struct `DiskManagerStream` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/resume_torrent.rs:130:24 [INFO] [stdout] | [INFO] [stdout] 130 | let msg = recv.next().unwrap(); [INFO] [stdout] | ^^^^ method not found in `DiskManagerStream` [INFO] [stdout] | [INFO] [stdout] ::: /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.15/src/stream/stream/mod.rs:236:8 [INFO] [stdout] | [INFO] [stdout] 236 | fn next(&mut self) -> Next<'_, Self> [INFO] [stdout] | ---- the method is available for `DiskManagerStream` here [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is in scope [INFO] [stdout] = note: the following trait is implemented but not in scope; perhaps add a `use` for it: [INFO] [stdout] `use futures_util::stream::stream::StreamExt;` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/token.rs:259:5 [INFO] [stdout] | [INFO] [stdout] 259 | fn negative_reject_expired_v4_token() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `next` found for struct `DiskManagerStream` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/resume_torrent.rs:196:24 [INFO] [stdout] | [INFO] [stdout] 196 | let msg = recv.next().unwrap(); [INFO] [stdout] | ^^^^ method not found in `DiskManagerStream` [INFO] [stdout] | [INFO] [stdout] ::: /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.15/src/stream/stream/mod.rs:236:8 [INFO] [stdout] | [INFO] [stdout] 236 | fn next(&mut self) -> Next<'_, Self> [INFO] [stdout] | ---- the method is available for `DiskManagerStream` here [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is in scope [INFO] [stdout] = note: the following trait is implemented but not in scope; perhaps add a `use` for it: [INFO] [stdout] `use futures_util::stream::stream::StreamExt;` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/token.rs:274:5 [INFO] [stdout] | [INFO] [stdout] 274 | fn negative_reject_expired_v6_token() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `send` found for struct `DiskManagerSink` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/start.rs:52:10 [INFO] [stdout] | [INFO] [stdout] 52 | .send(IDiskMessage::AddTorrent(metainfo)) [INFO] [stdout] | ^^^^ method not found in `DiskManagerSink` [INFO] [stdout] | [INFO] [stdout] ::: /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.15/src/sink/mod.rs:220:8 [INFO] [stdout] | [INFO] [stdout] 220 | fn send(&mut self, item: Item) -> Send<'_, Self, Item> [INFO] [stdout] | ---- the method is available for `DiskManagerSink` here [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is in scope [INFO] [stdout] = note: the following trait is implemented but not in scope; perhaps add a `use` for it: [INFO] [stdout] `use futures_util::sink::SinkExt;` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/transaction.rs:286:5 [INFO] [stdout] | [INFO] [stdout] 286 | fn positive_tid_from_bytes() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `next` found for struct `DiskManagerStream` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/start.rs:55:38 [INFO] [stdout] | [INFO] [stdout] 55 | for res_message in (*block_recv).next() { [INFO] [stdout] | ^^^^ method not found in `DiskManagerStream` [INFO] [stdout] | [INFO] [stdout] ::: /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.15/src/stream/stream/mod.rs:236:8 [INFO] [stdout] | [INFO] [stdout] 236 | fn next(&mut self) -> Next<'_, Self> [INFO] [stdout] | ---- the method is available for `DiskManagerStream` here [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is in scope [INFO] [stdout] = note: the following trait is implemented but not in scope; perhaps add a `use` for it: [INFO] [stdout] `use futures_util::stream::stream::StreamExt;` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/transaction.rs:297:5 [INFO] [stdout] | [INFO] [stdout] 297 | fn positive_unique_aid_blocks() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `send` found for struct `DiskManagerSink` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/start.rs:91:24 [INFO] [stdout] | [INFO] [stdout] 91 | block_send.send(IDiskMessage::ProcessBlock(block)).unwrap(); [INFO] [stdout] | ^^^^ method not found in `DiskManagerSink` [INFO] [stdout] | [INFO] [stdout] ::: /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.15/src/sink/mod.rs:220:8 [INFO] [stdout] | [INFO] [stdout] 220 | fn send(&mut self, item: Item) -> Send<'_, Self, Item> [INFO] [stdout] | ---- the method is available for `DiskManagerSink` here [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is in scope [INFO] [stdout] = note: the following trait is implemented but not in scope; perhaps add a `use` for it: [INFO] [stdout] `use futures_util::sink::SinkExt;` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `next` found for struct `DiskManagerStream` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/start.rs:96:26 [INFO] [stdout] | [INFO] [stdout] 96 | match block_recv.next().unwrap() { [INFO] [stdout] | ^^^^ method not found in `DiskManagerStream` [INFO] [stdout] | [INFO] [stdout] ::: /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.15/src/stream/stream/mod.rs:236:8 [INFO] [stdout] | [INFO] [stdout] 236 | fn next(&mut self) -> Next<'_, Self> [INFO] [stdout] | ---- the method is available for `DiskManagerStream` here [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is in scope [INFO] [stdout] = note: the following trait is implemented but not in scope; perhaps add a `use` for it: [INFO] [stdout] `use futures_util::stream::stream::StreamExt;` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/transaction.rs:312:5 [INFO] [stdout] | [INFO] [stdout] 312 | fn positive_unique_mid_blocks() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/transaction.rs:328:5 [INFO] [stdout] | [INFO] [stdout] 328 | fn positive_unique_tid_blocks() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/transaction.rs:347:5 [INFO] [stdout] | [INFO] [stdout] 347 | fn positive_overflow_aid_generate() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `with_buffer_capacity` found for struct `DiskManagerBuilder` in the current scope [INFO] [stdout] --> bittorrent-protocol/tests/test3_disk/start.rs:122:10 [INFO] [stdout] | [INFO] [stdout] 122 | .with_buffer_capacity(1000000) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: there is an associated function with a similar name: `sink_buffer_capacity` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/transaction.rs:375:5 [INFO] [stdout] | [INFO] [stdout] 375 | fn positive_overflow_mid_generate() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/dht/transaction.rs:404:5 [INFO] [stdout] | [INFO] [stdout] 404 | fn positive_overflow_tid_generate() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:551:5 [INFO] [stdout] | [INFO] [stdout] 551 | fn positive_write_request() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:599:5 [INFO] [stdout] | [INFO] [stdout] 599 | fn positive_write_response() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:622:5 [INFO] [stdout] | [INFO] [stdout] 622 | fn positive_write_state() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 33 previous errors; 12 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0599`. [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:641:5 [INFO] [stdout] | [INFO] [stdout] 641 | fn positive_write_none_event() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:656:5 [INFO] [stdout] | [INFO] [stdout] 656 | fn positive_write_completed_event() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:671:5 [INFO] [stdout] | [INFO] [stdout] 671 | fn positive_write_started_event() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:686:5 [INFO] [stdout] | [INFO] [stdout] 686 | fn positive_write_stopped_event() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:701:5 [INFO] [stdout] | [INFO] [stdout] 701 | fn positive_write_source_ipv4_implied() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:714:5 [INFO] [stdout] | [INFO] [stdout] 714 | fn positive_write_source_ipv6_implied() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:727:5 [INFO] [stdout] | [INFO] [stdout] 727 | fn positive_write_source_ipv4_explicit() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:740:5 [INFO] [stdout] | [INFO] [stdout] 740 | fn positive_write_source_ipv6_explicit() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:753:5 [INFO] [stdout] | [INFO] [stdout] 753 | fn positive_write_desired_peers_default() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:768:5 [INFO] [stdout] | [INFO] [stdout] 768 | fn positive_write_desired_peers_specified() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:781:5 [INFO] [stdout] | [INFO] [stdout] 781 | fn positive_parse_request_empty_options() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:820:5 [INFO] [stdout] | [INFO] [stdout] 820 | fn negative_parse_request_missing_key() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:847:5 [INFO] [stdout] | [INFO] [stdout] 847 | fn positive_parse_response_empty_peers() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:876:5 [INFO] [stdout] | [INFO] [stdout] 876 | fn positive_parse_response_many_peers() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:919:5 [INFO] [stdout] | [INFO] [stdout] 919 | fn positive_parse_state() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:937:5 [INFO] [stdout] | [INFO] [stdout] 937 | fn negative_parse_incomplete_state() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:951:5 [INFO] [stdout] | [INFO] [stdout] 951 | fn positive_parse_none_event() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:964:5 [INFO] [stdout] | [INFO] [stdout] 964 | fn positive_parse_completed_event() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:977:5 [INFO] [stdout] | [INFO] [stdout] 977 | fn positive_parse_started_event() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:990:5 [INFO] [stdout] | [INFO] [stdout] 990 | fn negative_parse_no_event() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:999:5 [INFO] [stdout] | [INFO] [stdout] 999 | fn positive_parse_stopped_event() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:1012:5 [INFO] [stdout] | [INFO] [stdout] 1012 | fn positive_parse_implied_v4_source() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:1023:5 [INFO] [stdout] | [INFO] [stdout] 1023 | fn positive_parse_explicit_v4_source() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:1033:5 [INFO] [stdout] | [INFO] [stdout] 1033 | fn positive_parse_implied_v6_source() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:1044:5 [INFO] [stdout] | [INFO] [stdout] 1044 | fn positive_parse_explicit_v6_source() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:1055:5 [INFO] [stdout] | [INFO] [stdout] 1055 | fn negative_parse_incomplete_v4_source() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:1064:5 [INFO] [stdout] | [INFO] [stdout] 1064 | fn negative_parse_incomplete_v6_source() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:1073:5 [INFO] [stdout] | [INFO] [stdout] 1073 | fn negative_parse_empty_v4_source() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:1082:5 [INFO] [stdout] | [INFO] [stdout] 1082 | fn negative_parse_empty_v6_source() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:1091:5 [INFO] [stdout] | [INFO] [stdout] 1091 | fn positive_parse_desired_peers_default() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:1101:5 [INFO] [stdout] | [INFO] [stdout] 1101 | fn positive_parse_desired_peers_specified() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/contact.rs:337:5 [INFO] [stdout] | [INFO] [stdout] 337 | fn positive_iterate_v4() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/contact.rs:354:5 [INFO] [stdout] | [INFO] [stdout] 354 | fn positive_parse_empty_v4() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/contact.rs:364:5 [INFO] [stdout] | [INFO] [stdout] 364 | fn positive_parse_peer_v4() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/contact.rs:376:5 [INFO] [stdout] | [INFO] [stdout] 376 | fn positive_parse_peers_v4() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/contact.rs:389:5 [INFO] [stdout] | [INFO] [stdout] 389 | fn positive_write_empty_v4() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/contact.rs:401:5 [INFO] [stdout] | [INFO] [stdout] 401 | fn positive_write_peer_v4() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/contact.rs:414:5 [INFO] [stdout] | [INFO] [stdout] 414 | fn positive_write_peers_v4() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/contact.rs:428:5 [INFO] [stdout] | [INFO] [stdout] 428 | fn positive_iterate_v6() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/contact.rs:449:5 [INFO] [stdout] | [INFO] [stdout] 449 | fn positive_parse_empty_v6() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/contact.rs:459:5 [INFO] [stdout] | [INFO] [stdout] 459 | fn positive_parse_peer_v6() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/contact.rs:474:5 [INFO] [stdout] | [INFO] [stdout] 474 | fn positive_parse_peers_v6() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/contact.rs:491:5 [INFO] [stdout] | [INFO] [stdout] 491 | fn positive_write_empty_v6() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/contact.rs:503:5 [INFO] [stdout] | [INFO] [stdout] 503 | fn positive_write_peer_v6() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/contact.rs:519:5 [INFO] [stdout] | [INFO] [stdout] 519 | fn positive_write_peers_v6() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/option.rs:239:5 [INFO] [stdout] | [INFO] [stdout] 239 | fn positive_write_eof_option() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/option.rs:251:5 [INFO] [stdout] | [INFO] [stdout] 251 | fn positive_write_empty_option() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/option.rs:263:5 [INFO] [stdout] | [INFO] [stdout] 263 | fn positive_write_single_option() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/option.rs:284:5 [INFO] [stdout] | [INFO] [stdout] 284 | fn positive_write_chunked_option() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/option.rs:310:5 [INFO] [stdout] | [INFO] [stdout] 310 | fn positive_parse_empty_option() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/option.rs:320:5 [INFO] [stdout] | [INFO] [stdout] 320 | fn positive_parse_noop_option() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/option.rs:330:5 [INFO] [stdout] | [INFO] [stdout] 330 | fn positive_parse_end_option() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/option.rs:340:5 [INFO] [stdout] | [INFO] [stdout] 340 | fn positive_pasre_url_data_eof() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/option.rs:354:5 [INFO] [stdout] | [INFO] [stdout] 354 | fn positive_parse_url_data_end_of_options() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/option.rs:377:5 [INFO] [stdout] | [INFO] [stdout] 377 | fn positive_parse_url_data_noop_eof() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/option.rs:400:5 [INFO] [stdout] | [INFO] [stdout] 400 | fn positive_parse_url_data_noop_end_of_options() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/option.rs:424:5 [INFO] [stdout] | [INFO] [stdout] 424 | fn positive_parse_url_data_single_chunk() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/option.rs:442:5 [INFO] [stdout] | [INFO] [stdout] 442 | fn positive_parse_url_data_two_chunks() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/option.rs:474:5 [INFO] [stdout] | [INFO] [stdout] 474 | fn positive_parse_url_data_undivisible_chunks() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/option.rs:508:5 [INFO] [stdout] | [INFO] [stdout] 508 | fn negative_parse_url_data_incomplete() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/option.rs:517:5 [INFO] [stdout] | [INFO] [stdout] 517 | fn negative_parse_url_data_unterminated() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/scrape.rs:296:5 [INFO] [stdout] | [INFO] [stdout] 296 | fn positive_write_request_empty() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/scrape.rs:308:5 [INFO] [stdout] | [INFO] [stdout] 308 | fn positive_write_request_single_hash() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/scrape.rs:321:5 [INFO] [stdout] | [INFO] [stdout] 321 | fn positive_write_request_many_hashes() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/scrape.rs:340:5 [INFO] [stdout] | [INFO] [stdout] 340 | fn positive_write_response_empty() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/scrape.rs:352:5 [INFO] [stdout] | [INFO] [stdout] 352 | fn positive_write_response_single_stat() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/scrape.rs:376:5 [INFO] [stdout] | [INFO] [stdout] 376 | fn positive_write_response_many_stats() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/scrape.rs:412:5 [INFO] [stdout] | [INFO] [stdout] 412 | fn positive_parse_request_empty() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/scrape.rs:423:5 [INFO] [stdout] | [INFO] [stdout] 423 | fn positive_parse_request_single_hash() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/scrape.rs:435:5 [INFO] [stdout] | [INFO] [stdout] 435 | fn positive_parse_request_multiple_hashes() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/scrape.rs:453:5 [INFO] [stdout] | [INFO] [stdout] 453 | fn positive_parse_response_empty() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/scrape.rs:464:5 [INFO] [stdout] | [INFO] [stdout] 464 | fn positive_parse_response_single_stat() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utracker/scrape.rs:476:5 [INFO] [stdout] | [INFO] [stdout] 476 | fn positive_parse_response_many_stats() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/handshaker.rs:180:5 [INFO] [stdout] | [INFO] [stdout] 180 | fn positive_initiate_handshake() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/handshaker.rs:249:5 [INFO] [stdout] | [INFO] [stdout] 249 | fn positive_complete_handshake() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/initiator.rs:67:5 [INFO] [stdout] | [INFO] [stdout] 67 | fn positive_empty_filter() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/initiator.rs:93:5 [INFO] [stdout] | [INFO] [stdout] 93 | fn positive_passes_filter() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/initiator.rs:123:5 [INFO] [stdout] | [INFO] [stdout] 123 | fn positive_needs_data_filter() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/initiator.rs:153:5 [INFO] [stdout] | [INFO] [stdout] 153 | fn positive_fails_filter() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/listener.rs:45:5 [INFO] [stdout] | [INFO] [stdout] 45 | fn positive_empty_filter() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/listener.rs:62:5 [INFO] [stdout] | [INFO] [stdout] 62 | fn positive_passes_filter() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/listener.rs:82:5 [INFO] [stdout] | [INFO] [stdout] 82 | fn positive_needs_data_filter() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/listener.rs:102:5 [INFO] [stdout] | [INFO] [stdout] 102 | fn positive_fails_filter() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/timer.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 27 | fn positive_finish_before_timeout() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/timer.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 33 | fn negative_finish_after_timeout() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/filter/filters.rs:206:5 [INFO] [stdout] | [INFO] [stdout] 206 | fn positive_add_filter() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/filter/filters.rs:225:5 [INFO] [stdout] | [INFO] [stdout] 225 | fn positive_add_filter_already_present() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/filter/filters.rs:245:5 [INFO] [stdout] | [INFO] [stdout] 245 | fn positive_remove_filter() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/filter/filters.rs:260:5 [INFO] [stdout] | [INFO] [stdout] 260 | fn positive_remove_filter_not_present() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/filter/filters.rs:275:5 [INFO] [stdout] | [INFO] [stdout] 275 | fn positive_remove_filter_multiple_present() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/filter/filters.rs:291:5 [INFO] [stdout] | [INFO] [stdout] 291 | fn positive_clear_filters_none_present() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/filter/filters.rs:305:5 [INFO] [stdout] | [INFO] [stdout] 305 | fn positive_clear_filters_one_present() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/filter/filters.rs:321:5 [INFO] [stdout] | [INFO] [stdout] 321 | fn positive_clear_filters_multiple_present() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/filter/mod.rs:134:5 [INFO] [stdout] | [INFO] [stdout] 134 | fn positive_decision_choose_self() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/filter/mod.rs:144:5 [INFO] [stdout] | [INFO] [stdout] 144 | fn positive_decision_choose_higher() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/filter/mod.rs:154:5 [INFO] [stdout] | [INFO] [stdout] 154 | fn positive_decision_keep_higher() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/message/bittorrent/framed.rs:163:5 [INFO] [stdout] | [INFO] [stdout] 163 | fn positive_write_handshake_message() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/message/bittorrent/framed.rs:184:5 [INFO] [stdout] | [INFO] [stdout] 184 | fn positive_write_multiple_handshake_messages() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/message/bittorrent/framed.rs:214:5 [INFO] [stdout] | [INFO] [stdout] 214 | fn positive_read_handshake_message() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/message/bittorrent/framed.rs:233:5 [INFO] [stdout] | [INFO] [stdout] 233 | fn positive_read_byte_after_handshake() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/message/bittorrent/framed.rs:258:5 [INFO] [stdout] | [INFO] [stdout] 258 | fn positive_read_bytes_after_handshake() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/message/bittorrent/message.rs:124:5 [INFO] [stdout] | [INFO] [stdout] 124 | fn positive_decode_zero_bytes_protocol() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/message/bittorrent/message.rs:146:5 [INFO] [stdout] | [INFO] [stdout] 146 | fn positive_many_bytes_protocol() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/message/bittorrent/message.rs:168:5 [INFO] [stdout] | [INFO] [stdout] 168 | fn positive_bittorrent_protocol() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/message/bittorrent/message.rs:191:5 [INFO] [stdout] | [INFO] [stdout] 191 | fn negative_create_overflow_protocol() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/message/extensions.rs:107:5 [INFO] [stdout] | [INFO] [stdout] 107 | fn positive_add_extension_protocol() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/handshake/message/extensions.rs:118:5 [INFO] [stdout] | [INFO] [stdout] 118 | fn positive_remove_extension_protocol() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/peer/message/standard.rs:343:5 [INFO] [stdout] | [INFO] [stdout] 343 | fn positive_bitfield_iter_empty() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/peer/message/standard.rs:350:5 [INFO] [stdout] | [INFO] [stdout] 350 | fn positive_bitfield_iter_no_messages() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/peer/message/standard.rs:360:5 [INFO] [stdout] | [INFO] [stdout] 360 | fn positive_bitfield_iter_single_message_beginning() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/peer/message/standard.rs:371:5 [INFO] [stdout] | [INFO] [stdout] 371 | fn positive_bitfield_iter_single_message_middle() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/peer/message/standard.rs:382:5 [INFO] [stdout] | [INFO] [stdout] 382 | fn positive_bitfield_iter_single_message_ending() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/peer/message/standard.rs:393:5 [INFO] [stdout] | [INFO] [stdout] 393 | fn positive_bitfield_iter_multiple_messages() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/packet.rs:504:5 [INFO] [stdout] | [INFO] [stdout] 504 | fn test_packet_decode() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/packet.rs:524:5 [INFO] [stdout] | [INFO] [stdout] 524 | fn test_decode_packet_with_extension() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/packet.rs:553:5 [INFO] [stdout] | [INFO] [stdout] 553 | fn test_packet_decode_with_missing_extension() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/packet.rs:561:5 [INFO] [stdout] | [INFO] [stdout] 561 | fn test_packet_decode_with_malformed_extension() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/packet.rs:570:5 [INFO] [stdout] | [INFO] [stdout] 570 | fn test_decode_packet_with_unknown_extensions() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/packet.rs:600:5 [INFO] [stdout] | [INFO] [stdout] 600 | fn test_packet_set_type() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/packet.rs:615:5 [INFO] [stdout] | [INFO] [stdout] 615 | fn test_packet_set_selective_acknowledgment() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/packet.rs:644:5 [INFO] [stdout] | [INFO] [stdout] 644 | fn test_packet_encode() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/packet.rs:679:5 [INFO] [stdout] | [INFO] [stdout] 679 | fn test_packet_encode_with_payload() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/packet.rs:713:5 [INFO] [stdout] | [INFO] [stdout] 713 | fn test_reversible() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/packet.rs:722:5 [INFO] [stdout] | [INFO] [stdout] 722 | fn test_decode_evil_sequence() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/packet.rs:729:5 [INFO] [stdout] | [INFO] [stdout] 729 | fn test_decode_empty_packet() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/packet.rs:736:5 [INFO] [stdout] | [INFO] [stdout] 736 | fn quicktest() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/packet.rs:752:5 [INFO] [stdout] | [INFO] [stdout] 752 | fn extension_iterator() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:1330:5 [INFO] [stdout] | [INFO] [stdout] 1330 | fn test_socket_ipv4() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:1361:5 [INFO] [stdout] | [INFO] [stdout] 1361 | fn test_socket_ipv6() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:1392:5 [INFO] [stdout] | [INFO] [stdout] 1392 | fn test_recvfrom_on_closed_socket() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:1420:5 [INFO] [stdout] | [INFO] [stdout] 1420 | fn test_sendto_on_closed_socket() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:1447:5 [INFO] [stdout] | [INFO] [stdout] 1447 | fn test_acks_on_socket() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:1483:5 [INFO] [stdout] | [INFO] [stdout] 1483 | fn test_handle_packet() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:1583:5 [INFO] [stdout] | [INFO] [stdout] 1583 | fn test_response_to_keepalive_ack() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:1631:5 [INFO] [stdout] | [INFO] [stdout] 1631 | fn test_response_to_wrong_connection_id() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:1673:5 [INFO] [stdout] | [INFO] [stdout] 1673 | fn test_unordered_packets() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:1732:5 [INFO] [stdout] | [INFO] [stdout] 1732 | fn test_response_to_triple_ack() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:1799:5 [INFO] [stdout] | [INFO] [stdout] 1799 | fn test_socket_timeout_request() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:1854:5 [INFO] [stdout] | [INFO] [stdout] 1854 | fn test_sorted_buffer_insertion() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:1893:5 [INFO] [stdout] | [INFO] [stdout] 1893 | fn test_duplicate_packet_handling() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:1954:5 [INFO] [stdout] | [INFO] [stdout] 1954 | fn test_correct_packet_loss() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:2003:5 [INFO] [stdout] | [INFO] [stdout] 2003 | fn test_tolerance_to_small_buffers() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:2033:5 [INFO] [stdout] | [INFO] [stdout] 2033 | fn test_sequence_number_rollover() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:2073:5 [INFO] [stdout] | [INFO] [stdout] 2073 | fn test_drop_unused_socket() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:2082:5 [INFO] [stdout] | [INFO] [stdout] 2082 | fn test_invalid_packet_on_connect() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:2105:5 [INFO] [stdout] | [INFO] [stdout] 2105 | fn test_receive_unexpected_reply_type_on_connect() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:2133:5 [INFO] [stdout] | [INFO] [stdout] 2133 | fn test_receiving_syn_on_established_connection() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:2171:5 [INFO] [stdout] | [INFO] [stdout] 2171 | fn test_receiving_reset_on_established_connection() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:2207:5 [INFO] [stdout] | [INFO] [stdout] 2207 | fn test_premature_fin() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:2251:5 [INFO] [stdout] | [INFO] [stdout] 2251 | fn test_base_delay_calculation() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:2271:5 [INFO] [stdout] | [INFO] [stdout] 2271 | fn test_local_addr() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:2281:5 [INFO] [stdout] | [INFO] [stdout] 2281 | fn test_listener_local_addr() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:2291:5 [INFO] [stdout] | [INFO] [stdout] 2291 | fn test_peer_addr() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:2329:5 [INFO] [stdout] | [INFO] [stdout] 2329 | fn test_take_address() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:2348:5 [INFO] [stdout] | [INFO] [stdout] 2348 | fn test_connection_loss_data() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:2391:5 [INFO] [stdout] | [INFO] [stdout] 2391 | fn test_connection_loss_fin() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:2430:5 [INFO] [stdout] | [INFO] [stdout] 2430 | fn test_connection_loss_waiting() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/util.rs:45:5 [INFO] [stdout] | [INFO] [stdout] 45 | fn test_ewma_empty_vector() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/util.rs:52:5 [INFO] [stdout] | [INFO] [stdout] 52 | fn test_ewma_one_element() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/util.rs:59:5 [INFO] [stdout] | [INFO] [stdout] 59 | fn test_exponential_smoothed_moving_average() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/utp/util.rs:76:5 [INFO] [stdout] | [INFO] [stdout] 76 | fn test_abs_diff() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: the `async` keyword is missing from the function declaration [INFO] [stdout] --> bittorrent-protocol/src/lib.rs:42:5 [INFO] [stdout] | [INFO] [stdout] 42 | fn it_works() { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0252]: the name `SocketState` is defined multiple times [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:1308:9 [INFO] [stdout] | [INFO] [stdout] 1305 | use crate::utp::socket::{UtpSocket, UtpListener, SocketState, BUF_SIZE, take_address}; [INFO] [stdout] | ----------- previous import of the type `SocketState` here [INFO] [stdout] ... [INFO] [stdout] 1308 | use crate::utp::socket::SocketState; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `SocketState` reimported here [INFO] [stdout] | [INFO] [stdout] = note: `SocketState` must be defined only once in the type namespace of this module [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `super::super::quickcheck` [INFO] [stdout] --> bittorrent-protocol/src/utp/packet.rs:501:23 [INFO] [stdout] | [INFO] [stdout] 501 | use super::super::quickcheck::TestResult; [INFO] [stdout] | ^^^^^^^^^^ could not find `quickcheck` in `super` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0433]: failed to resolve: use of undeclared crate or module `tokio_core` [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/initiator.rs:43:9 [INFO] [stdout] | [INFO] [stdout] 43 | use tokio_core::reactor::Core; [INFO] [stdout] | ^^^^^^^^^^ use of undeclared crate or module `tokio_core` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `tokio_timer` [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/handshaker.rs:148:9 [INFO] [stdout] | [INFO] [stdout] 148 | use tokio_timer; [INFO] [stdout] | ^^^^^^^^^^^ no external crate `tokio_timer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `tokio_timer` [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/initiator.rs:44:9 [INFO] [stdout] | [INFO] [stdout] 44 | use tokio_timer; [INFO] [stdout] | ^^^^^^^^^^^ no external crate `tokio_timer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: linking with `cc` failed: exit status: 1 [INFO] [stdout] | [INFO] [stdout] = note: "cc" "-m64" "/opt/rustwide/target/debug/examples/ex4_echo_server-688e4c5e717d782b.ex4_echo_server.0423bf4d-cgu.0.rcgu.o" "/opt/rustwide/target/debug/examples/ex4_echo_server-688e4c5e717d782b.ex4_echo_server.0423bf4d-cgu.1.rcgu.o" "/opt/rustwide/target/debug/examples/ex4_echo_server-688e4c5e717d782b.ex4_echo_server.0423bf4d-cgu.10.rcgu.o" "/opt/rustwide/target/debug/examples/ex4_echo_server-688e4c5e717d782b.ex4_echo_server.0423bf4d-cgu.11.rcgu.o" "/opt/rustwide/target/debug/examples/ex4_echo_server-688e4c5e717d782b.ex4_echo_server.0423bf4d-cgu.12.rcgu.o" "/opt/rustwide/target/debug/examples/ex4_echo_server-688e4c5e717d782b.ex4_echo_server.0423bf4d-cgu.13.rcgu.o" "/opt/rustwide/target/debug/examples/ex4_echo_server-688e4c5e717d782b.ex4_echo_server.0423bf4d-cgu.14.rcgu.o" "/opt/rustwide/target/debug/examples/ex4_echo_server-688e4c5e717d782b.ex4_echo_server.0423bf4d-cgu.15.rcgu.o" "/opt/rustwide/target/debug/examples/ex4_echo_server-688e4c5e717d782b.ex4_echo_server.0423bf4d-cgu.2.rcgu.o" "/opt/rustwide/target/debug/examples/ex4_echo_server-688e4c5e717d782b.ex4_echo_server.0423bf4d-cgu.3.rcgu.o" "/opt/rustwide/target/debug/examples/ex4_echo_server-688e4c5e717d782b.ex4_echo_server.0423bf4d-cgu.4.rcgu.o" "/opt/rustwide/target/debug/examples/ex4_echo_server-688e4c5e717d782b.ex4_echo_server.0423bf4d-cgu.5.rcgu.o" "/opt/rustwide/target/debug/examples/ex4_echo_server-688e4c5e717d782b.ex4_echo_server.0423bf4d-cgu.6.rcgu.o" "/opt/rustwide/target/debug/examples/ex4_echo_server-688e4c5e717d782b.ex4_echo_server.0423bf4d-cgu.7.rcgu.o" "/opt/rustwide/target/debug/examples/ex4_echo_server-688e4c5e717d782b.ex4_echo_server.0423bf4d-cgu.8.rcgu.o" "/opt/rustwide/target/debug/examples/ex4_echo_server-688e4c5e717d782b.ex4_echo_server.0423bf4d-cgu.9.rcgu.o" "/opt/rustwide/target/debug/examples/ex4_echo_server-688e4c5e717d782b.25etoqd154el3b2n.rcgu.o" "-Wl,--as-needed" "-L" "/opt/rustwide/target/debug/deps" "-L" "/opt/rustwide/target/debug/build/rust-crypto-58cfc629227000ce/out" "-L" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/opt/rustwide/target/debug/deps/libbittorrent_protocol-84fea908f5bc89cb.rlib" "/opt/rustwide/target/debug/deps/libbase32-915c962a92c1507e.rlib" "/opt/rustwide/target/debug/deps/libbit_set-0cca1aef5cfe2ef0.rlib" "/opt/rustwide/target/debug/deps/libbit_vec-b09c35a8ab4bf9eb.rlib" "/opt/rustwide/target/debug/deps/libumio-797ab0c739e4747c.rlib" "/opt/rustwide/target/debug/deps/libcrc-eeda29259dac6f4d.rlib" "/opt/rustwide/target/debug/deps/libmio-9d2e9b8dc776c119.rlib" "/opt/rustwide/target/debug/deps/libnet2-601c167e23aaf282.rlib" "/opt/rustwide/target/debug/deps/libcfg_if-de9cbe0cb77e19a3.rlib" "/opt/rustwide/target/debug/deps/libmiow-ecd5b96bb9472b9a.rlib" "/opt/rustwide/target/debug/deps/libwinapi-752b8c6fa8b80860.rlib" "/opt/rustwide/target/debug/deps/libnix-26736fc95a6d7dbb.rlib" "/opt/rustwide/target/debug/deps/libbitflags-49c4d650958fe230.rlib" "/opt/rustwide/target/debug/deps/libslab-c597d3202d2c1c0e.rlib" "/opt/rustwide/target/debug/deps/libbytes-de37aa6ec024b7aa.rlib" "/opt/rustwide/target/debug/deps/libcrossbeam-12e92ce7b3435641.rlib" "/opt/rustwide/target/debug/deps/libcrossbeam_channel-6fd83c99976a4661.rlib" "/opt/rustwide/target/debug/deps/libcrossbeam_deque-33a7266c289ce847.rlib" "/opt/rustwide/target/debug/deps/libcrossbeam_queue-66afa8e61332408c.rlib" "/opt/rustwide/target/debug/deps/libcrossbeam_epoch-1daf48a8bd77d17d.rlib" "/opt/rustwide/target/debug/deps/libmemoffset-bff73a5db2dc90ea.rlib" "/opt/rustwide/target/debug/deps/libcrossbeam_utils-1c1d2febec71c19e.rlib" "/opt/rustwide/target/debug/deps/liblazy_static-f67718dd40129317.rlib" "/opt/rustwide/target/debug/deps/libwalkdir-0820dafd1e10c370.rlib" "/opt/rustwide/target/debug/deps/libsame_file-363d9c9b6ab85ccc.rlib" "/opt/rustwide/target/debug/deps/liburl-19882ef7cb1c80a2.rlib" "/opt/rustwide/target/debug/deps/libunicode_bidi-1d640526009cae05.rlib" "/opt/rustwide/target/debug/deps/libunicode_normalization-a631b26f2532888c.rlib" "/opt/rustwide/target/debug/deps/libtinyvec-c643c0a1f7b94895.rlib" "/opt/rustwide/target/debug/deps/libtinyvec_macros-3da38bc1578ec686.rlib" "/opt/rustwide/target/debug/deps/libmatches-ec803435b0d6dbd5.rlib" "/opt/rustwide/target/debug/deps/libuuid-46de31db554b0032.rlib" "/opt/rustwide/target/debug/deps/libthreadpool-acbf500a45715820.rlib" "/opt/rustwide/target/debug/deps/liblru_cache-fd9d0298f631f5c1.rlib" "/opt/rustwide/target/debug/deps/liblinked_hash_map-652c6f4943ddd406.rlib" "/opt/rustwide/target/debug/deps/libbytes-f006d95fc3aa0492.rlib" "/opt/rustwide/target/debug/deps/libiovec-1fac2aade266a941.rlib" "/opt/rustwide/target/debug/deps/libbyteorder-f328109de99d6196.rlib" "/opt/rustwide/target/debug/deps/libnum-43567affb3dc2bfe.rlib" "/opt/rustwide/target/debug/deps/libnum_rational-30073e9df1d27152.rlib" "/opt/rustwide/target/debug/deps/libnum_bigint-ceeb2eabcf33afc9.rlib" "/opt/rustwide/target/debug/deps/libnum_complex-b60b9594eacf1c4b.rlib" "/opt/rustwide/target/debug/deps/libnum_iter-d5869d18b76ec653.rlib" "/opt/rustwide/target/debug/deps/libcrypto-8174182abdf16c3f.rlib" "/opt/rustwide/target/debug/deps/librustc_serialize-efb9cfa92b7c8c8d.rlib" "/opt/rustwide/target/debug/deps/librand-9ed386c41cbb4e8f.rlib" "/opt/rustwide/target/debug/deps/librand-40220d76d9531528.rlib" "/opt/rustwide/target/debug/deps/libtokio-1788a26074342439.rlib" "/opt/rustwide/target/debug/deps/libsignal_hook_registry-642a37a05fcb220c.rlib" "/opt/rustwide/target/debug/deps/libnum_cpus-53fd06166164a31c.rlib" "/opt/rustwide/target/debug/deps/libonce_cell-1c76c34bd953cf55.rlib" "/opt/rustwide/target/debug/deps/libbytes-d756a69163f1ed00.rlib" "/opt/rustwide/target/debug/deps/libmio-10560408fbb370f3.rlib" "/opt/rustwide/target/debug/deps/libparking_lot-9e8f8f219140f4ac.rlib" "/opt/rustwide/target/debug/deps/libparking_lot_core-6cfc43581d10c44e.rlib" "/opt/rustwide/target/debug/deps/libsmallvec-2373f89db8adc0bf.rlib" "/opt/rustwide/target/debug/deps/liblock_api-28302a5e66dc2110.rlib" "/opt/rustwide/target/debug/deps/libscopeguard-4b059ff10415273f.rlib" "/opt/rustwide/target/debug/deps/libinstant-935e74d8392426ec.rlib" "/opt/rustwide/target/debug/deps/libfutures-4608a34b2a4b5283.rlib" "/opt/rustwide/target/debug/deps/libfutures_executor-73d5a547c5458233.rlib" "/opt/rustwide/target/debug/deps/libfutures_util-8a4eb545badedb35.rlib" "/opt/rustwide/target/debug/deps/libmemchr-4b7e7f97fdf3b1c2.rlib" "/opt/rustwide/target/debug/deps/libfutures_io-e5338d7670b8117a.rlib" "/opt/rustwide/target/debug/deps/libslab-3fe28842158339e2.rlib" "/opt/rustwide/target/debug/deps/libfutures_channel-4c8d6cd9d8b211df.rlib" "/opt/rustwide/target/debug/deps/libpin_project_lite-859511f254389867.rlib" "/opt/rustwide/target/debug/deps/libfutures_sink-2fe2d758c29a6ff2.rlib" "/opt/rustwide/target/debug/deps/libfutures_task-da978468431f447a.rlib" "/opt/rustwide/target/debug/deps/libpin_utils-6658f7c5b0898ee7.rlib" "/opt/rustwide/target/debug/deps/libfutures_core-7df5fa68417af0a9.rlib" "/opt/rustwide/target/debug/deps/libnum_traits-c8ba4ac984884c79.rlib" "/opt/rustwide/target/debug/deps/libnom-90c184201187bcb9.rlib" "/opt/rustwide/target/debug/deps/libmemchr-0333c5948c99b5f3.rlib" "/opt/rustwide/target/debug/deps/liberror_chain-4e06e9808dafc124.rlib" "/opt/rustwide/target/debug/deps/libbacktrace-fd2972f700fece21.rlib" "/opt/rustwide/target/debug/deps/libminiz_oxide-b9be161bd4ca1b40.rlib" "/opt/rustwide/target/debug/deps/libadler-04e4bd7392188ec3.rlib" "/opt/rustwide/target/debug/deps/libobject-804da91fb1d650ad.rlib" "/opt/rustwide/target/debug/deps/libaddr2line-758851c7fb0dcfbd.rlib" "/opt/rustwide/target/debug/deps/libgimli-aa98cf42ec5edf0e.rlib" "/opt/rustwide/target/debug/deps/librustc_demangle-12e30fdcbb9bf960.rlib" "/opt/rustwide/target/debug/deps/libsimplelog-bfc58951e5f94127.rlib" "/opt/rustwide/target/debug/deps/libtermcolor-48569ba71e859b79.rlib" "/opt/rustwide/target/debug/deps/libchrono-071569fe32eeb018.rlib" "/opt/rustwide/target/debug/deps/libnum_integer-d176c5cb3ee0ae21.rlib" "/opt/rustwide/target/debug/deps/libnum_traits-819abb75827096f3.rlib" "/opt/rustwide/target/debug/deps/libtime-6f86c6c9234a3c74.rlib" "/opt/rustwide/target/debug/deps/liblibc-bfffd8a84e3d7701.rlib" "/opt/rustwide/target/debug/deps/liblog-27ca93f05de06f7b.rlib" "/opt/rustwide/target/debug/deps/liblog-062ec20cca67060d.rlib" "/opt/rustwide/target/debug/deps/libcfg_if-477585129feec44c.rlib" "-Wl,--start-group" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-9c44f1fe63de3edb.rlib" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-5dfdbb680ac299a1.rlib" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libminiz_oxide-353beaf877db2fdf.rlib" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libadler-cd4abd33332d2d3f.rlib" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libobject-3b908b5b50ddd80c.rlib" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libaddr2line-9cafd3521b5532d3.rlib" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgimli-7b0935832903a9ac.rlib" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd_detect-8a349b13d67c76e3.rlib" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle-9d41e7cb09eafd8e.rlib" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown-095194fedb4c0ec4.rlib" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-968cf83f088269ec.rlib" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-e63bbb95a6beff5c.rlib" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if-9f216e67c2916fa5.rlib" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-4688b763605c6a0e.rlib" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-a9b2dc3244289321.rlib" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-52d5241975807511.rlib" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-9924c22ae1efcf66.rlib" "-Wl,--end-group" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-003d83a588984e1f.rlib" "-Wl,-Bdynamic" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-Wl,--eh-frame-hdr" "-Wl,-znoexecstack" "-L" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "/opt/rustwide/target/debug/examples/ex4_echo_server-688e4c5e717d782b" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro" "-Wl,-znow" "-nodefaultlibs" [INFO] [stdout] = note: collect2: fatal error: ld terminated with signal 9 [Killed] [INFO] [stdout] compilation terminated. [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: linking with `cc` failed: exit status: 1 [INFO] [stdout] | [INFO] [stdout] = note: "cc" "-m64" "/opt/rustwide/target/debug/examples/ex4_utpcat-069b8b2319d926ea.ex4_utpcat.4912b8f3-cgu.0.rcgu.o" "/opt/rustwide/target/debug/examples/ex4_utpcat-069b8b2319d926ea.ex4_utpcat.4912b8f3-cgu.1.rcgu.o" "/opt/rustwide/target/debug/examples/ex4_utpcat-069b8b2319d926ea.ex4_utpcat.4912b8f3-cgu.10.rcgu.o" "/opt/rustwide/target/debug/examples/ex4_utpcat-069b8b2319d926ea.ex4_utpcat.4912b8f3-cgu.11.rcgu.o" "/opt/rustwide/target/debug/examples/ex4_utpcat-069b8b2319d926ea.ex4_utpcat.4912b8f3-cgu.12.rcgu.o" "/opt/rustwide/target/debug/examples/ex4_utpcat-069b8b2319d926ea.ex4_utpcat.4912b8f3-cgu.13.rcgu.o" "/opt/rustwide/target/debug/examples/ex4_utpcat-069b8b2319d926ea.ex4_utpcat.4912b8f3-cgu.14.rcgu.o" "/opt/rustwide/target/debug/examples/ex4_utpcat-069b8b2319d926ea.ex4_utpcat.4912b8f3-cgu.15.rcgu.o" "/opt/rustwide/target/debug/examples/ex4_utpcat-069b8b2319d926ea.ex4_utpcat.4912b8f3-cgu.2.rcgu.o" "/opt/rustwide/target/debug/examples/ex4_utpcat-069b8b2319d926ea.ex4_utpcat.4912b8f3-cgu.3.rcgu.o" "/opt/rustwide/target/debug/examples/ex4_utpcat-069b8b2319d926ea.ex4_utpcat.4912b8f3-cgu.4.rcgu.o" "/opt/rustwide/target/debug/examples/ex4_utpcat-069b8b2319d926ea.ex4_utpcat.4912b8f3-cgu.5.rcgu.o" "/opt/rustwide/target/debug/examples/ex4_utpcat-069b8b2319d926ea.ex4_utpcat.4912b8f3-cgu.6.rcgu.o" "/opt/rustwide/target/debug/examples/ex4_utpcat-069b8b2319d926ea.ex4_utpcat.4912b8f3-cgu.7.rcgu.o" "/opt/rustwide/target/debug/examples/ex4_utpcat-069b8b2319d926ea.ex4_utpcat.4912b8f3-cgu.8.rcgu.o" "/opt/rustwide/target/debug/examples/ex4_utpcat-069b8b2319d926ea.ex4_utpcat.4912b8f3-cgu.9.rcgu.o" "/opt/rustwide/target/debug/examples/ex4_utpcat-069b8b2319d926ea.1y3m9j2j1bar0ulf.rcgu.o" "-Wl,--as-needed" "-L" "/opt/rustwide/target/debug/deps" "-L" "/opt/rustwide/target/debug/build/rust-crypto-58cfc629227000ce/out" "-L" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/opt/rustwide/target/debug/deps/libbittorrent_protocol-84fea908f5bc89cb.rlib" "/opt/rustwide/target/debug/deps/libbase32-915c962a92c1507e.rlib" "/opt/rustwide/target/debug/deps/libbit_set-0cca1aef5cfe2ef0.rlib" "/opt/rustwide/target/debug/deps/libbit_vec-b09c35a8ab4bf9eb.rlib" "/opt/rustwide/target/debug/deps/libumio-797ab0c739e4747c.rlib" "/opt/rustwide/target/debug/deps/libcrc-eeda29259dac6f4d.rlib" "/opt/rustwide/target/debug/deps/libmio-9d2e9b8dc776c119.rlib" "/opt/rustwide/target/debug/deps/libnet2-601c167e23aaf282.rlib" "/opt/rustwide/target/debug/deps/libcfg_if-de9cbe0cb77e19a3.rlib" "/opt/rustwide/target/debug/deps/libmiow-ecd5b96bb9472b9a.rlib" "/opt/rustwide/target/debug/deps/libwinapi-752b8c6fa8b80860.rlib" "/opt/rustwide/target/debug/deps/libnix-26736fc95a6d7dbb.rlib" "/opt/rustwide/target/debug/deps/libbitflags-49c4d650958fe230.rlib" "/opt/rustwide/target/debug/deps/libslab-c597d3202d2c1c0e.rlib" "/opt/rustwide/target/debug/deps/libbytes-de37aa6ec024b7aa.rlib" "/opt/rustwide/target/debug/deps/libcrossbeam-12e92ce7b3435641.rlib" "/opt/rustwide/target/debug/deps/libcrossbeam_channel-6fd83c99976a4661.rlib" "/opt/rustwide/target/debug/deps/libcrossbeam_deque-33a7266c289ce847.rlib" "/opt/rustwide/target/debug/deps/libcrossbeam_queue-66afa8e61332408c.rlib" "/opt/rustwide/target/debug/deps/libcrossbeam_epoch-1daf48a8bd77d17d.rlib" "/opt/rustwide/target/debug/deps/libmemoffset-bff73a5db2dc90ea.rlib" "/opt/rustwide/target/debug/deps/libcrossbeam_utils-1c1d2febec71c19e.rlib" "/opt/rustwide/target/debug/deps/liblazy_static-f67718dd40129317.rlib" "/opt/rustwide/target/debug/deps/libwalkdir-0820dafd1e10c370.rlib" "/opt/rustwide/target/debug/deps/libsame_file-363d9c9b6ab85ccc.rlib" "/opt/rustwide/target/debug/deps/liburl-19882ef7cb1c80a2.rlib" "/opt/rustwide/target/debug/deps/libunicode_bidi-1d640526009cae05.rlib" "/opt/rustwide/target/debug/deps/libunicode_normalization-a631b26f2532888c.rlib" "/opt/rustwide/target/debug/deps/libtinyvec-c643c0a1f7b94895.rlib" "/opt/rustwide/target/debug/deps/libtinyvec_macros-3da38bc1578ec686.rlib" "/opt/rustwide/target/debug/deps/libmatches-ec803435b0d6dbd5.rlib" "/opt/rustwide/target/debug/deps/libuuid-46de31db554b0032.rlib" "/opt/rustwide/target/debug/deps/libthreadpool-acbf500a45715820.rlib" "/opt/rustwide/target/debug/deps/liblru_cache-fd9d0298f631f5c1.rlib" "/opt/rustwide/target/debug/deps/liblinked_hash_map-652c6f4943ddd406.rlib" "/opt/rustwide/target/debug/deps/libbytes-f006d95fc3aa0492.rlib" "/opt/rustwide/target/debug/deps/libiovec-1fac2aade266a941.rlib" "/opt/rustwide/target/debug/deps/libbyteorder-f328109de99d6196.rlib" "/opt/rustwide/target/debug/deps/libnum-43567affb3dc2bfe.rlib" "/opt/rustwide/target/debug/deps/libnum_rational-30073e9df1d27152.rlib" "/opt/rustwide/target/debug/deps/libnum_bigint-ceeb2eabcf33afc9.rlib" "/opt/rustwide/target/debug/deps/libnum_complex-b60b9594eacf1c4b.rlib" "/opt/rustwide/target/debug/deps/libnum_iter-d5869d18b76ec653.rlib" "/opt/rustwide/target/debug/deps/libcrypto-8174182abdf16c3f.rlib" "/opt/rustwide/target/debug/deps/librustc_serialize-efb9cfa92b7c8c8d.rlib" "/opt/rustwide/target/debug/deps/librand-9ed386c41cbb4e8f.rlib" "/opt/rustwide/target/debug/deps/librand-40220d76d9531528.rlib" "/opt/rustwide/target/debug/deps/libtokio-1788a26074342439.rlib" "/opt/rustwide/target/debug/deps/libsignal_hook_registry-642a37a05fcb220c.rlib" "/opt/rustwide/target/debug/deps/libnum_cpus-53fd06166164a31c.rlib" "/opt/rustwide/target/debug/deps/libonce_cell-1c76c34bd953cf55.rlib" "/opt/rustwide/target/debug/deps/libbytes-d756a69163f1ed00.rlib" "/opt/rustwide/target/debug/deps/libmio-10560408fbb370f3.rlib" "/opt/rustwide/target/debug/deps/libparking_lot-9e8f8f219140f4ac.rlib" "/opt/rustwide/target/debug/deps/libparking_lot_core-6cfc43581d10c44e.rlib" "/opt/rustwide/target/debug/deps/libsmallvec-2373f89db8adc0bf.rlib" "/opt/rustwide/target/debug/deps/liblock_api-28302a5e66dc2110.rlib" "/opt/rustwide/target/debug/deps/libscopeguard-4b059ff10415273f.rlib" "/opt/rustwide/target/debug/deps/libinstant-935e74d8392426ec.rlib" "/opt/rustwide/target/debug/deps/libfutures-4608a34b2a4b5283.rlib" "/opt/rustwide/target/debug/deps/libfutures_executor-73d5a547c5458233.rlib" "/opt/rustwide/target/debug/deps/libfutures_util-8a4eb545badedb35.rlib" "/opt/rustwide/target/debug/deps/libmemchr-4b7e7f97fdf3b1c2.rlib" "/opt/rustwide/target/debug/deps/libfutures_io-e5338d7670b8117a.rlib" "/opt/rustwide/target/debug/deps/libslab-3fe28842158339e2.rlib" "/opt/rustwide/target/debug/deps/libfutures_channel-4c8d6cd9d8b211df.rlib" "/opt/rustwide/target/debug/deps/libpin_project_lite-859511f254389867.rlib" "/opt/rustwide/target/debug/deps/libfutures_sink-2fe2d758c29a6ff2.rlib" "/opt/rustwide/target/debug/deps/libfutures_task-da978468431f447a.rlib" "/opt/rustwide/target/debug/deps/libpin_utils-6658f7c5b0898ee7.rlib" "/opt/rustwide/target/debug/deps/libfutures_core-7df5fa68417af0a9.rlib" "/opt/rustwide/target/debug/deps/libnum_traits-c8ba4ac984884c79.rlib" "/opt/rustwide/target/debug/deps/libnom-90c184201187bcb9.rlib" "/opt/rustwide/target/debug/deps/libmemchr-0333c5948c99b5f3.rlib" "/opt/rustwide/target/debug/deps/liberror_chain-4e06e9808dafc124.rlib" "/opt/rustwide/target/debug/deps/libbacktrace-fd2972f700fece21.rlib" "/opt/rustwide/target/debug/deps/libminiz_oxide-b9be161bd4ca1b40.rlib" "/opt/rustwide/target/debug/deps/libadler-04e4bd7392188ec3.rlib" "/opt/rustwide/target/debug/deps/libobject-804da91fb1d650ad.rlib" "/opt/rustwide/target/debug/deps/libaddr2line-758851c7fb0dcfbd.rlib" "/opt/rustwide/target/debug/deps/libgimli-aa98cf42ec5edf0e.rlib" "/opt/rustwide/target/debug/deps/librustc_demangle-12e30fdcbb9bf960.rlib" "/opt/rustwide/target/debug/deps/libsimplelog-bfc58951e5f94127.rlib" "/opt/rustwide/target/debug/deps/libtermcolor-48569ba71e859b79.rlib" "/opt/rustwide/target/debug/deps/libchrono-071569fe32eeb018.rlib" "/opt/rustwide/target/debug/deps/libnum_integer-d176c5cb3ee0ae21.rlib" "/opt/rustwide/target/debug/deps/libnum_traits-819abb75827096f3.rlib" "/opt/rustwide/target/debug/deps/libtime-6f86c6c9234a3c74.rlib" "/opt/rustwide/target/debug/deps/liblibc-bfffd8a84e3d7701.rlib" "/opt/rustwide/target/debug/deps/liblog-27ca93f05de06f7b.rlib" "/opt/rustwide/target/debug/deps/liblog-062ec20cca67060d.rlib" "/opt/rustwide/target/debug/deps/libcfg_if-477585129feec44c.rlib" "-Wl,--start-group" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-9c44f1fe63de3edb.rlib" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-5dfdbb680ac299a1.rlib" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libminiz_oxide-353beaf877db2fdf.rlib" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libadler-cd4abd33332d2d3f.rlib" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libobject-3b908b5b50ddd80c.rlib" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libaddr2line-9cafd3521b5532d3.rlib" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgimli-7b0935832903a9ac.rlib" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd_detect-8a349b13d67c76e3.rlib" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle-9d41e7cb09eafd8e.rlib" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown-095194fedb4c0ec4.rlib" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-968cf83f088269ec.rlib" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-e63bbb95a6beff5c.rlib" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if-9f216e67c2916fa5.rlib" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-4688b763605c6a0e.rlib" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-a9b2dc3244289321.rlib" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-52d5241975807511.rlib" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-9924c22ae1efcf66.rlib" "-Wl,--end-group" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-003d83a588984e1f.rlib" "-Wl,-Bdynamic" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-Wl,--eh-frame-hdr" "-Wl,-znoexecstack" "-L" "/opt/rustwide/rustup-home/toolchains/d2e9fff28e244f1ea4927194f1f9b77f93e2ffe2/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "/opt/rustwide/target/debug/examples/ex4_utpcat-069b8b2319d926ea" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro" "-Wl,-znow" "-nodefaultlibs" [INFO] [stdout] = note: collect2: fatal error: ld terminated with signal 9 [Killed] [INFO] [stdout] compilation terminated. [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to previous error [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to previous error; 1 warning emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `#[macro_use]` import [INFO] [stdout] --> bittorrent-protocol/src/lib.rs:15:1 [INFO] [stdout] | [INFO] [stdout] 15 | #[macro_use] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ContiguousBuffer`, `ContiguousBuffers` [INFO] [stdout] --> bittorrent-protocol/src/util/contiguous.rs:154:17 [INFO] [stdout] | [INFO] [stdout] 154 | use super::{ContiguousBuffer, ContiguousBuffers}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Ipv4Addr`, `Ipv6Addr`, `SocketAddrV4`, `SocketAddrV6` [INFO] [stdout] --> bittorrent-protocol/src/util/convert.rs:161:20 [INFO] [stdout] | [INFO] [stdout] 161 | use std::net::{Ipv4Addr, Ipv6Addr, SocketAddrV4, SocketAddrV6}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::util::send::split_sender::SplitSender` [INFO] [stdout] --> bittorrent-protocol/src/util/send/split_sender.rs:107:9 [INFO] [stdout] | [INFO] [stdout] 107 | use crate::util::send::split_sender::SplitSender; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::util::send::TrySender` [INFO] [stdout] --> bittorrent-protocol/src/util/send/split_sender.rs:108:9 [INFO] [stdout] | [INFO] [stdout] 108 | use crate::util::send::TrySender; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::mpsc` [INFO] [stdout] --> bittorrent-protocol/src/util/send/split_sender.rs:109:9 [INFO] [stdout] | [INFO] [stdout] 109 | use std::sync::mpsc; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ShaHash`, `XorRep` [INFO] [stdout] --> bittorrent-protocol/src/util/sha/mod.rs:180:17 [INFO] [stdout] | [INFO] [stdout] 180 | use super::{ShaHash, XorRep}; [INFO] [stdout] | ^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `LocallyShuffledIds`, `TransactionIds` [INFO] [stdout] --> bittorrent-protocol/src/util/trans/locally_shuffled.rs:92:30 [INFO] [stdout] | [INFO] [stdout] 92 | use crate::util::trans::{LocallyShuffledIds, TransactionIds}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::TIDGenerator` [INFO] [stdout] --> bittorrent-protocol/src/util/trans/old.rs:97:9 [INFO] [stdout] | [INFO] [stdout] 97 | use super::TIDGenerator; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::SequentialIds` [INFO] [stdout] --> bittorrent-protocol/src/util/trans/sequential.rs:43:9 [INFO] [stdout] | [INFO] [stdout] 43 | use super::SequentialIds; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::util::trans::TransactionIds` [INFO] [stdout] --> bittorrent-protocol/src/util/trans/sequential.rs:44:9 [INFO] [stdout] | [INFO] [stdout] 44 | use crate::util::trans::TransactionIds; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::bencode::access::bencode::BMutAccess` [INFO] [stdout] --> bittorrent-protocol/src/bencode/mutable/bencode_mut.rs:145:9 [INFO] [stdout] | [INFO] [stdout] 145 | use crate::bencode::access::bencode::BMutAccess; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::bencode::mutable::bencode_mut::BencodeMut` [INFO] [stdout] --> bittorrent-protocol/src/bencode/mutable/bencode_mut.rs:146:9 [INFO] [stdout] | [INFO] [stdout] 146 | use crate::bencode::mutable::bencode_mut::BencodeMut; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::default::Default` [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/bencode_ref.rs:129:9 [INFO] [stdout] | [INFO] [stdout] 129 | use std::default::Default; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::bencode::access::bencode::BRefAccess` [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/bencode_ref.rs:131:9 [INFO] [stdout] | [INFO] [stdout] 131 | use crate::bencode::access::bencode::BRefAccess; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::bencode::reference::bencode_ref::BencodeRef` [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/bencode_ref.rs:132:9 [INFO] [stdout] | [INFO] [stdout] 132 | use crate::bencode::reference::bencode_ref::BencodeRef; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::bencode::reference::decode_opt::BDecodeOpt` [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/bencode_ref.rs:133:9 [INFO] [stdout] | [INFO] [stdout] 133 | use crate::bencode::reference::decode_opt::BDecodeOpt; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::default::Default` [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/decode.rs:216:9 [INFO] [stdout] | [INFO] [stdout] 216 | use std::default::Default; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::bencode::access::bencode::BRefAccess` [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/decode.rs:218:9 [INFO] [stdout] | [INFO] [stdout] 218 | use crate::bencode::access::bencode::BRefAccess; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::bencode::reference::bencode_ref::BencodeRef` [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/decode.rs:219:9 [INFO] [stdout] | [INFO] [stdout] 219 | use crate::bencode::reference::bencode_ref::BencodeRef; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::bencode::reference::decode_opt::BDecodeOpt` [INFO] [stdout] --> bittorrent-protocol/src/bencode/reference/decode.rs:220:9 [INFO] [stdout] | [INFO] [stdout] 220 | use crate::bencode::reference::decode_opt::BDecodeOpt; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused macro definition [INFO] [stdout] --> bittorrent-protocol/src/bencode/mod.rs:134:1 [INFO] [stdout] | [INFO] [stdout] 134 | / macro_rules! bt_ben_list { [INFO] [stdout] 135 | | ( $($ben:expr),* ) => { [INFO] [stdout] 136 | | { [INFO] [stdout] 137 | | use crate::bencode::{BencodeMut, BMutAccess}; [INFO] [stdout] ... | [INFO] [stdout] 149 | | } [INFO] [stdout] 150 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_macros)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `futures::sink::Sink` [INFO] [stdout] --> bittorrent-protocol/src/disk/tasks/context.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use futures::sink::Sink; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> bittorrent-protocol/src/disk/tasks/helpers/piece_checker.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc::Sender` [INFO] [stdout] --> bittorrent-protocol/src/disk/tasks/helpers/piece_checker.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use tokio::sync::mpsc::Sender; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ODiskMessage` [INFO] [stdout] --> bittorrent-protocol/src/disk/tasks/helpers/piece_checker.rs:10:46 [INFO] [stdout] | [INFO] [stdout] 10 | use crate::disk::{BlockMetadata, FileSystem, ODiskMessage}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::disk::BlockMetadata` [INFO] [stdout] --> bittorrent-protocol/src/disk/tasks/helpers/piece_checker.rs:374:9 [INFO] [stdout] | [INFO] [stdout] 374 | use crate::disk::BlockMetadata; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::util::bt` [INFO] [stdout] --> bittorrent-protocol/src/disk/tasks/helpers/piece_checker.rs:375:9 [INFO] [stdout] | [INFO] [stdout] 375 | use crate::util::bt; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> bittorrent-protocol/src/disk/tasks/mod.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `threadpool::ThreadPool` [INFO] [stdout] --> bittorrent-protocol/src/disk/manager.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use threadpool::ThreadPool; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `FutureExt`, `Future`, `SinkExt`, `StreamExt`, `TryFutureExt`, `TryFuture`, `TryStreamExt`, `TryStream` [INFO] [stdout] --> bittorrent-protocol/src/disk/manager.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | Future, FutureExt, Sink, SinkExt, Stream, StreamExt, TryFuture, TryFutureExt, TryStream, [INFO] [stdout] | ^^^^^^ ^^^^^^^^^ ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stdout] 12 | TryStreamExt, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::util::sha::ShaHash` [INFO] [stdout] --> bittorrent-protocol/src/magnet/mod.rs:132:9 [INFO] [stdout] | [INFO] [stdout] 132 | use crate::util::sha::ShaHash; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::dht::bencode::Bencode` [INFO] [stdout] --> bittorrent-protocol/src/dht/bencode/decode.rs:379:9 [INFO] [stdout] | [INFO] [stdout] 379 | use crate::dht::bencode::Bencode; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Ipv4Addr`, `SocketAddrV4` [INFO] [stdout] --> bittorrent-protocol/src/dht/message/compact_info.rs:178:20 [INFO] [stdout] | [INFO] [stdout] 178 | use std::net::{Ipv4Addr, SocketAddrV4}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CompactNodeInfo`, `CompactValueInfo` [INFO] [stdout] --> bittorrent-protocol/src/dht/message/compact_info.rs:180:45 [INFO] [stdout] | [INFO] [stdout] 180 | use crate::dht::message::compact_info::{CompactNodeInfo, CompactValueInfo}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::util::bt::NodeId` [INFO] [stdout] --> bittorrent-protocol/src/dht/message/compact_info.rs:181:9 [INFO] [stdout] | [INFO] [stdout] 181 | use crate::util::bt::NodeId; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::util::sha::ShaHash` [INFO] [stdout] --> bittorrent-protocol/src/dht/message/compact_info.rs:182:9 [INFO] [stdout] | [INFO] [stdout] 182 | use crate::util::sha::ShaHash; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::util::bt` [INFO] [stdout] --> bittorrent-protocol/src/dht/storage.rs:207:9 [INFO] [stdout] | [INFO] [stdout] 207 | use crate::util::bt; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::util::test as util_test` [INFO] [stdout] --> bittorrent-protocol/src/dht/storage.rs:208:9 [INFO] [stdout] | [INFO] [stdout] 208 | use crate::util::test as util_test; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::dht::storage` [INFO] [stdout] --> bittorrent-protocol/src/dht/storage.rs:210:9 [INFO] [stdout] | [INFO] [stdout] 210 | use crate::dht::storage; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::dht::storage::AnnounceStorage` [INFO] [stdout] --> bittorrent-protocol/src/dht/storage.rs:211:9 [INFO] [stdout] | [INFO] [stdout] 211 | use crate::dht::storage::AnnounceStorage; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `chrono::Duration` [INFO] [stdout] --> bittorrent-protocol/src/dht/storage.rs:212:9 [INFO] [stdout] | [INFO] [stdout] 212 | use chrono::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::TokenStore` [INFO] [stdout] --> bittorrent-protocol/src/dht/token.rs:205:9 [INFO] [stdout] | [INFO] [stdout] 205 | use super::TokenStore; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::util::test as util_test` [INFO] [stdout] --> bittorrent-protocol/src/dht/token.rs:206:9 [INFO] [stdout] | [INFO] [stdout] 206 | use crate::util::test as util_test; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `chrono::Duration` [INFO] [stdout] --> bittorrent-protocol/src/dht/token.rs:207:9 [INFO] [stdout] | [INFO] [stdout] 207 | use chrono::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashSet` [INFO] [stdout] --> bittorrent-protocol/src/dht/transaction.rs:281:9 [INFO] [stdout] | [INFO] [stdout] 281 | use std::collections::HashSet; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `AIDGenerator`, `TransactionID` [INFO] [stdout] --> bittorrent-protocol/src/dht/transaction.rs:283:17 [INFO] [stdout] | [INFO] [stdout] 283 | use super::{AIDGenerator, TransactionID}; [INFO] [stdout] | ^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::Write` [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:536:9 [INFO] [stdout] | [INFO] [stdout] 536 | use std::io::Write; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::net::Ipv4Addr` [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:537:9 [INFO] [stdout] | [INFO] [stdout] 537 | use std::net::Ipv4Addr; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BigEndian`, `WriteBytesExt` [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:539:21 [INFO] [stdout] | [INFO] [stdout] 539 | use byteorder::{BigEndian, WriteBytesExt}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `nom::IResult` [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:540:9 [INFO] [stdout] | [INFO] [stdout] 540 | use nom::IResult; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `AnnounceEvent`, `AnnounceRequest`, `AnnounceResponse`, `ClientState`, `DesiredPeers`, `SourceIP` [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:543:9 [INFO] [stdout] | [INFO] [stdout] 543 | AnnounceEvent, AnnounceRequest, AnnounceResponse, ClientState, DesiredPeers, SourceIP, [INFO] [stdout] | ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `InfoHash`, `PeerId` [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:545:27 [INFO] [stdout] | [INFO] [stdout] 545 | use crate::util::bt::{InfoHash, PeerId}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::util::convert` [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:546:9 [INFO] [stdout] | [INFO] [stdout] 546 | use crate::util::convert; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CompactPeersV4`, `CompactPeersV6`, `CompactPeers` [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:547:36 [INFO] [stdout] | [INFO] [stdout] 547 | use crate::utracker::contact::{CompactPeers, CompactPeersV4, CompactPeersV6}; [INFO] [stdout] | ^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::utracker::option::AnnounceOptions` [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:548:9 [INFO] [stdout] | [INFO] [stdout] 548 | use crate::utracker::option::AnnounceOptions; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `nom::IResult` [INFO] [stdout] --> bittorrent-protocol/src/utracker/contact.rs:332:9 [INFO] [stdout] | [INFO] [stdout] 332 | use nom::IResult; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CompactPeersV4`, `CompactPeersV6` [INFO] [stdout] --> bittorrent-protocol/src/utracker/contact.rs:334:17 [INFO] [stdout] | [INFO] [stdout] 334 | use super::{CompactPeersV4, CompactPeersV6}; [INFO] [stdout] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused doc comment [INFO] [stdout] --> bittorrent-protocol/src/utracker/option.rs:157:1 [INFO] [stdout] | [INFO] [stdout] 157 | /// Parse an end of buffer or the end of option byte. [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ rustdoc does not generate documentation for macro invocations [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_doc_comments)]` on by default [INFO] [stdout] = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused doc comment [INFO] [stdout] --> bittorrent-protocol/src/utracker/option.rs:191:1 [INFO] [stdout] | [INFO] [stdout] 191 | /// Parse a single byte as an unsigned pointer size. [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ rustdoc does not generate documentation for macro invocations [INFO] [stdout] | [INFO] [stdout] = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::Write` [INFO] [stdout] --> bittorrent-protocol/src/utracker/option.rs:231:9 [INFO] [stdout] | [INFO] [stdout] 231 | use std::io::Write; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `self` [INFO] [stdout] --> bittorrent-protocol/src/utracker/option.rs:232:19 [INFO] [stdout] | [INFO] [stdout] 232 | use std::u8::{self}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `nom::IResult` [INFO] [stdout] --> bittorrent-protocol/src/utracker/option.rs:234:9 [INFO] [stdout] | [INFO] [stdout] 234 | use nom::IResult; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `AnnounceOptions`, `URLDataOption` [INFO] [stdout] --> bittorrent-protocol/src/utracker/option.rs:236:17 [INFO] [stdout] | [INFO] [stdout] 236 | use super::{AnnounceOptions, URLDataOption}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BigEndian`, `WriteBytesExt` [INFO] [stdout] --> bittorrent-protocol/src/utracker/scrape.rs:289:21 [INFO] [stdout] | [INFO] [stdout] 289 | use byteorder::{BigEndian, WriteBytesExt}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `nom::IResult` [INFO] [stdout] --> bittorrent-protocol/src/utracker/scrape.rs:290:9 [INFO] [stdout] | [INFO] [stdout] 290 | use nom::IResult; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ScrapeRequest`, `ScrapeResponse`, `ScrapeStats` [INFO] [stdout] --> bittorrent-protocol/src/utracker/scrape.rs:292:17 [INFO] [stdout] | [INFO] [stdout] 292 | use super::{ScrapeRequest, ScrapeResponse, ScrapeStats}; [INFO] [stdout] | ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::util::bt` [INFO] [stdout] --> bittorrent-protocol/src/utracker/scrape.rs:293:9 [INFO] [stdout] | [INFO] [stdout] 293 | use crate::util::bt; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::cmp` [INFO] [stdout] --> bittorrent-protocol/src/handshake/manager/mod.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::cmp; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `HandshakeType` [INFO] [stdout] --> bittorrent-protocol/src/handshake/manager/mod.rs:27:56 [INFO] [stdout] | [INFO] [stdout] 27 | use crate::handshake::handler::{handshaker, initiator, HandshakeType}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::Cursor` [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/handshaker.rs:144:9 [INFO] [stdout] | [INFO] [stdout] 144 | use std::io::Cursor; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Future`, `self` [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/handshaker.rs:147:27 [INFO] [stdout] | [INFO] [stdout] 147 | use futures::future::{self, Future}; [INFO] [stdout] | ^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::handshake::message::bittorrent::message::HandshakeMessage` [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/handshaker.rs:153:9 [INFO] [stdout] | [INFO] [stdout] 153 | use crate::handshake::message::bittorrent::message::HandshakeMessage; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::handshake::filter::filters::Filters` [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/handshaker.rs:154:9 [INFO] [stdout] | [INFO] [stdout] 154 | use crate::handshake::filter::filters::Filters; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `InitiateMessage`, `Protocol` [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/handshaker.rs:157:40 [INFO] [stdout] | [INFO] [stdout] 157 | use crate::handshake::{Extensions, InitiateMessage, Protocol}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time::Duration` [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/initiator.rs:40:9 [INFO] [stdout] | [INFO] [stdout] 40 | use std::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `futures::Future` [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/initiator.rs:42:9 [INFO] [stdout] | [INFO] [stdout] 42 | use futures::Future; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BlockAddrFilter`, `BlockPeerIdFilter`, `BlockProtocolFilter` [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/initiator.rs:50:9 [INFO] [stdout] | [INFO] [stdout] 50 | BlockAddrFilter, BlockPeerIdFilter, BlockProtocolFilter, [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::handshake::filter::filters::Filters` [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/initiator.rs:52:9 [INFO] [stdout] | [INFO] [stdout] 52 | use crate::handshake::filter::filters::Filters; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::handshake::handler::timer::HandshakeTimer` [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/initiator.rs:53:9 [INFO] [stdout] | [INFO] [stdout] 53 | use crate::handshake::handler::timer::HandshakeTimer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::handshake::handler::HandshakeType` [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/initiator.rs:54:9 [INFO] [stdout] | [INFO] [stdout] 54 | use crate::handshake::handler::HandshakeType; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::handshake::transport::test_transports::MockTransport` [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/initiator.rs:55:9 [INFO] [stdout] | [INFO] [stdout] 55 | use crate::handshake::transport::test_transports::MockTransport; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `InitiateMessage`, `Protocol` [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/initiator.rs:56:28 [INFO] [stdout] | [INFO] [stdout] 56 | use crate::handshake::{InitiateMessage, Protocol}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io` [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/listener.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use std::io; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::handshake::handler::listener::ListenerHandler` [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/listener.rs:36:9 [INFO] [stdout] | [INFO] [stdout] 36 | use crate::handshake::handler::listener::ListenerHandler; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::handshake::handler::HandshakeType` [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/listener.rs:37:9 [INFO] [stdout] | [INFO] [stdout] 37 | use crate::handshake::handler::HandshakeType; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `futures::Future` [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/listener.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 38 | use futures::Future; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BlockAddrFilter`, `BlockProtocolFilter` [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/listener.rs:40:59 [INFO] [stdout] | [INFO] [stdout] 40 | use crate::handshake::filter::filters::test_filters::{BlockAddrFilter, BlockProtocolFilter}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::handshake::filter::filters::Filters` [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/listener.rs:41:9 [INFO] [stdout] | [INFO] [stdout] 41 | use crate::handshake::filter::filters::Filters; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::handshake::Protocol` [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/listener.rs:42:9 [INFO] [stdout] | [INFO] [stdout] 42 | use crate::handshake::Protocol; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time::Duration` [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/timer.rs:22:9 [INFO] [stdout] | [INFO] [stdout] 22 | use std::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::HandshakeTimer` [INFO] [stdout] --> bittorrent-protocol/src/handshake/handler/timer.rs:24:9 [INFO] [stdout] | [INFO] [stdout] 24 | use super::HandshakeTimer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::test_filters::BlockAddrFilter` [INFO] [stdout] --> bittorrent-protocol/src/handshake/filter/filters.rs:202:9 [INFO] [stdout] | [INFO] [stdout] 202 | use super::test_filters::BlockAddrFilter; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::Filters` [INFO] [stdout] --> bittorrent-protocol/src/handshake/filter/filters.rs:203:9 [INFO] [stdout] | [INFO] [stdout] 203 | use super::Filters; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::FilterDecision` [INFO] [stdout] --> bittorrent-protocol/src/handshake/filter/mod.rs:131:9 [INFO] [stdout] | [INFO] [stdout] 131 | use super::FilterDecision; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Cursor` [INFO] [stdout] --> bittorrent-protocol/src/handshake/message/bittorrent/framed.rs:4:21 [INFO] [stdout] | [INFO] [stdout] 4 | use std::io::{self, Cursor, Write, Read}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::error::Error` [INFO] [stdout] --> bittorrent-protocol/src/handshake/message/bittorrent/framed.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use std::error::Error; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Cursor`, `Write` [INFO] [stdout] --> bittorrent-protocol/src/handshake/message/bittorrent/framed.rs:141:19 [INFO] [stdout] | [INFO] [stdout] 141 | use std::io::{Cursor, Write}; [INFO] [stdout] | ^^^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::handshake::message::bittorrent::framed::FramedHandshake` [INFO] [stdout] --> bittorrent-protocol/src/handshake/message/bittorrent/framed.rs:143:9 [INFO] [stdout] | [INFO] [stdout] 143 | use crate::handshake::message::bittorrent::framed::FramedHandshake; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::handshake::message::bittorrent::message::HandshakeMessage` [INFO] [stdout] --> bittorrent-protocol/src/handshake/message/bittorrent/framed.rs:144:9 [INFO] [stdout] | [INFO] [stdout] 144 | use crate::handshake::message::bittorrent::message::HandshakeMessage; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Protocol` [INFO] [stdout] --> bittorrent-protocol/src/handshake/message/bittorrent/framed.rs:146:40 [INFO] [stdout] | [INFO] [stdout] 146 | use crate::handshake::{Extensions, Protocol}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::Write` [INFO] [stdout] --> bittorrent-protocol/src/handshake/message/bittorrent/message.rs:103:9 [INFO] [stdout] | [INFO] [stdout] 103 | use std::io::Write; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::handshake::message::bittorrent::message::HandshakeMessage` [INFO] [stdout] --> bittorrent-protocol/src/handshake/message/bittorrent/message.rs:105:9 [INFO] [stdout] | [INFO] [stdout] 105 | use crate::handshake::message::bittorrent::message::HandshakeMessage; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Protocol` [INFO] [stdout] --> bittorrent-protocol/src/handshake/message/bittorrent/message.rs:107:40 [INFO] [stdout] | [INFO] [stdout] 107 | use crate::handshake::{Extensions, Protocol}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Extension`, `Extensions` [INFO] [stdout] --> bittorrent-protocol/src/handshake/message/extensions.rs:104:17 [INFO] [stdout] | [INFO] [stdout] 104 | use super::{Extension, Extensions}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Incoming` [INFO] [stdout] --> bittorrent-protocol/src/handshake/transport.rs:7:28 [INFO] [stdout] | [INFO] [stdout] 7 | use std::net::{SocketAddr, Incoming}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::option::Option::Some` [INFO] [stdout] --> bittorrent-protocol/src/handshake/transport.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use std::option::Option::Some; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `UtpStream` [INFO] [stdout] --> bittorrent-protocol/src/handshake/transport.rs:10:42 [INFO] [stdout] | [INFO] [stdout] 10 | use crate::utp::{UtpSocket, UtpListener, UtpStream}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Sender` [INFO] [stdout] --> bittorrent-protocol/src/handshake/stream.rs:2:26 [INFO] [stdout] | [INFO] [stdout] 2 | use crossbeam::channel::{Sender,Receiver}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ManagedMessage` [INFO] [stdout] --> bittorrent-protocol/src/peer/manager/builder.rs:3:13 [INFO] [stdout] | [INFO] [stdout] 3 | use super::{ManagedMessage, PeerManager}; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::net::TcpStream` [INFO] [stdout] --> bittorrent-protocol/src/peer/manager/mod.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | use std::net::TcpStream; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::net::TcpStream` [INFO] [stdout] --> bittorrent-protocol/src/peer/manager/task_one_thread.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use std::net::TcpStream; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Arc`, `Mutex` [INFO] [stdout] --> bittorrent-protocol/src/peer/manager/task_one_thread.rs:11:17 [INFO] [stdout] | [INFO] [stdout] 11 | use std::sync::{Arc, Mutex}; [INFO] [stdout] | ^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::peer::manager::TryClone` [INFO] [stdout] --> bittorrent-protocol/src/peer/manager/task_one_thread.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::peer::manager::TryClone; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::peer::message::PeerWireProtocolMessage` [INFO] [stdout] --> bittorrent-protocol/src/peer/manager/task_split.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::peer::message::PeerWireProtocolMessage; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::net::TcpStream` [INFO] [stdout] --> bittorrent-protocol/src/peer/manager/task_split.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use std::net::TcpStream; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::select::discovery::error::DiscoveryError` [INFO] [stdout] --> bittorrent-protocol/src/select/uber.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::select::discovery::error::DiscoveryError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ExtensionType`, `Extension`, `HEADER_SIZE`, `PacketType`, `Packet`, `TryFrom`, `check_extensions` [INFO] [stdout] --> bittorrent-protocol/src/utp/packet.rs:498:30 [INFO] [stdout] | [INFO] [stdout] 498 | use crate::utp::packet::{ExtensionType, Extension, Packet, PacketType, HEADER_SIZE, TryFrom, check_extensions}; [INFO] [stdout] | ^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Data`, `State` [INFO] [stdout] --> bittorrent-protocol/src/utp/packet.rs:499:42 [INFO] [stdout] | [INFO] [stdout] 499 | use crate::utp::packet::PacketType::{State, Data}; [INFO] [stdout] | ^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Delay`, `Timestamp` [INFO] [stdout] --> bittorrent-protocol/src/utp/packet.rs:500:28 [INFO] [stdout] | [INFO] [stdout] 500 | use crate::utp::time::{Timestamp, Delay}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::thread` [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:1301:9 [INFO] [stdout] | [INFO] [stdout] 1301 | use std::thread; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::net::ToSocketAddrs` [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:1302:9 [INFO] [stdout] | [INFO] [stdout] 1302 | use std::net::ToSocketAddrs; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::ErrorKind` [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:1303:9 [INFO] [stdout] | [INFO] [stdout] 1303 | use std::io::ErrorKind; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rand` [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:1304:9 [INFO] [stdout] | [INFO] [stdout] 1304 | use rand; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BUF_SIZE`, `SocketState`, `UtpListener`, `UtpSocket`, `take_address` [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:1305:30 [INFO] [stdout] | [INFO] [stdout] 1305 | use crate::utp::socket::{UtpSocket, UtpListener, SocketState, BUF_SIZE, take_address}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::utp::packet::*` [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:1306:9 [INFO] [stdout] | [INFO] [stdout] 1306 | use crate::utp::packet::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::utp::time::now_microseconds` [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:1307:9 [INFO] [stdout] | [INFO] [stdout] 1307 | use crate::utp::time::now_microseconds; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::utp::socket::SocketState` [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:1308:9 [INFO] [stdout] | [INFO] [stdout] 1308 | use crate::utp::socket::SocketState; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused macro definition [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:1310:5 [INFO] [stdout] | [INFO] [stdout] 1310 | / macro_rules! iotry { [INFO] [stdout] 1311 | | ($e:expr) => (match $e { Ok(e) => e, Err(e) => panic!("{:?}", e) }) [INFO] [stdout] 1312 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::utp::util::*` [INFO] [stdout] --> bittorrent-protocol/src/utp/util.rs:42:9 [INFO] [stdout] | [INFO] [stdout] 42 | use crate::utp::util::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::mem::uninitialized`: use `mem::MaybeUninit` instead [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:479:1 [INFO] [stdout] | [INFO] [stdout] 479 | / named!(parse_ipv4<&[u8], Ipv4Addr>, [INFO] [stdout] 480 | | map!(count_fixed!(u8, be_u8, 4), |b| convert::bytes_be_to_ipv4(b)) [INFO] [stdout] 481 | | ); [INFO] [stdout] | |__^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] = note: this warning originates in the macro `count_fixed` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::mem::uninitialized`: use `mem::MaybeUninit` instead [INFO] [stdout] --> bittorrent-protocol/src/utracker/announce.rs:490:1 [INFO] [stdout] | [INFO] [stdout] 490 | / named!(parse_ipv6<&[u8], Ipv6Addr>, [INFO] [stdout] 491 | | map!(count_fixed!(u8, be_u8, 16), |b| convert::bytes_be_to_ipv6(b)) [INFO] [stdout] 492 | | ); [INFO] [stdout] | |__^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `count_fixed` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `std::mem::uninitialized`: use `mem::MaybeUninit` instead [INFO] [stdout] --> bittorrent-protocol/src/handshake/message/extensions.rs:96:5 [INFO] [stdout] | [INFO] [stdout] 96 | / do_parse!( [INFO] [stdout] 97 | | bytes, [INFO] [stdout] 98 | | bytes: count_fixed!(u8, be_u8, NUM_EXTENSION_BYTES) >> (Extensions::with_bytes(bytes)) [INFO] [stdout] 99 | | ) [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `count_fixed` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::atomic::ATOMIC_USIZE_INIT`: the `new` function is now preferred [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:1315:46 [INFO] [stdout] | [INFO] [stdout] 1315 | use std::sync::atomic::{AtomicUsize, ATOMIC_USIZE_INIT, Ordering}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::atomic::ATOMIC_USIZE_INIT`: the `new` function is now preferred [INFO] [stdout] --> bittorrent-protocol/src/utp/socket.rs:1316:43 [INFO] [stdout] | [INFO] [stdout] 1316 | static NEXT_OFFSET: AtomicUsize = ATOMIC_USIZE_INIT; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace the use of the deprecated constant: `AtomicUsize::new(0)` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0271]: type mismatch resolving `::Item == (std::io::Cursor>, std::net::SocketAddr)` [INFO] [stdout] --> bittorrent-protocol/src/handshake/transport.rs:153:9 [INFO] [stdout] | [INFO] [stdout] 18 | type Listener: Stream + LocalAddr + 'static; [INFO] [stdout] | --------------------------------- required by this bound in `Transport::Listener` [INFO] [stdout] ... [INFO] [stdout] 153 | type Listener = MockListener; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected tuple, found struct `std::io::Cursor` [INFO] [stdout] | [INFO] [stdout] = note: expected tuple `(std::io::Cursor>, std::net::SocketAddr)` [INFO] [stdout] found struct `std::io::Cursor>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the trait bound `(): From<()>` is not satisfied [INFO] [stdout] --> bittorrent-protocol/src/handshake/transport.rs:199:52 [INFO] [stdout] | [INFO] [stdout] 199 | Err(Error::new(ErrorKind::NotFound, ())) [INFO] [stdout] | ^^ [INFO] [stdout] | | [INFO] [stdout] | expected an implementor of trait `From<()>` [INFO] [stdout] | help: consider borrowing here: `&()` [INFO] [stdout] | [INFO] [stdout] = note: required because of the requirements on the impl of `From<()>` for `Box<(dyn std::error::Error + Sync + std::marker::Send + 'static)>` [INFO] [stdout] = note: required because of the requirements on the impl of `Into>` for `()` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 4 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 1 warning emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `std::error::Error::description`: use the Display impl or to_string() [INFO] [stdout] --> bittorrent-protocol/src/utp/error.rs:33:26 [INFO] [stdout] | [INFO] [stdout] 33 | f.write_str(self.description()) [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `std::error::Error::description`: use the Display impl or to_string() [INFO] [stdout] --> bittorrent-protocol/src/utp/error.rs:49:36 [INFO] [stdout] | [INFO] [stdout] 49 | io::Error::new(kind, error.description()) [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `std::error::Error::description`: use the Display impl or to_string() [INFO] [stdout] --> bittorrent-protocol/src/utp/error.rs:63:30 [INFO] [stdout] | [INFO] [stdout] 63 | write!(f, "{}", self.description()) [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `std::error::Error::description`: use the Display impl or to_string() [INFO] [stdout] --> bittorrent-protocol/src/utp/error.rs:81:48 [INFO] [stdout] | [INFO] [stdout] 81 | io::Error::new(ErrorKind::Other, error.description()) [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 9 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 373 previous errors; 139 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0252, E0271, E0277, E0432, E0433. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0252`. [INFO] [stdout] [INFO] [stdout] warning: 2 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] error: build failed [INFO] running `Command { std: "docker" "inspect" "73b410419d0aaf2ce2aec529bafeb4a25d6d8b7f0bf9ff8db41ee7c3f5fbb876", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "73b410419d0aaf2ce2aec529bafeb4a25d6d8b7f0bf9ff8db41ee7c3f5fbb876", kill_on_drop: false }` [INFO] [stdout] 73b410419d0aaf2ce2aec529bafeb4a25d6d8b7f0bf9ff8db41ee7c3f5fbb876