[INFO] cloning repository https://github.com/itsuy/rust-torrent [INFO] running `"git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/itsuy/rust-torrent" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fitsuy%2Frust-torrent"` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fitsuy%2Frust-torrent'... [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 12a95d9debae35e3b60f3ff591527cd785da1317 [INFO] checking itsuy/rust-torrent against try#13f916f63bc6575d5ff1f989237dfabe88981368 for pr-69880 [INFO] running `"git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fitsuy%2Frust-torrent" "/workspace/builds/worker-7/source"` [INFO] [stderr] Cloning into '/workspace/builds/worker-7/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/itsuy/rust-torrent on toolchain 13f916f63bc6575d5ff1f989237dfabe88981368 [INFO] running `"/workspace/cargo-home/bin/cargo" "+13f916f63bc6575d5ff1f989237dfabe88981368" "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-7/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" "+13f916f63bc6575d5ff1f989237dfabe88981368" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7/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" "+13f916f63bc6575d5ff1f989237dfabe88981368" "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] 4f01a3ae011a9ad36044ffe4d1b5e654389728574df5f3ab102a5186f7dcd880 [INFO] running `"docker" "start" "-a" "4f01a3ae011a9ad36044ffe4d1b5e654389728574df5f3ab102a5186f7dcd880"` [INFO] [stderr] Compiling syn v1.0.15 [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:6:6 [INFO] [stderr] | [INFO] [stderr] 6 | 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 imports: `BigEndian`, `ReadBytesExt` [INFO] [stderr] --> src/client.rs:2:17 [INFO] [stderr] | [INFO] [stderr] 2 | use byteorder::{ReadBytesExt, BigEndian}; [INFO] [stderr] | ^^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Ipv4Addr`, `SocketAddrV4`, `SocketAddr` [INFO] [stderr] --> src/client.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::time::Duration` [INFO] [stderr] --> src/client.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use std::time::Duration; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: value assigned to `input_pstr` is never read [INFO] [stderr] --> src/handshake.rs:63:25 [INFO] [stderr] | [INFO] [stderr] 63 | 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:17 [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:17 [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: `reader_error_change` [INFO] [stderr] --> src/client.rs:21:13 [INFO] [stderr] | [INFO] [stderr] 21 | let mut reader_error_change = false; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider prefixing with an underscore: `_reader_error_change` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `received` is never read [INFO] [stderr] --> src/client.rs:32:13 [INFO] [stderr] | [INFO] [stderr] 32 | let mut received = new_handshake(); [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: maybe it is overwritten before being read? [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/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:20:9 [INFO] [stderr] | [INFO] [stderr] 20 | let mut reader_error = Error::new(ErrorKind::InvalidData, "Reader 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:21:9 [INFO] [stderr] | [INFO] [stderr] 21 | let mut reader_error_change = false; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: structure field `ID` should have a snake case name [INFO] [stderr] --> src/message.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | 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:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | 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:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | 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 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:6:6 [INFO] [stderr] | [INFO] [stderr] 6 | 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 imports: `BigEndian`, `ReadBytesExt` [INFO] [stderr] --> src/client.rs:2:17 [INFO] [stderr] | [INFO] [stderr] 2 | use byteorder::{ReadBytesExt, BigEndian}; [INFO] [stderr] | ^^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Ipv4Addr`, `SocketAddrV4`, `SocketAddr` [INFO] [stderr] --> src/client.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::time::Duration` [INFO] [stderr] --> src/client.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use std::time::Duration; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: value assigned to `input_pstr` is never read [INFO] [stderr] --> src/handshake.rs:63:25 [INFO] [stderr] | [INFO] [stderr] 63 | 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:17 [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:17 [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: `reader_error_change` [INFO] [stderr] --> src/client.rs:21:13 [INFO] [stderr] | [INFO] [stderr] 21 | let mut reader_error_change = false; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider prefixing with an underscore: `_reader_error_change` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `received` is never read [INFO] [stderr] --> src/client.rs:32:13 [INFO] [stderr] | [INFO] [stderr] 32 | let mut received = new_handshake(); [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: maybe it is overwritten before being read? [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/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:20:9 [INFO] [stderr] | [INFO] [stderr] 20 | let mut reader_error = Error::new(ErrorKind::InvalidData, "Reader 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:21:9 [INFO] [stderr] | [INFO] [stderr] 21 | let mut reader_error_change = false; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: function is never used: `has_piece` [INFO] [stderr] --> src/bitfield.rs:6:8 [INFO] [stderr] | [INFO] [stderr] 6 | pub fn has_piece(bf: &Bitfield, index: usize) -> bool{ [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [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:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | static MESSAGE_CHOKE: messageID = 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static item is never used: `MESSAGE_UNCHOKE` [INFO] [stderr] --> src/message.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | static MESSAGE_UNCHOKE: messageID = 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static item is never used: `MESSAGE_INTERESTED` [INFO] [stderr] --> src/message.rs:10:1 [INFO] [stderr] | [INFO] [stderr] 10 | 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:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | 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:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | static MESSAGE_HAVE: messageID = 4; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static item is never used: `MESSAGE_BITFIELD` [INFO] [stderr] --> src/message.rs:13:1 [INFO] [stderr] | [INFO] [stderr] 13 | static MESSAGE_BITFIELD: messageID = 5; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static item is never used: `MESSAGE_REQUEST` [INFO] [stderr] --> src/message.rs:14:1 [INFO] [stderr] | [INFO] [stderr] 14 | static MESSAGE_REQUEST: messageID = 6; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static item is never used: `MESSAGE_PIECE` [INFO] [stderr] --> src/message.rs:15:1 [INFO] [stderr] | [INFO] [stderr] 15 | static MESSAGE_PIECE: messageID = 7; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static item is never used: `MESSAGE_CANCEL` [INFO] [stderr] --> src/message.rs:16:1 [INFO] [stderr] | [INFO] [stderr] 16 | static MESSAGE_CANCEL: messageID = 8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never read: `ID` [INFO] [stderr] --> src/message.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | ID: messageID, [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never read: `Payload` [INFO] [stderr] --> src/message.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | Payload: Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `format_request` [INFO] [stderr] --> src/message.rs:30:8 [INFO] [stderr] | [INFO] [stderr] 30 | 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:42:8 [INFO] [stderr] | [INFO] [stderr] 42 | 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:52:4 [INFO] [stderr] | [INFO] [stderr] 52 | 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:82:4 [INFO] [stderr] | [INFO] [stderr] 82 | fn parse_have(msg: &Message) -> Result{ [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `serialize` [INFO] [stderr] --> src/message.rs:93:4 [INFO] [stderr] | [INFO] [stderr] 93 | fn serialize(msg: &Message) -> Vec{ [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `read_message` [INFO] [stderr] --> src/message.rs:112:4 [INFO] [stderr] | [INFO] [stderr] 112 | fn read_message(reader: &mut Cursor>) -> Result{ [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `name` [INFO] [stderr] --> src/message.rs:150:4 [INFO] [stderr] | [INFO] [stderr] 150 | fn name(msg: &Message) -> String{ [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `string` [INFO] [stderr] --> src/message.rs:169:4 [INFO] [stderr] | [INFO] [stderr] 169 | 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: `serialize` [INFO] [stderr] --> src/handshake.rs:21:8 [INFO] [stderr] | [INFO] [stderr] 21 | pub fn serialize(hs: &Handshake) -> Vec{ [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `read_handshake` [INFO] [stderr] --> src/handshake.rs:35:8 [INFO] [stderr] | [INFO] [stderr] 35 | 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 | 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:10:12 [INFO] [stderr] | [INFO] [stderr] 10 | pub struct Client{ [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `complete_handshake` [INFO] [stderr] --> src/client.rs:19:4 [INFO] [stderr] | [INFO] [stderr] 19 | fn complete_handshake(mut conn: TcpStream, info_hash: Vec, peer_id: Vec) -> Result{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: structure field `ID` should have a snake case name [INFO] [stderr] --> src/message.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | 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:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | 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:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | 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] error[E0425]: cannot find function `new` in this scope [INFO] [stderr] --> src/handshake.rs:86:17 [INFO] [stderr] | [INFO] [stderr] 86 | let h = new(input_info_hash.to_vec(), input_peer_id.to_vec()); [INFO] [stderr] | ^^^ not found in this scope [INFO] [stderr] [INFO] [stderr] error[E0425]: cannot find function `new` in this scope [INFO] [stderr] --> src/handshake.rs:99:17 [INFO] [stderr] | [INFO] [stderr] 99 | let h = new(input_info_hash.to_vec(), input_peer_id.to_vec()); [INFO] [stderr] | ^^^ not found in this scope [INFO] [stderr] [INFO] [stderr] error[E0425]: cannot find function `new` in this scope [INFO] [stderr] --> src/handshake.rs:112:17 [INFO] [stderr] | [INFO] [stderr] 112 | let h = new(input_info_hash.to_vec(), input_peer_id.to_vec()); [INFO] [stderr] | ^^^ not found in this scope [INFO] [stderr] [INFO] [stderr] error[E0425]: cannot find function `new` in this scope [INFO] [stderr] --> src/handshake.rs:125:21 [INFO] [stderr] | [INFO] [stderr] 125 | let input = new(input_info_hash.to_vec(), input_peer_id.to_vec()); [INFO] [stderr] | ^^^ not found in this scope [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:6:6 [INFO] [stderr] | [INFO] [stderr] 6 | 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 imports: `BigEndian`, `ReadBytesExt` [INFO] [stderr] --> src/client.rs:2:17 [INFO] [stderr] | [INFO] [stderr] 2 | use byteorder::{ReadBytesExt, BigEndian}; [INFO] [stderr] | ^^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Ipv4Addr`, `SocketAddrV4`, `SocketAddr` [INFO] [stderr] --> src/client.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::time::Duration` [INFO] [stderr] --> src/client.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use std::time::Duration; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `super::*` [INFO] [stderr] --> src/client.rs:48:9 [INFO] [stderr] | [INFO] [stderr] 48 | use super::*; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `std::ops::Try`) [INFO] [stderr] --> src/client.rs:52:24 [INFO] [stderr] | [INFO] [stderr] 51 | / fn create_client_server(){ [INFO] [stderr] 52 | | let listener = TcpListener::bind("127.0.0.1:0")?; [INFO] [stderr] | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in a function that returns `()` [INFO] [stderr] 53 | | } [INFO] [stderr] | |_____- this function should return `Result` or `Option` to accept `?` [INFO] [stderr] | [INFO] [stderr] = help: the trait `std::ops::Try` is not implemented for `()` [INFO] [stderr] = note: required by `std::ops::Try::from_error` [INFO] [stderr] [INFO] [stderr] error: aborting due to 5 previous errors [INFO] [stderr] [INFO] [stderr] Some errors have detailed explanations: E0277, E0425. [INFO] [stderr] For more information about an error, try `rustc --explain E0277`. [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[E0425]: cannot find function `new` in this scope [INFO] [stderr] --> src/handshake.rs:86:17 [INFO] [stderr] | [INFO] [stderr] 86 | let h = new(input_info_hash.to_vec(), input_peer_id.to_vec()); [INFO] [stderr] | ^^^ not found in this scope [INFO] [stderr] [INFO] [stderr] error[E0425]: cannot find function `new` in this scope [INFO] [stderr] --> src/handshake.rs:99:17 [INFO] [stderr] | [INFO] [stderr] 99 | let h = new(input_info_hash.to_vec(), input_peer_id.to_vec()); [INFO] [stderr] | ^^^ not found in this scope [INFO] [stderr] [INFO] [stderr] error[E0425]: cannot find function `new` in this scope [INFO] [stderr] --> src/handshake.rs:112:17 [INFO] [stderr] | [INFO] [stderr] 112 | let h = new(input_info_hash.to_vec(), input_peer_id.to_vec()); [INFO] [stderr] | ^^^ not found in this scope [INFO] [stderr] [INFO] [stderr] error[E0425]: cannot find function `new` in this scope [INFO] [stderr] --> src/handshake.rs:125:21 [INFO] [stderr] | [INFO] [stderr] 125 | let input = new(input_info_hash.to_vec(), input_peer_id.to_vec()); [INFO] [stderr] | ^^^ not found in this scope [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:6:6 [INFO] [stderr] | [INFO] [stderr] 6 | 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 imports: `BigEndian`, `ReadBytesExt` [INFO] [stderr] --> src/client.rs:2:17 [INFO] [stderr] | [INFO] [stderr] 2 | use byteorder::{ReadBytesExt, BigEndian}; [INFO] [stderr] | ^^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Ipv4Addr`, `SocketAddrV4`, `SocketAddr` [INFO] [stderr] --> src/client.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::time::Duration` [INFO] [stderr] --> src/client.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use std::time::Duration; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `super::*` [INFO] [stderr] --> src/client.rs:48:9 [INFO] [stderr] | [INFO] [stderr] 48 | use super::*; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `std::ops::Try`) [INFO] [stderr] --> src/client.rs:52:24 [INFO] [stderr] | [INFO] [stderr] 51 | / fn create_client_server(){ [INFO] [stderr] 52 | | let listener = TcpListener::bind("127.0.0.1:0")?; [INFO] [stderr] | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in a function that returns `()` [INFO] [stderr] 53 | | } [INFO] [stderr] | |_____- this function should return `Result` or `Option` to accept `?` [INFO] [stderr] | [INFO] [stderr] = help: the trait `std::ops::Try` is not implemented for `()` [INFO] [stderr] = note: required by `std::ops::Try::from_error` [INFO] [stderr] [INFO] [stderr] error: aborting due to 5 previous errors [INFO] [stderr] [INFO] [stderr] Some errors have detailed explanations: E0277, E0425. [INFO] [stderr] For more information about an error, try `rustc --explain E0277`. [INFO] [stderr] error: could not compile `rust-torrent`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "4f01a3ae011a9ad36044ffe4d1b5e654389728574df5f3ab102a5186f7dcd880"` [INFO] running `"docker" "rm" "-f" "4f01a3ae011a9ad36044ffe4d1b5e654389728574df5f3ab102a5186f7dcd880"` [INFO] [stdout] 4f01a3ae011a9ad36044ffe4d1b5e654389728574df5f3ab102a5186f7dcd880