[INFO] updating cached repository https://github.com/itsuy/rust-torrent [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "-c" "remote.origin.fetch=refs/heads/*:refs/heads/*" "fetch" "origin" "--force" "--prune", kill_on_drop: false }` [INFO] [stderr] From https://github.com/itsuy/rust-torrent [INFO] [stderr] a85e564..2740f35 master -> master [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 2740f35aacb420a957e323155f03bc03d0f4b898 [INFO] testing itsuy/rust-torrent against master#8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e for pr-74409 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fitsuy%2Frust-torrent" "/workspace/builds/worker-3/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/itsuy/rust-torrent on toolchain 8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e" "read-manifest" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/itsuy/rust-torrent [INFO] finished tweaking git repo https://github.com/itsuy/rust-torrent [INFO] tweaked toml for git repo https://github.com/itsuy/rust-torrent written to /workspace/builds/worker-3/source/Cargo.toml [INFO] crate git repo https://github.com/itsuy/rust-torrent already has a lockfile, it will not be regenerated [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e" "fetch" "--locked" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3/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" "MAP_USER_ID=0" "-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" "--network" "none" "rustops/crates-build-env@sha256:d9fbb4e2287ab3795bdefaf705efb7541a8875c13bce71e067d6b01dc5ed759b" "/opt/rustwide/cargo-home/bin/cargo" "+8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 92a5a53e8d8a20381862cca8d2b4cacc2e4accc4ae9d171874110451682aae5b [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" "92a5a53e8d8a20381862cca8d2b4cacc2e4accc4ae9d171874110451682aae5b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "92a5a53e8d8a20381862cca8d2b4cacc2e4accc4ae9d171874110451682aae5b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "92a5a53e8d8a20381862cca8d2b4cacc2e4accc4ae9d171874110451682aae5b", kill_on_drop: false }` [INFO] [stdout] 92a5a53e8d8a20381862cca8d2b4cacc2e4accc4ae9d171874110451682aae5b [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3/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" "MAP_USER_ID=0" "-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" "--network" "none" "rustops/crates-build-env@sha256:d9fbb4e2287ab3795bdefaf705efb7541a8875c13bce71e067d6b01dc5ed759b" "/opt/rustwide/cargo-home/bin/cargo" "+8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 8c979b8eb36186a84b5053f7d9b53e836fb524c5570eba9e7ef9d9eae323cde0 [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" "8c979b8eb36186a84b5053f7d9b53e836fb524c5570eba9e7ef9d9eae323cde0", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.71 [INFO] [stderr] Compiling proc-macro2 v1.0.18 [INFO] [stderr] Compiling unicode-xid v0.2.0 [INFO] [stderr] Compiling syn v1.0.33 [INFO] [stderr] Compiling cfg-if v0.1.10 [INFO] [stderr] Compiling autocfg v1.0.0 [INFO] [stderr] Compiling log v0.4.8 [INFO] [stderr] Compiling lazy_static v1.4.0 [INFO] [stderr] Compiling memchr v2.3.3 [INFO] [stderr] Compiling cc v1.0.54 [INFO] [stderr] Compiling serde v1.0.114 [INFO] [stderr] Compiling slab v0.4.2 [INFO] [stderr] Compiling futures-core v0.3.5 [INFO] [stderr] Compiling fnv v1.0.6 [INFO] [stderr] Compiling arc-swap v0.4.4 [INFO] [stderr] Compiling bitflags v1.2.1 [INFO] [stderr] Compiling pin-project-lite v0.1.4 [INFO] [stderr] Compiling matches v0.1.8 [INFO] [stderr] Compiling openssl v0.10.29 [INFO] [stderr] Compiling getrandom v0.1.14 [INFO] [stderr] Compiling once_cell v1.4.0 [INFO] [stderr] Compiling native-tls v0.2.4 [INFO] [stderr] Compiling futures-io v0.3.5 [INFO] [stderr] Compiling futures-sink v0.3.5 [INFO] [stderr] Compiling pin-utils v0.1.0 [INFO] [stderr] Compiling percent-encoding v2.1.0 [INFO] [stderr] Compiling openssl-probe v0.1.2 [INFO] [stderr] Compiling tower-service v0.3.0 [INFO] [stderr] Compiling proc-macro-hack v0.5.16 [INFO] [stderr] Compiling gcc v0.3.55 [INFO] [stderr] Compiling byteorder v1.3.4 [INFO] [stderr] Compiling mime v0.3.16 [INFO] [stderr] Compiling rustc-serialize v0.3.24 [INFO] [stderr] Compiling base64 v0.12.2 [INFO] [stderr] Compiling bencodex v0.1.3 [INFO] [stderr] Compiling hex v0.4.2 [INFO] [stderr] Compiling proc-macro-error-attr v1.0.3 [INFO] [stderr] Compiling standback v0.2.9 [INFO] [stderr] Compiling proc-macro-error v1.0.3 [INFO] [stderr] Compiling time v0.2.16 [INFO] [stderr] Compiling thread_local v1.0.1 [INFO] [stderr] Compiling http v0.2.1 [INFO] [stderr] Compiling futures-channel v0.3.5 [INFO] [stderr] Compiling unicode-bidi v0.3.4 [INFO] [stderr] Compiling futures-task v0.3.5 [INFO] [stderr] Compiling indexmap v1.4.0 [INFO] [stderr] Compiling num-traits v0.2.12 [INFO] [stderr] Compiling encoding_rs v0.8.23 [INFO] [stderr] Compiling idna v0.2.0 [INFO] [stderr] Compiling mime_guess v2.0.3 [INFO] [stderr] Compiling want v0.3.0 [INFO] [stderr] Compiling aho-corasick v0.7.13 [INFO] [stderr] Compiling quote v1.0.2 [INFO] [stderr] Compiling rust-crypto v0.2.36 [INFO] [stderr] Compiling openssl-sys v0.9.58 [INFO] [stderr] Compiling url v2.1.1 [INFO] [stderr] Compiling iovec v0.1.4 [INFO] [stderr] Compiling net2 v0.2.33 [INFO] [stderr] Compiling signal-hook-registry v1.2.0 [INFO] [stderr] Compiling num_cpus v1.12.0 [INFO] [stderr] Compiling time v0.1.42 [INFO] [stderr] Compiling socket2 v0.3.11 [INFO] [stderr] Compiling atty v0.2.14 [INFO] [stderr] Compiling rand v0.4.6 [INFO] [stderr] Compiling mio v0.6.21 [INFO] [stderr] Compiling num-traits v0.1.43 [INFO] [stderr] Compiling rand_core v0.5.1 [INFO] [stderr] Compiling colored v1.9.3 [INFO] [stderr] Compiling rand_chacha v0.2.2 [INFO] [stderr] Compiling regex v1.3.9 [INFO] [stderr] Compiling bencode v0.1.16 [INFO] [stderr] Compiling rand v0.7.3 [INFO] [stderr] Compiling rand v0.3.23 [INFO] [stderr] Compiling http-body v0.3.1 [INFO] [stderr] Compiling mio-uds v0.6.7 [INFO] [stderr] Compiling serde_json v1.0.56 [INFO] [stderr] Compiling serde_urlencoded v0.6.1 [INFO] [stderr] Compiling serde_bytes v0.10.5 [INFO] [stderr] Compiling serde_bytes v0.11.5 [INFO] [stderr] Compiling serde_bencode v0.2.1 [INFO] [stderr] Compiling syn-mid v0.5.0 [INFO] [stderr] Compiling tokio-macros v0.2.4 [INFO] [stderr] Compiling pin-project-internal v0.4.22 [INFO] [stderr] Compiling time-macros-impl v0.1.1 [INFO] [stderr] Compiling serde_derive v1.0.114 [INFO] [stderr] Compiling extend v0.1.2 [INFO] [stderr] Compiling tokio v0.2.11 [INFO] [stderr] Compiling time-macros v0.1.0 [INFO] [stderr] Compiling pin-project v0.4.22 [INFO] [stderr] Compiling assert-json-diff v1.0.3 [INFO] [stderr] Compiling futures-util v0.3.5 [INFO] [stderr] Compiling mockito v0.26.0 [INFO] [stderr] Compiling tokio-util v0.3.1 [INFO] [stderr] Compiling tokio-tls v0.3.1 [INFO] [stderr] Compiling h2 v0.2.5 [INFO] [stderr] Compiling hyper v0.13.6 [INFO] [stderr] Compiling hyper-tls v0.4.1 [INFO] [stderr] Compiling reqwest v0.10.6 [INFO] [stderr] Compiling rust-torrent v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `new_handshake` [INFO] [stdout] --> src/client.rs:2:24 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::handshake::{new_handshake, read_handshake, serialize_handshake, Handshake}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BigEndian`, `ReadBytesExt` [INFO] [stdout] --> src/client.rs:5:17 [INFO] [stdout] | [INFO] [stdout] 5 | use byteorder::{BigEndian, ReadBytesExt}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/client.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::prelude::*` [INFO] [stdout] --> src/client.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use std::io::prelude::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Ipv4Addr`, `SocketAddrV4` [INFO] [stdout] --> src/client.rs:9:16 [INFO] [stdout] | [INFO] [stdout] 9 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::mpsc` [INFO] [stdout] --> src/client.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use std::sync::mpsc; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::thread` [INFO] [stdout] --> src/client.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use std::thread; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/handshake.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufRead`, `BufReader`, `Cursor` [INFO] [stdout] --> src/handshake.rs:4:15 [INFO] [stdout] | [INFO] [stdout] 4 | use std::io::{BufRead, BufReader, Cursor, Error, ErrorKind, Read, Result}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Ipv4Addr`, `SocketAddrV4`, `SocketAddr`, `TcpListener` [INFO] [stdout] --> src/handshake.rs:5:16 [INFO] [stdout] | [INFO] [stdout] 5 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream, TcpListener}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::str` [INFO] [stdout] --> src/handshake.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use std::str; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::prelude::*` [INFO] [stdout] --> src/handshake.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use std::io::prelude::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::thread` [INFO] [stdout] --> src/handshake.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use std::thread; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufMut`, `BytesMut` [INFO] [stdout] --> src/handshake.rs:10:13 [INFO] [stdout] | [INFO] [stdout] 10 | use bytes::{BytesMut, BufMut}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/message.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::prelude::*` [INFO] [stdout] --> src/message.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::io::prelude::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufRead`, `BufReader` [INFO] [stdout] --> src/message.rs:4:15 [INFO] [stdout] | [INFO] [stdout] 4 | use std::io::{BufRead, BufReader, Cursor, Error, ErrorKind, Read, Result}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Ipv4Addr`, `SocketAddrV4`, `SocketAddr`, `TcpListener` [INFO] [stdout] --> src/message.rs:6:16 [INFO] [stdout] | [INFO] [stdout] 6 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream, TcpListener}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::thread` [INFO] [stdout] --> src/message.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use std::thread; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `messageID` should have an upper camel case name [INFO] [stdout] --> src/message.rs:9:6 [INFO] [stdout] | [INFO] [stdout] 9 | type messageID = u8; [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to upper camel case: `MessageId` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_camel_case_types)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BigEndian`, `ReadBytesExt` [INFO] [stdout] --> src/p2p.rs:7:17 [INFO] [stdout] | [INFO] [stdout] 7 | use byteorder::{BigEndian, ReadBytesExt}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sync_channel` [INFO] [stdout] --> src/p2p.rs:9:53 [INFO] [stdout] | [INFO] [stdout] 9 | use std::sync::mpsc::{Receiver, Sender, SyncSender, sync_channel}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/peers.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufRead`, `BufReader`, `Read` [INFO] [stdout] --> src/peers.rs:3:15 [INFO] [stdout] | [INFO] [stdout] 3 | use std::io::{BufRead, BufReader, Cursor, Error, ErrorKind, Read, Result}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SocketAddr` [INFO] [stdout] --> src/peers.rs:4:26 [INFO] [stdout] | [INFO] [stdout] 4 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::str` [INFO] [stdout] --> src/peers.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::str; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::tracker::*` [INFO] [stdout] --> src/torrentfile.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::tracker::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bencodex::BNode` [INFO] [stdout] --> src/torrentfile.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use bencodex::BNode; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BigEndian`, `ReadBytesExt` [INFO] [stdout] --> src/torrentfile.rs:10:17 [INFO] [stdout] | [INFO] [stdout] 10 | use byteorder::{BigEndian, ReadBytesExt}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rand::*` [INFO] [stdout] --> src/torrentfile.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use rand::*; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/torrentfile.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufRead`, `BufReader`, `Cursor`, `str::Bytes` [INFO] [stdout] --> src/torrentfile.rs:14:11 [INFO] [stdout] | [INFO] [stdout] 14 | use std::{str::Bytes, io::{BufRead, BufReader, Cursor, Error, ErrorKind, Read, Write}}; [INFO] [stdout] | ^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io` [INFO] [stdout] --> src/torrentfile.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | use std::io; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::prelude::*` [INFO] [stdout] --> src/torrentfile.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | use std::io::prelude::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `AsciiSet`, `CONTROLS`, `percent_encode_byte` [INFO] [stdout] --> src/tracker.rs:8:24 [INFO] [stdout] | [INFO] [stdout] 8 | use percent_encoding::{percent_encode_byte, AsciiSet, CONTROLS}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ClientBuilder`, `Client` [INFO] [stdout] --> src/tracker.rs:9:15 [INFO] [stdout] | [INFO] [stdout] 9 | use reqwest::{Client, ClientBuilder}; [INFO] [stdout] | ^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ErrorKind` [INFO] [stdout] --> src/tracker.rs:12:22 [INFO] [stdout] | [INFO] [stdout] 12 | use std::io::{Error, ErrorKind}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bencode::streaming::BencodeEvent` [INFO] [stdout] --> src/tracker.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | use bencode::streaming::BencodeEvent; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bencode::streaming::StreamingParser` [INFO] [stdout] --> src/tracker.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | use bencode::streaming::StreamingParser; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Bencode`, `FromBencode`, `NumFromBencodeError`, `ToBencode`, `VecFromBencodeError` [INFO] [stdout] --> src/tracker.rs:16:15 [INFO] [stdout] | [INFO] [stdout] 16 | use bencode::{Bencode, ToBencode, FromBencode, NumFromBencodeError, VecFromBencodeError}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bencode::util::ByteString` [INFO] [stdout] --> src/tracker.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | use bencode::util::ByteString; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Decoder`, `encode` [INFO] [stdout] --> src/tracker.rs:18:15 [INFO] [stdout] | [INFO] [stdout] 18 | use bencode::{encode, Decoder}; [INFO] [stdout] | ^^^^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Decodable`, `Encodable` [INFO] [stdout] --> src/tracker.rs:19:23 [INFO] [stdout] | [INFO] [stdout] 19 | use rustc_serialize::{Encodable, Decodable}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::BTreeMap` [INFO] [stdout] --> src/tracker.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | use std::collections::BTreeMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Ipv4Addr`, `SocketAddrV4`, `SocketAddr` [INFO] [stdout] --> src/tracker.rs:21:16 [INFO] [stdout] | [INFO] [stdout] 21 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ser` [INFO] [stdout] --> src/tracker.rs:23:25 [INFO] [stdout] | [INFO] [stdout] 23 | use serde_bencode::{de, ser}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `hs` [INFO] [stdout] --> src/client.rs:143:16 [INFO] [stdout] | [INFO] [stdout] 143 | Ok(hs) => match receive_bitfield(&mut s) { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_hs` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `err` [INFO] [stdout] --> src/p2p.rs:171:21 [INFO] [stdout] | [INFO] [stdout] 171 | Err(err) => return, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_err` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `err` [INFO] [stdout] --> src/p2p.rs:186:21 [INFO] [stdout] | [INFO] [stdout] 186 | Err(err) => { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_err` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/p2p.rs:197:21 [INFO] [stdout] | [INFO] [stdout] 197 | Err(e) => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `end` [INFO] [stdout] --> src/p2p.rs:256:25 [INFO] [stdout] | [INFO] [stdout] 256 | let (begin, end) = self.calculate_bounds_for_piece(res.index); [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_end` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `offset` is never read [INFO] [stdout] --> src/peers.rs:34:13 [INFO] [stdout] | [INFO] [stdout] 34 | let mut offset = 0; [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: value assigned to `port_cursor` is never read [INFO] [stdout] --> src/peers.rs:36:13 [INFO] [stdout] | [INFO] [stdout] 36 | let mut port_cursor = Cursor::new(&port_vec); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/client.rs:72:13 [INFO] [stdout] | [INFO] [stdout] 72 | let mut msg = format_have(index); [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/client.rs:87:17 [INFO] [stdout] | [INFO] [stdout] 87 | let mut id_error = Error::new(ErrorKind::InvalidData, "id Error"); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/client.rs:108:9 [INFO] [stdout] | [INFO] [stdout] 108 | let mut reader_error = Error::new(ErrorKind::InvalidData, "unexpected infohash"); [INFO] [stdout] | ----^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/client.rs:118:9 [INFO] [stdout] | [INFO] [stdout] 118 | let mut received = match read_handshake(conn){ [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/handshake.rs:53:9 [INFO] [stdout] | [INFO] [stdout] 53 | let mut reader_error = Error::new(ErrorKind::InvalidData, "unexpected infohash"); [INFO] [stdout] | ----^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/p2p.rs:133:9 [INFO] [stdout] | [INFO] [stdout] 133 | let mut reader_error = Error::new(ErrorKind::InvalidData, "unexpected infohash"); [INFO] [stdout] | ----^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/p2p.rs:174:17 [INFO] [stdout] | [INFO] [stdout] 174 | let mut gaurdthree = c.lock().unwrap();//.bitfield; [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/p2p.rs:245:17 [INFO] [stdout] | [INFO] [stdout] 245 | let mut workQueueCopy = Arc::clone(&workQueue); [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/p2p.rs:246:17 [INFO] [stdout] | [INFO] [stdout] 246 | let mut resultsCopy = results.0.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] --> src/peers.rs:22:9 [INFO] [stdout] | [INFO] [stdout] 22 | let mut num_peers = peers_bin.len() / peer_size; [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/peers.rs:23:9 [INFO] [stdout] | [INFO] [stdout] 23 | let mut peer_error = Error::new(ErrorKind::InvalidData, "Malformed Peers"); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/peers.rs:41:17 [INFO] [stdout] | [INFO] [stdout] 41 | let mut port_vc = &port_vec[0..2].to_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] --> src/torrentfile.rs:89:13 [INFO] [stdout] | [INFO] [stdout] 89 | let mut buffer : Vec = ser::to_bytes::(self).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] --> src/torrentfile.rs:92:13 [INFO] [stdout] | [INFO] [stdout] 92 | let mut result : Vec = hex::decode(h.result_str()).unwrap(); [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field is never read: `peer` [INFO] [stdout] --> src/client.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | peer: Peer, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field is never read: `info_hash` [INFO] [stdout] --> src/client.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | info_hash: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field is never read: `peer_id` [INFO] [stdout] --> src/client.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | peer_id: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `send_not_interested` [INFO] [stdout] --> src/client.rs:53:19 [INFO] [stdout] | [INFO] [stdout] 53 | pub(crate) fn send_not_interested(&mut self) -> Result<(), Error> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function is never used: `name` [INFO] [stdout] --> src/message.rs:163:4 [INFO] [stdout] | [INFO] [stdout] 163 | fn name(msg: &Message) -> String { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function is never used: `string` [INFO] [stdout] --> src/message.rs:182:4 [INFO] [stdout] | [INFO] [stdout] 182 | fn string(msg: &Message) -> String { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:81:5 [INFO] [stdout] | [INFO] [stdout] 81 | conn.set_write_timeout(Some(Duration::new(5, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:82:5 [INFO] [stdout] | [INFO] [stdout] 82 | conn.set_read_timeout(Some(Duration::new(5, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:91:17 [INFO] [stdout] | [INFO] [stdout] 91 | conn.set_write_timeout(Some(Duration::new(1000, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:92:17 [INFO] [stdout] | [INFO] [stdout] 92 | conn.set_read_timeout(Some(Duration::new(1000, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:106:5 [INFO] [stdout] | [INFO] [stdout] 106 | conn.set_write_timeout(Some(Duration::new(3, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:107:5 [INFO] [stdout] | [INFO] [stdout] 107 | conn.set_read_timeout(Some(Duration::new(3, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:123:9 [INFO] [stdout] | [INFO] [stdout] 123 | conn.set_write_timeout(Some(Duration::new(1000, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:124:9 [INFO] [stdout] | [INFO] [stdout] 124 | conn.set_read_timeout(Some(Duration::new(1000, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/p2p.rs:100:5 [INFO] [stdout] | [INFO] [stdout] 100 | state.client.lock().unwrap().conn.set_write_timeout(Some(Duration::new(30, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/p2p.rs:101:5 [INFO] [stdout] | [INFO] [stdout] 101 | state.client.lock().unwrap().conn.set_read_timeout(Some(Duration::new(30, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/p2p.rs:127:5 [INFO] [stdout] | [INFO] [stdout] 127 | state.client.lock().unwrap().conn.set_write_timeout(Some(Duration::new(1000, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/p2p.rs:128:5 [INFO] [stdout] | [INFO] [stdout] 128 | state.client.lock().unwrap().conn.set_read_timeout(Some(Duration::new(1000, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/p2p.rs:199:21 [INFO] [stdout] | [INFO] [stdout] 199 | workQueue.lock().unwrap().0.send(pw); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/p2p.rs:240:13 [INFO] [stdout] | [INFO] [stdout] 240 | workQueue.lock().unwrap().0.send(work); [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: 87 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Digest`, `Sha1` [INFO] [stdout] --> src/main.rs:2:12 [INFO] [stdout] | [INFO] [stdout] 2 | use sha1::{Digest, Sha1}; [INFO] [stdout] | ^^^^^^ ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `new_handshake` [INFO] [stdout] --> src/client.rs:2:24 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::handshake::{new_handshake, read_handshake, serialize_handshake, Handshake}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BigEndian`, `ReadBytesExt` [INFO] [stdout] --> src/client.rs:5:17 [INFO] [stdout] | [INFO] [stdout] 5 | use byteorder::{BigEndian, ReadBytesExt}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/client.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::prelude::*` [INFO] [stdout] --> src/client.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use std::io::prelude::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Ipv4Addr`, `SocketAddrV4` [INFO] [stdout] --> src/client.rs:9:16 [INFO] [stdout] | [INFO] [stdout] 9 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::mpsc` [INFO] [stdout] --> src/client.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use std::sync::mpsc; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::thread` [INFO] [stdout] --> src/client.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use std::thread; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/handshake.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufRead`, `BufReader`, `Cursor` [INFO] [stdout] --> src/handshake.rs:4:15 [INFO] [stdout] | [INFO] [stdout] 4 | use std::io::{BufRead, BufReader, Cursor, Error, ErrorKind, Read, Result}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Ipv4Addr`, `SocketAddrV4`, `SocketAddr`, `TcpListener` [INFO] [stdout] --> src/handshake.rs:5:16 [INFO] [stdout] | [INFO] [stdout] 5 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream, TcpListener}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::str` [INFO] [stdout] --> src/handshake.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use std::str; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::prelude::*` [INFO] [stdout] --> src/handshake.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use std::io::prelude::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::thread` [INFO] [stdout] --> src/handshake.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use std::thread; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufMut`, `BytesMut` [INFO] [stdout] --> src/handshake.rs:10:13 [INFO] [stdout] | [INFO] [stdout] 10 | use bytes::{BytesMut, BufMut}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/message.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::prelude::*` [INFO] [stdout] --> src/message.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::io::prelude::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufRead`, `BufReader` [INFO] [stdout] --> src/message.rs:4:15 [INFO] [stdout] | [INFO] [stdout] 4 | use std::io::{BufRead, BufReader, Cursor, Error, ErrorKind, Read, Result}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Ipv4Addr`, `SocketAddrV4`, `SocketAddr`, `TcpListener` [INFO] [stdout] --> src/message.rs:6:16 [INFO] [stdout] | [INFO] [stdout] 6 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream, TcpListener}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::thread` [INFO] [stdout] --> src/message.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use std::thread; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `messageID` should have an upper camel case name [INFO] [stdout] --> src/message.rs:9:6 [INFO] [stdout] | [INFO] [stdout] 9 | type messageID = u8; [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to upper camel case: `MessageId` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_camel_case_types)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BigEndian`, `ReadBytesExt` [INFO] [stdout] --> src/p2p.rs:7:17 [INFO] [stdout] | [INFO] [stdout] 7 | use byteorder::{BigEndian, ReadBytesExt}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sync_channel` [INFO] [stdout] --> src/p2p.rs:9:53 [INFO] [stdout] | [INFO] [stdout] 9 | use std::sync::mpsc::{Receiver, Sender, SyncSender, sync_channel}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/peers.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufRead`, `BufReader`, `Read` [INFO] [stdout] --> src/peers.rs:3:15 [INFO] [stdout] | [INFO] [stdout] 3 | use std::io::{BufRead, BufReader, Cursor, Error, ErrorKind, Read, Result}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SocketAddr` [INFO] [stdout] --> src/peers.rs:4:26 [INFO] [stdout] | [INFO] [stdout] 4 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::str` [INFO] [stdout] --> src/peers.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::str; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::tracker::*` [INFO] [stdout] --> src/torrentfile.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::tracker::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bencodex::BNode` [INFO] [stdout] --> src/torrentfile.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use bencodex::BNode; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BigEndian`, `ReadBytesExt` [INFO] [stdout] --> src/torrentfile.rs:10:17 [INFO] [stdout] | [INFO] [stdout] 10 | use byteorder::{BigEndian, ReadBytesExt}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rand::*` [INFO] [stdout] --> src/torrentfile.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use rand::*; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/torrentfile.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufRead`, `BufReader`, `Cursor`, `str::Bytes` [INFO] [stdout] --> src/torrentfile.rs:14:11 [INFO] [stdout] | [INFO] [stdout] 14 | use std::{str::Bytes, io::{BufRead, BufReader, Cursor, Error, ErrorKind, Read, Write}}; [INFO] [stdout] | ^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io` [INFO] [stdout] --> src/torrentfile.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | use std::io; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::prelude::*` [INFO] [stdout] --> src/torrentfile.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | use std::io::prelude::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `AsciiSet`, `CONTROLS`, `percent_encode_byte` [INFO] [stdout] --> src/tracker.rs:8:24 [INFO] [stdout] | [INFO] [stdout] 8 | use percent_encoding::{percent_encode_byte, AsciiSet, CONTROLS}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ClientBuilder`, `Client` [INFO] [stdout] --> src/tracker.rs:9:15 [INFO] [stdout] | [INFO] [stdout] 9 | use reqwest::{Client, ClientBuilder}; [INFO] [stdout] | ^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ErrorKind` [INFO] [stdout] --> src/tracker.rs:12:22 [INFO] [stdout] | [INFO] [stdout] 12 | use std::io::{Error, ErrorKind}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bencode::streaming::BencodeEvent` [INFO] [stdout] --> src/tracker.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | use bencode::streaming::BencodeEvent; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bencode::streaming::StreamingParser` [INFO] [stdout] --> src/tracker.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | use bencode::streaming::StreamingParser; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Bencode`, `FromBencode`, `NumFromBencodeError`, `ToBencode`, `VecFromBencodeError` [INFO] [stdout] --> src/tracker.rs:16:15 [INFO] [stdout] | [INFO] [stdout] 16 | use bencode::{Bencode, ToBencode, FromBencode, NumFromBencodeError, VecFromBencodeError}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bencode::util::ByteString` [INFO] [stdout] --> src/tracker.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | use bencode::util::ByteString; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Decoder`, `encode` [INFO] [stdout] --> src/tracker.rs:18:15 [INFO] [stdout] | [INFO] [stdout] 18 | use bencode::{encode, Decoder}; [INFO] [stdout] | ^^^^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Decodable`, `Encodable` [INFO] [stdout] --> src/tracker.rs:19:23 [INFO] [stdout] | [INFO] [stdout] 19 | use rustc_serialize::{Encodable, Decodable}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::BTreeMap` [INFO] [stdout] --> src/tracker.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | use std::collections::BTreeMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Ipv4Addr`, `SocketAddrV4`, `SocketAddr` [INFO] [stdout] --> src/tracker.rs:21:16 [INFO] [stdout] | [INFO] [stdout] 21 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ser` [INFO] [stdout] --> src/tracker.rs:23:25 [INFO] [stdout] | [INFO] [stdout] 23 | use serde_bencode::{de, ser}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::bitfield::Bitfield` [INFO] [stdout] --> src/main.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::bitfield::Bitfield; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `MESSAGE_BITFIELD`, `Message`, `read_message` [INFO] [stdout] --> src/main.rs:12:22 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::message::{read_message, Message, MESSAGE_BITFIELD}; [INFO] [stdout] | ^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ErrorKind`, `Error`, `Read`, `Write` [INFO] [stdout] --> src/main.rs:13:15 [INFO] [stdout] | [INFO] [stdout] 13 | use std::io::{Error, ErrorKind, Read, Write}; [INFO] [stdout] | ^^^^^ ^^^^^^^^^ ^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Shutdown`, `TcpListener`, `TcpStream` [INFO] [stdout] --> src/main.rs:14:16 [INFO] [stdout] | [INFO] [stdout] 14 | use std::net::{Shutdown, TcpListener, TcpStream}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::str::from_utf8` [INFO] [stdout] --> src/main.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | use std::str::from_utf8; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::thread` [INFO] [stdout] --> src/main.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | use std::thread; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `hs` [INFO] [stdout] --> src/client.rs:143:16 [INFO] [stdout] | [INFO] [stdout] 143 | Ok(hs) => match receive_bitfield(&mut s) { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_hs` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `err` [INFO] [stdout] --> src/p2p.rs:171:21 [INFO] [stdout] | [INFO] [stdout] 171 | Err(err) => return, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_err` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `err` [INFO] [stdout] --> src/p2p.rs:186:21 [INFO] [stdout] | [INFO] [stdout] 186 | Err(err) => { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_err` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/p2p.rs:197:21 [INFO] [stdout] | [INFO] [stdout] 197 | Err(e) => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `end` [INFO] [stdout] --> src/p2p.rs:256:25 [INFO] [stdout] | [INFO] [stdout] 256 | let (begin, end) = self.calculate_bounds_for_piece(res.index); [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_end` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `offset` is never read [INFO] [stdout] --> src/peers.rs:34:13 [INFO] [stdout] | [INFO] [stdout] 34 | let mut offset = 0; [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: value assigned to `port_cursor` is never read [INFO] [stdout] --> src/peers.rs:36:13 [INFO] [stdout] | [INFO] [stdout] 36 | let mut port_cursor = Cursor::new(&port_vec); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/client.rs:72:13 [INFO] [stdout] | [INFO] [stdout] 72 | let mut msg = format_have(index); [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/client.rs:87:17 [INFO] [stdout] | [INFO] [stdout] 87 | let mut id_error = Error::new(ErrorKind::InvalidData, "id Error"); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/client.rs:108:9 [INFO] [stdout] | [INFO] [stdout] 108 | let mut reader_error = Error::new(ErrorKind::InvalidData, "unexpected infohash"); [INFO] [stdout] | ----^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/client.rs:118:9 [INFO] [stdout] | [INFO] [stdout] 118 | let mut received = match read_handshake(conn){ [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/handshake.rs:53:9 [INFO] [stdout] | [INFO] [stdout] 53 | let mut reader_error = Error::new(ErrorKind::InvalidData, "unexpected infohash"); [INFO] [stdout] | ----^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/p2p.rs:133:9 [INFO] [stdout] | [INFO] [stdout] 133 | let mut reader_error = Error::new(ErrorKind::InvalidData, "unexpected infohash"); [INFO] [stdout] | ----^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/p2p.rs:174:17 [INFO] [stdout] | [INFO] [stdout] 174 | let mut gaurdthree = c.lock().unwrap();//.bitfield; [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/p2p.rs:245:17 [INFO] [stdout] | [INFO] [stdout] 245 | let mut workQueueCopy = Arc::clone(&workQueue); [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/p2p.rs:246:17 [INFO] [stdout] | [INFO] [stdout] 246 | let mut resultsCopy = results.0.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] --> src/peers.rs:22:9 [INFO] [stdout] | [INFO] [stdout] 22 | let mut num_peers = peers_bin.len() / peer_size; [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/peers.rs:23:9 [INFO] [stdout] | [INFO] [stdout] 23 | let mut peer_error = Error::new(ErrorKind::InvalidData, "Malformed Peers"); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/peers.rs:41:17 [INFO] [stdout] | [INFO] [stdout] 41 | let mut port_vc = &port_vec[0..2].to_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] --> src/torrentfile.rs:89:13 [INFO] [stdout] | [INFO] [stdout] 89 | let mut buffer : Vec = ser::to_bytes::(self).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] --> src/torrentfile.rs:92:13 [INFO] [stdout] | [INFO] [stdout] 92 | let mut result : Vec = hex::decode(h.result_str()).unwrap(); [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field is never read: `peer` [INFO] [stdout] --> src/client.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | peer: Peer, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field is never read: `info_hash` [INFO] [stdout] --> src/client.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | info_hash: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field is never read: `peer_id` [INFO] [stdout] --> src/client.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | peer_id: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `send_not_interested` [INFO] [stdout] --> src/client.rs:53:19 [INFO] [stdout] | [INFO] [stdout] 53 | pub(crate) fn send_not_interested(&mut self) -> Result<(), Error> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function is never used: `new_handshake` [INFO] [stdout] --> src/handshake.rs:18:8 [INFO] [stdout] | [INFO] [stdout] 18 | pub fn new_handshake() -> Handshake { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function is never used: `new_handshake_with_input` [INFO] [stdout] --> src/handshake.rs:25:8 [INFO] [stdout] | [INFO] [stdout] 25 | pub fn new_handshake_with_input(info_hash: Vec, peer_id: Vec) -> Handshake { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static is never used: `MESSAGE_CHOKE` [INFO] [stdout] --> src/message.rs:11:1 [INFO] [stdout] | [INFO] [stdout] 11 | pub static MESSAGE_CHOKE: messageID = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static is never used: `MESSAGE_NOT_INTERESTED` [INFO] [stdout] --> src/message.rs:14:1 [INFO] [stdout] | [INFO] [stdout] 14 | pub static MESSAGE_NOT_INTERESTED: messageID = 3; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static is never used: `MESSAGE_CANCEL` [INFO] [stdout] --> src/message.rs:19:1 [INFO] [stdout] | [INFO] [stdout] 19 | pub static MESSAGE_CANCEL: messageID = 8; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function is never used: `name` [INFO] [stdout] --> src/message.rs:163:4 [INFO] [stdout] | [INFO] [stdout] 163 | fn name(msg: &Message) -> String { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function is never used: `string` [INFO] [stdout] --> src/message.rs:182:4 [INFO] [stdout] | [INFO] [stdout] 182 | fn string(msg: &Message) -> String { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function is never used: `binary_percent_encoder` [INFO] [stdout] --> src/tracker.rs:84:8 [INFO] [stdout] | [INFO] [stdout] 84 | pub fn binary_percent_encoder(input: Vec) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:81:5 [INFO] [stdout] | [INFO] [stdout] 81 | conn.set_write_timeout(Some(Duration::new(5, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:82:5 [INFO] [stdout] | [INFO] [stdout] 82 | conn.set_read_timeout(Some(Duration::new(5, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:91:17 [INFO] [stdout] | [INFO] [stdout] 91 | conn.set_write_timeout(Some(Duration::new(1000, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:92:17 [INFO] [stdout] | [INFO] [stdout] 92 | conn.set_read_timeout(Some(Duration::new(1000, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:106:5 [INFO] [stdout] | [INFO] [stdout] 106 | conn.set_write_timeout(Some(Duration::new(3, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:107:5 [INFO] [stdout] | [INFO] [stdout] 107 | conn.set_read_timeout(Some(Duration::new(3, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:123:9 [INFO] [stdout] | [INFO] [stdout] 123 | conn.set_write_timeout(Some(Duration::new(1000, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:124:9 [INFO] [stdout] | [INFO] [stdout] 124 | conn.set_read_timeout(Some(Duration::new(1000, 0))); [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: structure field `ID` should have a snake case name [INFO] [stdout] --> src/message.rs:23:16 [INFO] [stdout] | [INFO] [stdout] 23 | pub(crate) ID: messageID, [INFO] [stdout] | ^^ help: convert the identifier to snake case: `id` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `Payload` should have a snake case name [INFO] [stdout] --> src/message.rs:24:16 [INFO] [stdout] | [INFO] [stdout] 24 | pub(crate) Payload: Vec, [INFO] [stdout] | ^^^^^^^ help: convert the identifier to snake case: `payload` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/p2p.rs:100:5 [INFO] [stdout] | [INFO] [stdout] 100 | state.client.lock().unwrap().conn.set_write_timeout(Some(Duration::new(30, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/p2p.rs:101:5 [INFO] [stdout] | [INFO] [stdout] 101 | state.client.lock().unwrap().conn.set_read_timeout(Some(Duration::new(30, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/p2p.rs:127:5 [INFO] [stdout] | [INFO] [stdout] 127 | state.client.lock().unwrap().conn.set_write_timeout(Some(Duration::new(1000, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/p2p.rs:128:5 [INFO] [stdout] | [INFO] [stdout] 128 | state.client.lock().unwrap().conn.set_read_timeout(Some(Duration::new(1000, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/p2p.rs:199:21 [INFO] [stdout] | [INFO] [stdout] 199 | workQueue.lock().unwrap().0.send(pw); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/p2p.rs:240:13 [INFO] [stdout] | [INFO] [stdout] 240 | workQueue.lock().unwrap().0.send(work); [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: variable `trackerResp` should have a snake case name [INFO] [stdout] --> src/tracker.rs:162:13 [INFO] [stdout] | [INFO] [stdout] 162 | let trackerResp : BencodeTrackerResp = de::from_bytes::(&resp).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to snake case: `tracker_resp` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 103 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 3m 07s [INFO] running `Command { std: "docker" "inspect" "8c979b8eb36186a84b5053f7d9b53e836fb524c5570eba9e7ef9d9eae323cde0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "8c979b8eb36186a84b5053f7d9b53e836fb524c5570eba9e7ef9d9eae323cde0", kill_on_drop: false }` [INFO] [stdout] 8c979b8eb36186a84b5053f7d9b53e836fb524c5570eba9e7ef9d9eae323cde0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3/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" "MAP_USER_ID=0" "-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" "--network" "none" "rustops/crates-build-env@sha256:d9fbb4e2287ab3795bdefaf705efb7541a8875c13bce71e067d6b01dc5ed759b" "/opt/rustwide/cargo-home/bin/cargo" "+8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 46c337fd718ff9db1b168e80337a3047b7278316ff83a15d4e8f579b1e1aafe9 [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" "46c337fd718ff9db1b168e80337a3047b7278316ff83a15d4e8f579b1e1aafe9", kill_on_drop: false }` [INFO] [stderr] Compiling rust-torrent v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `new_handshake` [INFO] [stdout] --> src/client.rs:2:24 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::handshake::{new_handshake, read_handshake, serialize_handshake, Handshake}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BigEndian`, `ReadBytesExt` [INFO] [stdout] --> src/client.rs:5:17 [INFO] [stdout] | [INFO] [stdout] 5 | use byteorder::{BigEndian, ReadBytesExt}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/client.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::prelude::*` [INFO] [stdout] --> src/client.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use std::io::prelude::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Ipv4Addr`, `SocketAddrV4` [INFO] [stdout] --> src/client.rs:9:16 [INFO] [stdout] | [INFO] [stdout] 9 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::mpsc` [INFO] [stdout] --> src/client.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use std::sync::mpsc; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::thread` [INFO] [stdout] --> src/client.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use std::thread; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/handshake.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufRead`, `BufReader`, `Cursor` [INFO] [stdout] --> src/handshake.rs:4:15 [INFO] [stdout] | [INFO] [stdout] 4 | use std::io::{BufRead, BufReader, Cursor, Error, ErrorKind, Read, Result}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Ipv4Addr`, `SocketAddrV4`, `SocketAddr`, `TcpListener` [INFO] [stdout] --> src/handshake.rs:5:16 [INFO] [stdout] | [INFO] [stdout] 5 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream, TcpListener}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::str` [INFO] [stdout] --> src/handshake.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use std::str; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::prelude::*` [INFO] [stdout] --> src/handshake.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use std::io::prelude::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::thread` [INFO] [stdout] --> src/handshake.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use std::thread; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufMut`, `BytesMut` [INFO] [stdout] --> src/handshake.rs:10:13 [INFO] [stdout] | [INFO] [stdout] 10 | use bytes::{BytesMut, BufMut}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/message.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::prelude::*` [INFO] [stdout] --> src/message.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::io::prelude::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufRead`, `BufReader` [INFO] [stdout] --> src/message.rs:4:15 [INFO] [stdout] | [INFO] [stdout] 4 | use std::io::{BufRead, BufReader, Cursor, Error, ErrorKind, Read, Result}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Ipv4Addr`, `SocketAddrV4`, `SocketAddr`, `TcpListener` [INFO] [stdout] --> src/message.rs:6:16 [INFO] [stdout] | [INFO] [stdout] 6 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream, TcpListener}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::thread` [INFO] [stdout] --> src/message.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use std::thread; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `messageID` should have an upper camel case name [INFO] [stdout] --> src/message.rs:9:6 [INFO] [stdout] | [INFO] [stdout] 9 | type messageID = u8; [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to upper camel case: `MessageId` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_camel_case_types)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BigEndian`, `ReadBytesExt` [INFO] [stdout] --> src/p2p.rs:7:17 [INFO] [stdout] | [INFO] [stdout] 7 | use byteorder::{BigEndian, ReadBytesExt}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sync_channel` [INFO] [stdout] --> src/p2p.rs:9:53 [INFO] [stdout] | [INFO] [stdout] 9 | use std::sync::mpsc::{Receiver, Sender, SyncSender, sync_channel}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/peers.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufRead`, `BufReader`, `Read` [INFO] [stdout] --> src/peers.rs:3:15 [INFO] [stdout] | [INFO] [stdout] 3 | use std::io::{BufRead, BufReader, Cursor, Error, ErrorKind, Read, Result}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SocketAddr` [INFO] [stdout] --> src/peers.rs:4:26 [INFO] [stdout] | [INFO] [stdout] 4 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::str` [INFO] [stdout] --> src/peers.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::str; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::tracker::*` [INFO] [stdout] --> src/torrentfile.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::tracker::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bencodex::BNode` [INFO] [stdout] --> src/torrentfile.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use bencodex::BNode; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BigEndian`, `ReadBytesExt` [INFO] [stdout] --> src/torrentfile.rs:10:17 [INFO] [stdout] | [INFO] [stdout] 10 | use byteorder::{BigEndian, ReadBytesExt}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rand::*` [INFO] [stdout] --> src/torrentfile.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use rand::*; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/torrentfile.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufRead`, `BufReader`, `Cursor`, `str::Bytes` [INFO] [stdout] --> src/torrentfile.rs:14:11 [INFO] [stdout] | [INFO] [stdout] 14 | use std::{str::Bytes, io::{BufRead, BufReader, Cursor, Error, ErrorKind, Read, Write}}; [INFO] [stdout] | ^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io` [INFO] [stdout] --> src/torrentfile.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | use std::io; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::prelude::*` [INFO] [stdout] --> src/torrentfile.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | use std::io::prelude::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `AsciiSet`, `CONTROLS`, `percent_encode_byte` [INFO] [stdout] --> src/tracker.rs:8:24 [INFO] [stdout] | [INFO] [stdout] 8 | use percent_encoding::{percent_encode_byte, AsciiSet, CONTROLS}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ClientBuilder`, `Client` [INFO] [stdout] --> src/tracker.rs:9:15 [INFO] [stdout] | [INFO] [stdout] 9 | use reqwest::{Client, ClientBuilder}; [INFO] [stdout] | ^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ErrorKind` [INFO] [stdout] --> src/tracker.rs:12:22 [INFO] [stdout] | [INFO] [stdout] 12 | use std::io::{Error, ErrorKind}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bencode::streaming::BencodeEvent` [INFO] [stdout] --> src/tracker.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | use bencode::streaming::BencodeEvent; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bencode::streaming::StreamingParser` [INFO] [stdout] --> src/tracker.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | use bencode::streaming::StreamingParser; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Bencode`, `FromBencode`, `NumFromBencodeError`, `ToBencode`, `VecFromBencodeError` [INFO] [stdout] --> src/tracker.rs:16:15 [INFO] [stdout] | [INFO] [stdout] 16 | use bencode::{Bencode, ToBencode, FromBencode, NumFromBencodeError, VecFromBencodeError}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bencode::util::ByteString` [INFO] [stdout] --> src/tracker.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | use bencode::util::ByteString; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Decoder`, `encode` [INFO] [stdout] --> src/tracker.rs:18:15 [INFO] [stdout] | [INFO] [stdout] 18 | use bencode::{encode, Decoder}; [INFO] [stdout] | ^^^^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Decodable`, `Encodable` [INFO] [stdout] --> src/tracker.rs:19:23 [INFO] [stdout] | [INFO] [stdout] 19 | use rustc_serialize::{Encodable, Decodable}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::BTreeMap` [INFO] [stdout] --> src/tracker.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | use std::collections::BTreeMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Ipv4Addr`, `SocketAddrV4`, `SocketAddr` [INFO] [stdout] --> src/tracker.rs:21:16 [INFO] [stdout] | [INFO] [stdout] 21 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ser` [INFO] [stdout] --> src/tracker.rs:23:25 [INFO] [stdout] | [INFO] [stdout] 23 | use serde_bencode::{de, ser}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `hs` [INFO] [stdout] --> src/client.rs:143:16 [INFO] [stdout] | [INFO] [stdout] 143 | Ok(hs) => match receive_bitfield(&mut s) { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_hs` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `err` [INFO] [stdout] --> src/p2p.rs:171:21 [INFO] [stdout] | [INFO] [stdout] 171 | Err(err) => return, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_err` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `err` [INFO] [stdout] --> src/p2p.rs:186:21 [INFO] [stdout] | [INFO] [stdout] 186 | Err(err) => { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_err` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/p2p.rs:197:21 [INFO] [stdout] | [INFO] [stdout] 197 | Err(e) => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `end` [INFO] [stdout] --> src/p2p.rs:256:25 [INFO] [stdout] | [INFO] [stdout] 256 | let (begin, end) = self.calculate_bounds_for_piece(res.index); [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_end` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `offset` is never read [INFO] [stdout] --> src/peers.rs:34:13 [INFO] [stdout] | [INFO] [stdout] 34 | let mut offset = 0; [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: value assigned to `port_cursor` is never read [INFO] [stdout] --> src/peers.rs:36:13 [INFO] [stdout] | [INFO] [stdout] 36 | let mut port_cursor = Cursor::new(&port_vec); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/client.rs:72:13 [INFO] [stdout] | [INFO] [stdout] 72 | let mut msg = format_have(index); [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/client.rs:87:17 [INFO] [stdout] | [INFO] [stdout] 87 | let mut id_error = Error::new(ErrorKind::InvalidData, "id Error"); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/client.rs:108:9 [INFO] [stdout] | [INFO] [stdout] 108 | let mut reader_error = Error::new(ErrorKind::InvalidData, "unexpected infohash"); [INFO] [stdout] | ----^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/client.rs:118:9 [INFO] [stdout] | [INFO] [stdout] 118 | let mut received = match read_handshake(conn){ [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/handshake.rs:53:9 [INFO] [stdout] | [INFO] [stdout] 53 | let mut reader_error = Error::new(ErrorKind::InvalidData, "unexpected infohash"); [INFO] [stdout] | ----^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/p2p.rs:133:9 [INFO] [stdout] | [INFO] [stdout] 133 | let mut reader_error = Error::new(ErrorKind::InvalidData, "unexpected infohash"); [INFO] [stdout] | ----^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/p2p.rs:174:17 [INFO] [stdout] | [INFO] [stdout] 174 | let mut gaurdthree = c.lock().unwrap();//.bitfield; [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/p2p.rs:245:17 [INFO] [stdout] | [INFO] [stdout] 245 | let mut workQueueCopy = Arc::clone(&workQueue); [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/p2p.rs:246:17 [INFO] [stdout] | [INFO] [stdout] 246 | let mut resultsCopy = results.0.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] --> src/peers.rs:22:9 [INFO] [stdout] | [INFO] [stdout] 22 | let mut num_peers = peers_bin.len() / peer_size; [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/peers.rs:23:9 [INFO] [stdout] | [INFO] [stdout] 23 | let mut peer_error = Error::new(ErrorKind::InvalidData, "Malformed Peers"); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/peers.rs:41:17 [INFO] [stdout] | [INFO] [stdout] 41 | let mut port_vc = &port_vec[0..2].to_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] --> src/torrentfile.rs:89:13 [INFO] [stdout] | [INFO] [stdout] 89 | let mut buffer : Vec = ser::to_bytes::(self).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] --> src/torrentfile.rs:92:13 [INFO] [stdout] | [INFO] [stdout] 92 | let mut result : Vec = hex::decode(h.result_str()).unwrap(); [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field is never read: `peer` [INFO] [stdout] --> src/client.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | peer: Peer, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field is never read: `info_hash` [INFO] [stdout] --> src/client.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | info_hash: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field is never read: `peer_id` [INFO] [stdout] --> src/client.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | peer_id: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `send_not_interested` [INFO] [stdout] --> src/client.rs:53:19 [INFO] [stdout] | [INFO] [stdout] 53 | pub(crate) fn send_not_interested(&mut self) -> Result<(), Error> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function is never used: `name` [INFO] [stdout] --> src/message.rs:163:4 [INFO] [stdout] | [INFO] [stdout] 163 | fn name(msg: &Message) -> String { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function is never used: `string` [INFO] [stdout] --> src/message.rs:182:4 [INFO] [stdout] | [INFO] [stdout] 182 | fn string(msg: &Message) -> String { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:81:5 [INFO] [stdout] | [INFO] [stdout] 81 | conn.set_write_timeout(Some(Duration::new(5, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:82:5 [INFO] [stdout] | [INFO] [stdout] 82 | conn.set_read_timeout(Some(Duration::new(5, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:91:17 [INFO] [stdout] | [INFO] [stdout] 91 | conn.set_write_timeout(Some(Duration::new(1000, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:92:17 [INFO] [stdout] | [INFO] [stdout] 92 | conn.set_read_timeout(Some(Duration::new(1000, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:106:5 [INFO] [stdout] | [INFO] [stdout] 106 | conn.set_write_timeout(Some(Duration::new(3, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:107:5 [INFO] [stdout] | [INFO] [stdout] 107 | conn.set_read_timeout(Some(Duration::new(3, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:123:9 [INFO] [stdout] | [INFO] [stdout] 123 | conn.set_write_timeout(Some(Duration::new(1000, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:124:9 [INFO] [stdout] | [INFO] [stdout] 124 | conn.set_read_timeout(Some(Duration::new(1000, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/p2p.rs:100:5 [INFO] [stdout] | [INFO] [stdout] 100 | state.client.lock().unwrap().conn.set_write_timeout(Some(Duration::new(30, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/p2p.rs:101:5 [INFO] [stdout] | [INFO] [stdout] 101 | state.client.lock().unwrap().conn.set_read_timeout(Some(Duration::new(30, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/p2p.rs:127:5 [INFO] [stdout] | [INFO] [stdout] 127 | state.client.lock().unwrap().conn.set_write_timeout(Some(Duration::new(1000, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/p2p.rs:128:5 [INFO] [stdout] | [INFO] [stdout] 128 | state.client.lock().unwrap().conn.set_read_timeout(Some(Duration::new(1000, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/p2p.rs:199:21 [INFO] [stdout] | [INFO] [stdout] 199 | workQueue.lock().unwrap().0.send(pw); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/p2p.rs:240:13 [INFO] [stdout] | [INFO] [stdout] 240 | workQueue.lock().unwrap().0.send(work); [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: 87 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Digest`, `Sha1` [INFO] [stdout] --> src/main.rs:2:12 [INFO] [stdout] | [INFO] [stdout] 2 | use sha1::{Digest, Sha1}; [INFO] [stdout] | ^^^^^^ ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `new_handshake` [INFO] [stdout] --> src/client.rs:2:24 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::handshake::{new_handshake, read_handshake, serialize_handshake, Handshake}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BigEndian`, `ReadBytesExt` [INFO] [stdout] --> src/client.rs:5:17 [INFO] [stdout] | [INFO] [stdout] 5 | use byteorder::{BigEndian, ReadBytesExt}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/client.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Ipv4Addr`, `SocketAddrV4` [INFO] [stdout] --> src/client.rs:9:16 [INFO] [stdout] | [INFO] [stdout] 9 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::mpsc` [INFO] [stdout] --> src/client.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use std::sync::mpsc; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::str::from_utf8` [INFO] [stdout] --> src/client.rs:168:9 [INFO] [stdout] | [INFO] [stdout] 168 | use std::str::from_utf8; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Receiver`, `Sender`, `channel` [INFO] [stdout] --> src/client.rs:169:27 [INFO] [stdout] | [INFO] [stdout] 169 | use std::sync::mpsc::{channel, Receiver, Sender}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/handshake.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufRead`, `BufReader`, `Cursor` [INFO] [stdout] --> src/handshake.rs:4:15 [INFO] [stdout] | [INFO] [stdout] 4 | use std::io::{BufRead, BufReader, Cursor, Error, ErrorKind, Read, Result}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Ipv4Addr`, `SocketAddrV4`, `SocketAddr` [INFO] [stdout] --> src/handshake.rs:5:16 [INFO] [stdout] | [INFO] [stdout] 5 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream, TcpListener}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::str` [INFO] [stdout] --> src/handshake.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use std::str; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufMut`, `BytesMut` [INFO] [stdout] --> src/handshake.rs:10:13 [INFO] [stdout] | [INFO] [stdout] 10 | use bytes::{BytesMut, BufMut}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/message.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `new_handshake` [INFO] [stdout] --> src/client.rs:2:24 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::handshake::{new_handshake, read_handshake, serialize_handshake, Handshake}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BigEndian`, `ReadBytesExt` [INFO] [stdout] --> src/client.rs:5:17 [INFO] [stdout] | [INFO] [stdout] 5 | use byteorder::{BigEndian, ReadBytesExt}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/client.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Ipv4Addr`, `SocketAddrV4` [INFO] [stdout] --> src/client.rs:9:16 [INFO] [stdout] | [INFO] [stdout] 9 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::mpsc` [INFO] [stdout] --> src/client.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use std::sync::mpsc; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::str::from_utf8` [INFO] [stdout] --> src/client.rs:168:9 [INFO] [stdout] | [INFO] [stdout] 168 | use std::str::from_utf8; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Receiver`, `Sender`, `channel` [INFO] [stdout] --> src/client.rs:169:27 [INFO] [stdout] | [INFO] [stdout] 169 | use std::sync::mpsc::{channel, Receiver, Sender}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/handshake.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufRead`, `BufReader`, `Cursor` [INFO] [stdout] --> src/handshake.rs:4:15 [INFO] [stdout] | [INFO] [stdout] 4 | use std::io::{BufRead, BufReader, Cursor, Error, ErrorKind, Read, Result}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Ipv4Addr`, `SocketAddrV4`, `SocketAddr` [INFO] [stdout] --> src/handshake.rs:5:16 [INFO] [stdout] | [INFO] [stdout] 5 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream, TcpListener}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::str` [INFO] [stdout] --> src/handshake.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use std::str; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufMut`, `BytesMut` [INFO] [stdout] --> src/handshake.rs:10:13 [INFO] [stdout] | [INFO] [stdout] 10 | use bytes::{BytesMut, BufMut}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/message.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufRead`, `BufReader` [INFO] [stdout] --> src/message.rs:4:15 [INFO] [stdout] | [INFO] [stdout] 4 | use std::io::{BufRead, BufReader, Cursor, Error, ErrorKind, Read, Result}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Ipv4Addr`, `SocketAddrV4`, `SocketAddr` [INFO] [stdout] --> src/message.rs:6:16 [INFO] [stdout] | [INFO] [stdout] 6 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream, TcpListener}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `messageID` should have an upper camel case name [INFO] [stdout] --> src/message.rs:9:6 [INFO] [stdout] | [INFO] [stdout] 9 | type messageID = u8; [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to upper camel case: `MessageId` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_camel_case_types)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BigEndian`, `ReadBytesExt` [INFO] [stdout] --> src/p2p.rs:7:17 [INFO] [stdout] | [INFO] [stdout] 7 | use byteorder::{BigEndian, ReadBytesExt}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sync_channel` [INFO] [stdout] --> src/p2p.rs:9:53 [INFO] [stdout] | [INFO] [stdout] 9 | use std::sync::mpsc::{Receiver, Sender, SyncSender, sync_channel}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/peers.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufRead`, `BufReader`, `Read` [INFO] [stdout] --> src/peers.rs:3:15 [INFO] [stdout] | [INFO] [stdout] 3 | use std::io::{BufRead, BufReader, Cursor, Error, ErrorKind, Read, Result}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SocketAddr` [INFO] [stdout] --> src/peers.rs:4:26 [INFO] [stdout] | [INFO] [stdout] 4 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::str` [INFO] [stdout] --> src/peers.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::str; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::tracker::*` [INFO] [stdout] --> src/torrentfile.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::tracker::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bencodex::BNode` [INFO] [stdout] --> src/torrentfile.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use bencodex::BNode; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BigEndian`, `ReadBytesExt` [INFO] [stdout] --> src/torrentfile.rs:10:17 [INFO] [stdout] | [INFO] [stdout] 10 | use byteorder::{BigEndian, ReadBytesExt}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rand::*` [INFO] [stdout] --> src/torrentfile.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use rand::*; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/torrentfile.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufRead`, `BufReader`, `Cursor`, `str::Bytes` [INFO] [stdout] --> src/torrentfile.rs:14:11 [INFO] [stdout] | [INFO] [stdout] 14 | use std::{str::Bytes, io::{BufRead, BufReader, Cursor, Error, ErrorKind, Read, Write}}; [INFO] [stdout] | ^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io` [INFO] [stdout] --> src/torrentfile.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | use std::io; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::prelude::*` [INFO] [stdout] --> src/torrentfile.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | use std::io::prelude::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `AsciiSet`, `CONTROLS`, `percent_encode_byte` [INFO] [stdout] --> src/tracker.rs:8:24 [INFO] [stdout] | [INFO] [stdout] 8 | use percent_encoding::{percent_encode_byte, AsciiSet, CONTROLS}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ClientBuilder`, `Client` [INFO] [stdout] --> src/tracker.rs:9:15 [INFO] [stdout] | [INFO] [stdout] 9 | use reqwest::{Client, ClientBuilder}; [INFO] [stdout] | ^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ErrorKind` [INFO] [stdout] --> src/tracker.rs:12:22 [INFO] [stdout] | [INFO] [stdout] 12 | use std::io::{Error, ErrorKind}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bencode::streaming::BencodeEvent` [INFO] [stdout] --> src/tracker.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | use bencode::streaming::BencodeEvent; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bencode::streaming::StreamingParser` [INFO] [stdout] --> src/tracker.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | use bencode::streaming::StreamingParser; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Bencode`, `FromBencode`, `NumFromBencodeError`, `ToBencode`, `VecFromBencodeError` [INFO] [stdout] --> src/tracker.rs:16:15 [INFO] [stdout] | [INFO] [stdout] 16 | use bencode::{Bencode, ToBencode, FromBencode, NumFromBencodeError, VecFromBencodeError}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bencode::util::ByteString` [INFO] [stdout] --> src/tracker.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | use bencode::util::ByteString; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Decoder`, `encode` [INFO] [stdout] --> src/tracker.rs:18:15 [INFO] [stdout] | [INFO] [stdout] 18 | use bencode::{encode, Decoder}; [INFO] [stdout] | ^^^^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Decodable`, `Encodable` [INFO] [stdout] --> src/tracker.rs:19:23 [INFO] [stdout] | [INFO] [stdout] 19 | use rustc_serialize::{Encodable, Decodable}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::BTreeMap` [INFO] [stdout] --> src/tracker.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | use std::collections::BTreeMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `SocketAddrV4`, `SocketAddr` [INFO] [stdout] --> src/tracker.rs:21:26 [INFO] [stdout] | [INFO] [stdout] 21 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4}; [INFO] [stdout] | ^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::net::TcpStream` [INFO] [stdout] --> src/tracker.rs:173:9 [INFO] [stdout] | [INFO] [stdout] 173 | use std::net::TcpStream; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Read`, `Write` [INFO] [stdout] --> src/tracker.rs:174:19 [INFO] [stdout] | [INFO] [stdout] 174 | use std::io::{Read, Write}; [INFO] [stdout] | ^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `server_address` [INFO] [stdout] --> src/tracker.rs:175:25 [INFO] [stdout] | [INFO] [stdout] 175 | use mockito::{mock, server_address, Matcher}; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufRead`, `BufReader` [INFO] [stdout] --> src/message.rs:4:15 [INFO] [stdout] | [INFO] [stdout] 4 | use std::io::{BufRead, BufReader, Cursor, Error, ErrorKind, Read, Result}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Ipv4Addr`, `SocketAddrV4`, `SocketAddr` [INFO] [stdout] --> src/message.rs:6:16 [INFO] [stdout] | [INFO] [stdout] 6 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream, TcpListener}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `messageID` should have an upper camel case name [INFO] [stdout] --> src/message.rs:9:6 [INFO] [stdout] | [INFO] [stdout] 9 | type messageID = u8; [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to upper camel case: `MessageId` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_camel_case_types)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BigEndian`, `ReadBytesExt` [INFO] [stdout] --> src/p2p.rs:7:17 [INFO] [stdout] | [INFO] [stdout] 7 | use byteorder::{BigEndian, ReadBytesExt}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sync_channel` [INFO] [stdout] --> src/p2p.rs:9:53 [INFO] [stdout] | [INFO] [stdout] 9 | use std::sync::mpsc::{Receiver, Sender, SyncSender, sync_channel}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/peers.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufRead`, `BufReader`, `Read` [INFO] [stdout] --> src/peers.rs:3:15 [INFO] [stdout] | [INFO] [stdout] 3 | use std::io::{BufRead, BufReader, Cursor, Error, ErrorKind, Read, Result}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SocketAddr` [INFO] [stdout] --> src/peers.rs:4:26 [INFO] [stdout] | [INFO] [stdout] 4 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::str` [INFO] [stdout] --> src/peers.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::str; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::tracker::*` [INFO] [stdout] --> src/torrentfile.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::tracker::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bencodex::BNode` [INFO] [stdout] --> src/torrentfile.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use bencodex::BNode; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BigEndian`, `ReadBytesExt` [INFO] [stdout] --> src/torrentfile.rs:10:17 [INFO] [stdout] | [INFO] [stdout] 10 | use byteorder::{BigEndian, ReadBytesExt}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rand::*` [INFO] [stdout] --> src/torrentfile.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use rand::*; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/torrentfile.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufRead`, `BufReader`, `Cursor`, `str::Bytes` [INFO] [stdout] --> src/torrentfile.rs:14:11 [INFO] [stdout] | [INFO] [stdout] 14 | use std::{str::Bytes, io::{BufRead, BufReader, Cursor, Error, ErrorKind, Read, Write}}; [INFO] [stdout] | ^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io` [INFO] [stdout] --> src/torrentfile.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | use std::io; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::prelude::*` [INFO] [stdout] --> src/torrentfile.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | use std::io::prelude::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `AsciiSet`, `CONTROLS`, `percent_encode_byte` [INFO] [stdout] --> src/tracker.rs:8:24 [INFO] [stdout] | [INFO] [stdout] 8 | use percent_encoding::{percent_encode_byte, AsciiSet, CONTROLS}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ClientBuilder`, `Client` [INFO] [stdout] --> src/tracker.rs:9:15 [INFO] [stdout] | [INFO] [stdout] 9 | use reqwest::{Client, ClientBuilder}; [INFO] [stdout] | ^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ErrorKind` [INFO] [stdout] --> src/tracker.rs:12:22 [INFO] [stdout] | [INFO] [stdout] 12 | use std::io::{Error, ErrorKind}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bencode::streaming::BencodeEvent` [INFO] [stdout] --> src/tracker.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | use bencode::streaming::BencodeEvent; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bencode::streaming::StreamingParser` [INFO] [stdout] --> src/tracker.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | use bencode::streaming::StreamingParser; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Bencode`, `FromBencode`, `NumFromBencodeError`, `ToBencode`, `VecFromBencodeError` [INFO] [stdout] --> src/tracker.rs:16:15 [INFO] [stdout] | [INFO] [stdout] 16 | use bencode::{Bencode, ToBencode, FromBencode, NumFromBencodeError, VecFromBencodeError}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bencode::util::ByteString` [INFO] [stdout] --> src/tracker.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | use bencode::util::ByteString; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Decoder`, `encode` [INFO] [stdout] --> src/tracker.rs:18:15 [INFO] [stdout] | [INFO] [stdout] 18 | use bencode::{encode, Decoder}; [INFO] [stdout] | ^^^^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Decodable`, `Encodable` [INFO] [stdout] --> src/tracker.rs:19:23 [INFO] [stdout] | [INFO] [stdout] 19 | use rustc_serialize::{Encodable, Decodable}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::BTreeMap` [INFO] [stdout] --> src/tracker.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | use std::collections::BTreeMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `SocketAddrV4`, `SocketAddr` [INFO] [stdout] --> src/tracker.rs:21:26 [INFO] [stdout] | [INFO] [stdout] 21 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4}; [INFO] [stdout] | ^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::net::TcpStream` [INFO] [stdout] --> src/tracker.rs:173:9 [INFO] [stdout] | [INFO] [stdout] 173 | use std::net::TcpStream; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Read`, `Write` [INFO] [stdout] --> src/tracker.rs:174:19 [INFO] [stdout] | [INFO] [stdout] 174 | use std::io::{Read, Write}; [INFO] [stdout] | ^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `server_address` [INFO] [stdout] --> src/tracker.rs:175:25 [INFO] [stdout] | [INFO] [stdout] 175 | use mockito::{mock, server_address, Matcher}; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::bitfield::Bitfield` [INFO] [stdout] --> src/main.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::bitfield::Bitfield; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `MESSAGE_BITFIELD`, `Message`, `read_message` [INFO] [stdout] --> src/main.rs:12:22 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::message::{read_message, Message, MESSAGE_BITFIELD}; [INFO] [stdout] | ^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ErrorKind`, `Error`, `Read`, `Write` [INFO] [stdout] --> src/main.rs:13:15 [INFO] [stdout] | [INFO] [stdout] 13 | use std::io::{Error, ErrorKind, Read, Write}; [INFO] [stdout] | ^^^^^ ^^^^^^^^^ ^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Shutdown`, `TcpListener`, `TcpStream` [INFO] [stdout] --> src/main.rs:14:16 [INFO] [stdout] | [INFO] [stdout] 14 | use std::net::{Shutdown, TcpListener, TcpStream}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::str::from_utf8` [INFO] [stdout] --> src/main.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | use std::str::from_utf8; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::thread` [INFO] [stdout] --> src/main.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | use std::thread; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `hs` [INFO] [stdout] --> src/client.rs:143:16 [INFO] [stdout] | [INFO] [stdout] 143 | Ok(hs) => match receive_bitfield(&mut s) { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_hs` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `expected_handshake` [INFO] [stdout] --> src/client.rs:259:21 [INFO] [stdout] | [INFO] [stdout] 259 | let mut expected_handshake : Handshake = new_handshake_with_input(expected_infohash.to_vec(), expected_peer_id.to_vec()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_expected_handshake` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `mock_tcp_thread` [INFO] [stdout] --> src/handshake.rs:203:13 [INFO] [stdout] | [INFO] [stdout] 203 | let mock_tcp_thread = thread::spawn(move || { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mock_tcp_thread` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `length_test` [INFO] [stdout] --> src/message.rs:232:13 [INFO] [stdout] | [INFO] [stdout] 232 | let length_test = parse_piece(input_index, &mut input_buffer, input_message); [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_length_test` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `output_buffer` [INFO] [stdout] --> src/message.rs:246:13 [INFO] [stdout] | [INFO] [stdout] 246 | let output_buffer = vec![0x00, 0x00, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x00]; [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_buffer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `s` [INFO] [stdout] --> src/message.rs:248:16 [INFO] [stdout] | [INFO] [stdout] 248 | Ok(s) => assert_eq!(1, 2), [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/message.rs:249:17 [INFO] [stdout] | [INFO] [stdout] 249 | Err(e) => assert_eq!(1, 1) [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `output_buffer` [INFO] [stdout] --> src/message.rs:263:13 [INFO] [stdout] | [INFO] [stdout] 263 | let output_buffer = vec![0x00, 0x00, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x00]; [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_buffer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `s` [INFO] [stdout] --> src/message.rs:265:16 [INFO] [stdout] | [INFO] [stdout] 265 | Ok(s) => assert_eq!(1, 2), [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/message.rs:266:17 [INFO] [stdout] | [INFO] [stdout] 266 | Err(e) => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `output_buffer` [INFO] [stdout] --> src/message.rs:285:13 [INFO] [stdout] | [INFO] [stdout] 285 | let output_buffer = vec![0x00, 0x00, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x00]; [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_buffer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `s` [INFO] [stdout] --> src/message.rs:287:16 [INFO] [stdout] | [INFO] [stdout] 287 | Ok(s) => assert_eq!(1, 2), [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `output_buffer` [INFO] [stdout] --> src/message.rs:306:13 [INFO] [stdout] | [INFO] [stdout] 306 | let output_buffer = vec![0x00, 0x00, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x00]; [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_buffer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `s` [INFO] [stdout] --> src/message.rs:308:16 [INFO] [stdout] | [INFO] [stdout] 308 | Ok(s) => assert_eq!(1, 2), [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `output_buffer` [INFO] [stdout] --> src/message.rs:328:13 [INFO] [stdout] | [INFO] [stdout] 328 | let output_buffer = vec![0x00, 0x00, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x00]; [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_buffer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `s` [INFO] [stdout] --> src/message.rs:330:16 [INFO] [stdout] | [INFO] [stdout] 330 | Ok(s) => assert_eq!(1, 2), [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `output_payload` [INFO] [stdout] --> src/message.rs:376:13 [INFO] [stdout] | [INFO] [stdout] 376 | let mut output_payload: Vec = vec![]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_payload` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `output` [INFO] [stdout] --> src/message.rs:377:13 [INFO] [stdout] | [INFO] [stdout] 377 | let output = Message::default(); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_output` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `mock_tcp_thread` [INFO] [stdout] --> src/message.rs:378:13 [INFO] [stdout] | [INFO] [stdout] 378 | let mock_tcp_thread = thread::spawn(move || { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mock_tcp_thread` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `output_payload` [INFO] [stdout] --> src/message.rs:409:13 [INFO] [stdout] | [INFO] [stdout] 409 | let mut output_payload: Vec = vec![]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_payload` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `output` [INFO] [stdout] --> src/message.rs:410:13 [INFO] [stdout] | [INFO] [stdout] 410 | let output = Message::default(); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_output` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `mock_tcp_thread` [INFO] [stdout] --> src/message.rs:411:13 [INFO] [stdout] | [INFO] [stdout] 411 | let mock_tcp_thread = thread::spawn(move || { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mock_tcp_thread` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `input` [INFO] [stdout] --> src/message.rs:442:13 [INFO] [stdout] | [INFO] [stdout] 442 | let mut input: Vec = vec![0, 0, 0, 0]; [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_input` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `output_payload` [INFO] [stdout] --> src/message.rs:443:13 [INFO] [stdout] | [INFO] [stdout] 443 | let mut output_payload: Vec = vec![]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_payload` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `mock_tcp_thread` [INFO] [stdout] --> src/message.rs:445:13 [INFO] [stdout] | [INFO] [stdout] 445 | let mock_tcp_thread = thread::spawn(move || { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mock_tcp_thread` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `err` [INFO] [stdout] --> src/p2p.rs:171:21 [INFO] [stdout] | [INFO] [stdout] 171 | Err(err) => return, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_err` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `err` [INFO] [stdout] --> src/p2p.rs:186:21 [INFO] [stdout] | [INFO] [stdout] 186 | Err(err) => { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_err` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/p2p.rs:197:21 [INFO] [stdout] | [INFO] [stdout] 197 | Err(e) => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `end` [INFO] [stdout] --> src/p2p.rs:256:25 [INFO] [stdout] | [INFO] [stdout] 256 | let (begin, end) = self.calculate_bounds_for_piece(res.index); [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_end` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `offset` is never read [INFO] [stdout] --> src/peers.rs:34:13 [INFO] [stdout] | [INFO] [stdout] 34 | let mut offset = 0; [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: value assigned to `port_cursor` is never read [INFO] [stdout] --> src/peers.rs:36:13 [INFO] [stdout] | [INFO] [stdout] 36 | let mut port_cursor = Cursor::new(&port_vec); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `mock` [INFO] [stdout] --> src/tracker.rs:217:13 [INFO] [stdout] | [INFO] [stdout] 217 | let mock = mock("GET", Matcher::Any).with_body(response_bencode).create(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_mock` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/client.rs:72:13 [INFO] [stdout] | [INFO] [stdout] 72 | let mut msg = format_have(index); [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/client.rs:87:17 [INFO] [stdout] | [INFO] [stdout] 87 | let mut id_error = Error::new(ErrorKind::InvalidData, "id Error"); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/client.rs:108:9 [INFO] [stdout] | [INFO] [stdout] 108 | let mut reader_error = Error::new(ErrorKind::InvalidData, "unexpected infohash"); [INFO] [stdout] | ----^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/client.rs:118:9 [INFO] [stdout] | [INFO] [stdout] 118 | let mut received = match read_handshake(conn){ [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/client.rs:184:21 [INFO] [stdout] | [INFO] [stdout] 184 | let mut expected_bf: [u8; 5] = [1, 2, 3, 4, 5]; [INFO] [stdout] | ----^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/client.rs:203:25 [INFO] [stdout] | [INFO] [stdout] 203 | let mut msg: [u8; 10] = [0x00, 0x00, 0x00, 0x06, 5, 1, 2, 3, 4, 5]; [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/client.rs:259:21 [INFO] [stdout] | [INFO] [stdout] 259 | let mut expected_handshake : Handshake = new_handshake_with_input(expected_infohash.to_vec(), expected_peer_id.to_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] --> src/client.rs:280:25 [INFO] [stdout] | [INFO] [stdout] 280 | ... let mut server_handshake : [u8; 68] = [19, 66, 105, 116, 84, 111, 114, 114, 101, 110, 116, 32, 112, 114, 111, 116, 111, 99, 111, 10... [INFO] [stdout] | ----^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/handshake.rs:53:9 [INFO] [stdout] | [INFO] [stdout] 53 | let mut reader_error = Error::new(ErrorKind::InvalidData, "unexpected infohash"); [INFO] [stdout] | ----^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/handshake.rs:154:13 [INFO] [stdout] | [INFO] [stdout] 154 | let mut input_info_hash: [u8; 20] = [ [INFO] [stdout] | ----^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/handshake.rs:157:13 [INFO] [stdout] | [INFO] [stdout] 157 | let mut input_peer_id: [u8; 20] = [ [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/handshake.rs:172:13 [INFO] [stdout] | [INFO] [stdout] 172 | let mut input_info_hash: [u8; 20] = [ [INFO] [stdout] | ----^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/handshake.rs:175:13 [INFO] [stdout] | [INFO] [stdout] 175 | let mut input_peer_id: [u8; 20] = [ [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/handshake.rs:178:13 [INFO] [stdout] | [INFO] [stdout] 178 | let mut input_pstr = String::from("BitTorrent protocol, but cooler?"); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/handshake.rs:195:13 [INFO] [stdout] | [INFO] [stdout] 195 | let mut output_info_hash: [u8; 20] = [134, 212, 200, 0, 36, 164, 105, 190, 76, 80, 188, 90, 16, 44, 247, 23, 128, 49, 0, 116]; [INFO] [stdout] | ----^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/handshake.rs:196:13 [INFO] [stdout] | [INFO] [stdout] 196 | let mut output_peer_id: [u8; 20] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]; [INFO] [stdout] | ----^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/handshake.rs:197:13 [INFO] [stdout] | [INFO] [stdout] 197 | let mut output_pstr = String::from("BitTorrent protocol"); [INFO] [stdout] | ----^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `hs` [INFO] [stdout] --> src/client.rs:143:16 [INFO] [stdout] | [INFO] [stdout] 143 | Ok(hs) => match receive_bitfield(&mut s) { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_hs` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `expected_handshake` [INFO] [stdout] --> src/client.rs:259:21 [INFO] [stdout] | [INFO] [stdout] 259 | let mut expected_handshake : Handshake = new_handshake_with_input(expected_infohash.to_vec(), expected_peer_id.to_vec()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_expected_handshake` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `mock_tcp_thread` [INFO] [stdout] --> src/handshake.rs:203:13 [INFO] [stdout] | [INFO] [stdout] 203 | let mock_tcp_thread = thread::spawn(move || { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mock_tcp_thread` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `length_test` [INFO] [stdout] --> src/message.rs:232:13 [INFO] [stdout] | [INFO] [stdout] 232 | let length_test = parse_piece(input_index, &mut input_buffer, input_message); [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_length_test` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `output_buffer` [INFO] [stdout] --> src/message.rs:246:13 [INFO] [stdout] | [INFO] [stdout] 246 | let output_buffer = vec![0x00, 0x00, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x00]; [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_buffer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `s` [INFO] [stdout] --> src/message.rs:248:16 [INFO] [stdout] | [INFO] [stdout] 248 | Ok(s) => assert_eq!(1, 2), [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/message.rs:249:17 [INFO] [stdout] | [INFO] [stdout] 249 | Err(e) => assert_eq!(1, 1) [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `output_buffer` [INFO] [stdout] --> src/message.rs:263:13 [INFO] [stdout] | [INFO] [stdout] 263 | let output_buffer = vec![0x00, 0x00, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x00]; [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_buffer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `s` [INFO] [stdout] --> src/message.rs:265:16 [INFO] [stdout] | [INFO] [stdout] 265 | Ok(s) => assert_eq!(1, 2), [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/message.rs:266:17 [INFO] [stdout] | [INFO] [stdout] 266 | Err(e) => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `output_buffer` [INFO] [stdout] --> src/message.rs:285:13 [INFO] [stdout] | [INFO] [stdout] 285 | let output_buffer = vec![0x00, 0x00, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x00]; [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_buffer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `s` [INFO] [stdout] --> src/message.rs:287:16 [INFO] [stdout] | [INFO] [stdout] 287 | Ok(s) => assert_eq!(1, 2), [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `output_buffer` [INFO] [stdout] --> src/message.rs:306:13 [INFO] [stdout] | [INFO] [stdout] 306 | let output_buffer = vec![0x00, 0x00, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x00]; [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_buffer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `s` [INFO] [stdout] --> src/message.rs:308:16 [INFO] [stdout] | [INFO] [stdout] 308 | Ok(s) => assert_eq!(1, 2), [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `output_buffer` [INFO] [stdout] --> src/message.rs:328:13 [INFO] [stdout] | [INFO] [stdout] 328 | let output_buffer = vec![0x00, 0x00, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x00]; [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_buffer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `s` [INFO] [stdout] --> src/message.rs:330:16 [INFO] [stdout] | [INFO] [stdout] 330 | Ok(s) => assert_eq!(1, 2), [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `output_payload` [INFO] [stdout] --> src/message.rs:376:13 [INFO] [stdout] | [INFO] [stdout] 376 | let mut output_payload: Vec = vec![]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_payload` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `output` [INFO] [stdout] --> src/message.rs:377:13 [INFO] [stdout] | [INFO] [stdout] 377 | let output = Message::default(); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_output` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `mock_tcp_thread` [INFO] [stdout] --> src/message.rs:378:13 [INFO] [stdout] | [INFO] [stdout] 378 | let mock_tcp_thread = thread::spawn(move || { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mock_tcp_thread` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `output_payload` [INFO] [stdout] --> src/message.rs:409:13 [INFO] [stdout] | [INFO] [stdout] 409 | let mut output_payload: Vec = vec![]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_payload` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `output` [INFO] [stdout] --> src/message.rs:410:13 [INFO] [stdout] | [INFO] [stdout] 410 | let output = Message::default(); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_output` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/message.rs:376:13 [INFO] [stdout] | [INFO] [stdout] 376 | let mut output_payload: Vec = vec![]; [INFO] [stdout] | ----^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `mock_tcp_thread` [INFO] [stdout] --> src/message.rs:411:13 [INFO] [stdout] | [INFO] [stdout] 411 | let mock_tcp_thread = thread::spawn(move || { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mock_tcp_thread` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `input` [INFO] [stdout] --> src/message.rs:442:13 [INFO] [stdout] | [INFO] [stdout] 442 | let mut input: Vec = vec![0, 0, 0, 0]; [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_input` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `output_payload` [INFO] [stdout] --> src/message.rs:443:13 [INFO] [stdout] | [INFO] [stdout] 443 | let mut output_payload: Vec = vec![]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_payload` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `mock_tcp_thread` [INFO] [stdout] --> src/message.rs:445:13 [INFO] [stdout] | [INFO] [stdout] 445 | let mock_tcp_thread = thread::spawn(move || { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mock_tcp_thread` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `err` [INFO] [stdout] --> src/p2p.rs:171:21 [INFO] [stdout] | [INFO] [stdout] 171 | Err(err) => return, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_err` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `err` [INFO] [stdout] --> src/p2p.rs:186:21 [INFO] [stdout] | [INFO] [stdout] 186 | Err(err) => { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_err` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/p2p.rs:197:21 [INFO] [stdout] | [INFO] [stdout] 197 | Err(e) => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `end` [INFO] [stdout] --> src/p2p.rs:256:25 [INFO] [stdout] | [INFO] [stdout] 256 | let (begin, end) = self.calculate_bounds_for_piece(res.index); [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_end` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `offset` is never read [INFO] [stdout] --> src/peers.rs:34:13 [INFO] [stdout] | [INFO] [stdout] 34 | let mut offset = 0; [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: value assigned to `port_cursor` is never read [INFO] [stdout] --> src/peers.rs:36:13 [INFO] [stdout] | [INFO] [stdout] 36 | let mut port_cursor = Cursor::new(&port_vec); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `mock` [INFO] [stdout] --> src/tracker.rs:217:13 [INFO] [stdout] | [INFO] [stdout] 217 | let mock = mock("GET", Matcher::Any).with_body(response_bencode).create(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_mock` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/message.rs:409:13 [INFO] [stdout] | [INFO] [stdout] 409 | let mut output_payload: Vec = 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] --> src/message.rs:442:13 [INFO] [stdout] | [INFO] [stdout] 442 | let mut input: Vec = vec![0, 0, 0, 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] --> src/message.rs:443:13 [INFO] [stdout] | [INFO] [stdout] 443 | let mut output_payload: Vec = 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] --> src/p2p.rs:133:9 [INFO] [stdout] | [INFO] [stdout] 133 | let mut reader_error = Error::new(ErrorKind::InvalidData, "unexpected infohash"); [INFO] [stdout] | ----^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/client.rs:72:13 [INFO] [stdout] | [INFO] [stdout] 72 | let mut msg = format_have(index); [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/client.rs:87:17 [INFO] [stdout] | [INFO] [stdout] 87 | let mut id_error = Error::new(ErrorKind::InvalidData, "id Error"); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/client.rs:108:9 [INFO] [stdout] | [INFO] [stdout] 108 | let mut reader_error = Error::new(ErrorKind::InvalidData, "unexpected infohash"); [INFO] [stdout] | ----^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/client.rs:118:9 [INFO] [stdout] | [INFO] [stdout] 118 | let mut received = match read_handshake(conn){ [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/p2p.rs:174:17 [INFO] [stdout] | [INFO] [stdout] 174 | let mut gaurdthree = c.lock().unwrap();//.bitfield; [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/client.rs:184:21 [INFO] [stdout] | [INFO] [stdout] 184 | let mut expected_bf: [u8; 5] = [1, 2, 3, 4, 5]; [INFO] [stdout] | ----^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/p2p.rs:245:17 [INFO] [stdout] | [INFO] [stdout] 245 | let mut workQueueCopy = Arc::clone(&workQueue); [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/client.rs:203:25 [INFO] [stdout] | [INFO] [stdout] 203 | let mut msg: [u8; 10] = [0x00, 0x00, 0x00, 0x06, 5, 1, 2, 3, 4, 5]; [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/p2p.rs:246:17 [INFO] [stdout] | [INFO] [stdout] 246 | let mut resultsCopy = results.0.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] --> src/peers.rs:22:9 [INFO] [stdout] | [INFO] [stdout] 22 | let mut num_peers = peers_bin.len() / peer_size; [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/peers.rs:23:9 [INFO] [stdout] | [INFO] [stdout] 23 | let mut peer_error = Error::new(ErrorKind::InvalidData, "Malformed Peers"); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/peers.rs:41:17 [INFO] [stdout] | [INFO] [stdout] 41 | let mut port_vc = &port_vec[0..2].to_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] --> src/client.rs:259:21 [INFO] [stdout] | [INFO] [stdout] 259 | let mut expected_handshake : Handshake = new_handshake_with_input(expected_infohash.to_vec(), expected_peer_id.to_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] --> src/client.rs:280:25 [INFO] [stdout] | [INFO] [stdout] 280 | ... let mut server_handshake : [u8; 68] = [19, 66, 105, 116, 84, 111, 114, 114, 101, 110, 116, 32, 112, 114, 111, 116, 111, 99, 111, 10... [INFO] [stdout] | ----^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/handshake.rs:53:9 [INFO] [stdout] | [INFO] [stdout] 53 | let mut reader_error = Error::new(ErrorKind::InvalidData, "unexpected infohash"); [INFO] [stdout] | ----^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/handshake.rs:154:13 [INFO] [stdout] | [INFO] [stdout] 154 | let mut input_info_hash: [u8; 20] = [ [INFO] [stdout] | ----^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/handshake.rs:157:13 [INFO] [stdout] | [INFO] [stdout] 157 | let mut input_peer_id: [u8; 20] = [ [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/torrentfile.rs:89:13 [INFO] [stdout] | [INFO] [stdout] 89 | let mut buffer : Vec = ser::to_bytes::(self).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] --> src/torrentfile.rs:92:13 [INFO] [stdout] | [INFO] [stdout] 92 | let mut result : Vec = hex::decode(h.result_str()).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] --> src/handshake.rs:172:13 [INFO] [stdout] | [INFO] [stdout] 172 | let mut input_info_hash: [u8; 20] = [ [INFO] [stdout] | ----^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/handshake.rs:175:13 [INFO] [stdout] | [INFO] [stdout] 175 | let mut input_peer_id: [u8; 20] = [ [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/handshake.rs:178:13 [INFO] [stdout] | [INFO] [stdout] 178 | let mut input_pstr = String::from("BitTorrent protocol, but cooler?"); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/handshake.rs:195:13 [INFO] [stdout] | [INFO] [stdout] 195 | let mut output_info_hash: [u8; 20] = [134, 212, 200, 0, 36, 164, 105, 190, 76, 80, 188, 90, 16, 44, 247, 23, 128, 49, 0, 116]; [INFO] [stdout] | ----^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/handshake.rs:196:13 [INFO] [stdout] | [INFO] [stdout] 196 | let mut output_peer_id: [u8; 20] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]; [INFO] [stdout] | ----^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/handshake.rs:197:13 [INFO] [stdout] | [INFO] [stdout] 197 | let mut output_pstr = String::from("BitTorrent protocol"); [INFO] [stdout] | ----^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field is never read: `peer` [INFO] [stdout] --> src/client.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | peer: Peer, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field is never read: `info_hash` [INFO] [stdout] --> src/client.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | info_hash: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field is never read: `peer_id` [INFO] [stdout] --> src/client.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | peer_id: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/message.rs:376:13 [INFO] [stdout] | [INFO] [stdout] 376 | let mut output_payload: Vec = vec![]; [INFO] [stdout] | ----^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `send_not_interested` [INFO] [stdout] --> src/client.rs:53:19 [INFO] [stdout] | [INFO] [stdout] 53 | pub(crate) fn send_not_interested(&mut self) -> Result<(), Error> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function is never used: `new_handshake` [INFO] [stdout] --> src/handshake.rs:18:8 [INFO] [stdout] | [INFO] [stdout] 18 | pub fn new_handshake() -> Handshake { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function is never used: `binary_percent_encoder` [INFO] [stdout] --> src/tracker.rs:84:8 [INFO] [stdout] | [INFO] [stdout] 84 | pub fn binary_percent_encoder(input: Vec) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/message.rs:409:13 [INFO] [stdout] | [INFO] [stdout] 409 | let mut output_payload: Vec = 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] --> src/message.rs:442:13 [INFO] [stdout] | [INFO] [stdout] 442 | let mut input: Vec = vec![0, 0, 0, 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] --> src/message.rs:443:13 [INFO] [stdout] | [INFO] [stdout] 443 | let mut output_payload: Vec = vec![]; [INFO] [stdout] | ----^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:81:5 [INFO] [stdout] | [INFO] [stdout] 81 | conn.set_write_timeout(Some(Duration::new(5, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:82:5 [INFO] [stdout] | [INFO] [stdout] 82 | conn.set_read_timeout(Some(Duration::new(5, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:91:17 [INFO] [stdout] | [INFO] [stdout] 91 | conn.set_write_timeout(Some(Duration::new(1000, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:92:17 [INFO] [stdout] | [INFO] [stdout] 92 | conn.set_read_timeout(Some(Duration::new(1000, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:106:5 [INFO] [stdout] | [INFO] [stdout] 106 | conn.set_write_timeout(Some(Duration::new(3, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:107:5 [INFO] [stdout] | [INFO] [stdout] 107 | conn.set_read_timeout(Some(Duration::new(3, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:123:9 [INFO] [stdout] | [INFO] [stdout] 123 | conn.set_write_timeout(Some(Duration::new(1000, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:124:9 [INFO] [stdout] | [INFO] [stdout] 124 | conn.set_read_timeout(Some(Duration::new(1000, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:232:21 [INFO] [stdout] | [INFO] [stdout] 232 | dummy_client_thread.join(); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:311:21 [INFO] [stdout] | [INFO] [stdout] 311 | dummy_client_thread.join(); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/handshake.rs:226:21 [INFO] [stdout] | [INFO] [stdout] 226 | stream.write(&input); [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: structure field `ID` should have a snake case name [INFO] [stdout] --> src/message.rs:23:16 [INFO] [stdout] | [INFO] [stdout] 23 | pub(crate) ID: messageID, [INFO] [stdout] | ^^ help: convert the identifier to snake case: `id` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `Payload` should have a snake case name [INFO] [stdout] --> src/message.rs:24:16 [INFO] [stdout] | [INFO] [stdout] 24 | pub(crate) Payload: Vec, [INFO] [stdout] | ^^^^^^^ help: convert the identifier to snake case: `payload` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/message.rs:396:21 [INFO] [stdout] | [INFO] [stdout] 396 | stream.write(&input); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/message.rs:430:21 [INFO] [stdout] | [INFO] [stdout] 430 | stream.write(&input); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/message.rs:464:21 [INFO] [stdout] | [INFO] [stdout] 464 | stream.write(&input); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/p2p.rs:100:5 [INFO] [stdout] | [INFO] [stdout] 100 | state.client.lock().unwrap().conn.set_write_timeout(Some(Duration::new(30, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/p2p.rs:101:5 [INFO] [stdout] | [INFO] [stdout] 101 | state.client.lock().unwrap().conn.set_read_timeout(Some(Duration::new(30, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/p2p.rs:127:5 [INFO] [stdout] | [INFO] [stdout] 127 | state.client.lock().unwrap().conn.set_write_timeout(Some(Duration::new(1000, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/p2p.rs:128:5 [INFO] [stdout] | [INFO] [stdout] 128 | state.client.lock().unwrap().conn.set_read_timeout(Some(Duration::new(1000, 0))); [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: variable does not need to be mutable [INFO] [stdout] --> src/p2p.rs:133:9 [INFO] [stdout] | [INFO] [stdout] 133 | let mut reader_error = Error::new(ErrorKind::InvalidData, "unexpected infohash"); [INFO] [stdout] | ----^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/p2p.rs:199:21 [INFO] [stdout] | [INFO] [stdout] 199 | workQueue.lock().unwrap().0.send(pw); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/p2p.rs:240:13 [INFO] [stdout] | [INFO] [stdout] 240 | workQueue.lock().unwrap().0.send(work); [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: variable `trackerResp` should have a snake case name [INFO] [stdout] --> src/tracker.rs:162:13 [INFO] [stdout] | [INFO] [stdout] 162 | let trackerResp : BencodeTrackerResp = de::from_bytes::(&resp).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to snake case: `tracker_resp` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/p2p.rs:174:17 [INFO] [stdout] | [INFO] [stdout] 174 | let mut gaurdthree = c.lock().unwrap();//.bitfield; [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/p2p.rs:245:17 [INFO] [stdout] | [INFO] [stdout] 245 | let mut workQueueCopy = Arc::clone(&workQueue); [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/p2p.rs:246:17 [INFO] [stdout] | [INFO] [stdout] 246 | let mut resultsCopy = results.0.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] --> src/peers.rs:22:9 [INFO] [stdout] | [INFO] [stdout] 22 | let mut num_peers = peers_bin.len() / peer_size; [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/peers.rs:23:9 [INFO] [stdout] | [INFO] [stdout] 23 | let mut peer_error = Error::new(ErrorKind::InvalidData, "Malformed Peers"); [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/peers.rs:41:17 [INFO] [stdout] | [INFO] [stdout] 41 | let mut port_vc = &port_vec[0..2].to_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] --> src/torrentfile.rs:89:13 [INFO] [stdout] | [INFO] [stdout] 89 | let mut buffer : Vec = ser::to_bytes::(self).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] --> src/torrentfile.rs:92:13 [INFO] [stdout] | [INFO] [stdout] 92 | let mut result : Vec = hex::decode(h.result_str()).unwrap(); [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field is never read: `peer` [INFO] [stdout] --> src/client.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | peer: Peer, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field is never read: `info_hash` [INFO] [stdout] --> src/client.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | info_hash: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field is never read: `peer_id` [INFO] [stdout] --> src/client.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | peer_id: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `send_not_interested` [INFO] [stdout] --> src/client.rs:53:19 [INFO] [stdout] | [INFO] [stdout] 53 | pub(crate) fn send_not_interested(&mut self) -> Result<(), Error> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:81:5 [INFO] [stdout] | [INFO] [stdout] 81 | conn.set_write_timeout(Some(Duration::new(5, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:82:5 [INFO] [stdout] | [INFO] [stdout] 82 | conn.set_read_timeout(Some(Duration::new(5, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:91:17 [INFO] [stdout] | [INFO] [stdout] 91 | conn.set_write_timeout(Some(Duration::new(1000, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:92:17 [INFO] [stdout] | [INFO] [stdout] 92 | conn.set_read_timeout(Some(Duration::new(1000, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:106:5 [INFO] [stdout] | [INFO] [stdout] 106 | conn.set_write_timeout(Some(Duration::new(3, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:107:5 [INFO] [stdout] | [INFO] [stdout] 107 | conn.set_read_timeout(Some(Duration::new(3, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:123:9 [INFO] [stdout] | [INFO] [stdout] 123 | conn.set_write_timeout(Some(Duration::new(1000, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:124:9 [INFO] [stdout] | [INFO] [stdout] 124 | conn.set_read_timeout(Some(Duration::new(1000, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:232:21 [INFO] [stdout] | [INFO] [stdout] 232 | dummy_client_thread.join(); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/client.rs:311:21 [INFO] [stdout] | [INFO] [stdout] 311 | dummy_client_thread.join(); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/handshake.rs:226:21 [INFO] [stdout] | [INFO] [stdout] 226 | stream.write(&input); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/message.rs:396:21 [INFO] [stdout] | [INFO] [stdout] 396 | stream.write(&input); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/message.rs:430:21 [INFO] [stdout] | [INFO] [stdout] 430 | stream.write(&input); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/message.rs:464:21 [INFO] [stdout] | [INFO] [stdout] 464 | stream.write(&input); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/p2p.rs:100:5 [INFO] [stdout] | [INFO] [stdout] 100 | state.client.lock().unwrap().conn.set_write_timeout(Some(Duration::new(30, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/p2p.rs:101:5 [INFO] [stdout] | [INFO] [stdout] 101 | state.client.lock().unwrap().conn.set_read_timeout(Some(Duration::new(30, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/p2p.rs:127:5 [INFO] [stdout] | [INFO] [stdout] 127 | state.client.lock().unwrap().conn.set_write_timeout(Some(Duration::new(1000, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/p2p.rs:128:5 [INFO] [stdout] | [INFO] [stdout] 128 | state.client.lock().unwrap().conn.set_read_timeout(Some(Duration::new(1000, 0))); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/p2p.rs:199:21 [INFO] [stdout] | [INFO] [stdout] 199 | workQueue.lock().unwrap().0.send(pw); [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 `std::result::Result` that must be used [INFO] [stdout] --> src/p2p.rs:240:13 [INFO] [stdout] | [INFO] [stdout] 240 | workQueue.lock().unwrap().0.send(work); [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: 130 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 142 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished test [unoptimized + debuginfo] target(s) in 13.74s [INFO] running `Command { std: "docker" "inspect" "46c337fd718ff9db1b168e80337a3047b7278316ff83a15d4e8f579b1e1aafe9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "46c337fd718ff9db1b168e80337a3047b7278316ff83a15d4e8f579b1e1aafe9", kill_on_drop: false }` [INFO] [stdout] 46c337fd718ff9db1b168e80337a3047b7278316ff83a15d4e8f579b1e1aafe9 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3/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" "MAP_USER_ID=0" "-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" "--network" "none" "rustops/crates-build-env@sha256:d9fbb4e2287ab3795bdefaf705efb7541a8875c13bce71e067d6b01dc5ed759b" "/opt/rustwide/cargo-home/bin/cargo" "+8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] d21597c5e18a9554cb494e53fa654f40f67db37ba9a6e70eb9e1e318ffc223b9 [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" "d21597c5e18a9554cb494e53fa654f40f67db37ba9a6e70eb9e1e318ffc223b9", kill_on_drop: false }` [INFO] [stderr] warning: unused import: `new_handshake` [INFO] [stderr] --> src/client.rs:2:24 [INFO] [stderr] | [INFO] [stderr] 2 | use crate::handshake::{new_handshake, read_handshake, serialize_handshake, Handshake}; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BigEndian`, `ReadBytesExt` [INFO] [stderr] --> src/client.rs:5:17 [INFO] [stderr] | [INFO] [stderr] 5 | use byteorder::{BigEndian, ReadBytesExt}; [INFO] [stderr] | ^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt` [INFO] [stderr] --> src/client.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::prelude::*` [INFO] [stderr] --> src/client.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::io::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Ipv4Addr`, `SocketAddrV4` [INFO] [stderr] --> src/client.rs:9:16 [INFO] [stderr] | [INFO] [stderr] 9 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream}; [INFO] [stderr] | ^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::sync::mpsc` [INFO] [stderr] --> src/client.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | use std::sync::mpsc; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::thread` [INFO] [stderr] --> src/client.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | use std::thread; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt` [INFO] [stderr] --> src/handshake.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BufRead`, `BufReader`, `Cursor` [INFO] [stderr] --> src/handshake.rs:4:15 [INFO] [stderr] | [INFO] [stderr] 4 | use std::io::{BufRead, BufReader, Cursor, Error, ErrorKind, Read, Result}; [INFO] [stderr] | ^^^^^^^ ^^^^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Ipv4Addr`, `SocketAddrV4`, `SocketAddr`, `TcpListener` [INFO] [stderr] --> src/handshake.rs:5:16 [INFO] [stderr] | [INFO] [stderr] 5 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream, TcpListener}; [INFO] [stderr] | ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::str` [INFO] [stderr] --> src/handshake.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use std::str; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::prelude::*` [INFO] [stderr] --> src/handshake.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use std::io::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::thread` [INFO] [stderr] --> src/handshake.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use std::thread; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BufMut`, `BytesMut` [INFO] [stderr] --> src/handshake.rs:10:13 [INFO] [stderr] | [INFO] [stderr] 10 | use bytes::{BytesMut, BufMut}; [INFO] [stderr] | ^^^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt` [INFO] [stderr] --> src/message.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::prelude::*` [INFO] [stderr] --> src/message.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use std::io::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BufRead`, `BufReader` [INFO] [stderr] --> src/message.rs:4:15 [INFO] [stderr] | [INFO] [stderr] 4 | use std::io::{BufRead, BufReader, Cursor, Error, ErrorKind, Read, Result}; [INFO] [stderr] | ^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Ipv4Addr`, `SocketAddrV4`, `SocketAddr`, `TcpListener` [INFO] [stderr] --> src/message.rs:6:16 [INFO] [stderr] | [INFO] [stderr] 6 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream, TcpListener}; [INFO] [stderr] | ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::thread` [INFO] [stderr] --> src/message.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::thread; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type `messageID` should have an upper camel case name [INFO] [stderr] --> src/message.rs:9:6 [INFO] [stderr] | [INFO] [stderr] 9 | type messageID = u8; [INFO] [stderr] | ^^^^^^^^^ help: convert the identifier to upper camel case: `MessageId` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_camel_case_types)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BigEndian`, `ReadBytesExt` [INFO] [stderr] --> src/p2p.rs:7:17 [INFO] [stderr] | [INFO] [stderr] 7 | use byteorder::{BigEndian, ReadBytesExt}; [INFO] [stderr] | ^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `sync_channel` [INFO] [stderr] --> src/p2p.rs:9:53 [INFO] [stderr] | [INFO] [stderr] 9 | use std::sync::mpsc::{Receiver, Sender, SyncSender, sync_channel}; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt` [INFO] [stderr] --> src/peers.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BufRead`, `BufReader`, `Read` [INFO] [stderr] --> src/peers.rs:3:15 [INFO] [stderr] | [INFO] [stderr] 3 | use std::io::{BufRead, BufReader, Cursor, Error, ErrorKind, Read, Result}; [INFO] [stderr] | ^^^^^^^ ^^^^^^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `SocketAddr` [INFO] [stderr] --> src/peers.rs:4:26 [INFO] [stderr] | [INFO] [stderr] 4 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4}; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::str` [INFO] [stderr] --> src/peers.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std::str; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::tracker::*` [INFO] [stderr] --> src/torrentfile.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use crate::tracker::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `bencodex::BNode` [INFO] [stderr] --> src/torrentfile.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use bencodex::BNode; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BigEndian`, `ReadBytesExt` [INFO] [stderr] --> src/torrentfile.rs:10:17 [INFO] [stderr] | [INFO] [stderr] 10 | use byteorder::{BigEndian, ReadBytesExt}; [INFO] [stderr] | ^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `rand::*` [INFO] [stderr] --> src/torrentfile.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | use rand::*; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt` [INFO] [stderr] --> src/torrentfile.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BufRead`, `BufReader`, `Cursor`, `str::Bytes` [INFO] [stderr] --> src/torrentfile.rs:14:11 [INFO] [stderr] | [INFO] [stderr] 14 | use std::{str::Bytes, io::{BufRead, BufReader, Cursor, Error, ErrorKind, Read, Write}}; [INFO] [stderr] | ^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io` [INFO] [stderr] --> src/torrentfile.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | use std::io; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::prelude::*` [INFO] [stderr] --> src/torrentfile.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | use std::io::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `AsciiSet`, `CONTROLS`, `percent_encode_byte` [INFO] [stderr] --> src/tracker.rs:8:24 [INFO] [stderr] | [INFO] [stderr] 8 | use percent_encoding::{percent_encode_byte, AsciiSet, CONTROLS}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `ClientBuilder`, `Client` [INFO] [stderr] --> src/tracker.rs:9:15 [INFO] [stderr] | [INFO] [stderr] 9 | use reqwest::{Client, ClientBuilder}; [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ErrorKind` [INFO] [stderr] --> src/tracker.rs:12:22 [INFO] [stderr] | [INFO] [stderr] 12 | use std::io::{Error, ErrorKind}; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `bencode::streaming::BencodeEvent` [INFO] [stderr] --> src/tracker.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | use bencode::streaming::BencodeEvent; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `bencode::streaming::StreamingParser` [INFO] [stderr] --> src/tracker.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | use bencode::streaming::StreamingParser; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Bencode`, `FromBencode`, `NumFromBencodeError`, `ToBencode`, `VecFromBencodeError` [INFO] [stderr] --> src/tracker.rs:16:15 [INFO] [stderr] | [INFO] [stderr] 16 | use bencode::{Bencode, ToBencode, FromBencode, NumFromBencodeError, VecFromBencodeError}; [INFO] [stderr] | ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `bencode::util::ByteString` [INFO] [stderr] --> src/tracker.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | use bencode::util::ByteString; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Decoder`, `encode` [INFO] [stderr] --> src/tracker.rs:18:15 [INFO] [stderr] | [INFO] [stderr] 18 | use bencode::{encode, Decoder}; [INFO] [stderr] | ^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Decodable`, `Encodable` [INFO] [stderr] --> src/tracker.rs:19:23 [INFO] [stderr] | [INFO] [stderr] 19 | use rustc_serialize::{Encodable, Decodable}; [INFO] [stderr] | ^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::BTreeMap` [INFO] [stderr] --> src/tracker.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | use std::collections::BTreeMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Ipv4Addr`, `SocketAddrV4`, `SocketAddr` [INFO] [stderr] --> src/tracker.rs:21:16 [INFO] [stderr] | [INFO] [stderr] 21 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4}; [INFO] [stderr] | ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ser` [INFO] [stderr] --> src/tracker.rs:23:25 [INFO] [stderr] | [INFO] [stderr] 23 | use serde_bencode::{de, ser}; [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `hs` [INFO] [stderr] --> src/client.rs:143:16 [INFO] [stderr] | [INFO] [stderr] 143 | Ok(hs) => match receive_bitfield(&mut s) { [INFO] [stderr] | ^^ help: if this is intentional, prefix it with an underscore: `_hs` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `err` [INFO] [stderr] --> src/p2p.rs:171:21 [INFO] [stderr] | [INFO] [stderr] 171 | Err(err) => return, [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_err` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `err` [INFO] [stderr] --> src/p2p.rs:186:21 [INFO] [stderr] | [INFO] [stderr] 186 | Err(err) => { [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_err` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `e` [INFO] [stderr] --> src/p2p.rs:197:21 [INFO] [stderr] | [INFO] [stderr] 197 | Err(e) => { [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `end` [INFO] [stderr] --> src/p2p.rs:256:25 [INFO] [stderr] | [INFO] [stderr] 256 | let (begin, end) = self.calculate_bounds_for_piece(res.index); [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_end` [INFO] [stderr] [INFO] [stderr] warning: value assigned to `offset` is never read [INFO] [stderr] --> src/peers.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | let mut offset = 0; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_assignments)]` on by default [INFO] [stderr] = help: maybe it is overwritten before being read? [INFO] [stderr] [INFO] [stderr] warning: value assigned to `port_cursor` is never read [INFO] [stderr] --> src/peers.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | let mut port_cursor = Cursor::new(&port_vec); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: maybe it is overwritten before being read? [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/client.rs:72:13 [INFO] [stderr] | [INFO] [stderr] 72 | let mut msg = format_have(index); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/client.rs:87:17 [INFO] [stderr] | [INFO] [stderr] 87 | let mut id_error = Error::new(ErrorKind::InvalidData, "id Error"); [INFO] [stderr] | ----^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/client.rs:108:9 [INFO] [stderr] | [INFO] [stderr] 108 | let mut reader_error = Error::new(ErrorKind::InvalidData, "unexpected infohash"); [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/client.rs:118:9 [INFO] [stderr] | [INFO] [stderr] 118 | let mut received = match read_handshake(conn){ [INFO] [stderr] | ----^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/handshake.rs:53:9 [INFO] [stderr] | [INFO] [stderr] 53 | let mut reader_error = Error::new(ErrorKind::InvalidData, "unexpected infohash"); [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/p2p.rs:133:9 [INFO] [stderr] | [INFO] [stderr] 133 | let mut reader_error = Error::new(ErrorKind::InvalidData, "unexpected infohash"); [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/p2p.rs:174:17 [INFO] [stderr] | [INFO] [stderr] 174 | let mut gaurdthree = c.lock().unwrap();//.bitfield; [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/p2p.rs:245:17 [INFO] [stderr] | [INFO] [stderr] 245 | let mut workQueueCopy = Arc::clone(&workQueue); [INFO] [stderr] | ----^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/p2p.rs:246:17 [INFO] [stderr] | [INFO] [stderr] 246 | let mut resultsCopy = results.0.clone(); [INFO] [stderr] | ----^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/peers.rs:22:9 [INFO] [stderr] | [INFO] [stderr] 22 | let mut num_peers = peers_bin.len() / peer_size; [INFO] [stderr] | ----^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/peers.rs:23:9 [INFO] [stderr] | [INFO] [stderr] 23 | let mut peer_error = Error::new(ErrorKind::InvalidData, "Malformed Peers"); [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/peers.rs:41:17 [INFO] [stderr] | [INFO] [stderr] 41 | let mut port_vc = &port_vec[0..2].to_vec(); [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/torrentfile.rs:89:13 [INFO] [stderr] | [INFO] [stderr] 89 | let mut buffer : Vec = ser::to_bytes::(self).unwrap(); [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/torrentfile.rs:92:13 [INFO] [stderr] | [INFO] [stderr] 92 | let mut result : Vec = hex::decode(h.result_str()).unwrap(); [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: field is never read: `peer` [INFO] [stderr] --> src/client.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | peer: Peer, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: field is never read: `info_hash` [INFO] [stderr] --> src/client.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | info_hash: Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never read: `peer_id` [INFO] [stderr] --> src/client.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | peer_id: Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function is never used: `send_not_interested` [INFO] [stderr] --> src/client.rs:53:19 [INFO] [stderr] | [INFO] [stderr] 53 | pub(crate) fn send_not_interested(&mut self) -> Result<(), Error> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `name` [INFO] [stderr] --> src/message.rs:163:4 [INFO] [stderr] | [INFO] [stderr] 163 | fn name(msg: &Message) -> String { [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `string` [INFO] [stderr] --> src/message.rs:182:4 [INFO] [stderr] | [INFO] [stderr] 182 | fn string(msg: &Message) -> String { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client.rs:81:5 [INFO] [stderr] | [INFO] [stderr] 81 | conn.set_write_timeout(Some(Duration::new(5, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_must_use)]` on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client.rs:82:5 [INFO] [stderr] | [INFO] [stderr] 82 | conn.set_read_timeout(Some(Duration::new(5, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client.rs:91:17 [INFO] [stderr] | [INFO] [stderr] 91 | conn.set_write_timeout(Some(Duration::new(1000, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client.rs:92:17 [INFO] [stderr] | [INFO] [stderr] 92 | conn.set_read_timeout(Some(Duration::new(1000, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client.rs:106:5 [INFO] [stderr] | [INFO] [stderr] 106 | conn.set_write_timeout(Some(Duration::new(3, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client.rs:107:5 [INFO] [stderr] | [INFO] [stderr] 107 | conn.set_read_timeout(Some(Duration::new(3, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client.rs:123:9 [INFO] [stderr] | [INFO] [stderr] 123 | conn.set_write_timeout(Some(Duration::new(1000, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client.rs:124:9 [INFO] [stderr] | [INFO] [stderr] 124 | conn.set_read_timeout(Some(Duration::new(1000, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/p2p.rs:100:5 [INFO] [stderr] | [INFO] [stderr] 100 | state.client.lock().unwrap().conn.set_write_timeout(Some(Duration::new(30, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/p2p.rs:101:5 [INFO] [stderr] | [INFO] [stderr] 101 | state.client.lock().unwrap().conn.set_read_timeout(Some(Duration::new(30, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/p2p.rs:127:5 [INFO] [stderr] | [INFO] [stderr] 127 | state.client.lock().unwrap().conn.set_write_timeout(Some(Duration::new(1000, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/p2p.rs:128:5 [INFO] [stderr] | [INFO] [stderr] 128 | state.client.lock().unwrap().conn.set_read_timeout(Some(Duration::new(1000, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/p2p.rs:199:21 [INFO] [stderr] | [INFO] [stderr] 199 | workQueue.lock().unwrap().0.send(pw); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/p2p.rs:240:13 [INFO] [stderr] | [INFO] [stderr] 240 | workQueue.lock().unwrap().0.send(work); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: 87 warnings emitted [INFO] [stderr] [INFO] [stderr] warning: unused import: `new_handshake` [INFO] [stderr] --> src/client.rs:2:24 [INFO] [stderr] | [INFO] [stderr] 2 | use crate::handshake::{new_handshake, read_handshake, serialize_handshake, Handshake}; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BigEndian`, `ReadBytesExt` [INFO] [stderr] --> src/client.rs:5:17 [INFO] [stderr] | [INFO] [stderr] 5 | use byteorder::{BigEndian, ReadBytesExt}; [INFO] [stderr] | ^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt` [INFO] [stderr] --> src/client.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Ipv4Addr`, `SocketAddrV4` [INFO] [stderr] --> src/client.rs:9:16 [INFO] [stderr] | [INFO] [stderr] 9 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream}; [INFO] [stderr] | ^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::sync::mpsc` [INFO] [stderr] --> src/client.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | use std::sync::mpsc; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::str::from_utf8` [INFO] [stderr] --> src/client.rs:168:9 [INFO] [stderr] | [INFO] [stderr] 168 | use std::str::from_utf8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Receiver`, `Sender`, `channel` [INFO] [stderr] --> src/client.rs:169:27 [INFO] [stderr] | [INFO] [stderr] 169 | use std::sync::mpsc::{channel, Receiver, Sender}; [INFO] [stderr] | ^^^^^^^ ^^^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt` [INFO] [stderr] --> src/handshake.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Digest`, `Sha1` [INFO] [stderr] --> src/main.rs:2:12 [INFO] [stderr] | [INFO] [stderr] 2 | use sha1::{Digest, Sha1}; [INFO] [stderr] | ^^^^^^ ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `new_handshake` [INFO] [stderr] --> src/client.rs:2:24 [INFO] [stderr] | [INFO] [stderr] 2 | use crate::handshake::{new_handshake, read_handshake, serialize_handshake, Handshake}; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BigEndian`, `ReadBytesExt` [INFO] [stderr] --> src/client.rs:5:17 [INFO] [stderr] | [INFO] [stderr] 5 | use byteorder::{BigEndian, ReadBytesExt}; [INFO] [stderr] | ^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt` [INFO] [stderr] --> src/client.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Ipv4Addr`, `SocketAddrV4` [INFO] [stderr] --> src/client.rs:9:16 [INFO] [stderr] | [INFO] [stderr] 9 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream}; [INFO] [stderr] | ^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::sync::mpsc` [INFO] [stderr] --> src/client.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | use std::sync::mpsc; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::str::from_utf8` [INFO] [stderr] --> src/client.rs:168:9 [INFO] [stderr] | [INFO] [stderr] 168 | use std::str::from_utf8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Receiver`, `Sender`, `channel` [INFO] [stderr] --> src/client.rs:169:27 [INFO] [stderr] | [INFO] [stderr] 169 | use std::sync::mpsc::{channel, Receiver, Sender}; [INFO] [stderr] | ^^^^^^^ ^^^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt` [INFO] [stderr] --> src/handshake.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BufRead`, `BufReader`, `Cursor` [INFO] [stderr] --> src/handshake.rs:4:15 [INFO] [stderr] | [INFO] [stderr] 4 | use std::io::{BufRead, BufReader, Cursor, Error, ErrorKind, Read, Result}; [INFO] [stderr] | ^^^^^^^ ^^^^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Ipv4Addr`, `SocketAddrV4`, `SocketAddr` [INFO] [stderr] --> src/handshake.rs:5:16 [INFO] [stderr] | [INFO] [stderr] 5 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream, TcpListener}; [INFO] [stderr] | ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::str` [INFO] [stderr] --> src/handshake.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use std::str; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BufMut`, `BytesMut` [INFO] [stderr] --> src/handshake.rs:10:13 [INFO] [stderr] | [INFO] [stderr] 10 | use bytes::{BytesMut, BufMut}; [INFO] [stderr] | ^^^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt` [INFO] [stderr] --> src/message.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BufRead`, `BufReader` [INFO] [stderr] --> src/message.rs:4:15 [INFO] [stderr] | [INFO] [stderr] 4 | use std::io::{BufRead, BufReader, Cursor, Error, ErrorKind, Read, Result}; [INFO] [stderr] | ^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Ipv4Addr`, `SocketAddrV4`, `SocketAddr` [INFO] [stderr] --> src/message.rs:6:16 [INFO] [stderr] | [INFO] [stderr] 6 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream, TcpListener}; [INFO] [stderr] | ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type `messageID` should have an upper camel case name [INFO] [stderr] --> src/message.rs:9:6 [INFO] [stderr] | [INFO] [stderr] 9 | type messageID = u8; [INFO] [stderr] | ^^^^^^^^^ help: convert the identifier to upper camel case: `MessageId` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_camel_case_types)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BigEndian`, `ReadBytesExt` [INFO] [stderr] --> src/p2p.rs:7:17 [INFO] [stderr] | [INFO] [stderr] 7 | use byteorder::{BigEndian, ReadBytesExt}; [INFO] [stderr] | ^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `sync_channel` [INFO] [stderr] --> src/p2p.rs:9:53 [INFO] [stderr] | [INFO] [stderr] 9 | use std::sync::mpsc::{Receiver, Sender, SyncSender, sync_channel}; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt` [INFO] [stderr] --> src/peers.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BufRead`, `BufReader`, `Read` [INFO] [stderr] --> src/peers.rs:3:15 [INFO] [stderr] | [INFO] [stderr] 3 | use std::io::{BufRead, BufReader, Cursor, Error, ErrorKind, Read, Result}; [INFO] [stderr] | ^^^^^^^ ^^^^^^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `SocketAddr` [INFO] [stderr] --> src/peers.rs:4:26 [INFO] [stderr] | [INFO] [stderr] 4 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4}; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::str` [INFO] [stderr] --> src/peers.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std::str; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::tracker::*` [INFO] [stderr] --> src/torrentfile.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use crate::tracker::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `bencodex::BNode` [INFO] [stderr] --> src/torrentfile.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use bencodex::BNode; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BigEndian`, `ReadBytesExt` [INFO] [stderr] --> src/torrentfile.rs:10:17 [INFO] [stderr] | [INFO] [stderr] 10 | use byteorder::{BigEndian, ReadBytesExt}; [INFO] [stderr] | ^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `rand::*` [INFO] [stderr] --> src/torrentfile.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | use rand::*; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt` [INFO] [stderr] --> src/torrentfile.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BufRead`, `BufReader`, `Cursor`, `str::Bytes` [INFO] [stderr] --> src/torrentfile.rs:14:11 [INFO] [stderr] | [INFO] [stderr] 14 | use std::{str::Bytes, io::{BufRead, BufReader, Cursor, Error, ErrorKind, Read, Write}}; [INFO] [stderr] | ^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io` [INFO] [stderr] --> src/torrentfile.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | use std::io; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::prelude::*` [INFO] [stderr] --> src/torrentfile.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | use std::io::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `AsciiSet`, `CONTROLS`, `percent_encode_byte` [INFO] [stderr] --> src/tracker.rs:8:24 [INFO] [stderr] | [INFO] [stderr] 8 | use percent_encoding::{percent_encode_byte, AsciiSet, CONTROLS}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `ClientBuilder`, `Client` [INFO] [stderr] --> src/tracker.rs:9:15 [INFO] [stderr] | [INFO] [stderr] 9 | use reqwest::{Client, ClientBuilder}; [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ErrorKind` [INFO] [stderr] --> src/tracker.rs:12:22 [INFO] [stderr] | [INFO] [stderr] 12 | use std::io::{Error, ErrorKind}; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `bencode::streaming::BencodeEvent` [INFO] [stderr] --> src/tracker.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | use bencode::streaming::BencodeEvent; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `bencode::streaming::StreamingParser` [INFO] [stderr] --> src/tracker.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | use bencode::streaming::StreamingParser; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Bencode`, `FromBencode`, `NumFromBencodeError`, `ToBencode`, `VecFromBencodeError` [INFO] [stderr] --> src/tracker.rs:16:15 [INFO] [stderr] | [INFO] [stderr] 16 | use bencode::{Bencode, ToBencode, FromBencode, NumFromBencodeError, VecFromBencodeError}; [INFO] [stderr] | ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `bencode::util::ByteString` [INFO] [stderr] --> src/tracker.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | use bencode::util::ByteString; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Decoder`, `encode` [INFO] [stderr] --> src/tracker.rs:18:15 [INFO] [stderr] | [INFO] [stderr] 18 | use bencode::{encode, Decoder}; [INFO] [stderr] | ^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Decodable`, `Encodable` [INFO] [stderr] --> src/tracker.rs:19:23 [INFO] [stderr] | [INFO] [stderr] 19 | use rustc_serialize::{Encodable, Decodable}; [INFO] [stderr] | ^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::BTreeMap` [INFO] [stderr] --> src/tracker.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | use std::collections::BTreeMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `SocketAddrV4`, `SocketAddr` [INFO] [stderr] --> src/tracker.rs:21:26 [INFO] [stderr] | [INFO] [stderr] 21 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4}; [INFO] [stderr] | ^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::net::TcpStream` [INFO] [stderr] --> src/tracker.rs:173:9 [INFO] [stderr] | [INFO] [stderr] 173 | use std::net::TcpStream; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Read`, `Write` [INFO] [stderr] --> src/tracker.rs:174:19 [INFO] [stderr] | [INFO] [stderr] 174 | use std::io::{Read, Write}; [INFO] [stderr] | ^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `server_address` [INFO] [stderr] --> src/tracker.rs:175:25 [INFO] [stderr] | [INFO] [stderr] 175 | use mockito::{mock, server_address, Matcher}; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::bitfield::Bitfield` [INFO] [stderr] --> src/main.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | use crate::bitfield::Bitfield; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `MESSAGE_BITFIELD`, `Message`, `read_message` [INFO] [stderr] --> src/main.rs:12:22 [INFO] [stderr] | [INFO] [stderr] 12 | use crate::message::{read_message, Message, MESSAGE_BITFIELD}; [INFO] [stderr] | ^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `ErrorKind`, `Error`, `Read`, `Write` [INFO] [stderr] --> src/main.rs:13:15 [INFO] [stderr] | [INFO] [stderr] 13 | use std::io::{Error, ErrorKind, Read, Write}; [INFO] [stderr] | ^^^^^ ^^^^^^^^^ ^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Shutdown`, `TcpListener`, `TcpStream` [INFO] [stderr] --> src/main.rs:14:16 [INFO] [stderr] | [INFO] [stderr] 14 | use std::net::{Shutdown, TcpListener, TcpStream}; [INFO] [stderr] | ^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::str::from_utf8` [INFO] [stderr] --> src/main.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | use std::str::from_utf8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::thread` [INFO] [stderr] --> src/main.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | use std::thread; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `hs` [INFO] [stderr] --> src/client.rs:143:16 [INFO] [stderr] | [INFO] [stderr] 143 | Ok(hs) => match receive_bitfield(&mut s) { [INFO] [stderr] | ^^ help: if this is intentional, prefix it with an underscore: `_hs` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `expected_handshake` [INFO] [stderr] --> src/client.rs:259:21 [INFO] [stderr] | [INFO] [stderr] 259 | let mut expected_handshake : Handshake = new_handshake_with_input(expected_infohash.to_vec(), expected_peer_id.to_vec()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_expected_handshake` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `mock_tcp_thread` [INFO] [stderr] --> src/handshake.rs:203:13 [INFO] [stderr] | [INFO] [stderr] 203 | let mock_tcp_thread = thread::spawn(move || { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mock_tcp_thread` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `length_test` [INFO] [stderr] --> src/message.rs:232:13 [INFO] [stderr] | [INFO] [stderr] 232 | let length_test = parse_piece(input_index, &mut input_buffer, input_message); [INFO] [stderr] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_length_test` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `output_buffer` [INFO] [stderr] --> src/message.rs:246:13 [INFO] [stderr] | [INFO] [stderr] 246 | let output_buffer = vec![0x00, 0x00, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x00]; [INFO] [stderr] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_buffer` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `s` [INFO] [stderr] --> src/message.rs:248:16 [INFO] [stderr] | [INFO] [stderr] 248 | Ok(s) => assert_eq!(1, 2), [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `e` [INFO] [stderr] --> src/message.rs:249:17 [INFO] [stderr] | [INFO] [stderr] 249 | Err(e) => assert_eq!(1, 1) [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `output_buffer` [INFO] [stderr] --> src/message.rs:263:13 [INFO] [stderr] | [INFO] [stderr] 263 | let output_buffer = vec![0x00, 0x00, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x00]; [INFO] [stderr] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_buffer` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `s` [INFO] [stderr] --> src/message.rs:265:16 [INFO] [stderr] | [INFO] [stderr] 265 | Ok(s) => assert_eq!(1, 2), [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `e` [INFO] [stderr] --> src/message.rs:266:17 [INFO] [stderr] | [INFO] [stderr] 266 | Err(e) => { [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `output_buffer` [INFO] [stderr] --> src/message.rs:285:13 [INFO] [stderr] | [INFO] [stderr] 285 | let output_buffer = vec![0x00, 0x00, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x00]; [INFO] [stderr] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_buffer` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `s` [INFO] [stderr] --> src/message.rs:287:16 [INFO] [stderr] | [INFO] [stderr] 287 | Ok(s) => assert_eq!(1, 2), [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `output_buffer` [INFO] [stderr] --> src/message.rs:306:13 [INFO] [stderr] | [INFO] [stderr] 306 | let output_buffer = vec![0x00, 0x00, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x00]; [INFO] [stderr] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_buffer` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `s` [INFO] [stderr] --> src/message.rs:308:16 [INFO] [stderr] | [INFO] [stderr] 308 | Ok(s) => assert_eq!(1, 2), [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `output_buffer` [INFO] [stderr] --> src/message.rs:328:13 [INFO] [stderr] | [INFO] [stderr] 328 | let output_buffer = vec![0x00, 0x00, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x00]; [INFO] [stderr] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_buffer` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `s` [INFO] [stderr] --> src/message.rs:330:16 [INFO] [stderr] | [INFO] [stderr] 330 | Ok(s) => assert_eq!(1, 2), [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `output_payload` [INFO] [stderr] --> src/message.rs:376:13 [INFO] [stderr] | [INFO] [stderr] 376 | let mut output_payload: Vec = vec![]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_payload` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `output` [INFO] [stderr] --> src/message.rs:377:13 [INFO] [stderr] | [INFO] [stderr] 377 | let output = Message::default(); [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_output` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `mock_tcp_thread` [INFO] [stderr] --> src/message.rs:378:13 [INFO] [stderr] | [INFO] [stderr] 378 | let mock_tcp_thread = thread::spawn(move || { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mock_tcp_thread` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `output_payload` [INFO] [stderr] --> src/message.rs:409:13 [INFO] [stderr] | [INFO] [stderr] 409 | let mut output_payload: Vec = vec![]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_payload` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `output` [INFO] [stderr] --> src/message.rs:410:13 [INFO] [stderr] | [INFO] [stderr] 410 | let output = Message::default(); [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_output` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `mock_tcp_thread` [INFO] [stderr] --> src/message.rs:411:13 [INFO] [stderr] | [INFO] [stderr] 411 | let mock_tcp_thread = thread::spawn(move || { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mock_tcp_thread` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `input` [INFO] [stderr] --> src/message.rs:442:13 [INFO] [stderr] | [INFO] [stderr] 442 | let mut input: Vec = vec![0, 0, 0, 0]; [INFO] [stderr] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_input` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `output_payload` [INFO] [stderr] --> src/message.rs:443:13 [INFO] [stderr] | [INFO] [stderr] 443 | let mut output_payload: Vec = vec![]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_payload` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `mock_tcp_thread` [INFO] [stderr] --> src/message.rs:445:13 [INFO] [stderr] | [INFO] [stderr] 445 | let mock_tcp_thread = thread::spawn(move || { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mock_tcp_thread` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `err` [INFO] [stderr] --> src/p2p.rs:171:21 [INFO] [stderr] | [INFO] [stderr] 171 | Err(err) => return, [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_err` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `err` [INFO] [stderr] --> src/p2p.rs:186:21 [INFO] [stderr] | [INFO] [stderr] 186 | Err(err) => { [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_err` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `e` [INFO] [stderr] --> src/p2p.rs:197:21 [INFO] [stderr] | [INFO] [stderr] 197 | Err(e) => { [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `end` [INFO] [stderr] --> src/p2p.rs:256:25 [INFO] [stderr] | [INFO] [stderr] 256 | let (begin, end) = self.calculate_bounds_for_piece(res.index); [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_end` [INFO] [stderr] [INFO] [stderr] warning: value assigned to `offset` is never read [INFO] [stderr] --> src/peers.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | let mut offset = 0; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_assignments)]` on by default [INFO] [stderr] = help: maybe it is overwritten before being read? [INFO] [stderr] [INFO] [stderr] warning: value assigned to `port_cursor` is never read [INFO] [stderr] --> src/peers.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | let mut port_cursor = Cursor::new(&port_vec); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: maybe it is overwritten before being read? [INFO] [stderr] [INFO] [stderr] warning: unused variable: `mock` [INFO] [stderr] --> src/tracker.rs:217:13 [INFO] [stderr] | [INFO] [stderr] 217 | let mock = mock("GET", Matcher::Any).with_body(response_bencode).create(); [INFO] [stderr] | ^^^^ help: if this is intentional, prefix it with an underscore: `_mock` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/client.rs:72:13 [INFO] [stderr] | [INFO] [stderr] 72 | let mut msg = format_have(index); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/client.rs:87:17 [INFO] [stderr] | [INFO] [stderr] 87 | let mut id_error = Error::new(ErrorKind::InvalidData, "id Error"); [INFO] [stderr] | ----^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/client.rs:108:9 [INFO] [stderr] | [INFO] [stderr] 108 | let mut reader_error = Error::new(ErrorKind::InvalidData, "unexpected infohash"); [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/client.rs:118:9 [INFO] [stderr] | [INFO] [stderr] 118 | let mut received = match read_handshake(conn){ [INFO] [stderr] | ----^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/client.rs:184:21 [INFO] [stderr] | [INFO] [stderr] 184 | let mut expected_bf: [u8; 5] = [1, 2, 3, 4, 5]; [INFO] [stderr] | ----^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/client.rs:203:25 [INFO] [stderr] | [INFO] [stderr] 203 | let mut msg: [u8; 10] = [0x00, 0x00, 0x00, 0x06, 5, 1, 2, 3, 4, 5]; [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/client.rs:259:21 [INFO] [stderr] | [INFO] [stderr] 259 | let mut expected_handshake : Handshake = new_handshake_with_input(expected_infohash.to_vec(), expected_peer_id.to_vec()); [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/client.rs:280:25 [INFO] [stderr] | [INFO] [stderr] 280 | ... let mut server_handshake : [u8; 68] = [19, 66, 105, 116, 84, 111, 114, 114, 101, 110, 116, 32, 112, 114, 111, 116, 111, 99, 111, 10... [INFO] [stderr] | ----^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/handshake.rs:53:9 [INFO] [stderr] | [INFO] [stderr] 53 | let mut reader_error = Error::new(ErrorKind::InvalidData, "unexpected infohash"); [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/handshake.rs:154:13 [INFO] [stderr] | [INFO] [stderr] 154 | let mut input_info_hash: [u8; 20] = [ [INFO] [stderr] | ----^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/handshake.rs:157:13 [INFO] [stderr] | [INFO] [stderr] 157 | let mut input_peer_id: [u8; 20] = [ [INFO] [stderr] | ----^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/handshake.rs:172:13 [INFO] [stderr] | [INFO] [stderr] 172 | let mut input_info_hash: [u8; 20] = [ [INFO] [stderr] | ----^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/handshake.rs:175:13 [INFO] [stderr] | [INFO] [stderr] 175 | let mut input_peer_id: [u8; 20] = [ [INFO] [stderr] | ----^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/handshake.rs:178:13 [INFO] [stderr] | [INFO] [stderr] 178 | let mut input_pstr = String::from("BitTorrent protocol, but cooler?"); [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/handshake.rs:195:13 [INFO] [stderr] | [INFO] [stderr] 195 | let mut output_info_hash: [u8; 20] = [134, 212, 200, 0, 36, 164, 105, 190, 76, 80, 188, 90, 16, 44, 247, 23, 128, 49, 0, 116]; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/handshake.rs:196:13 [INFO] [stderr] | [INFO] [stderr] 196 | let mut output_peer_id: [u8; 20] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]; [INFO] [stderr] | ----^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/handshake.rs:197:13 [INFO] [stderr] | [INFO] [stderr] 197 | let mut output_pstr = String::from("BitTorrent protocol"); [INFO] [stderr] | ----^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BufRead`, `BufReader`, `Cursor` [INFO] [stderr] --> src/handshake.rs:4:15 [INFO] [stderr] | [INFO] [stderr] 4 | use std::io::{BufRead, BufReader, Cursor, Error, ErrorKind, Read, Result}; [INFO] [stderr] | ^^^^^^^ ^^^^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Ipv4Addr`, `SocketAddrV4`, `SocketAddr` [INFO] [stderr] --> src/handshake.rs:5:16 [INFO] [stderr] | [INFO] [stderr] 5 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream, TcpListener}; [INFO] [stderr] | ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::str` [INFO] [stderr] --> src/handshake.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use std::str; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BufMut`, `BytesMut` [INFO] [stderr] --> src/handshake.rs:10:13 [INFO] [stderr] | [INFO] [stderr] 10 | use bytes::{BytesMut, BufMut}; [INFO] [stderr] | ^^^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt` [INFO] [stderr] --> src/message.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BufRead`, `BufReader` [INFO] [stderr] --> src/message.rs:4:15 [INFO] [stderr] | [INFO] [stderr] 4 | use std::io::{BufRead, BufReader, Cursor, Error, ErrorKind, Read, Result}; [INFO] [stderr] | ^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Ipv4Addr`, `SocketAddrV4`, `SocketAddr` [INFO] [stderr] --> src/message.rs:6:16 [INFO] [stderr] | [INFO] [stderr] 6 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream, TcpListener}; [INFO] [stderr] | ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type `messageID` should have an upper camel case name [INFO] [stderr] --> src/message.rs:9:6 [INFO] [stderr] | [INFO] [stderr] 9 | type messageID = u8; [INFO] [stderr] | ^^^^^^^^^ help: convert the identifier to upper camel case: `MessageId` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_camel_case_types)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BigEndian`, `ReadBytesExt` [INFO] [stderr] --> src/p2p.rs:7:17 [INFO] [stderr] | [INFO] [stderr] 7 | use byteorder::{BigEndian, ReadBytesExt}; [INFO] [stderr] | ^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `sync_channel` [INFO] [stderr] --> src/p2p.rs:9:53 [INFO] [stderr] | [INFO] [stderr] 9 | use std::sync::mpsc::{Receiver, Sender, SyncSender, sync_channel}; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt` [INFO] [stderr] --> src/peers.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BufRead`, `BufReader`, `Read` [INFO] [stderr] --> src/peers.rs:3:15 [INFO] [stderr] | [INFO] [stderr] 3 | use std::io::{BufRead, BufReader, Cursor, Error, ErrorKind, Read, Result}; [INFO] [stderr] | ^^^^^^^ ^^^^^^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `SocketAddr` [INFO] [stderr] --> src/peers.rs:4:26 [INFO] [stderr] | [INFO] [stderr] 4 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4}; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::str` [INFO] [stderr] --> src/peers.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std::str; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::tracker::*` [INFO] [stderr] --> src/torrentfile.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use crate::tracker::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `bencodex::BNode` [INFO] [stderr] --> src/torrentfile.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use bencodex::BNode; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BigEndian`, `ReadBytesExt` [INFO] [stderr] --> src/torrentfile.rs:10:17 [INFO] [stderr] | [INFO] [stderr] 10 | use byteorder::{BigEndian, ReadBytesExt}; [INFO] [stderr] | ^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `rand::*` [INFO] [stderr] --> src/torrentfile.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | use rand::*; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt` [INFO] [stderr] --> src/torrentfile.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BufRead`, `BufReader`, `Cursor`, `str::Bytes` [INFO] [stderr] --> src/torrentfile.rs:14:11 [INFO] [stderr] | [INFO] [stderr] 14 | use std::{str::Bytes, io::{BufRead, BufReader, Cursor, Error, ErrorKind, Read, Write}}; [INFO] [stderr] | ^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io` [INFO] [stderr] --> src/torrentfile.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | use std::io; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::prelude::*` [INFO] [stderr] --> src/torrentfile.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | use std::io::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `AsciiSet`, `CONTROLS`, `percent_encode_byte` [INFO] [stderr] --> src/tracker.rs:8:24 [INFO] [stderr] | [INFO] [stderr] 8 | use percent_encoding::{percent_encode_byte, AsciiSet, CONTROLS}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `ClientBuilder`, `Client` [INFO] [stderr] --> src/tracker.rs:9:15 [INFO] [stderr] | [INFO] [stderr] 9 | use reqwest::{Client, ClientBuilder}; [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ErrorKind` [INFO] [stderr] --> src/tracker.rs:12:22 [INFO] [stderr] | [INFO] [stderr] 12 | use std::io::{Error, ErrorKind}; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `bencode::streaming::BencodeEvent` [INFO] [stderr] --> src/tracker.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | use bencode::streaming::BencodeEvent; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `bencode::streaming::StreamingParser` [INFO] [stderr] --> src/tracker.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | use bencode::streaming::StreamingParser; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Bencode`, `FromBencode`, `NumFromBencodeError`, `ToBencode`, `VecFromBencodeError` [INFO] [stderr] --> src/tracker.rs:16:15 [INFO] [stderr] | [INFO] [stderr] 16 | use bencode::{Bencode, ToBencode, FromBencode, NumFromBencodeError, VecFromBencodeError}; [INFO] [stderr] | ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `bencode::util::ByteString` [INFO] [stderr] --> src/tracker.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | use bencode::util::ByteString; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Decoder`, `encode` [INFO] [stderr] --> src/tracker.rs:18:15 [INFO] [stderr] | [INFO] [stderr] 18 | use bencode::{encode, Decoder}; [INFO] [stderr] | ^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Decodable`, `Encodable` [INFO] [stderr] --> src/tracker.rs:19:23 [INFO] [stderr] | [INFO] [stderr] 19 | use rustc_serialize::{Encodable, Decodable}; [INFO] [stderr] | ^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::BTreeMap` [INFO] [stderr] --> src/tracker.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | use std::collections::BTreeMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `SocketAddrV4`, `SocketAddr` [INFO] [stderr] --> src/tracker.rs:21:26 [INFO] [stderr] | [INFO] [stderr] 21 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4}; [INFO] [stderr] | ^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::net::TcpStream` [INFO] [stderr] --> src/tracker.rs:173:9 [INFO] [stderr] | [INFO] [stderr] 173 | use std::net::TcpStream; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Read`, `Write` [INFO] [stderr] --> src/tracker.rs:174:19 [INFO] [stderr] | [INFO] [stderr] 174 | use std::io::{Read, Write}; [INFO] [stderr] | ^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `server_address` [INFO] [stderr] --> src/tracker.rs:175:25 [INFO] [stderr] | [INFO] [stderr] 175 | use mockito::{mock, server_address, Matcher}; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `hs` [INFO] [stderr] --> src/client.rs:143:16 [INFO] [stderr] | [INFO] [stderr] 143 | Ok(hs) => match receive_bitfield(&mut s) { [INFO] [stderr] | ^^ help: if this is intentional, prefix it with an underscore: `_hs` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `expected_handshake` [INFO] [stderr] --> src/client.rs:259:21 [INFO] [stderr] | [INFO] [stderr] 259 | let mut expected_handshake : Handshake = new_handshake_with_input(expected_infohash.to_vec(), expected_peer_id.to_vec()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_expected_handshake` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `mock_tcp_thread` [INFO] [stderr] --> src/handshake.rs:203:13 [INFO] [stderr] | [INFO] [stderr] 203 | let mock_tcp_thread = thread::spawn(move || { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mock_tcp_thread` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `length_test` [INFO] [stderr] --> src/message.rs:232:13 [INFO] [stderr] | [INFO] [stderr] 232 | let length_test = parse_piece(input_index, &mut input_buffer, input_message); [INFO] [stderr] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_length_test` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `output_buffer` [INFO] [stderr] --> src/message.rs:246:13 [INFO] [stderr] | [INFO] [stderr] 246 | let output_buffer = vec![0x00, 0x00, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x00]; [INFO] [stderr] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_buffer` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `s` [INFO] [stderr] --> src/message.rs:248:16 [INFO] [stderr] | [INFO] [stderr] 248 | Ok(s) => assert_eq!(1, 2), [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `e` [INFO] [stderr] --> src/message.rs:249:17 [INFO] [stderr] | [INFO] [stderr] 249 | Err(e) => assert_eq!(1, 1) [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `output_buffer` [INFO] [stderr] --> src/message.rs:263:13 [INFO] [stderr] | [INFO] [stderr] 263 | let output_buffer = vec![0x00, 0x00, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x00]; [INFO] [stderr] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_buffer` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `s` [INFO] [stderr] --> src/message.rs:265:16 [INFO] [stderr] | [INFO] [stderr] 265 | Ok(s) => assert_eq!(1, 2), [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `e` [INFO] [stderr] --> src/message.rs:266:17 [INFO] [stderr] | [INFO] [stderr] 266 | Err(e) => { [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `output_buffer` [INFO] [stderr] --> src/message.rs:285:13 [INFO] [stderr] | [INFO] [stderr] 285 | let output_buffer = vec![0x00, 0x00, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x00]; [INFO] [stderr] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_buffer` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `s` [INFO] [stderr] --> src/message.rs:287:16 [INFO] [stderr] | [INFO] [stderr] 287 | Ok(s) => assert_eq!(1, 2), [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `output_buffer` [INFO] [stderr] --> src/message.rs:306:13 [INFO] [stderr] | [INFO] [stderr] 306 | let output_buffer = vec![0x00, 0x00, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x00]; [INFO] [stderr] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_buffer` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `s` [INFO] [stderr] --> src/message.rs:308:16 [INFO] [stderr] | [INFO] [stderr] 308 | Ok(s) => assert_eq!(1, 2), [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `output_buffer` [INFO] [stderr] --> src/message.rs:328:13 [INFO] [stderr] | [INFO] [stderr] 328 | let output_buffer = vec![0x00, 0x00, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x00]; [INFO] [stderr] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_buffer` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `s` [INFO] [stderr] --> src/message.rs:330:16 [INFO] [stderr] | [INFO] [stderr] 330 | Ok(s) => assert_eq!(1, 2), [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `output_payload` [INFO] [stderr] --> src/message.rs:376:13 [INFO] [stderr] | [INFO] [stderr] 376 | let mut output_payload: Vec = vec![]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_payload` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `output` [INFO] [stderr] --> src/message.rs:377:13 [INFO] [stderr] | [INFO] [stderr] 377 | let output = Message::default(); [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_output` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `mock_tcp_thread` [INFO] [stderr] --> src/message.rs:378:13 [INFO] [stderr] | [INFO] [stderr] 378 | let mock_tcp_thread = thread::spawn(move || { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mock_tcp_thread` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `output_payload` [INFO] [stderr] --> src/message.rs:409:13 [INFO] [stderr] | [INFO] [stderr] 409 | let mut output_payload: Vec = vec![]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_payload` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `output` [INFO] [stderr] --> src/message.rs:410:13 [INFO] [stderr] | [INFO] [stderr] 410 | let output = Message::default(); [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_output` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `mock_tcp_thread` [INFO] [stderr] --> src/message.rs:411:13 [INFO] [stderr] | [INFO] [stderr] 411 | let mock_tcp_thread = thread::spawn(move || { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mock_tcp_thread` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `input` [INFO] [stderr] --> src/message.rs:442:13 [INFO] [stderr] | [INFO] [stderr] 442 | let mut input: Vec = vec![0, 0, 0, 0]; [INFO] [stderr] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_input` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `output_payload` [INFO] [stderr] --> src/message.rs:443:13 [INFO] [stderr] | [INFO] [stderr] 443 | let mut output_payload: Vec = vec![]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_payload` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `mock_tcp_thread` [INFO] [stderr] --> src/message.rs:445:13 [INFO] [stderr] | [INFO] [stderr] 445 | let mock_tcp_thread = thread::spawn(move || { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mock_tcp_thread` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `err` [INFO] [stderr] --> src/p2p.rs:171:21 [INFO] [stderr] | [INFO] [stderr] 171 | Err(err) => return, [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_err` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `err` [INFO] [stderr] --> src/p2p.rs:186:21 [INFO] [stderr] | [INFO] [stderr] 186 | Err(err) => { [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_err` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `e` [INFO] [stderr] --> src/p2p.rs:197:21 [INFO] [stderr] | [INFO] [stderr] 197 | Err(e) => { [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `end` [INFO] [stderr] --> src/p2p.rs:256:25 [INFO] [stderr] | [INFO] [stderr] 256 | let (begin, end) = self.calculate_bounds_for_piece(res.index); [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_end` [INFO] [stderr] [INFO] [stderr] warning: value assigned to `offset` is never read [INFO] [stderr] --> src/peers.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | let mut offset = 0; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_assignments)]` on by default [INFO] [stderr] = help: maybe it is overwritten before being read? [INFO] [stderr] [INFO] [stderr] warning: value assigned to `port_cursor` is never read [INFO] [stderr] --> src/peers.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | let mut port_cursor = Cursor::new(&port_vec); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: maybe it is overwritten before being read? [INFO] [stderr] [INFO] [stderr] warning: unused variable: `mock` [INFO] [stderr] --> src/tracker.rs:217:13 [INFO] [stderr] | [INFO] [stderr] 217 | let mock = mock("GET", Matcher::Any).with_body(response_bencode).create(); [INFO] [stderr] | ^^^^ help: if this is intentional, prefix it with an underscore: `_mock` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/client.rs:72:13 [INFO] [stderr] | [INFO] [stderr] 72 | let mut msg = format_have(index); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/client.rs:87:17 [INFO] [stderr] | [INFO] [stderr] 87 | let mut id_error = Error::new(ErrorKind::InvalidData, "id Error"); [INFO] [stderr] | ----^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/client.rs:108:9 [INFO] [stderr] | [INFO] [stderr] 108 | let mut reader_error = Error::new(ErrorKind::InvalidData, "unexpected infohash"); [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/client.rs:118:9 [INFO] [stderr] | [INFO] [stderr] 118 | let mut received = match read_handshake(conn){ [INFO] [stderr] | ----^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/client.rs:184:21 [INFO] [stderr] | [INFO] [stderr] 184 | let mut expected_bf: [u8; 5] = [1, 2, 3, 4, 5]; [INFO] [stderr] | ----^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/client.rs:203:25 [INFO] [stderr] | [INFO] [stderr] 203 | let mut msg: [u8; 10] = [0x00, 0x00, 0x00, 0x06, 5, 1, 2, 3, 4, 5]; [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/client.rs:259:21 [INFO] [stderr] | [INFO] [stderr] 259 | let mut expected_handshake : Handshake = new_handshake_with_input(expected_infohash.to_vec(), expected_peer_id.to_vec()); [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/client.rs:280:25 [INFO] [stderr] | [INFO] [stderr] 280 | ... let mut server_handshake : [u8; 68] = [19, 66, 105, 116, 84, 111, 114, 114, 101, 110, 116, 32, 112, 114, 111, 116, 111, 99, 111, 10... [INFO] [stderr] | ----^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/handshake.rs:53:9 [INFO] [stderr] | [INFO] [stderr] 53 | let mut reader_error = Error::new(ErrorKind::InvalidData, "unexpected infohash"); [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/handshake.rs:154:13 [INFO] [stderr] | [INFO] [stderr] 154 | let mut input_info_hash: [u8; 20] = [ [INFO] [stderr] | ----^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/handshake.rs:157:13 [INFO] [stderr] | [INFO] [stderr] 157 | let mut input_peer_id: [u8; 20] = [ [INFO] [stderr] | ----^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/handshake.rs:172:13 [INFO] [stderr] | [INFO] [stderr] 172 | let mut input_info_hash: [u8; 20] = [ [INFO] [stderr] | ----^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/handshake.rs:175:13 [INFO] [stderr] | [INFO] [stderr] 175 | let mut input_peer_id: [u8; 20] = [ [INFO] [stderr] | ----^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/handshake.rs:178:13 [INFO] [stderr] | [INFO] [stderr] 178 | let mut input_pstr = String::from("BitTorrent protocol, but cooler?"); [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/handshake.rs:195:13 [INFO] [stderr] | [INFO] [stderr] 195 | let mut output_info_hash: [u8; 20] = [134, 212, 200, 0, 36, 164, 105, 190, 76, 80, 188, 90, 16, 44, 247, 23, 128, 49, 0, 116]; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/handshake.rs:196:13 [INFO] [stderr] | [INFO] [stderr] 196 | let mut output_peer_id: [u8; 20] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]; [INFO] [stderr] | ----^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/handshake.rs:197:13 [INFO] [stderr] | [INFO] [stderr] 197 | let mut output_pstr = String::from("BitTorrent protocol"); [INFO] [stderr] | ----^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/message.rs:376:13 [INFO] [stderr] | [INFO] [stderr] 376 | let mut output_payload: Vec = vec![]; [INFO] [stderr] | ----^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/message.rs:409:13 [INFO] [stderr] | [INFO] [stderr] 409 | let mut output_payload: Vec = vec![]; [INFO] [stderr] | ----^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/message.rs:442:13 [INFO] [stderr] | [INFO] [stderr] 442 | let mut input: Vec = vec![0, 0, 0, 0]; [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/message.rs:443:13 [INFO] [stderr] | [INFO] [stderr] 443 | let mut output_payload: Vec = vec![]; [INFO] [stderr] | ----^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/p2p.rs:133:9 [INFO] [stderr] | [INFO] [stderr] 133 | let mut reader_error = Error::new(ErrorKind::InvalidData, "unexpected infohash"); [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/p2p.rs:174:17 [INFO] [stderr] | [INFO] [stderr] 174 | let mut gaurdthree = c.lock().unwrap();//.bitfield; [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/p2p.rs:245:17 [INFO] [stderr] | [INFO] [stderr] 245 | let mut workQueueCopy = Arc::clone(&workQueue); [INFO] [stderr] | ----^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/p2p.rs:246:17 [INFO] [stderr] | [INFO] [stderr] 246 | let mut resultsCopy = results.0.clone(); [INFO] [stderr] | ----^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/peers.rs:22:9 [INFO] [stderr] | [INFO] [stderr] 22 | let mut num_peers = peers_bin.len() / peer_size; [INFO] [stderr] | ----^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/peers.rs:23:9 [INFO] [stderr] | [INFO] [stderr] 23 | let mut peer_error = Error::new(ErrorKind::InvalidData, "Malformed Peers"); [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/peers.rs:41:17 [INFO] [stderr] | [INFO] [stderr] 41 | let mut port_vc = &port_vec[0..2].to_vec(); [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/torrentfile.rs:89:13 [INFO] [stderr] | [INFO] [stderr] 89 | let mut buffer : Vec = ser::to_bytes::(self).unwrap(); [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/torrentfile.rs:92:13 [INFO] [stderr] | [INFO] [stderr] 92 | let mut result : Vec = hex::decode(h.result_str()).unwrap(); [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: field is never read: `peer` [INFO] [stderr] --> src/client.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | peer: Peer, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: field is never read: `info_hash` [INFO] [stderr] --> src/client.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | info_hash: Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never read: `peer_id` [INFO] [stderr] --> src/client.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | peer_id: Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function is never used: `send_not_interested` [INFO] [stderr] --> src/client.rs:53:19 [INFO] [stderr] | [INFO] [stderr] 53 | pub(crate) fn send_not_interested(&mut self) -> Result<(), Error> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client.rs:81:5 [INFO] [stderr] | [INFO] [stderr] 81 | conn.set_write_timeout(Some(Duration::new(5, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_must_use)]` on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client.rs:82:5 [INFO] [stderr] | [INFO] [stderr] 82 | conn.set_read_timeout(Some(Duration::new(5, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client.rs:91:17 [INFO] [stderr] | [INFO] [stderr] 91 | conn.set_write_timeout(Some(Duration::new(1000, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client.rs:92:17 [INFO] [stderr] | [INFO] [stderr] 92 | conn.set_read_timeout(Some(Duration::new(1000, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client.rs:106:5 [INFO] [stderr] | [INFO] [stderr] 106 | conn.set_write_timeout(Some(Duration::new(3, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/message.rs:376:13 [INFO] [stderr] | [INFO] [stderr] 376 | let mut output_payload: Vec = vec![]; [INFO] [stderr] | ----^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/message.rs:409:13 [INFO] [stderr] | [INFO] [stderr] 409 | let mut output_payload: Vec = vec![]; [INFO] [stderr] | ----^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/message.rs:442:13 [INFO] [stderr] | [INFO] [stderr] 442 | let mut input: Vec = vec![0, 0, 0, 0]; [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/message.rs:443:13 [INFO] [stderr] | [INFO] [stderr] 443 | let mut output_payload: Vec = vec![]; [INFO] [stderr] | ----^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/p2p.rs:133:9 [INFO] [stderr] | [INFO] [stderr] 133 | let mut reader_error = Error::new(ErrorKind::InvalidData, "unexpected infohash"); [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/p2p.rs:174:17 [INFO] [stderr] | [INFO] [stderr] 174 | let mut gaurdthree = c.lock().unwrap();//.bitfield; [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/p2p.rs:245:17 [INFO] [stderr] | [INFO] [stderr] 245 | let mut workQueueCopy = Arc::clone(&workQueue); [INFO] [stderr] | ----^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/p2p.rs:246:17 [INFO] [stderr] | [INFO] [stderr] 246 | let mut resultsCopy = results.0.clone(); [INFO] [stderr] | ----^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/peers.rs:22:9 [INFO] [stderr] | [INFO] [stderr] 22 | let mut num_peers = peers_bin.len() / peer_size; [INFO] [stderr] | ----^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/peers.rs:23:9 [INFO] [stderr] | [INFO] [stderr] 23 | let mut peer_error = Error::new(ErrorKind::InvalidData, "Malformed Peers"); [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/peers.rs:41:17 [INFO] [stderr] | [INFO] [stderr] 41 | let mut port_vc = &port_vec[0..2].to_vec(); [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/torrentfile.rs:89:13 [INFO] [stderr] | [INFO] [stderr] 89 | let mut buffer : Vec = ser::to_bytes::(self).unwrap(); [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/torrentfile.rs:92:13 [INFO] [stderr] | [INFO] [stderr] 92 | let mut result : Vec = hex::decode(h.result_str()).unwrap(); [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: field is never read: `peer` [INFO] [stderr] --> src/client.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | peer: Peer, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: field is never read: `info_hash` [INFO] [stderr] --> src/client.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | info_hash: Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never read: `peer_id` [INFO] [stderr] --> src/client.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | peer_id: Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function is never used: `send_not_interested` [INFO] [stderr] --> src/client.rs:53:19 [INFO] [stderr] | [INFO] [stderr] 53 | pub(crate) fn send_not_interested(&mut self) -> Result<(), Error> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `new_handshake` [INFO] [stderr] --> src/handshake.rs:18:8 [INFO] [stderr] | [INFO] [stderr] 18 | pub fn new_handshake() -> Handshake { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `binary_percent_encoder` [INFO] [stderr] --> src/tracker.rs:84:8 [INFO] [stderr] | [INFO] [stderr] 84 | pub fn binary_percent_encoder(input: Vec) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client.rs:81:5 [INFO] [stderr] | [INFO] [stderr] 81 | conn.set_write_timeout(Some(Duration::new(5, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_must_use)]` on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client.rs:82:5 [INFO] [stderr] | [INFO] [stderr] 82 | conn.set_read_timeout(Some(Duration::new(5, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client.rs:91:17 [INFO] [stderr] | [INFO] [stderr] 91 | conn.set_write_timeout(Some(Duration::new(1000, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client.rs:92:17 [INFO] [stderr] | [INFO] [stderr] 92 | conn.set_read_timeout(Some(Duration::new(1000, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client.rs:106:5 [INFO] [stderr] | [INFO] [stderr] 106 | conn.set_write_timeout(Some(Duration::new(3, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client.rs:107:5 [INFO] [stderr] | [INFO] [stderr] 107 | conn.set_read_timeout(Some(Duration::new(3, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client.rs:123:9 [INFO] [stderr] | [INFO] [stderr] 123 | conn.set_write_timeout(Some(Duration::new(1000, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client.rs:124:9 [INFO] [stderr] | [INFO] [stderr] 124 | conn.set_read_timeout(Some(Duration::new(1000, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client.rs:232:21 [INFO] [stderr] | [INFO] [stderr] 232 | dummy_client_thread.join(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client.rs:311:21 [INFO] [stderr] | [INFO] [stderr] 311 | dummy_client_thread.join(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/handshake.rs:226:21 [INFO] [stderr] | [INFO] [stderr] 226 | stream.write(&input); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: structure field `ID` should have a snake case name [INFO] [stderr] --> src/message.rs:23:16 [INFO] [stderr] | [INFO] [stderr] 23 | pub(crate) ID: messageID, [INFO] [stderr] | ^^ help: convert the identifier to snake case: `id` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_snake_case)]` on by default [INFO] [stderr] [INFO] [stderr] warning: structure field `Payload` should have a snake case name [INFO] [stderr] --> src/message.rs:24:16 [INFO] [stderr] | [INFO] [stderr] 24 | pub(crate) Payload: Vec, [INFO] [stderr] | ^^^^^^^ help: convert the identifier to snake case: `payload` [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/message.rs:396:21 [INFO] [stderr] | [INFO] [stderr] 396 | stream.write(&input); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/message.rs:430:21 [INFO] [stderr] | [INFO] [stderr] 430 | stream.write(&input); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/message.rs:464:21 [INFO] [stderr] | [INFO] [stderr] 464 | stream.write(&input); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/p2p.rs:100:5 [INFO] [stderr] | [INFO] [stderr] 100 | state.client.lock().unwrap().conn.set_write_timeout(Some(Duration::new(30, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/p2p.rs:101:5 [INFO] [stderr] | [INFO] [stderr] 101 | state.client.lock().unwrap().conn.set_read_timeout(Some(Duration::new(30, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/p2p.rs:127:5 [INFO] [stderr] | [INFO] [stderr] 127 | state.client.lock().unwrap().conn.set_write_timeout(Some(Duration::new(1000, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/p2p.rs:128:5 [INFO] [stderr] | [INFO] [stderr] 128 | state.client.lock().unwrap().conn.set_read_timeout(Some(Duration::new(1000, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/p2p.rs:199:21 [INFO] [stderr] | [INFO] [stderr] 199 | workQueue.lock().unwrap().0.send(pw); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/p2p.rs:240:13 [INFO] [stderr] | [INFO] [stderr] 240 | workQueue.lock().unwrap().0.send(work); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: variable `trackerResp` should have a snake case name [INFO] [stderr] --> src/tracker.rs:162:13 [INFO] [stderr] | [INFO] [stderr] 162 | let trackerResp : BencodeTrackerResp = de::from_bytes::(&resp).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^ help: convert the identifier to snake case: `tracker_resp` [INFO] [stderr] [INFO] [stderr] warning: 142 warnings emitted [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client.rs:107:5 [INFO] [stderr] | [INFO] [stderr] 107 | conn.set_read_timeout(Some(Duration::new(3, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client.rs:123:9 [INFO] [stderr] | [INFO] [stderr] 123 | conn.set_write_timeout(Some(Duration::new(1000, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client.rs:124:9 [INFO] [stderr] | [INFO] [stderr] 124 | conn.set_read_timeout(Some(Duration::new(1000, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client.rs:232:21 [INFO] [stderr] | [INFO] [stderr] 232 | dummy_client_thread.join(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client.rs:311:21 [INFO] [stderr] | [INFO] [stderr] 311 | dummy_client_thread.join(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/handshake.rs:226:21 [INFO] [stderr] | [INFO] [stderr] 226 | stream.write(&input); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/message.rs:396:21 [INFO] [stderr] | [INFO] [stderr] 396 | stream.write(&input); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/message.rs:430:21 [INFO] [stderr] | [INFO] [stderr] 430 | stream.write(&input); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/message.rs:464:21 [INFO] [stderr] | [INFO] [stderr] 464 | stream.write(&input); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/p2p.rs:100:5 [INFO] [stderr] | [INFO] [stderr] 100 | state.client.lock().unwrap().conn.set_write_timeout(Some(Duration::new(30, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/p2p.rs:101:5 [INFO] [stderr] | [INFO] [stderr] 101 | state.client.lock().unwrap().conn.set_read_timeout(Some(Duration::new(30, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/p2p.rs:127:5 [INFO] [stderr] | [INFO] [stderr] 127 | state.client.lock().unwrap().conn.set_write_timeout(Some(Duration::new(1000, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/p2p.rs:128:5 [INFO] [stderr] | [INFO] [stderr] 128 | state.client.lock().unwrap().conn.set_read_timeout(Some(Duration::new(1000, 0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/p2p.rs:199:21 [INFO] [stderr] | [INFO] [stderr] 199 | workQueue.lock().unwrap().0.send(pw); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/p2p.rs:240:13 [INFO] [stderr] | [INFO] [stderr] 240 | workQueue.lock().unwrap().0.send(work); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: 130 warnings emitted [INFO] [stderr] [INFO] [stderr] Finished test [unoptimized + debuginfo] target(s) in 0.39s [INFO] [stdout] [INFO] [stderr] Running /opt/rustwide/target/debug/deps/rust_torrent-16d416d5e5528898 [INFO] [stdout] running 42 tests [INFO] [stdout] test bitfield::tests::test_set_piece ... ok [INFO] [stdout] test handshake::tests::test_new_info_hash ... ok [INFO] [stdout] test handshake::tests::test_serialize_two ... ok [INFO] [stdout] test handshake::tests::test_new_peer_id ... ok [INFO] [stdout] test client::tests::test_successful_receive_bitfield ... ok [INFO] [stdout] test message::tests::test_parse_piece_payload_too_long ... ok [INFO] [stdout] test message::tests::test_parse_piece_offset_too_high ... ok [INFO] [stdout] test handshake::tests::test_read_default_pstr ... ok [INFO] [stdout] test message::tests::test_format_have ... ok [INFO] [stdout] test message::tests::test_parse_piece_too_short ... ok [INFO] [stdout] test bitfield::tests::test_has_piece ... ok [INFO] [stdout] test message::tests::test_format_request ... ok [INFO] [stdout] test message::tests::test_parse_have ... ok [INFO] [stdout] test handshake::tests::test_new_pstr ... ok [INFO] [stdout] test message::tests::test_string_have ... ok [INFO] [stdout] test message::tests::test_parse_piece_wrong_type ... ok [INFO] [stdout] test message::tests::test_string_interested ... ok [INFO] [stdout] test message::tests::test_string_piece ... ok [INFO] [stdout] test message::tests::test_parse_piece_normal ... ok [INFO] [stdout] test handshake::tests::test_serialize_one ... ok [INFO] [stdout] test message::tests::test_parse_piece_wrong_index ... ok [INFO] [stdout] test message::tests::test_serialize_message ... ok [INFO] [stdout] test message::tests::test_serialize_empty ... ok [INFO] [stdout] test message::tests::test_string_bitfield ... ok [INFO] [stdout] test message::tests::test_string_cancel ... ok [INFO] [stdout] test message::tests::test_string_choke ... ok [INFO] [stdout] test message::tests::test_string_not_interested ... ok [INFO] [stdout] test torrentfile::tests::test_to_torrent_file_correct_conversion ... ok [INFO] [stdout] test message::tests::test_string_unchoke ... ok [INFO] [stdout] test message::tests::test_string_request ... ok [INFO] [stdout] test peers::tests::test_get_socket_address ... ok [INFO] [stdout] test peers::tests::test_unmarshal_malformed_peer ... ok [INFO] [stdout] test torrentfile::tests::test_to_torrent_file_insufficient_bytes ... ok [INFO] [stdout] test peers::tests::test_unmarshal_correctly_parse_peers ... ok [INFO] [stdout] test message::tests::test_string_unknown ... ok [INFO] [stdout] test tracker::tests::test_build_tracker_url ... ok [INFO] [stdout] test client::tests::test_successful_handshake ... ok [INFO] [stdout] test tracker::tests::test_request_peer ... ok [INFO] [stdout] test message::tests::test_read_message_length_too_short_for_length ... FAILED [INFO] [stdout] test message::tests::test_read_message_too_short ... FAILED [INFO] [stdout] test message::tests::test_read_message_keep_alive ... FAILED [INFO] [stdout] test torrentfile::tests::test_open ... FAILED [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] [INFO] [stdout] ---- message::tests::test_read_message_length_too_short_for_length stdout ---- [INFO] [stdout] thread 'message::tests::test_read_message_length_too_short_for_length' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 111, kind: ConnectionRefused, message: "Connection refused" }', src/message.rs:415:63 [INFO] [stdout] stack backtrace: [INFO] [stdout] 0: 0x55649dda8245 - backtrace::backtrace::libunwind::trace::hea89dfbbfe67f40d [INFO] [stdout] at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.46/src/backtrace/libunwind.rs:86 [INFO] [stdout] 1: 0x55649dda8245 - backtrace::backtrace::trace_unsynchronized::h0513dd713d7644d4 [INFO] [stdout] at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.46/src/backtrace/mod.rs:66 [INFO] [stdout] 2: 0x55649dda8245 - std::sys_common::backtrace::_print_fmt::h040abae64e4a24a9 [INFO] [stdout] at src/libstd/sys_common/backtrace.rs:78 [INFO] [stdout] 3: 0x55649dda8245 - ::fmt::hb4bdb37c3c335733 [INFO] [stdout] at src/libstd/sys_common/backtrace.rs:59 [INFO] [stdout] 4: 0x55649ddd2a0c - core::fmt::write::h540ac4a6a1232abc [INFO] [stdout] at src/libcore/fmt/mod.rs:1076 [INFO] [stdout] 5: 0x55649d6bbdf5 - std::io::Write::write_fmt::h4be0daababb55bba [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/io/mod.rs:1539 [INFO] [stdout] 6: 0x55649dd9e761 - std::io::impls::>::write_fmt::h83c1e1aa73f374f5 [INFO] [stdout] at src/libstd/io/impls.rs:176 [INFO] [stdout] 7: 0x55649ddaa9b0 - std::sys_common::backtrace::_print::hb55cc635eaf1882e [INFO] [stdout] at src/libstd/sys_common/backtrace.rs:62 [INFO] [stdout] 8: 0x55649ddaa9b0 - std::sys_common::backtrace::print::h2b2218fa55714084 [INFO] [stdout] at src/libstd/sys_common/backtrace.rs:49 [INFO] [stdout] 9: 0x55649ddaa9b0 - std::panicking::default_hook::{{closure}}::h578517c025765cf3 [INFO] [stdout] at src/libstd/panicking.rs:198 [INFO] [stdout] 10: 0x55649ddaa6aa - std::panicking::default_hook::h4cafc94c2fc640fb [INFO] [stdout] at src/libstd/panicking.rs:214 [INFO] [stdout] 11: 0x55649ddaaff3 - std::panicking::rust_panic_with_hook::h3eeb5001beeca5c3 [INFO] [stdout] at src/libstd/panicking.rs:526 [INFO] [stdout] 12: 0x55649ddaabeb - rust_begin_unwind [INFO] [stdout] at src/libstd/panicking.rs:437 [INFO] [stdout] 13: 0x55649ddd10f1 - core::panicking::panic_fmt::h78830ea6a34e7206 [INFO] [stdout] at src/libcore/panicking.rs:85 [INFO] [stdout] 14: 0x55649ddd0f13 - core::option::expect_none_failed::hf79bbb5ca7e09e08 [INFO] [stdout] at src/libcore/option.rs:1269 [INFO] [stdout] 15: 0x55649d6b7d9b - core::result::Result::unwrap::h79579edecfce7b24 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libcore/result.rs:1005 [INFO] [stdout] 16: 0x55649d678856 - rust_torrent::message::tests::test_read_message_length_too_short_for_length::h799609305e0bc479 [INFO] [stdout] at src/message.rs:415 [INFO] [stdout] 17: 0x55649d6787ba - rust_torrent::message::tests::test_read_message_length_too_short_for_length::{{closure}}::h84c9df0ef2e60f23 [INFO] [stdout] at src/message.rs:407 [INFO] [stdout] 18: 0x55649d6b355e - core::ops::function::FnOnce::call_once::hcde8497b1de0766b [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libcore/ops/function.rs:233 [INFO] [stdout] 19: 0x55649d6e336c - as core::ops::function::FnOnce>::call_once::h8340ba6798e0c4ff [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/liballoc/boxed.rs:1081 [INFO] [stdout] 20: 0x55649d6e336c - as core::ops::function::FnOnce<()>>::call_once::h5590e98676605094 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/panic.rs:318 [INFO] [stdout] 21: 0x55649d6e336c - std::panicking::try::do_call::hd8680a2dbb0ed3c4 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/panicking.rs:348 [INFO] [stdout] 22: 0x55649d6e336c - std::panicking::try::h46b4de2d705e7a8d [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/panicking.rs:325 [INFO] [stdout] 23: 0x55649d6e336c - std::panic::catch_unwind::h059b3f06991e0a9c [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/panic.rs:394 [INFO] [stdout] 24: 0x55649d6e336c - test::run_test_in_process::h5ae08a65430494a4 [INFO] [stdout] at src/libtest/lib.rs:541 [INFO] [stdout] 25: 0x55649d6e336c - test::run_test::run_test_inner::{{closure}}::h4b36073838376ae8 [INFO] [stdout] at src/libtest/lib.rs:450 [INFO] [stdout] 26: 0x55649d6bb2e6 - std::sys_common::backtrace::__rust_begin_short_backtrace::h0169d0be588b8bf0 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/sys_common/backtrace.rs:130 [INFO] [stdout] 27: 0x55649d6c02d5 - std::thread::Builder::spawn_unchecked::{{closure}}::{{closure}}::h71bfc37e887d3973 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/thread/mod.rs:475 [INFO] [stdout] 28: 0x55649d6c02d5 - as core::ops::function::FnOnce<()>>::call_once::h36c65072907dc180 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/panic.rs:318 [INFO] [stdout] 29: 0x55649d6c02d5 - std::panicking::try::do_call::h4e0f426e17cd216c [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/panicking.rs:348 [INFO] [stdout] 30: 0x55649d6c02d5 - std::panicking::try::hd05e4ef6b4303d29 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/panicking.rs:325 [INFO] [stdout] 31: 0x55649d6c02d5 - std::panic::catch_unwind::h19a1127ec729c5dd [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/panic.rs:394 [INFO] [stdout] 32: 0x55649d6c02d5 - std::thread::Builder::spawn_unchecked::{{closure}}::h011300735f06b1e2 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/thread/mod.rs:474 [INFO] [stdout] 33: 0x55649d6c02d5 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h1e3c55f31f1d122e [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libcore/ops/function.rs:233 [INFO] [stdout] 34: 0x55649ddb233a - as core::ops::function::FnOnce>::call_once::hc0e15d78a519721e [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/liballoc/boxed.rs:1081 [INFO] [stdout] 35: 0x55649ddb233a - as core::ops::function::FnOnce>::call_once::h211da8fffb09f192 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/liballoc/boxed.rs:1081 [INFO] [stdout] 36: 0x55649ddb233a - std::sys::unix::thread::Thread::new::thread_start::h29594ddebf23e421 [INFO] [stdout] at src/libstd/sys/unix/thread.rs:87 [INFO] [stdout] 37: 0x7f8bdaa3a609 - start_thread [INFO] [stdout] 38: 0x7f8bda944103 - __clone [INFO] [stdout] 39: 0x0 - [INFO] [stdout] [INFO] [stdout] ---- message::tests::test_read_message_too_short stdout ---- [INFO] [stdout] thread 'message::tests::test_read_message_too_short' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 111, kind: ConnectionRefused, message: "Connection refused" }', src/message.rs:382:63 [INFO] [stdout] stack backtrace: [INFO] [stdout] 0: 0x55649dda8245 - backtrace::backtrace::libunwind::trace::hea89dfbbfe67f40d [INFO] [stdout] at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.46/src/backtrace/libunwind.rs:86 [INFO] [stdout] 1: 0x55649dda8245 - backtrace::backtrace::trace_unsynchronized::h0513dd713d7644d4 [INFO] [stdout] at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.46/src/backtrace/mod.rs:66 [INFO] [stdout] 2: 0x55649dda8245 - std::sys_common::backtrace::_print_fmt::h040abae64e4a24a9 [INFO] [stdout] at src/libstd/sys_common/backtrace.rs:78 [INFO] [stdout] 3: 0x55649dda8245 - ::fmt::hb4bdb37c3c335733 [INFO] [stdout] at src/libstd/sys_common/backtrace.rs:59 [INFO] [stdout] 4: 0x55649ddd2a0c - core::fmt::write::h540ac4a6a1232abc [INFO] [stdout] at src/libcore/fmt/mod.rs:1076 [INFO] [stdout] 5: 0x55649d6bbdf5 - std::io::Write::write_fmt::h4be0daababb55bba [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/io/mod.rs:1539 [INFO] [stdout] 6: 0x55649dd9e761 - std::io::impls::>::write_fmt::h83c1e1aa73f374f5 [INFO] [stdout] at src/libstd/io/impls.rs:176 [INFO] [stdout] 7: 0x55649ddaa9b0 - std::sys_common::backtrace::_print::hb55cc635eaf1882e [INFO] [stdout] at src/libstd/sys_common/backtrace.rs:62 [INFO] [stdout] 8: 0x55649ddaa9b0 - std::sys_common::backtrace::print::h2b2218fa55714084 [INFO] [stdout] at src/libstd/sys_common/backtrace.rs:49 [INFO] [stdout] 9: 0x55649ddaa9b0 - std::panicking::default_hook::{{closure}}::h578517c025765cf3 [INFO] [stdout] at src/libstd/panicking.rs:198 [INFO] [stdout] 10: 0x55649ddaa6aa - std::panicking::default_hook::h4cafc94c2fc640fb [INFO] [stdout] at src/libstd/panicking.rs:214 [INFO] [stdout] 11: 0x55649ddaaff3 - std::panicking::rust_panic_with_hook::h3eeb5001beeca5c3 [INFO] [stdout] at src/libstd/panicking.rs:526 [INFO] [stdout] 12: 0x55649ddaabeb - rust_begin_unwind [INFO] [stdout] at src/libstd/panicking.rs:437 [INFO] [stdout] 13: 0x55649ddd10f1 - core::panicking::panic_fmt::h78830ea6a34e7206 [INFO] [stdout] at src/libcore/panicking.rs:85 [INFO] [stdout] 14: 0x55649ddd0f13 - core::option::expect_none_failed::hf79bbb5ca7e09e08 [INFO] [stdout] at src/libcore/option.rs:1269 [INFO] [stdout] 15: 0x55649d6b7d9b - core::result::Result::unwrap::h79579edecfce7b24 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libcore/result.rs:1005 [INFO] [stdout] 16: 0x55649d6783e6 - rust_torrent::message::tests::test_read_message_too_short::h064877c6f97757da [INFO] [stdout] at src/message.rs:382 [INFO] [stdout] 17: 0x55649d67834a - rust_torrent::message::tests::test_read_message_too_short::{{closure}}::h590a93be565d5757 [INFO] [stdout] at src/message.rs:375 [INFO] [stdout] 18: 0x55649d6b327e - core::ops::function::FnOnce::call_once::h99653be247178f04 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libcore/ops/function.rs:233 [INFO] [stdout] 19: 0x55649d6e336c - as core::ops::function::FnOnce>::call_once::h8340ba6798e0c4ff [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/liballoc/boxed.rs:1081 [INFO] [stdout] 20: 0x55649d6e336c - as core::ops::function::FnOnce<()>>::call_once::h5590e98676605094 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/panic.rs:318 [INFO] [stdout] 21: 0x55649d6e336c - std::panicking::try::do_call::hd8680a2dbb0ed3c4 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/panicking.rs:348 [INFO] [stdout] 22: 0x55649d6e336c - std::panicking::try::h46b4de2d705e7a8d [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/panicking.rs:325 [INFO] [stdout] 23: 0x55649d6e336c - std::panic::catch_unwind::h059b3f06991e0a9c [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/panic.rs:394 [INFO] [stdout] 24: 0x55649d6e336c - test::run_test_in_process::h5ae08a65430494a4 [INFO] [stdout] at src/libtest/lib.rs:541 [INFO] [stdout] 25: 0x55649d6e336c - test::run_test::run_test_inner::{{closure}}::h4b36073838376ae8 [INFO] [stdout] at src/libtest/lib.rs:450 [INFO] [stdout] 26: 0x55649d6bb2e6 - std::sys_common::backtrace::__rust_begin_short_backtrace::h0169d0be588b8bf0 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/sys_common/backtrace.rs:130 [INFO] [stdout] 27: 0x55649d6c02d5 - std::thread::Builder::spawn_unchecked::{{closure}}::{{closure}}::h71bfc37e887d3973 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/thread/mod.rs:475 [INFO] [stdout] 28: 0x55649d6c02d5 - as core::ops::function::FnOnce<()>>::call_once::h36c65072907dc180 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/panic.rs:318 [INFO] [stdout] 29: 0x55649d6c02d5 - std::panicking::try::do_call::h4e0f426e17cd216c [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/panicking.rs:348 [INFO] [stdout] 30: 0x55649d6c02d5 - std::panicking::try::hd05e4ef6b4303d29 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/panicking.rs:325 [INFO] [stdout] 31: 0x55649d6c02d5 - std::panic::catch_unwind::h19a1127ec729c5dd [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/panic.rs:394 [INFO] [stdout] 32: 0x55649d6c02d5 - std::thread::Builder::spawn_unchecked::{{closure}}::h011300735f06b1e2 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/thread/mod.rs:474 [INFO] [stdout] 33: 0x55649d6c02d5 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h1e3c55f31f1d122e [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libcore/ops/function.rs:233 [INFO] [stdout] 34: 0x55649ddb233a - as core::ops::function::FnOnce>::call_once::hc0e15d78a519721e [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/liballoc/boxed.rs:1081 [INFO] [stdout] 35: 0x55649ddb233a - as core::ops::function::FnOnce>::call_once::h211da8fffb09f192 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/liballoc/boxed.rs:1081 [INFO] [stdout] 36: 0x55649ddb233a - std::sys::unix::thread::Thread::new::thread_start::h29594ddebf23e421 [INFO] [stdout] at src/libstd/sys/unix/thread.rs:87 [INFO] [stdout] 37: 0x7f8bdaa3a609 - start_thread [INFO] [stdout] 38: 0x7f8bda944103 - __clone [INFO] [stdout] 39: 0x0 - [INFO] [stdout] [INFO] [stdout] ---- message::tests::test_read_message_keep_alive stdout ---- [INFO] [stdout] thread 'message::tests::test_read_message_keep_alive' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 111, kind: ConnectionRefused, message: "Connection refused" }', src/message.rs:449:63 [INFO] [stdout] stack backtrace: [INFO] [stdout] 0: 0x55649dda8245 - backtrace::backtrace::libunwind::trace::hea89dfbbfe67f40d [INFO] [stdout] at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.46/src/backtrace/libunwind.rs:86 [INFO] [stdout] 1: 0x55649dda8245 - backtrace::backtrace::trace_unsynchronized::h0513dd713d7644d4 [INFO] [stdout] at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.46/src/backtrace/mod.rs:66 [INFO] [stdout] 2: 0x55649dda8245 - std::sys_common::backtrace::_print_fmt::h040abae64e4a24a9 [INFO] [stdout] at src/libstd/sys_common/backtrace.rs:78 [INFO] [stdout] 3: 0x55649dda8245 - ::fmt::hb4bdb37c3c335733 [INFO] [stdout] at src/libstd/sys_common/backtrace.rs:59 [INFO] [stdout] 4: 0x55649ddd2a0c - core::fmt::write::h540ac4a6a1232abc [INFO] [stdout] at src/libcore/fmt/mod.rs:1076 [INFO] [stdout] 5: 0x55649d6bbdf5 - std::io::Write::write_fmt::h4be0daababb55bba [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/io/mod.rs:1539 [INFO] [stdout] 6: 0x55649dd9e761 - std::io::impls::>::write_fmt::h83c1e1aa73f374f5 [INFO] [stdout] at src/libstd/io/impls.rs:176 [INFO] [stdout] 7: 0x55649ddaa9b0 - std::sys_common::backtrace::_print::hb55cc635eaf1882e [INFO] [stdout] at src/libstd/sys_common/backtrace.rs:62 [INFO] [stdout] 8: 0x55649ddaa9b0 - std::sys_common::backtrace::print::h2b2218fa55714084 [INFO] [stdout] at src/libstd/sys_common/backtrace.rs:49 [INFO] [stdout] 9: 0x55649ddaa9b0 - std::panicking::default_hook::{{closure}}::h578517c025765cf3 [INFO] [stdout] at src/libstd/panicking.rs:198 [INFO] [stdout] 10: 0x55649ddaa6aa - std::panicking::default_hook::h4cafc94c2fc640fb [INFO] [stdout] at src/libstd/panicking.rs:214 [INFO] [stdout] 11: 0x55649ddaaff3 - std::panicking::rust_panic_with_hook::h3eeb5001beeca5c3 [INFO] [stdout] at src/libstd/panicking.rs:526 [INFO] [stdout] 12: 0x55649ddaabeb - rust_begin_unwind [INFO] [stdout] at src/libstd/panicking.rs:437 [INFO] [stdout] 13: 0x55649ddd10f1 - core::panicking::panic_fmt::h78830ea6a34e7206 [INFO] [stdout] at src/libcore/panicking.rs:85 [INFO] [stdout] 14: 0x55649ddd0f13 - core::option::expect_none_failed::hf79bbb5ca7e09e08 [INFO] [stdout] at src/libcore/option.rs:1269 [INFO] [stdout] 15: 0x55649d6b7d9b - core::result::Result::unwrap::h79579edecfce7b24 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libcore/result.rs:1005 [INFO] [stdout] 16: 0x55649d678d1e - rust_torrent::message::tests::test_read_message_keep_alive::h93eaf265ea866543 [INFO] [stdout] at src/message.rs:449 [INFO] [stdout] 17: 0x55649d678c2a - rust_torrent::message::tests::test_read_message_keep_alive::{{closure}}::h394fe04a1a22bbcb [INFO] [stdout] at src/message.rs:441 [INFO] [stdout] 18: 0x55649d6b32ae - core::ops::function::FnOnce::call_once::ha0ae704d49d199d2 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libcore/ops/function.rs:233 [INFO] [stdout] 19: 0x55649d6e336c - as core::ops::function::FnOnce>::call_once::h8340ba6798e0c4ff [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/liballoc/boxed.rs:1081 [INFO] [stdout] 20: 0x55649d6e336c - as core::ops::function::FnOnce<()>>::call_once::h5590e98676605094 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/panic.rs:318 [INFO] [stdout] 21: 0x55649d6e336c - std::panicking::try::do_call::hd8680a2dbb0ed3c4 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/panicking.rs:348 [INFO] [stdout] 22: 0x55649d6e336c - std::panicking::try::h46b4de2d705e7a8d [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/panicking.rs:325 [INFO] [stdout] 23: 0x55649d6e336c - std::panic::catch_unwind::h059b3f06991e0a9c [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/panic.rs:394 [INFO] [stdout] 24: 0x55649d6e336c - test::run_test_in_process::h5ae08a65430494a4 [INFO] [stdout] at src/libtest/lib.rs:541 [INFO] [stdout] 25: 0x55649d6e336c - test::run_test::run_test_inner::{{closure}}::h4b36073838376ae8 [INFO] [stdout] at src/libtest/lib.rs:450 [INFO] [stdout] 26: 0x55649d6bb2e6 - std::sys_common::backtrace::__rust_begin_short_backtrace::h0169d0be588b8bf0 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/sys_common/backtrace.rs:130 [INFO] [stdout] 27: 0x55649d6c02d5 - std::thread::Builder::spawn_unchecked::{{closure}}::{{closure}}::h71bfc37e887d3973 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/thread/mod.rs:475 [INFO] [stdout] 28: 0x55649d6c02d5 - as core::ops::function::FnOnce<()>>::call_once::h36c65072907dc180 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/panic.rs:318 [INFO] [stdout] 29: 0x55649d6c02d5 - std::panicking::try::do_call::h4e0f426e17cd216c [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/panicking.rs:348 [INFO] [stdout] 30: 0x55649d6c02d5 - std::panicking::try::hd05e4ef6b4303d29 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/panicking.rs:325 [INFO] [stdout] 31: 0x55649d6c02d5 - std::panic::catch_unwind::h19a1127ec729c5dd [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/panic.rs:394 [INFO] [stdout] 32: 0x55649d6c02d5 - std::thread::Builder::spawn_unchecked::{{closure}}::h011300735f06b1e2 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/thread/mod.rs:474 [INFO] [stdout] 33: 0x55649d6c02d5 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h1e3c55f31f1d122e [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libcore/ops/function.rs:233 [INFO] [stdout] 34: 0x55649ddb233a - as core::ops::function::FnOnce>::call_once::hc0e15d78a519721e [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/liballoc/boxed.rs:1081 [INFO] [stdout] 35: 0x55649ddb233a - as core::ops::function::FnOnce>::call_once::h211da8fffb09f192 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/liballoc/boxed.rs:1081 [INFO] [stdout] 36: 0x55649ddb233a - std::sys::unix::thread::Thread::new::thread_start::h29594ddebf23e421 [INFO] [stdout] at src/libstd/sys/unix/thread.rs:87 [INFO] [stdout] 37: 0x7f8bdaa3a609 - start_thread [INFO] [stdout] 38: 0x7f8bda944103 - __clone [INFO] [stdout] 39: 0x0 - [INFO] [stdout] [INFO] [stdout] ---- torrentfile::tests::test_open stdout ---- [INFO] [stdout] thread 'torrentfile::tests::test_open' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: "No such file or directory" }', src/torrentfile.rs:156:138 [INFO] [stdout] stack backtrace: [INFO] [stdout] 0: 0x55649dda8245 - backtrace::backtrace::libunwind::trace::hea89dfbbfe67f40d [INFO] [stdout] at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.46/src/backtrace/libunwind.rs:86 [INFO] [stdout] 1: 0x55649dda8245 - backtrace::backtrace::trace_unsynchronized::h0513dd713d7644d4 [INFO] [stdout] at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.46/src/backtrace/mod.rs:66 [INFO] [stdout] 2: 0x55649dda8245 - std::sys_common::backtrace::_print_fmt::h040abae64e4a24a9 [INFO] [stdout] at src/libstd/sys_common/backtrace.rs:78 [INFO] [stdout] 3: 0x55649dda8245 - ::fmt::hb4bdb37c3c335733 [INFO] [stdout] at src/libstd/sys_common/backtrace.rs:59 [INFO] [stdout] 4: 0x55649ddd2a0c - core::fmt::write::h540ac4a6a1232abc [INFO] [stdout] at src/libcore/fmt/mod.rs:1076 [INFO] [stdout] 5: 0x55649d6bbdf5 - std::io::Write::write_fmt::h4be0daababb55bba [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/io/mod.rs:1539 [INFO] [stdout] 6: 0x55649dd9e761 - std::io::impls::>::write_fmt::h83c1e1aa73f374f5 [INFO] [stdout] at src/libstd/io/impls.rs:176 [INFO] [stdout] 7: 0x55649ddaa9b0 - std::sys_common::backtrace::_print::hb55cc635eaf1882e [INFO] [stdout] at src/libstd/sys_common/backtrace.rs:62 [INFO] [stdout] 8: 0x55649ddaa9b0 - std::sys_common::backtrace::print::h2b2218fa55714084 [INFO] [stdout] at src/libstd/sys_common/backtrace.rs:49 [INFO] [stdout] 9: 0x55649ddaa9b0 - std::panicking::default_hook::{{closure}}::h578517c025765cf3 [INFO] [stdout] at src/libstd/panicking.rs:198 [INFO] [stdout] 10: 0x55649ddaa6aa - std::panicking::default_hook::h4cafc94c2fc640fb [INFO] [stdout] at src/libstd/panicking.rs:214 [INFO] [stdout] 11: 0x55649ddaaff3 - std::panicking::rust_panic_with_hook::h3eeb5001beeca5c3 [INFO] [stdout] at src/libstd/panicking.rs:526 [INFO] [stdout] 12: 0x55649ddaabeb - rust_begin_unwind [INFO] [stdout] at src/libstd/panicking.rs:437 [INFO] [stdout] 13: 0x55649ddd10f1 - core::panicking::panic_fmt::h78830ea6a34e7206 [INFO] [stdout] at src/libcore/panicking.rs:85 [INFO] [stdout] 14: 0x55649ddd0f13 - core::option::expect_none_failed::hf79bbb5ca7e09e08 [INFO] [stdout] at src/libcore/option.rs:1269 [INFO] [stdout] 15: 0x55649d6b84f7 - core::result::Result::unwrap::he14af995a3f0d9e8 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libcore/result.rs:1005 [INFO] [stdout] 16: 0x55649d68b5a8 - rust_torrent::torrentfile::tests::test_open::ha07e1a86c8d3cfdc [INFO] [stdout] at src/torrentfile.rs:156 [INFO] [stdout] 17: 0x55649d68b52a - rust_torrent::torrentfile::tests::test_open::{{closure}}::h114e81fcba4bd676 [INFO] [stdout] at src/torrentfile.rs:155 [INFO] [stdout] 18: 0x55649d6b306e - core::ops::function::FnOnce::call_once::h5295233214a4da34 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libcore/ops/function.rs:233 [INFO] [stdout] 19: 0x55649d6e336c - as core::ops::function::FnOnce>::call_once::h8340ba6798e0c4ff [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/liballoc/boxed.rs:1081 [INFO] [stdout] 20: 0x55649d6e336c - as core::ops::function::FnOnce<()>>::call_once::h5590e98676605094 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/panic.rs:318 [INFO] [stdout] 21: 0x55649d6e336c - std::panicking::try::do_call::hd8680a2dbb0ed3c4 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/panicking.rs:348 [INFO] [stdout] 22: 0x55649d6e336c - std::panicking::try::h46b4de2d705e7a8d [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/panicking.rs:325 [INFO] [stdout] 23: 0x55649d6e336c - std::panic::catch_unwind::h059b3f06991e0a9c [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/panic.rs:394 [INFO] [stdout] 24: 0x55649d6e336c - test::run_test_in_process::h5ae08a65430494a4 [INFO] [stdout] at src/libtest/lib.rs:541 [INFO] [stdout] 25: 0x55649d6e336c - test::run_test::run_test_inner::{{closure}}::h4b36073838376ae8 [INFO] [stdout] at src/libtest/lib.rs:450 [INFO] [stdout] 26: 0x55649d6bb2e6 - std::sys_common::backtrace::__rust_begin_short_backtrace::h0169d0be588b8bf0 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/sys_common/backtrace.rs:130 [INFO] [stdout] 27: 0x55649d6c02d5 - std::thread::Builder::spawn_unchecked::{{closure}}::{{closure}}::h71bfc37e887d3973 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/thread/mod.rs:475 [INFO] [stdout] 28: 0x55649d6c02d5 - as core::ops::function::FnOnce<()>>::call_once::h36c65072907dc180 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/panic.rs:318 [INFO] [stdout] 29: 0x55649d6c02d5 - std::panicking::try::do_call::h4e0f426e17cd216c [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/panicking.rs:348 [INFO] [stdout] 30: 0x55649d6c02d5 - std::panicking::try::hd05e4ef6b4303d29 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/panicking.rs:325 [INFO] [stdout] 31: 0x55649d6c02d5 - std::panic::catch_unwind::h19a1127ec729c5dd [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/panic.rs:394 [INFO] [stdout] 32: 0x55649d6c02d5 - std::thread::Builder::spawn_unchecked::{{closure}}::h011300735f06b1e2 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libstd/thread/mod.rs:474 [INFO] [stdout] 33: 0x55649d6c02d5 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h1e3c55f31f1d122e [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/libcore/ops/function.rs:233 [INFO] [stdout] 34: 0x55649ddb233a - as core::ops::function::FnOnce>::call_once::hc0e15d78a519721e [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/liballoc/boxed.rs:1081 [INFO] [stdout] 35: 0x55649ddb233a - as core::ops::function::FnOnce>::call_once::h211da8fffb09f192 [INFO] [stdout] at /rustc/8534be72fc3b9c5f2f2dc4e4ee7b651a008e9a3e/src/liballoc/boxed.rs:1081 [INFO] [stdout] 36: 0x55649ddb233a - std::sys::unix::thread::Thread::new::thread_start::h29594ddebf23e421 [INFO] [stdout] at src/libstd/sys/unix/thread.rs:87 [INFO] [stdout] 37: 0x7f8bdaa3a609 - start_thread [INFO] [stdout] 38: 0x7f8bda944103 - __clone [INFO] [stdout] 39: 0x0 - [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] message::tests::test_read_message_keep_alive [INFO] [stdout] message::tests::test_read_message_length_too_short_for_length [INFO] [stdout] message::tests::test_read_message_too_short [INFO] [stdout] torrentfile::tests::test_open [INFO] [stdout] [INFO] [stdout] test result: FAILED. 38 passed; 4 failed; 0 ignored; 0 measured; 0 filtered out [INFO] [stdout] [INFO] [stderr] error: test failed, to rerun pass '--lib' [INFO] running `Command { std: "docker" "inspect" "d21597c5e18a9554cb494e53fa654f40f67db37ba9a6e70eb9e1e318ffc223b9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "d21597c5e18a9554cb494e53fa654f40f67db37ba9a6e70eb9e1e318ffc223b9", kill_on_drop: false }` [INFO] [stdout] d21597c5e18a9554cb494e53fa654f40f67db37ba9a6e70eb9e1e318ffc223b9