[INFO] cloning repository https://github.com/Ketankhunti/rtorrent
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Ketankhunti/rtorrent" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKetankhunti%2Frtorrent", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKetankhunti%2Frtorrent'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 30713551557defeb525bd599253f9bd8c0de2d10
[INFO] checking Ketankhunti/rtorrent against master#779e19d8baa3e3625bd4fc5c85cbb2ad47b43155 for pr-147589-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKetankhunti%2Frtorrent" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Ketankhunti/rtorrent
[INFO] finished tweaking git repo https://github.com/Ketankhunti/rtorrent
[INFO] tweaked toml for git repo https://github.com/Ketankhunti/rtorrent written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Ketankhunti/rtorrent on toolchain 779e19d8baa3e3625bd4fc5c85cbb2ad47b43155
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Ketankhunti/rtorrent already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded proc-macro2 v1.0.96
[INFO] [stderr]   Downloaded async-compression v0.4.27
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 0ddb4dfe579ce8f1a0c729e00eb961c8a1ed3c4d3984b668bdc6afca763a7e7b
[INFO] running `Command { std: "docker" "start" "-a" "0ddb4dfe579ce8f1a0c729e00eb961c8a1ed3c4d3984b668bdc6afca763a7e7b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "0ddb4dfe579ce8f1a0c729e00eb961c8a1ed3c4d3984b668bdc6afca763a7e7b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0ddb4dfe579ce8f1a0c729e00eb961c8a1ed3c4d3984b668bdc6afca763a7e7b", kill_on_drop: false }`
[INFO] [stdout] 0ddb4dfe579ce8f1a0c729e00eb961c8a1ed3c4d3984b668bdc6afca763a7e7b
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 574b1d85ae9ef337d9240df9d91289858b53989bd54f933aba7b399ded075451
[INFO] running `Command { std: "docker" "start" "-a" "574b1d85ae9ef337d9240df9d91289858b53989bd54f933aba7b399ded075451", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.96
[INFO] [stderr]    Compiling cc v1.2.32
[INFO] [stderr]    Compiling serde v1.0.219
[INFO] [stderr]    Compiling rustix v1.0.8
[INFO] [stderr]     Checking signal-hook v0.3.18
[INFO] [stderr]    Compiling litrs v0.4.2
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]     Checking urlencoding v2.1.3
[INFO] [stderr]     Checking signal-hook-mio v0.2.4
[INFO] [stderr]    Compiling document-features v0.2.11
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]    Compiling syn v2.0.104
[INFO] [stderr]    Compiling openssl-sys v0.9.109
[INFO] [stderr]    Compiling openssl v0.10.73
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.1
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling derive_more-impl v2.0.1
[INFO] [stderr]    Compiling async-trait v0.1.88
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.0
[INFO] [stderr]     Checking tokio v1.47.1
[INFO] [stderr]     Checking derive_more v2.0.1
[INFO] [stderr]     Checking crossterm v0.29.0
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking yoke v0.8.0
[INFO] [stderr]     Checking zerovec v0.11.4
[INFO] [stderr]     Checking zerotrie v0.2.2
[INFO] [stderr]     Checking tinystr v0.8.1
[INFO] [stderr]     Checking potential_utf v0.1.2
[INFO] [stderr]     Checking icu_collections v2.0.0
[INFO] [stderr]     Checking icu_locale_core v2.0.0
[INFO] [stderr]     Checking icu_provider v2.0.0
[INFO] [stderr]     Checking icu_properties v2.0.1
[INFO] [stderr]     Checking icu_normalizer v2.0.0
[INFO] [stderr]     Checking tokio-util v0.7.16
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking tower v0.5.2
[INFO] [stderr]     Checking async-compression v0.4.27
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.0.3
[INFO] [stderr]     Checking h2 v0.4.12
[INFO] [stderr]     Checking tower-http v0.6.6
[INFO] [stderr]     Checking url v2.5.4
[INFO] [stderr]     Checking hyper v1.6.0
[INFO] [stderr]     Checking hyper-util v0.1.16
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking reqwest v0.12.22
[INFO] [stderr]     Checking rtorrent v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::str::from_utf8`
[INFO] [stdout]  --> src/utils/mod.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::str::from_utf8;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `disk::DiskManager`
[INFO] [stdout]  --> src/torrent.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::{disk::DiskManager, errors::AppError, messages::{BroadcastMessage, ControlMessage, DiskEvent, DiskMessage, DownloadStats, Peer...
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/piece_manager.rs:2:19
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::peer::{self, Bitfield};
[INFO] [stdout]   |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ControlMessage`
[INFO] [stdout]  --> src/disk.rs:6:24
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::{messages::{ControlMessage, DiskEvent, DiskMessage}, storage::StorageManager};
[INFO] [stdout]   |                        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::from_utf8`
[INFO] [stdout]  --> src/utils/mod.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::str::from_utf8;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `disk::DiskManager`
[INFO] [stdout]  --> src/torrent.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::{disk::DiskManager, errors::AppError, messages::{BroadcastMessage, ControlMessage, DiskEvent, DiskMessage, DownloadStats, Peer...
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/piece_manager.rs:2:19
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::peer::{self, Bitfield};
[INFO] [stdout]   |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ControlMessage`
[INFO] [stdout]  --> src/disk.rs:6:24
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::{messages::{ControlMessage, DiskEvent, DiskMessage}, storage::StorageManager};
[INFO] [stdout]   |                        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/peer.rs:110:13
[INFO] [stdout]     |
[INFO] [stdout] 110 |         let mut keep_alive_tick = time::interval(Duration::from_secs(10));
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/peer.rs:243:13
[INFO] [stdout]     |
[INFO] [stdout] 243 |             _ => {}
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/peer.rs:243:13
[INFO] [stdout]     |
[INFO] [stdout] 217 |             ControlMessage::RequestBlock { piece_index, block_begin, block_length } => {
[INFO] [stdout]     |             ----------------------------------------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 225 |             ControlMessage::SendHave { piece_index } => {
[INFO] [stdout]     |             ---------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 230 |             ControlMessage::SendBlock { piece_index, block_begin, block_data } => {
[INFO] [stdout]     |             ------------------------------------------------------------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 243 |             _ => {}
[INFO] [stdout]     |             ^ collectively making this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/peer.rs:110:13
[INFO] [stdout]     |
[INFO] [stdout] 110 |         let mut keep_alive_tick = time::interval(Duration::from_secs(10));
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/peer.rs:243:13
[INFO] [stdout]     |
[INFO] [stdout] 243 |             _ => {}
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/peer.rs:243:13
[INFO] [stdout]     |
[INFO] [stdout] 217 |             ControlMessage::RequestBlock { piece_index, block_begin, block_length } => {
[INFO] [stdout]     |             ----------------------------------------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 225 |             ControlMessage::SendHave { piece_index } => {
[INFO] [stdout]     |             ---------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 230 |             ControlMessage::SendBlock { piece_index, block_begin, block_data } => {
[INFO] [stdout]     |             ------------------------------------------------------------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 243 |             _ => {}
[INFO] [stdout]     |             ^ collectively making this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_pieces`
[INFO] [stdout]   --> src/utils/mod.rs:89:9
[INFO] [stdout]    |
[INFO] [stdout] 89 |     let num_pieces = pieces_bytes.len() / 20;
[INFO] [stdout]    |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_pieces`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `keep_alive_tick`
[INFO] [stdout]    --> src/peer.rs:110:13
[INFO] [stdout]     |
[INFO] [stdout] 110 |         let mut keep_alive_tick = time::interval(Duration::from_secs(10));
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_keep_alive_tick`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `peer`
[INFO] [stdout]    --> src/peer.rs:295:51
[INFO] [stdout]     |
[INFO] [stdout] 295 |     async fn read_message(stream: &mut TcpStream, peer: &Peer) -> Result<PeerMessage, AppError> {
[INFO] [stdout]     |                                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_peer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `output_path`
[INFO] [stdout]   --> src/torrent.rs:58:9
[INFO] [stdout]    |
[INFO] [stdout] 58 |         output_path: &str,
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from_torrent_manager_rx`
[INFO] [stdout]   --> src/torrent.rs:91:34
[INFO] [stdout]    |
[INFO] [stdout] 91 |         let (to_disk_manager_tx, from_torrent_manager_rx) = mpsc::channel(100);
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_from_torrent_manager_rx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `to_torrent_manager_tx_disk`
[INFO] [stdout]   --> src/torrent.rs:93:14
[INFO] [stdout]    |
[INFO] [stdout] 93 |         let (to_torrent_manager_tx_disk, from_disk_manager_rx) = mpsc::channel(100); // NEW
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_to_torrent_manager_tx_disk`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_pieces`
[INFO] [stdout]   --> src/utils/mod.rs:89:9
[INFO] [stdout]    |
[INFO] [stdout] 89 |     let num_pieces = pieces_bytes.len() / 20;
[INFO] [stdout]    |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_pieces`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `disk_msg`
[INFO] [stdout]    --> src/torrent.rs:316:33
[INFO] [stdout]     |
[INFO] [stdout] 316 | ...                   let disk_msg = DiskMessage::WritePiece { piece_index, block_ids };
[INFO] [stdout]     |                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_disk_msg`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `peer_id`
[INFO] [stdout]    --> src/piece_manager.rs:112:22
[INFO] [stdout]     |
[INFO] [stdout] 112 |                 for (peer_id, bitfield) in &self.peer_bitfields {
[INFO] [stdout]     |                      ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_peer_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `interval`, `leechers`, and `seeders` are never read
[INFO] [stdout]    --> src/tracker.rs:273:5
[INFO] [stdout]     |
[INFO] [stdout] 270 | struct AnnounceResponse {
[INFO] [stdout]     |        ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 273 |     interval: u32,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 274 |     leechers: u32,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 275 |     seeders: u32,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `our_master_bitfield`, `we_are_unchoked`, and `we_are_interested` are never read
[INFO] [stdout]   --> src/peer.rs:65:5
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub struct PeerSession {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 65 |     our_master_bitfield: Arc<Mutex<Bitfield>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     we_are_unchoked: bool, // Are we unchoked by the peer?
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 69 |     // --- Our State ---
[INFO] [stdout] 70 |     we_are_interested: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_PIPELINED_REQUESTS` is never used
[INFO] [stdout]  --> src/torrent.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const MAX_PIPELINED_REQUESTS: usize = 5;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `request_next_blocks_for_peer` is never used
[INFO] [stdout]    --> src/torrent.rs:384:14
[INFO] [stdout]     |
[INFO] [stdout]  55 | impl TorrentManager{
[INFO] [stdout]     | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 384 |     async fn request_next_blocks_for_peer(&mut self, peer_id: &str) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `to_peers_tx` is never read
[INFO] [stdout]   --> src/peer_manager.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct PeerManager {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 25 |     to_peers_tx: Arc<Mutex<HashMap<String, mpsc::Sender<ControlMessage>>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `pending_requests` is never read
[INFO] [stdout]   --> src/piece_manager.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct PieceManager {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pending_requests: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `keep_alive_tick`
[INFO] [stdout]    --> src/peer.rs:110:13
[INFO] [stdout]     |
[INFO] [stdout] 110 |         let mut keep_alive_tick = time::interval(Duration::from_secs(10));
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_keep_alive_tick`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `peer`
[INFO] [stdout]    --> src/peer.rs:295:51
[INFO] [stdout]     |
[INFO] [stdout] 295 |     async fn read_message(stream: &mut TcpStream, peer: &Peer) -> Result<PeerMessage, AppError> {
[INFO] [stdout]     |                                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_peer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `output_path`
[INFO] [stdout]   --> src/torrent.rs:58:9
[INFO] [stdout]    |
[INFO] [stdout] 58 |         output_path: &str,
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from_torrent_manager_rx`
[INFO] [stdout]   --> src/torrent.rs:91:34
[INFO] [stdout]    |
[INFO] [stdout] 91 |         let (to_disk_manager_tx, from_torrent_manager_rx) = mpsc::channel(100);
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_from_torrent_manager_rx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `to_torrent_manager_tx_disk`
[INFO] [stdout]   --> src/torrent.rs:93:14
[INFO] [stdout]    |
[INFO] [stdout] 93 |         let (to_torrent_manager_tx_disk, from_disk_manager_rx) = mpsc::channel(100); // NEW
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_to_torrent_manager_tx_disk`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `disk_msg`
[INFO] [stdout]    --> src/torrent.rs:316:33
[INFO] [stdout]     |
[INFO] [stdout] 316 | ...                   let disk_msg = DiskMessage::WritePiece { piece_index, block_ids };
[INFO] [stdout]     |                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_disk_msg`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `peer_id`
[INFO] [stdout]    --> src/piece_manager.rs:112:22
[INFO] [stdout]     |
[INFO] [stdout] 112 |                 for (peer_id, bitfield) in &self.peer_bitfields {
[INFO] [stdout]     |                      ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_peer_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `interval`, `leechers`, and `seeders` are never read
[INFO] [stdout]    --> src/tracker.rs:273:5
[INFO] [stdout]     |
[INFO] [stdout] 270 | struct AnnounceResponse {
[INFO] [stdout]     |        ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 273 |     interval: u32,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 274 |     leechers: u32,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 275 |     seeders: u32,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `our_master_bitfield`, `we_are_unchoked`, and `we_are_interested` are never read
[INFO] [stdout]   --> src/peer.rs:65:5
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub struct PeerSession {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 65 |     our_master_bitfield: Arc<Mutex<Bitfield>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     we_are_unchoked: bool, // Are we unchoked by the peer?
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 69 |     // --- Our State ---
[INFO] [stdout] 70 |     we_are_interested: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_PIPELINED_REQUESTS` is never used
[INFO] [stdout]  --> src/torrent.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const MAX_PIPELINED_REQUESTS: usize = 5;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `request_next_blocks_for_peer` is never used
[INFO] [stdout]    --> src/torrent.rs:384:14
[INFO] [stdout]     |
[INFO] [stdout]  55 | impl TorrentManager{
[INFO] [stdout]     | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 384 |     async fn request_next_blocks_for_peer(&mut self, peer_id: &str) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `to_peers_tx` is never read
[INFO] [stdout]   --> src/peer_manager.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct PeerManager {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 25 |     to_peers_tx: Arc<Mutex<HashMap<String, mpsc::Sender<ControlMessage>>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `pending_requests` is never read
[INFO] [stdout]   --> src/piece_manager.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct PieceManager {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pending_requests: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 43.99s
[INFO] running `Command { std: "docker" "inspect" "574b1d85ae9ef337d9240df9d91289858b53989bd54f933aba7b399ded075451", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "574b1d85ae9ef337d9240df9d91289858b53989bd54f933aba7b399ded075451", kill_on_drop: false }`
[INFO] [stdout] 574b1d85ae9ef337d9240df9d91289858b53989bd54f933aba7b399ded075451
