[INFO] updating cached repository https://github.com/itsuy/rust-torrent [INFO] running `"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"` [INFO] [stderr] From https://github.com/itsuy/rust-torrent [INFO] [stderr] e0aa641..a741b5a master -> master [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] a741b5a438c23bcb5ecf30d697535ce18df211bc [INFO] checking itsuy/rust-torrent against master#ba72b15666b2491415aec703a02c2364fe5e2790 for pr-71140 [INFO] running `"git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fitsuy%2Frust-torrent" "/workspace/builds/worker-2/source"` [INFO] [stderr] Cloning into '/workspace/builds/worker-2/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/itsuy/rust-torrent on toolchain ba72b15666b2491415aec703a02c2364fe5e2790 [INFO] running `"/workspace/cargo-home/bin/cargo" "+ba72b15666b2491415aec703a02c2364fe5e2790" "read-manifest" "--manifest-path" "Cargo.toml"` [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-2/source/Cargo.toml [INFO] crate git repo https://github.com/itsuy/rust-torrent already has a lockfile, it will not be regenerated [INFO] running `"/workspace/cargo-home/bin/cargo" "+ba72b15666b2491415aec703a02c2364fe5e2790" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `"docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2/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" "/opt/rustwide/cargo-home/bin/cargo" "+ba72b15666b2491415aec703a02c2364fe5e2790" "check" "--frozen" "--all" "--all-targets"` [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] [stdout] 9092639a91cb72ae4da9fec69fb24a196d4b80377716166bbbe18733b80c51ac [INFO] running `"docker" "start" "-a" "9092639a91cb72ae4da9fec69fb24a196d4b80377716166bbbe18733b80c51ac"` [INFO] [stderr] Compiling tokio-macros v0.2.4 [INFO] [stderr] Checking tokio v0.2.11 [INFO] [stderr] Checking rust-torrent v0.1.0 (/opt/rustwide/workdir) [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] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BufRead`, `BufReader` [INFO] [stderr] --> src/message.rs:3:23 [INFO] [stderr] | [INFO] [stderr] 3 | use std::io::{Cursor, BufReader, BufRead, Read, Result, Error, ErrorKind}; [INFO] [stderr] | ^^^^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::prelude::*` [INFO] [stderr] --> src/message.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use std::io::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type `messageID` should have an upper camel case name [INFO] [stderr] --> src/message.rs:8:6 [INFO] [stderr] | [INFO] [stderr] 8 | 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 import: `std::fmt` [INFO] [stderr] --> src/handshake.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BufRead`, `BufReader`, `Cursor` [INFO] [stderr] --> src/handshake.rs:2:15 [INFO] [stderr] | [INFO] [stderr] 2 | use std::io::{Cursor, BufReader, BufRead, Read, Result, Error, ErrorKind}; [INFO] [stderr] | ^^^^^^ ^^^^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Ipv4Addr`, `SocketAddrV4`, `SocketAddr` [INFO] [stderr] --> src/handshake.rs:3:16 [INFO] [stderr] | [INFO] [stderr] 3 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream}; [INFO] [stderr] | ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt` [INFO] [stderr] --> src/peers.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BufRead`, `BufReader`, `Read` [INFO] [stderr] --> src/peers.rs:2:23 [INFO] [stderr] | [INFO] [stderr] 2 | use std::io::{Cursor, BufReader, BufRead, Read, Result, Error, ErrorKind}; [INFO] [stderr] | ^^^^^^^^^ ^^^^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::str` [INFO] [stderr] --> src/peers.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use std::str; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `SocketAddr` [INFO] [stderr] --> src/peers.rs:5:26 [INFO] [stderr] | [INFO] [stderr] 5 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4}; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt` [INFO] [stderr] --> src/client.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::sync::mpsc` [INFO] [stderr] --> src/client.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use std::sync::mpsc; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BigEndian`, `ReadBytesExt` [INFO] [stderr] --> src/client.rs:4:17 [INFO] [stderr] | [INFO] [stderr] 4 | use byteorder::{ReadBytesExt, BigEndian}; [INFO] [stderr] | ^^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Ipv4Addr`, `SocketAddrV4` [INFO] [stderr] --> src/client.rs:5:16 [INFO] [stderr] | [INFO] [stderr] 5 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream}; [INFO] [stderr] | ^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `new_handshake` [INFO] [stderr] --> src/client.rs:12:72 [INFO] [stderr] | [INFO] [stderr] 12 | use crate::handshake::{Handshake, serialize_handshake, read_handshake, new_handshake}; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::str::from_utf8` [INFO] [stderr] --> src/client.rs:151:9 [INFO] [stderr] | [INFO] [stderr] 151 | use std::str::from_utf8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Receiver`, `Sender`, `channel` [INFO] [stderr] --> src/client.rs:152:27 [INFO] [stderr] | [INFO] [stderr] 152 | use std::sync::mpsc::{channel, Sender, Receiver}; [INFO] [stderr] | ^^^^^^^ ^^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::handshake::new_handshake_with_input` [INFO] [stderr] --> src/client.rs:153:9 [INFO] [stderr] | [INFO] [stderr] 153 | use crate::handshake::new_handshake_with_input; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Digest`, `Sha1` [INFO] [stderr] --> src/p2p.rs:1:12 [INFO] [stderr] | [INFO] [stderr] 1 | use sha1::{Sha1, Digest}; [INFO] [stderr] | ^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BigEndian`, `ReadBytesExt` [INFO] [stderr] --> src/p2p.rs:2:17 [INFO] [stderr] | [INFO] [stderr] 2 | use byteorder::{ReadBytesExt, BigEndian}; [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] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BufRead`, `BufReader` [INFO] [stderr] --> src/message.rs:3:23 [INFO] [stderr] | [INFO] [stderr] 3 | use std::io::{Cursor, BufReader, BufRead, Read, Result, Error, ErrorKind}; [INFO] [stderr] | ^^^^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::prelude::*` [INFO] [stderr] --> src/message.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use std::io::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type `messageID` should have an upper camel case name [INFO] [stderr] --> src/message.rs:8:6 [INFO] [stderr] | [INFO] [stderr] 8 | 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 import: `std::fmt` [INFO] [stderr] --> src/handshake.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BufRead`, `BufReader`, `Cursor` [INFO] [stderr] --> src/handshake.rs:2:15 [INFO] [stderr] | [INFO] [stderr] 2 | use std::io::{Cursor, BufReader, BufRead, Read, Result, Error, ErrorKind}; [INFO] [stderr] | ^^^^^^ ^^^^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Ipv4Addr`, `SocketAddrV4`, `SocketAddr` [INFO] [stderr] --> src/handshake.rs:3:16 [INFO] [stderr] | [INFO] [stderr] 3 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream}; [INFO] [stderr] | ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt` [INFO] [stderr] --> src/peers.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BufRead`, `BufReader`, `Read` [INFO] [stderr] --> src/peers.rs:2:23 [INFO] [stderr] | [INFO] [stderr] 2 | use std::io::{Cursor, BufReader, BufRead, Read, Result, Error, ErrorKind}; [INFO] [stderr] | ^^^^^^^^^ ^^^^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::str` [INFO] [stderr] --> src/peers.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use std::str; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `SocketAddr` [INFO] [stderr] --> src/peers.rs:5:26 [INFO] [stderr] | [INFO] [stderr] 5 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4}; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt` [INFO] [stderr] --> src/client.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::thread` [INFO] [stderr] --> src/client.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use std::thread; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::sync::mpsc` [INFO] [stderr] --> src/client.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use std::sync::mpsc; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BigEndian`, `ReadBytesExt` [INFO] [stderr] --> src/client.rs:4:17 [INFO] [stderr] | [INFO] [stderr] 4 | use byteorder::{ReadBytesExt, BigEndian}; [INFO] [stderr] | ^^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Ipv4Addr`, `SocketAddrV4` [INFO] [stderr] --> src/client.rs:5:16 [INFO] [stderr] | [INFO] [stderr] 5 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream}; [INFO] [stderr] | ^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::prelude::*` [INFO] [stderr] --> src/client.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | use std::io::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `new_handshake` [INFO] [stderr] --> src/client.rs:12:72 [INFO] [stderr] | [INFO] [stderr] 12 | use crate::handshake::{Handshake, serialize_handshake, read_handshake, new_handshake}; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Digest`, `Sha1` [INFO] [stderr] --> src/p2p.rs:1:12 [INFO] [stderr] | [INFO] [stderr] 1 | use sha1::{Sha1, Digest}; [INFO] [stderr] | ^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BigEndian`, `ReadBytesExt` [INFO] [stderr] --> src/p2p.rs:2:17 [INFO] [stderr] | [INFO] [stderr] 2 | use byteorder::{ReadBytesExt, BigEndian}; [INFO] [stderr] | ^^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `output_length` [INFO] [stderr] --> src/message.rs:219:13 [INFO] [stderr] | [INFO] [stderr] 219 | let output_length = 6; [INFO] [stderr] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_length` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `length_test` [INFO] [stderr] --> src/message.rs:220:13 [INFO] [stderr] | [INFO] [stderr] 220 | 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: value assigned to `input_pstr` is never read [INFO] [stderr] --> src/handshake.rs:69:21 [INFO] [stderr] | [INFO] [stderr] 69 | let mut input_pstr = "hello"; [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 `offset` is never read [INFO] [stderr] --> src/peers.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | let mut offset = 0; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [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:31:13 [INFO] [stderr] | [INFO] [stderr] 31 | 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: `hs` [INFO] [stderr] --> src/client.rs:118:20 [INFO] [stderr] | [INFO] [stderr] 118 | Ok(hs) => { [INFO] [stderr] | ^^ help: if this is intentional, prefix it with an underscore: `_hs` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `index` [INFO] [stderr] --> src/p2p.rs:56:29 [INFO] [stderr] | [INFO] [stderr] 56 | let index = parse_have(&msg).unwrap(); [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_index` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `n` [INFO] [stderr] --> src/p2p.rs:68:29 [INFO] [stderr] | [INFO] [stderr] 68 | let n = parse_piece(self.index, self.buf.as_mut(), &msg).unwrap(); [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_n` [INFO] [stderr] [INFO] [stderr] warning: value assigned to `input_pstr` is never read [INFO] [stderr] --> src/handshake.rs:69:21 [INFO] [stderr] | [INFO] [stderr] 69 | let mut input_pstr = "hello"; [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 `offset` is never read [INFO] [stderr] --> src/peers.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | let mut offset = 0; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [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:31:13 [INFO] [stderr] | [INFO] [stderr] 31 | 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: `hs` [INFO] [stderr] --> src/client.rs:118:20 [INFO] [stderr] | [INFO] [stderr] 118 | Ok(hs) => { [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: `index` [INFO] [stderr] --> src/p2p.rs:56:29 [INFO] [stderr] | [INFO] [stderr] 56 | let index = parse_have(&msg).unwrap(); [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_index` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `n` [INFO] [stderr] --> src/p2p.rs:68:29 [INFO] [stderr] | [INFO] [stderr] 68 | let n = parse_piece(self.index, self.buf.as_mut(), &msg).unwrap(); [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_n` [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] = note: `#[warn(unused_mut)]` on by default [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:36:17 [INFO] [stderr] | [INFO] [stderr] 36 | 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/handshake.rs:129:13 [INFO] [stderr] | [INFO] [stderr] 129 | let mut input_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] = note: `#[warn(unused_mut)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/handshake.rs:130:13 [INFO] [stderr] | [INFO] [stderr] 130 | let mut input_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/client.rs:67:13 [INFO] [stderr] | [INFO] [stderr] 67 | let mut msg = format_have(index); [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:79:17 [INFO] [stderr] | [INFO] [stderr] 79 | 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:94:9 [INFO] [stderr] | [INFO] [stderr] 94 | 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:102:9 [INFO] [stderr] | [INFO] [stderr] 102 | let mut received = read_handshake(conn).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/handshake.rs:138:13 [INFO] [stderr] | [INFO] [stderr] 138 | let mut input_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:139:13 [INFO] [stderr] | [INFO] [stderr] 139 | let mut input_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:140:13 [INFO] [stderr] | [INFO] [stderr] 140 | 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/p2p.rs:125:9 [INFO] [stderr] | [INFO] [stderr] 125 | 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/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:36:17 [INFO] [stderr] | [INFO] [stderr] 36 | 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/client.rs:67:13 [INFO] [stderr] | [INFO] [stderr] 67 | let mut msg = format_have(index); [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:79:17 [INFO] [stderr] | [INFO] [stderr] 79 | 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:94:9 [INFO] [stderr] | [INFO] [stderr] 94 | 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:102:9 [INFO] [stderr] | [INFO] [stderr] 102 | let mut received = read_handshake(conn).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/client.rs:168:21 [INFO] [stderr] | [INFO] [stderr] 168 | 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:189:25 [INFO] [stderr] | [INFO] [stderr] 189 | 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/p2p.rs:125:9 [INFO] [stderr] | [INFO] [stderr] 125 | 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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client.rs:216:21 [INFO] [stderr] | [INFO] [stderr] 216 | dummy_client_thread.join(); [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: 34 warnings emitted [INFO] [stderr] [INFO] [stderr] warning: 45 warnings emitted [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Digest`, `Sha1` [INFO] [stderr] --> src/main.rs:2:12 [INFO] [stderr] | [INFO] [stderr] 2 | use sha1::{Sha1, Digest}; [INFO] [stderr] | ^^^^ ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [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:3:23 [INFO] [stderr] | [INFO] [stderr] 3 | use std::io::{Cursor, BufReader, BufRead, Read, Result, Error, ErrorKind}; [INFO] [stderr] | ^^^^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::prelude::*` [INFO] [stderr] --> src/message.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use std::io::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type `messageID` should have an upper camel case name [INFO] [stderr] --> src/message.rs:8:6 [INFO] [stderr] | [INFO] [stderr] 8 | 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 import: `std::fmt` [INFO] [stderr] --> src/handshake.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BufRead`, `BufReader`, `Cursor` [INFO] [stderr] --> src/handshake.rs:2:15 [INFO] [stderr] | [INFO] [stderr] 2 | use std::io::{Cursor, BufReader, BufRead, Read, Result, Error, ErrorKind}; [INFO] [stderr] | ^^^^^^ ^^^^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Ipv4Addr`, `SocketAddrV4`, `SocketAddr` [INFO] [stderr] --> src/handshake.rs:3:16 [INFO] [stderr] | [INFO] [stderr] 3 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream}; [INFO] [stderr] | ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt` [INFO] [stderr] --> src/peers.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BufRead`, `BufReader`, `Read` [INFO] [stderr] --> src/peers.rs:2:23 [INFO] [stderr] | [INFO] [stderr] 2 | use std::io::{Cursor, BufReader, BufRead, Read, Result, Error, ErrorKind}; [INFO] [stderr] | ^^^^^^^^^ ^^^^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::str` [INFO] [stderr] --> src/peers.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use std::str; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `SocketAddr` [INFO] [stderr] --> src/peers.rs:5:26 [INFO] [stderr] | [INFO] [stderr] 5 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4}; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt` [INFO] [stderr] --> src/client.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::thread` [INFO] [stderr] --> src/client.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use std::thread; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::sync::mpsc` [INFO] [stderr] --> src/client.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use std::sync::mpsc; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BigEndian`, `ReadBytesExt` [INFO] [stderr] --> src/client.rs:4:17 [INFO] [stderr] | [INFO] [stderr] 4 | use byteorder::{ReadBytesExt, BigEndian}; [INFO] [stderr] | ^^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Ipv4Addr`, `SocketAddrV4` [INFO] [stderr] --> src/client.rs:5:16 [INFO] [stderr] | [INFO] [stderr] 5 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream}; [INFO] [stderr] | ^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::prelude::*` [INFO] [stderr] --> src/client.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | use std::io::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `new_handshake` [INFO] [stderr] --> src/client.rs:12:72 [INFO] [stderr] | [INFO] [stderr] 12 | use crate::handshake::{Handshake, serialize_handshake, read_handshake, new_handshake}; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Digest`, `Sha1` [INFO] [stderr] --> src/p2p.rs:1:12 [INFO] [stderr] | [INFO] [stderr] 1 | use sha1::{Sha1, Digest}; [INFO] [stderr] | ^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BigEndian`, `ReadBytesExt` [INFO] [stderr] --> src/p2p.rs:2:17 [INFO] [stderr] | [INFO] [stderr] 2 | use byteorder::{ReadBytesExt, BigEndian}; [INFO] [stderr] | ^^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::str::from_utf8` [INFO] [stderr] --> src/main.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | use std::str::from_utf8; [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::{Sha1, Digest}; [INFO] [stderr] | ^^^^ ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [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:3:23 [INFO] [stderr] | [INFO] [stderr] 3 | use std::io::{Cursor, BufReader, BufRead, Read, Result, Error, ErrorKind}; [INFO] [stderr] | ^^^^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::prelude::*` [INFO] [stderr] --> src/message.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use std::io::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type `messageID` should have an upper camel case name [INFO] [stderr] --> src/message.rs:8:6 [INFO] [stderr] | [INFO] [stderr] 8 | 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 import: `std::fmt` [INFO] [stderr] --> src/handshake.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BufRead`, `BufReader`, `Cursor` [INFO] [stderr] --> src/handshake.rs:2:15 [INFO] [stderr] | [INFO] [stderr] 2 | use std::io::{Cursor, BufReader, BufRead, Read, Result, Error, ErrorKind}; [INFO] [stderr] | ^^^^^^ ^^^^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Ipv4Addr`, `SocketAddrV4`, `SocketAddr` [INFO] [stderr] --> src/handshake.rs:3:16 [INFO] [stderr] | [INFO] [stderr] 3 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream}; [INFO] [stderr] | ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt` [INFO] [stderr] --> src/peers.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BufRead`, `BufReader`, `Read` [INFO] [stderr] --> src/peers.rs:2:23 [INFO] [stderr] | [INFO] [stderr] 2 | use std::io::{Cursor, BufReader, BufRead, Read, Result, Error, ErrorKind}; [INFO] [stderr] | ^^^^^^^^^ ^^^^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::str` [INFO] [stderr] --> src/peers.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use std::str; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `SocketAddr` [INFO] [stderr] --> src/peers.rs:5:26 [INFO] [stderr] | [INFO] [stderr] 5 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4}; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt` [INFO] [stderr] --> src/client.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::sync::mpsc` [INFO] [stderr] --> src/client.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use std::sync::mpsc; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BigEndian`, `ReadBytesExt` [INFO] [stderr] --> src/client.rs:4:17 [INFO] [stderr] | [INFO] [stderr] 4 | use byteorder::{ReadBytesExt, BigEndian}; [INFO] [stderr] | ^^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Ipv4Addr`, `SocketAddrV4` [INFO] [stderr] --> src/client.rs:5:16 [INFO] [stderr] | [INFO] [stderr] 5 | use std::net::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpStream}; [INFO] [stderr] | ^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `new_handshake` [INFO] [stderr] --> src/client.rs:12:72 [INFO] [stderr] | [INFO] [stderr] 12 | use crate::handshake::{Handshake, serialize_handshake, read_handshake, new_handshake}; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::str::from_utf8` [INFO] [stderr] --> src/client.rs:151:9 [INFO] [stderr] | [INFO] [stderr] 151 | use std::str::from_utf8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Receiver`, `Sender`, `channel` [INFO] [stderr] --> src/client.rs:152:27 [INFO] [stderr] | [INFO] [stderr] 152 | use std::sync::mpsc::{channel, Sender, Receiver}; [INFO] [stderr] | ^^^^^^^ ^^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::handshake::new_handshake_with_input` [INFO] [stderr] --> src/client.rs:153:9 [INFO] [stderr] | [INFO] [stderr] 153 | use crate::handshake::new_handshake_with_input; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Digest`, `Sha1` [INFO] [stderr] --> src/p2p.rs:1:12 [INFO] [stderr] | [INFO] [stderr] 1 | use sha1::{Sha1, Digest}; [INFO] [stderr] | ^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BigEndian`, `ReadBytesExt` [INFO] [stderr] --> src/p2p.rs:2:17 [INFO] [stderr] | [INFO] [stderr] 2 | use byteorder::{ReadBytesExt, BigEndian}; [INFO] [stderr] | ^^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::str::from_utf8` [INFO] [stderr] --> src/main.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | use std::str::from_utf8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `hash_output` [INFO] [stderr] --> src/main.rs:23:9 [INFO] [stderr] | [INFO] [stderr] 23 | let hash_output = hash.digest().bytes().to_vec(); [INFO] [stderr] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_hash_output` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `input_pstr` is never read [INFO] [stderr] --> src/handshake.rs:69:21 [INFO] [stderr] | [INFO] [stderr] 69 | let mut input_pstr = "hello"; [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 `offset` is never read [INFO] [stderr] --> src/peers.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | let mut offset = 0; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [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:31:13 [INFO] [stderr] | [INFO] [stderr] 31 | 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: `hs` [INFO] [stderr] --> src/client.rs:118:20 [INFO] [stderr] | [INFO] [stderr] 118 | Ok(hs) => { [INFO] [stderr] | ^^ help: if this is intentional, prefix it with an underscore: `_hs` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `index` [INFO] [stderr] --> src/p2p.rs:56:29 [INFO] [stderr] | [INFO] [stderr] 56 | let index = parse_have(&msg).unwrap(); [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_index` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `n` [INFO] [stderr] --> src/p2p.rs:68:29 [INFO] [stderr] | [INFO] [stderr] 68 | let n = parse_piece(self.index, self.buf.as_mut(), &msg).unwrap(); [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_n` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:29:9 [INFO] [stderr] | [INFO] [stderr] 29 | let mut id_error = Error::new(ErrorKind::InvalidData, "incorrect ID, expecting ID 5"); [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/main.rs:49:17 [INFO] [stderr] | [INFO] [stderr] 49 | 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/main.rs:84:25 [INFO] [stderr] | [INFO] [stderr] 84 | 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/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:36:17 [INFO] [stderr] | [INFO] [stderr] 36 | 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/client.rs:67:13 [INFO] [stderr] | [INFO] [stderr] 67 | let mut msg = format_have(index); [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:79:17 [INFO] [stderr] | [INFO] [stderr] 79 | 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:94:9 [INFO] [stderr] | [INFO] [stderr] 94 | 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:102:9 [INFO] [stderr] | [INFO] [stderr] 102 | let mut received = read_handshake(conn).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/p2p.rs:125:9 [INFO] [stderr] | [INFO] [stderr] 125 | 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: type alias is never used: `Bitfield` [INFO] [stderr] --> src/bitfield.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | pub type Bitfield = Vec; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `has_piece` [INFO] [stderr] --> src/bitfield.rs:6:15 [INFO] [stderr] | [INFO] [stderr] 6 | pub(crate) fn has_piece(bf: &Bitfield, index: usize) -> bool{ [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `set_piece` [INFO] [stderr] --> src/bitfield.rs:17:8 [INFO] [stderr] | [INFO] [stderr] 17 | pub fn set_piece(bf: &Bitfield, index: usize) -> Bitfield{ [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static item is never used: `MESSAGE_CHOKE` [INFO] [stderr] --> src/message.rs:10:1 [INFO] [stderr] | [INFO] [stderr] 10 | pub static MESSAGE_CHOKE: messageID = 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static item is never used: `MESSAGE_UNCHOKE` [INFO] [stderr] --> src/message.rs:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | pub static MESSAGE_UNCHOKE: messageID = 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static item is never used: `MESSAGE_INTERESTED` [INFO] [stderr] --> src/message.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | pub static MESSAGE_INTERESTED: messageID = 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static item is never used: `MESSAGE_NOT_INTERESTED` [INFO] [stderr] --> src/message.rs:13:1 [INFO] [stderr] | [INFO] [stderr] 13 | pub static MESSAGE_NOT_INTERESTED: messageID = 3; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static item is never used: `MESSAGE_HAVE` [INFO] [stderr] --> src/message.rs:14:1 [INFO] [stderr] | [INFO] [stderr] 14 | pub static MESSAGE_HAVE: messageID = 4; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static item is never used: `MESSAGE_BITFIELD` [INFO] [stderr] --> src/message.rs:15:1 [INFO] [stderr] | [INFO] [stderr] 15 | pub static MESSAGE_BITFIELD: messageID = 5; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static item is never used: `MESSAGE_REQUEST` [INFO] [stderr] --> src/message.rs:16:1 [INFO] [stderr] | [INFO] [stderr] 16 | pub static MESSAGE_REQUEST: messageID = 6; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static item is never used: `MESSAGE_PIECE` [INFO] [stderr] --> src/message.rs:17:1 [INFO] [stderr] | [INFO] [stderr] 17 | pub static MESSAGE_PIECE: messageID = 7; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static item is never used: `MESSAGE_CANCEL` [INFO] [stderr] --> src/message.rs:18:1 [INFO] [stderr] | [INFO] [stderr] 18 | pub static MESSAGE_CANCEL: messageID = 8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never read: `ID` [INFO] [stderr] --> src/message.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | pub(crate) ID: messageID, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never read: `Payload` [INFO] [stderr] --> src/message.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | pub(crate) Payload: Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `format_request` [INFO] [stderr] --> src/message.rs:32:8 [INFO] [stderr] | [INFO] [stderr] 32 | pub fn format_request(index: u32, begin: u32, length: u32) -> Message{ [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `format_have` [INFO] [stderr] --> src/message.rs:44:8 [INFO] [stderr] | [INFO] [stderr] 44 | pub fn format_have(index: u32) -> Message { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `parse_piece` [INFO] [stderr] --> src/message.rs:54:8 [INFO] [stderr] | [INFO] [stderr] 54 | pub fn parse_piece(index: u32, buf: &mut Vec, msg: &Message) -> Result{//Result [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `parse_have` [INFO] [stderr] --> src/message.rs:84:15 [INFO] [stderr] | [INFO] [stderr] 84 | pub(crate) fn parse_have(msg: &Message) -> Result{ [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `serialize_message` [INFO] [stderr] --> src/message.rs:95:15 [INFO] [stderr] | [INFO] [stderr] 95 | pub(crate) fn serialize_message(msg: &Message) -> Vec{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `read_message` [INFO] [stderr] --> src/message.rs:114:8 [INFO] [stderr] | [INFO] [stderr] 114 | pub fn read_message(reader: &mut TcpStream) -> Result{ [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `name` [INFO] [stderr] --> src/message.rs:152:4 [INFO] [stderr] | [INFO] [stderr] 152 | fn name(msg: &Message) -> String{ [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `string` [INFO] [stderr] --> src/message.rs:171:4 [INFO] [stderr] | [INFO] [stderr] 171 | fn string(msg: &Message) -> String{ [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Handshake` [INFO] [stderr] --> src/handshake.rs:7:12 [INFO] [stderr] | [INFO] [stderr] 7 | pub struct Handshake{ [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `new_handshake` [INFO] [stderr] --> src/handshake.rs:13:8 [INFO] [stderr] | [INFO] [stderr] 13 | pub fn new_handshake() -> Handshake{ [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `new_handshake_with_input` [INFO] [stderr] --> src/handshake.rs:20:8 [INFO] [stderr] | [INFO] [stderr] 20 | pub fn new_handshake_with_input(info_hash: Vec, peer_id: Vec) -> Handshake{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `serialize_handshake` [INFO] [stderr] --> src/handshake.rs:27:8 [INFO] [stderr] | [INFO] [stderr] 27 | pub fn serialize_handshake(hs: &Handshake) -> Vec{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `read_handshake` [INFO] [stderr] --> src/handshake.rs:41:8 [INFO] [stderr] | [INFO] [stderr] 41 | pub fn read_handshake(reader: &mut TcpStream) -> Result{ [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_socket_address` [INFO] [stderr] --> src/peers.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | pub(crate) fn get_socket_address(&self) -> SocketAddrV4{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `unmarshal` [INFO] [stderr] --> src/peers.rs:20:4 [INFO] [stderr] | [INFO] [stderr] 20 | fn unmarshal(peers_bin: Vec) -> Result>{ [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Client` [INFO] [stderr] --> src/client.rs:14:12 [INFO] [stderr] | [INFO] [stderr] 14 | pub struct Client{ [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `read` [INFO] [stderr] --> src/client.rs:24:5 [INFO] [stderr] | [INFO] [stderr] 24 | pub(crate) fn read(&mut self) -> Result{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `send_request` [INFO] [stderr] --> src/client.rs:31:5 [INFO] [stderr] | [INFO] [stderr] 31 | pub(crate) fn send_request(&mut self, index: &u32, begin: &u32, length: &u32) -> Result<(), Error>{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `send_interested` [INFO] [stderr] --> src/client.rs:39:5 [INFO] [stderr] | [INFO] [stderr] 39 | pub(crate) fn send_interested(&mut self) -> Result<(), Error> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `send_not_interested` [INFO] [stderr] --> src/client.rs:48:5 [INFO] [stderr] | [INFO] [stderr] 48 | pub(crate) fn send_not_interested(&mut self) -> Result<(), Error> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `send_unchoke` [INFO] [stderr] --> src/client.rs:57:5 [INFO] [stderr] | [INFO] [stderr] 57 | pub(crate) fn send_unchoke(&mut self) -> Result<(), Error> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `send_have` [INFO] [stderr] --> src/client.rs:66:5 [INFO] [stderr] | [INFO] [stderr] 66 | pub(crate) fn send_have(&mut self, index: u32) -> Result<(), Error> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `receive_bitfield` [INFO] [stderr] --> src/client.rs:74:4 [INFO] [stderr] | [INFO] [stderr] 74 | fn receive_bitfield(conn: &mut TcpStream) -> Result{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `complete_handshake` [INFO] [stderr] --> src/client.rs:93:4 [INFO] [stderr] | [INFO] [stderr] 93 | fn complete_handshake(conn: &mut TcpStream, info_hash: Vec, peer_id: Vec) -> Result{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `new_client` [INFO] [stderr] --> src/client.rs:111:4 [INFO] [stderr] | [INFO] [stderr] 111 | fn new_client(peer: Peer, peer_id: Vec, info_hash: Vec) -> Result{ [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static item is never used: `MAX_BLOCK_SIZE` [INFO] [stderr] --> src/p2p.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | static MAX_BLOCK_SIZE : u32 = 16384; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static item is never used: `MAX_BACK_LOG` [INFO] [stderr] --> src/p2p.rs:10:1 [INFO] [stderr] | [INFO] [stderr] 10 | static MAX_BACK_LOG : u32 = 5; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Torrent` [INFO] [stderr] --> src/p2p.rs:12:12 [INFO] [stderr] | [INFO] [stderr] 12 | pub struct Torrent { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `PieceWork` [INFO] [stderr] --> src/p2p.rs:22:12 [INFO] [stderr] | [INFO] [stderr] 22 | pub struct PieceWork { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `PieceResult` [INFO] [stderr] --> src/p2p.rs:28:12 [INFO] [stderr] | [INFO] [stderr] 28 | pub struct PieceResult { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `PieceProgress` [INFO] [stderr] --> src/p2p.rs:33:12 [INFO] [stderr] | [INFO] [stderr] 33 | pub struct PieceProgress { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `read_message` [INFO] [stderr] --> src/p2p.rs:43:5 [INFO] [stderr] | [INFO] [stderr] 43 | fn read_message(&mut self) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `attempt_download_piece` [INFO] [stderr] --> src/p2p.rs:91:4 [INFO] [stderr] | [INFO] [stderr] 91 | fn attempt_download_piece(c : &'static mut Client, pw : & PieceWork) -> Result, Error> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `check_integrity` [INFO] [stderr] --> src/p2p.rs:123:4 [INFO] [stderr] | [INFO] [stderr] 123 | fn check_integrity(pw : &PieceWork, buf : Vec) -> Result<(), Error>{ [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `receive_bitfield` [INFO] [stderr] --> src/main.rs:27:4 [INFO] [stderr] | [INFO] [stderr] 27 | fn receive_bitfield(conn: &mut TcpStream) -> Result{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `dummy_client` [INFO] [stderr] --> src/main.rs:37:4 [INFO] [stderr] | [INFO] [stderr] 37 | fn dummy_client(){ [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `handle_client` [INFO] [stderr] --> src/main.rs:78:8 [INFO] [stderr] | [INFO] [stderr] 78 | fn handle_client(mut stream: TcpStream) { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `create_client_server` [INFO] [stderr] --> src/main.rs:100:8 [INFO] [stderr] | [INFO] [stderr] 100 | fn create_client_server(){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:113:21 [INFO] [stderr] | [INFO] [stderr] 113 | worker.join(); [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/main.rs:114:21 [INFO] [stderr] | [INFO] [stderr] 114 | 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: structure field `ID` should have a snake case name [INFO] [stderr] --> src/message.rs:22:16 [INFO] [stderr] | [INFO] [stderr] 22 | 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:23:16 [INFO] [stderr] | [INFO] [stderr] 23 | pub(crate) Payload: Vec, [INFO] [stderr] | ^^^^^^^ help: convert the identifier to snake case: `payload` [INFO] [stderr] [INFO] [stderr] warning: variable `peerID_as_vec` should have a snake case name [INFO] [stderr] --> src/handshake.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | let mut peerID_as_vec: Vec = hs.peer_id.to_vec(); [INFO] [stderr] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `peer_id_as_vec` [INFO] [stderr] [INFO] [stderr] warning: 97 warnings emitted [INFO] [stderr] [INFO] [stderr] warning: unused variable: `hash_output` [INFO] [stderr] --> src/main.rs:23:9 [INFO] [stderr] | [INFO] [stderr] 23 | let hash_output = hash.digest().bytes().to_vec(); [INFO] [stderr] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_hash_output` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `output_length` [INFO] [stderr] --> src/message.rs:219:13 [INFO] [stderr] | [INFO] [stderr] 219 | let output_length = 6; [INFO] [stderr] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_length` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `length_test` [INFO] [stderr] --> src/message.rs:220:13 [INFO] [stderr] | [INFO] [stderr] 220 | 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: value assigned to `input_pstr` is never read [INFO] [stderr] --> src/handshake.rs:69:21 [INFO] [stderr] | [INFO] [stderr] 69 | let mut input_pstr = "hello"; [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 `offset` is never read [INFO] [stderr] --> src/peers.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | let mut offset = 0; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [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:31:13 [INFO] [stderr] | [INFO] [stderr] 31 | 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: `hs` [INFO] [stderr] --> src/client.rs:118:20 [INFO] [stderr] | [INFO] [stderr] 118 | Ok(hs) => { [INFO] [stderr] | ^^ help: if this is intentional, prefix it with an underscore: `_hs` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `index` [INFO] [stderr] --> src/p2p.rs:56:29 [INFO] [stderr] | [INFO] [stderr] 56 | let index = parse_have(&msg).unwrap(); [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_index` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `n` [INFO] [stderr] --> src/p2p.rs:68:29 [INFO] [stderr] | [INFO] [stderr] 68 | let n = parse_piece(self.index, self.buf.as_mut(), &msg).unwrap(); [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_n` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:29:9 [INFO] [stderr] | [INFO] [stderr] 29 | let mut id_error = Error::new(ErrorKind::InvalidData, "incorrect ID, expecting ID 5"); [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/main.rs:49:17 [INFO] [stderr] | [INFO] [stderr] 49 | 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/main.rs:84:25 [INFO] [stderr] | [INFO] [stderr] 84 | 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/handshake.rs:129:13 [INFO] [stderr] | [INFO] [stderr] 129 | let mut input_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:130:13 [INFO] [stderr] | [INFO] [stderr] 130 | let mut input_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:138:13 [INFO] [stderr] | [INFO] [stderr] 138 | let mut input_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:139:13 [INFO] [stderr] | [INFO] [stderr] 139 | let mut input_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:140:13 [INFO] [stderr] | [INFO] [stderr] 140 | 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/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:36:17 [INFO] [stderr] | [INFO] [stderr] 36 | 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/client.rs:67:13 [INFO] [stderr] | [INFO] [stderr] 67 | let mut msg = format_have(index); [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:79:17 [INFO] [stderr] | [INFO] [stderr] 79 | 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:94:9 [INFO] [stderr] | [INFO] [stderr] 94 | 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:102:9 [INFO] [stderr] | [INFO] [stderr] 102 | let mut received = read_handshake(conn).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/client.rs:168:21 [INFO] [stderr] | [INFO] [stderr] 168 | 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:189:25 [INFO] [stderr] | [INFO] [stderr] 189 | 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/p2p.rs:125:9 [INFO] [stderr] | [INFO] [stderr] 125 | 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: function is never used: `new_handshake` [INFO] [stderr] --> src/handshake.rs:13:8 [INFO] [stderr] | [INFO] [stderr] 13 | pub fn new_handshake() -> Handshake{ [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `read_handshake` [INFO] [stderr] --> src/handshake.rs:41:8 [INFO] [stderr] | [INFO] [stderr] 41 | pub fn read_handshake(reader: &mut TcpStream) -> Result{ [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Client` [INFO] [stderr] --> src/client.rs:14:12 [INFO] [stderr] | [INFO] [stderr] 14 | pub struct Client{ [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `read` [INFO] [stderr] --> src/client.rs:24:5 [INFO] [stderr] | [INFO] [stderr] 24 | pub(crate) fn read(&mut self) -> Result{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `send_request` [INFO] [stderr] --> src/client.rs:31:5 [INFO] [stderr] | [INFO] [stderr] 31 | pub(crate) fn send_request(&mut self, index: &u32, begin: &u32, length: &u32) -> Result<(), Error>{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `send_interested` [INFO] [stderr] --> src/client.rs:39:5 [INFO] [stderr] | [INFO] [stderr] 39 | pub(crate) fn send_interested(&mut self) -> Result<(), Error> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `send_not_interested` [INFO] [stderr] --> src/client.rs:48:5 [INFO] [stderr] | [INFO] [stderr] 48 | pub(crate) fn send_not_interested(&mut self) -> Result<(), Error> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `send_unchoke` [INFO] [stderr] --> src/client.rs:57:5 [INFO] [stderr] | [INFO] [stderr] 57 | pub(crate) fn send_unchoke(&mut self) -> Result<(), Error> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `send_have` [INFO] [stderr] --> src/client.rs:66:5 [INFO] [stderr] | [INFO] [stderr] 66 | pub(crate) fn send_have(&mut self, index: u32) -> Result<(), Error> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `complete_handshake` [INFO] [stderr] --> src/client.rs:93:4 [INFO] [stderr] | [INFO] [stderr] 93 | fn complete_handshake(conn: &mut TcpStream, info_hash: Vec, peer_id: Vec) -> Result{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `new_client` [INFO] [stderr] --> src/client.rs:111:4 [INFO] [stderr] | [INFO] [stderr] 111 | fn new_client(peer: Peer, peer_id: Vec, info_hash: Vec) -> Result{ [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static item is never used: `MAX_BLOCK_SIZE` [INFO] [stderr] --> src/p2p.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | static MAX_BLOCK_SIZE : u32 = 16384; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static item is never used: `MAX_BACK_LOG` [INFO] [stderr] --> src/p2p.rs:10:1 [INFO] [stderr] | [INFO] [stderr] 10 | static MAX_BACK_LOG : u32 = 5; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Torrent` [INFO] [stderr] --> src/p2p.rs:12:12 [INFO] [stderr] | [INFO] [stderr] 12 | pub struct Torrent { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `PieceWork` [INFO] [stderr] --> src/p2p.rs:22:12 [INFO] [stderr] | [INFO] [stderr] 22 | pub struct PieceWork { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `PieceResult` [INFO] [stderr] --> src/p2p.rs:28:12 [INFO] [stderr] | [INFO] [stderr] 28 | pub struct PieceResult { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `PieceProgress` [INFO] [stderr] --> src/p2p.rs:33:12 [INFO] [stderr] | [INFO] [stderr] 33 | pub struct PieceProgress { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `read_message` [INFO] [stderr] --> src/p2p.rs:43:5 [INFO] [stderr] | [INFO] [stderr] 43 | fn read_message(&mut self) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `attempt_download_piece` [INFO] [stderr] --> src/p2p.rs:91:4 [INFO] [stderr] | [INFO] [stderr] 91 | fn attempt_download_piece(c : &'static mut Client, pw : & PieceWork) -> Result, Error> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `check_integrity` [INFO] [stderr] --> src/p2p.rs:123:4 [INFO] [stderr] | [INFO] [stderr] 123 | fn check_integrity(pw : &PieceWork, buf : Vec) -> Result<(), Error>{ [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `receive_bitfield` [INFO] [stderr] --> src/main.rs:27:4 [INFO] [stderr] | [INFO] [stderr] 27 | fn receive_bitfield(conn: &mut TcpStream) -> Result{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `dummy_client` [INFO] [stderr] --> src/main.rs:37:4 [INFO] [stderr] | [INFO] [stderr] 37 | fn dummy_client(){ [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `handle_client` [INFO] [stderr] --> src/main.rs:78:8 [INFO] [stderr] | [INFO] [stderr] 78 | fn handle_client(mut stream: TcpStream) { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `create_client_server` [INFO] [stderr] --> src/main.rs:100:8 [INFO] [stderr] | [INFO] [stderr] 100 | fn create_client_server(){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:113:21 [INFO] [stderr] | [INFO] [stderr] 113 | worker.join(); [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/main.rs:114:21 [INFO] [stderr] | [INFO] [stderr] 114 | 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: structure field `ID` should have a snake case name [INFO] [stderr] --> src/message.rs:22:16 [INFO] [stderr] | [INFO] [stderr] 22 | 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:23:16 [INFO] [stderr] | [INFO] [stderr] 23 | pub(crate) Payload: Vec, [INFO] [stderr] | ^^^^^^^ help: convert the identifier to snake case: `payload` [INFO] [stderr] [INFO] [stderr] warning: variable `peerID_as_vec` should have a snake case name [INFO] [stderr] --> src/handshake.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | let mut peerID_as_vec: Vec = hs.peer_id.to_vec(); [INFO] [stderr] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `peer_id_as_vec` [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client.rs:216:21 [INFO] [stderr] | [INFO] [stderr] 216 | 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: 80 warnings emitted [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 11.15s [INFO] running `"docker" "inspect" "9092639a91cb72ae4da9fec69fb24a196d4b80377716166bbbe18733b80c51ac"` [INFO] running `"docker" "rm" "-f" "9092639a91cb72ae4da9fec69fb24a196d4b80377716166bbbe18733b80c51ac"` [INFO] [stdout] 9092639a91cb72ae4da9fec69fb24a196d4b80377716166bbbe18733b80c51ac