[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] 10b0104..b2506b2 master -> master [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] b2506b214647008483a3996ff6792a4967177f28 [INFO] testing itsuy/rust-torrent against beta-2020-06-03 for beta-1.45-1 [INFO] running `"git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fitsuy%2Frust-torrent" "/workspace/builds/worker-12/source"` [INFO] [stderr] Cloning into '/workspace/builds/worker-12/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/itsuy/rust-torrent on toolchain beta-2020-06-03 [INFO] running `"/workspace/cargo-home/bin/cargo" "+beta-2020-06-03" "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-12/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" "+beta-2020-06-03" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-12/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-12/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "MAP_USER_ID=0" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--network" "none" "rustops/crates-build-env" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2020-06-03" "build" "--frozen"` [INFO] [stdout] da83310a76f697d9f8a149183a8f7ea30f14d7a1522a97a726fae442091a89e5 [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] running `"docker" "start" "-a" "da83310a76f697d9f8a149183a8f7ea30f14d7a1522a97a726fae442091a89e5"` [INFO] [stderr] sudo: setrlimit(RLIMIT_CORE): Operation not permitted [INFO] [stderr] Compiling syn v1.0.15 [INFO] [stderr] Compiling tokio-macros v0.2.4 [INFO] [stderr] Compiling tokio v0.2.11 [INFO] [stderr] Compiling 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::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: 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:122:20 [INFO] [stderr] | [INFO] [stderr] 122 | 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:60:29 [INFO] [stderr] | [INFO] [stderr] 60 | 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:72:29 [INFO] [stderr] | [INFO] [stderr] 72 | 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: unused variable: `err` [INFO] [stderr] --> src/p2p.rs:155:21 [INFO] [stderr] | [INFO] [stderr] 155 | 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:165:21 [INFO] [stderr] | [INFO] [stderr] 165 | 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:175:21 [INFO] [stderr] | [INFO] [stderr] 175 | Err(e) => { [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `begin` [INFO] [stderr] --> src/p2p.rs:225:18 [INFO] [stderr] | [INFO] [stderr] 225 | let (begin, end) = self.calculate_bounds_for_piece(res.index); [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_begin` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `end` [INFO] [stderr] --> src/p2p.rs:225:25 [INFO] [stderr] | [INFO] [stderr] 225 | 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: 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/client.rs:68:13 [INFO] [stderr] | [INFO] [stderr] 68 | 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:80:17 [INFO] [stderr] | [INFO] [stderr] 80 | 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:95:9 [INFO] [stderr] | [INFO] [stderr] 95 | 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:105:9 [INFO] [stderr] | [INFO] [stderr] 105 | 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:128:9 [INFO] [stderr] | [INFO] [stderr] 128 | 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:214:17 [INFO] [stderr] | [INFO] [stderr] 214 | let mut workQueueCopy = workQueue.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/p2p.rs:215:17 [INFO] [stderr] | [INFO] [stderr] 215 | let mut resultsCopy = results.0.clone(); [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/p2p.rs:149:9 [INFO] [stderr] | [INFO] [stderr] 149 | c.lock().unwrap().send_unchoke(); [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/p2p.rs:150:9 [INFO] [stderr] | [INFO] [stderr] 150 | c.lock().unwrap().send_interested(); [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:177:21 [INFO] [stderr] | [INFO] [stderr] 177 | 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:182:21 [INFO] [stderr] | [INFO] [stderr] 182 | results.send(PieceResult{index: pindex2, buf: cbuf}); [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:210:13 [INFO] [stderr] | [INFO] [stderr] 210 | 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: 46 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 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:122:20 [INFO] [stderr] | [INFO] [stderr] 122 | 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:60:29 [INFO] [stderr] | [INFO] [stderr] 60 | 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:72:29 [INFO] [stderr] | [INFO] [stderr] 72 | 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: unused variable: `err` [INFO] [stderr] --> src/p2p.rs:155:21 [INFO] [stderr] | [INFO] [stderr] 155 | 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:165:21 [INFO] [stderr] | [INFO] [stderr] 165 | 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:175:21 [INFO] [stderr] | [INFO] [stderr] 175 | Err(e) => { [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `begin` [INFO] [stderr] --> src/p2p.rs:225:18 [INFO] [stderr] | [INFO] [stderr] 225 | let (begin, end) = self.calculate_bounds_for_piece(res.index); [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_begin` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `end` [INFO] [stderr] --> src/p2p.rs:225:25 [INFO] [stderr] | [INFO] [stderr] 225 | 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: 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:68:13 [INFO] [stderr] | [INFO] [stderr] 68 | 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:80:17 [INFO] [stderr] | [INFO] [stderr] 80 | 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:95:9 [INFO] [stderr] | [INFO] [stderr] 95 | 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:105:9 [INFO] [stderr] | [INFO] [stderr] 105 | 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:128:9 [INFO] [stderr] | [INFO] [stderr] 128 | 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:214:17 [INFO] [stderr] | [INFO] [stderr] 214 | let mut workQueueCopy = workQueue.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/p2p.rs:215:17 [INFO] [stderr] | [INFO] [stderr] 215 | let mut resultsCopy = results.0.clone(); [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: &mut 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 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 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 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 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 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 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 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 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 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: associated function is never used: `get_socket_address` [INFO] [stderr] --> src/peers.rs:15:19 [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:15:12 [INFO] [stderr] | [INFO] [stderr] 15 | pub struct Client{ [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function is never used: `read` [INFO] [stderr] --> src/client.rs:25:19 [INFO] [stderr] | [INFO] [stderr] 25 | pub(crate) fn read(&mut self) -> Result{ [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function is never used: `send_request` [INFO] [stderr] --> src/client.rs:32:19 [INFO] [stderr] | [INFO] [stderr] 32 | pub(crate) fn send_request(&mut self, index: &u32, begin: &u32, length: &u32) -> Result<(), Error>{ [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function is never used: `send_interested` [INFO] [stderr] --> src/client.rs:40:19 [INFO] [stderr] | [INFO] [stderr] 40 | pub(crate) fn send_interested(&mut self) -> Result<(), Error> { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function is never used: `send_not_interested` [INFO] [stderr] --> src/client.rs:49:19 [INFO] [stderr] | [INFO] [stderr] 49 | pub(crate) fn send_not_interested(&mut self) -> Result<(), Error> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function is never used: `send_unchoke` [INFO] [stderr] --> src/client.rs:58:19 [INFO] [stderr] | [INFO] [stderr] 58 | pub(crate) fn send_unchoke(&mut self) -> Result<(), Error> { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function is never used: `send_have` [INFO] [stderr] --> src/client.rs:67:19 [INFO] [stderr] | [INFO] [stderr] 67 | 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:75:4 [INFO] [stderr] | [INFO] [stderr] 75 | 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:94:4 [INFO] [stderr] | [INFO] [stderr] 94 | 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:114:15 [INFO] [stderr] | [INFO] [stderr] 114 | pub(crate) fn new_client(peer: &Peer, peer_id: &Vec, info_hash: &Vec) -> Result{ [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static is never used: `MAX_BLOCK_SIZE` [INFO] [stderr] --> src/p2p.rs:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | static MAX_BLOCK_SIZE : u32 = 16384; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static is never used: `MAX_BACK_LOG` [INFO] [stderr] --> src/p2p.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | static MAX_BACK_LOG : u32 = 5; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `PieceWork` [INFO] [stderr] --> src/p2p.rs:25:12 [INFO] [stderr] | [INFO] [stderr] 25 | pub struct PieceWork { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `PieceResult` [INFO] [stderr] --> src/p2p.rs:31:12 [INFO] [stderr] | [INFO] [stderr] 31 | pub struct PieceResult { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `PieceProgress` [INFO] [stderr] --> src/p2p.rs:36:12 [INFO] [stderr] | [INFO] [stderr] 36 | pub struct PieceProgress { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function is never used: `read_message` [INFO] [stderr] --> src/p2p.rs:46:8 [INFO] [stderr] | [INFO] [stderr] 46 | 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:95:4 [INFO] [stderr] | [INFO] [stderr] 95 | fn attempt_download_piece(c: Arc>, pw : & PieceWork) -> Result, Error> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `check_integrity` [INFO] [stderr] --> src/p2p.rs:127:4 [INFO] [stderr] | [INFO] [stderr] 127 | fn check_integrity(pw : &PieceWork, buf : Vec) -> Result<(), Error>{ [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function is never used: `start_download_work` [INFO] [stderr] --> src/p2p.rs:140:8 [INFO] [stderr] | [INFO] [stderr] 140 | fn start_download_work(&mut self, peer : Peer, workQueue : Arc, Receiver)>>, results : Sender) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function is never used: `calculate_bounds_for_piece` [INFO] [stderr] --> src/p2p.rs:188:8 [INFO] [stderr] | [INFO] [stderr] 188 | fn calculate_bounds_for_piece(&self, index : u32) -> (u32, u32){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function is never used: `calculate_piece_size` [INFO] [stderr] --> src/p2p.rs:197:8 [INFO] [stderr] | [INFO] [stderr] 197 | fn calculate_piece_size(&self, index : u32) -> u32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function is never used: `download` [INFO] [stderr] --> src/p2p.rs:202:8 [INFO] [stderr] | [INFO] [stderr] 202 | fn download(&'static mut self) -> 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: variable `workQueue` should have a snake case name [INFO] [stderr] --> src/p2p.rs:140:52 [INFO] [stderr] | [INFO] [stderr] 140 | fn start_download_work(&mut self, peer : Peer, workQueue : Arc, Receiver)>>, results : Sender) { [INFO] [stderr] | ^^^^^^^^^ help: convert the identifier to snake case: `work_queue` [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/p2p.rs:149:9 [INFO] [stderr] | [INFO] [stderr] 149 | c.lock().unwrap().send_unchoke(); [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:150:9 [INFO] [stderr] | [INFO] [stderr] 150 | c.lock().unwrap().send_interested(); [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:177:21 [INFO] [stderr] | [INFO] [stderr] 177 | 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:182:21 [INFO] [stderr] | [INFO] [stderr] 182 | results.send(PieceResult{index: pindex2, buf: cbuf}); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: variable `workQueue` should have a snake case name [INFO] [stderr] --> src/p2p.rs:204:13 [INFO] [stderr] | [INFO] [stderr] 204 | let workQueue: Arc, Receiver)>> = Arc::new(Mutex::new(mpsc::channel())); [INFO] [stderr] | ^^^^^^^^^ help: convert the identifier to snake case: `work_queue` [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/p2p.rs:210:13 [INFO] [stderr] | [INFO] [stderr] 210 | 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 `workQueueCopy` should have a snake case name [INFO] [stderr] --> src/p2p.rs:214:21 [INFO] [stderr] | [INFO] [stderr] 214 | let mut workQueueCopy = workQueue.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `work_queue_copy` [INFO] [stderr] [INFO] [stderr] warning: variable `resultsCopy` should have a snake case name [INFO] [stderr] --> src/p2p.rs:215:21 [INFO] [stderr] | [INFO] [stderr] 215 | let mut resultsCopy = results.0.clone(); [INFO] [stderr] | ^^^^^^^^^^^ help: convert the identifier to snake case: `results_copy` [INFO] [stderr] [INFO] [stderr] warning: 116 warnings emitted [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 26.65s [INFO] running `"docker" "inspect" "da83310a76f697d9f8a149183a8f7ea30f14d7a1522a97a726fae442091a89e5"` [INFO] running `"docker" "rm" "-f" "da83310a76f697d9f8a149183a8f7ea30f14d7a1522a97a726fae442091a89e5"` [INFO] [stdout] da83310a76f697d9f8a149183a8f7ea30f14d7a1522a97a726fae442091a89e5 [INFO] running `"docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-12/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-12/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "MAP_USER_ID=0" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--network" "none" "rustops/crates-build-env" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2020-06-03" "test" "--frozen" "--no-run"` [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] [stdout] 6ed604d5033f98e44bf791934180d181f6153d274f711a6fe0b99a6a33f05dd7 [INFO] running `"docker" "start" "-a" "6ed604d5033f98e44bf791934180d181f6153d274f711a6fe0b99a6a33f05dd7"` [INFO] [stderr] sudo: setrlimit(RLIMIT_CORE): Operation not permitted [INFO] [stderr] Compiling 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::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: 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:122:20 [INFO] [stderr] | [INFO] [stderr] 122 | 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:60:29 [INFO] [stderr] | [INFO] [stderr] 60 | 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:72:29 [INFO] [stderr] | [INFO] [stderr] 72 | 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: unused variable: `err` [INFO] [stderr] --> src/p2p.rs:155:21 [INFO] [stderr] | [INFO] [stderr] 155 | 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:165:21 [INFO] [stderr] | [INFO] [stderr] 165 | 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:175:21 [INFO] [stderr] | [INFO] [stderr] 175 | Err(e) => { [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `begin` [INFO] [stderr] --> src/p2p.rs:225:18 [INFO] [stderr] | [INFO] [stderr] 225 | let (begin, end) = self.calculate_bounds_for_piece(res.index); [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_begin` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `end` [INFO] [stderr] --> src/p2p.rs:225:25 [INFO] [stderr] | [INFO] [stderr] 225 | 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: 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/client.rs:68:13 [INFO] [stderr] | [INFO] [stderr] 68 | 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:80:17 [INFO] [stderr] | [INFO] [stderr] 80 | 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:95:9 [INFO] [stderr] | [INFO] [stderr] 95 | 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:105:9 [INFO] [stderr] | [INFO] [stderr] 105 | 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:128:9 [INFO] [stderr] | [INFO] [stderr] 128 | 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:214:17 [INFO] [stderr] | [INFO] [stderr] 214 | let mut workQueueCopy = workQueue.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/p2p.rs:215:17 [INFO] [stderr] | [INFO] [stderr] 215 | let mut resultsCopy = results.0.clone(); [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/p2p.rs:149:9 [INFO] [stderr] | [INFO] [stderr] 149 | c.lock().unwrap().send_unchoke(); [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/p2p.rs:150:9 [INFO] [stderr] | [INFO] [stderr] 150 | c.lock().unwrap().send_interested(); [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:177:21 [INFO] [stderr] | [INFO] [stderr] 177 | 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:182:21 [INFO] [stderr] | [INFO] [stderr] 182 | results.send(PieceResult{index: pindex2, buf: cbuf}); [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:210:13 [INFO] [stderr] | [INFO] [stderr] 210 | 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: 46 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::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:155:9 [INFO] [stderr] | [INFO] [stderr] 155 | use std::str::from_utf8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Receiver`, `Sender`, `channel` [INFO] [stderr] --> src/client.rs:156:27 [INFO] [stderr] | [INFO] [stderr] 156 | 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:157:9 [INFO] [stderr] | [INFO] [stderr] 157 | 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 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:155:9 [INFO] [stderr] | [INFO] [stderr] 155 | use std::str::from_utf8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Receiver`, `Sender`, `channel` [INFO] [stderr] --> src/client.rs:156:27 [INFO] [stderr] | [INFO] [stderr] 156 | 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:157:9 [INFO] [stderr] | [INFO] [stderr] 157 | 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] error[E0308]: mismatched types [INFO] [stderr] --> src/bitfield.rs:39:46 [INFO] [stderr] | [INFO] [stderr] 39 | assert_eq!(outputs[i], has_piece(&bf, i)) [INFO] [stderr] | ^^^ types differ in mutability [INFO] [stderr] | [INFO] [stderr] = note: expected mutable reference `&mut std::vec::Vec` [INFO] [stderr] found reference `&std::vec::Vec` [INFO] [stderr] [INFO] [stderr] error[E0308]: mismatched types [INFO] [stderr] --> src/bitfield.rs:39:46 [INFO] [stderr] | [INFO] [stderr] 39 | assert_eq!(outputs[i], has_piece(&bf, i)) [INFO] [stderr] | ^^^ types differ in mutability [INFO] [stderr] | [INFO] [stderr] = note: expected mutable reference `&mut std::vec::Vec` [INFO] [stderr] found reference `&std::vec::Vec` [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error; 21 warnings emitted [INFO] [stderr] [INFO] [stderr] For more information about this error, try `rustc --explain E0308`. [INFO] [stderr] error: could not compile `rust-torrent`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: aborting due to previous error; 23 warnings emitted [INFO] [stderr] [INFO] [stderr] For more information about this error, try `rustc --explain E0308`. [INFO] [stderr] error: build failed [INFO] running `"docker" "inspect" "6ed604d5033f98e44bf791934180d181f6153d274f711a6fe0b99a6a33f05dd7"` [INFO] running `"docker" "rm" "-f" "6ed604d5033f98e44bf791934180d181f6153d274f711a6fe0b99a6a33f05dd7"` [INFO] [stdout] 6ed604d5033f98e44bf791934180d181f6153d274f711a6fe0b99a6a33f05dd7