[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] building Ketankhunti/rtorrent against try#d79d87d4c0f7f0d0785ad6e493cf8cf718ed89a6 for pr-146237-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKetankhunti%2Frtorrent" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/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-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/Ketankhunti/rtorrent on toolchain d79d87d4c0f7f0d0785ad6e493cf8cf718ed89a6 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+d79d87d4c0f7f0d0785ad6e493cf8cf718ed89a6" "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" "+d79d87d4c0f7f0d0785ad6e493cf8cf718ed89a6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/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" "+d79d87d4c0f7f0d0785ad6e493cf8cf718ed89a6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 5e4464c7a6eabf4b796a5b7513063a74ee21bfe22a0bdf55b98ff73c5b0a373b [INFO] running `Command { std: "docker" "start" "-a" "5e4464c7a6eabf4b796a5b7513063a74ee21bfe22a0bdf55b98ff73c5b0a373b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "5e4464c7a6eabf4b796a5b7513063a74ee21bfe22a0bdf55b98ff73c5b0a373b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "5e4464c7a6eabf4b796a5b7513063a74ee21bfe22a0bdf55b98ff73c5b0a373b", kill_on_drop: false }` [INFO] [stdout] 5e4464c7a6eabf4b796a5b7513063a74ee21bfe22a0bdf55b98ff73c5b0a373b [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/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" "+d79d87d4c0f7f0d0785ad6e493cf8cf718ed89a6" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 752027cf0265e28c6c75936acb800fe65ef7b851b8cd41b4e0f512741eff7e1d [INFO] running `Command { std: "docker" "start" "-a" "752027cf0265e28c6c75936acb800fe65ef7b851b8cd41b4e0f512741eff7e1d", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.96 [INFO] [stderr] Compiling cc v1.2.32 [INFO] [stderr] Compiling futures-util v0.3.31 [INFO] [stderr] Compiling hashbrown v0.15.5 [INFO] [stderr] Compiling futures-channel v0.3.31 [INFO] [stderr] Compiling unicode-segmentation v1.12.0 [INFO] [stderr] Compiling brotli-decompressor v5.0.0 [INFO] [stderr] Compiling getrandom v0.3.3 [INFO] [stderr] Compiling serde v1.0.219 [INFO] [stderr] Compiling rustix v1.0.8 [INFO] [stderr] Compiling flate2 v1.1.2 [INFO] [stderr] Compiling crypto-common v0.1.6 [INFO] [stderr] Compiling litrs v0.4.2 [INFO] [stderr] Compiling signal-hook-mio v0.2.4 [INFO] [stderr] Compiling dashmap v6.1.0 [INFO] [stderr] Compiling urlencoding v2.1.3 [INFO] [stderr] Compiling rand_core v0.9.3 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling sha1 v0.10.6 [INFO] [stderr] Compiling convert_case v0.7.1 [INFO] [stderr] Compiling indexmap v2.10.0 [INFO] [stderr] Compiling rand_chacha v0.9.0 [INFO] [stderr] Compiling document-features v0.2.11 [INFO] [stderr] Compiling rand v0.9.2 [INFO] [stderr] Compiling brotli v8.0.1 [INFO] [stderr] Compiling quote v1.0.40 [INFO] [stderr] Compiling openssl-sys v0.9.109 [INFO] [stderr] Compiling syn v2.0.104 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling openssl v0.10.73 [INFO] [stderr] Compiling native-tls v0.2.14 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.0 [INFO] [stderr] Compiling zerovec-derive v0.11.1 [INFO] [stderr] Compiling tokio-macros v2.5.0 [INFO] [stderr] Compiling displaydoc v0.2.5 [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 tokio v1.47.1 [INFO] [stderr] Compiling derive_more v2.0.1 [INFO] [stderr] Compiling crossterm v0.29.0 [INFO] [stderr] Compiling zerofrom v0.1.6 [INFO] [stderr] Compiling yoke v0.8.0 [INFO] [stderr] Compiling zerovec v0.11.4 [INFO] [stderr] Compiling zerotrie v0.2.2 [INFO] [stderr] Compiling tinystr v0.8.1 [INFO] [stderr] Compiling potential_utf v0.1.2 [INFO] [stderr] Compiling icu_collections v2.0.0 [INFO] [stderr] Compiling icu_locale_core v2.0.0 [INFO] [stderr] Compiling icu_provider v2.0.0 [INFO] [stderr] Compiling icu_properties v2.0.1 [INFO] [stderr] Compiling icu_normalizer v2.0.0 [INFO] [stderr] Compiling tokio-util v0.7.16 [INFO] [stderr] Compiling tokio-native-tls v0.3.1 [INFO] [stderr] Compiling tower v0.5.2 [INFO] [stderr] Compiling async-compression v0.4.27 [INFO] [stderr] Compiling idna_adapter v1.2.1 [INFO] [stderr] Compiling idna v1.0.3 [INFO] [stderr] Compiling h2 v0.4.12 [INFO] [stderr] Compiling url v2.5.4 [INFO] [stderr] Compiling tower-http v0.6.6 [INFO] [stderr] Compiling hyper v1.6.0 [INFO] [stderr] Compiling hyper-util v0.1.16 [INFO] [stderr] Compiling hyper-tls v0.6.0 [INFO] [stderr] Compiling reqwest v0.12.22 [INFO] [stderr] Compiling 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 variable: `keep_alive_tick` [INFO] [stdout] --> src/peer.rs:110:17 [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] = note: `#[warn(unused_variables)]` (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: 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: 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: `peer` [INFO] [stdout] --> src/peer.rs:295:51 [INFO] [stdout] | [INFO] [stdout] 295 | async fn read_message(stream: &mut TcpStream, peer: &Peer) -> Result { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_peer` [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: 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] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 89 | let _num_pieces = pieces_bytes.len() / 20; [INFO] [stdout] | + [INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MAX_PIPELINED_REQUESTS` [INFO] [stdout] | [INFO] [stdout] 89 - let num_pieces = pieces_bytes.len() / 20; [INFO] [stdout] 89 + let torrent::MAX_PIPELINED_REQUESTS = pieces_bytes.len() / 20; [INFO] [stdout] | [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>, [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>>>, [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, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 40.57s [INFO] running `Command { std: "docker" "inspect" "752027cf0265e28c6c75936acb800fe65ef7b851b8cd41b4e0f512741eff7e1d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "752027cf0265e28c6c75936acb800fe65ef7b851b8cd41b4e0f512741eff7e1d", kill_on_drop: false }` [INFO] [stdout] 752027cf0265e28c6c75936acb800fe65ef7b851b8cd41b4e0f512741eff7e1d [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/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" "+d79d87d4c0f7f0d0785ad6e493cf8cf718ed89a6" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] dd83e7ba5e496d36b4ccda03007ec2bdb8dee9b26081e7b95670a6207c391025 [INFO] running `Command { std: "docker" "start" "-a" "dd83e7ba5e496d36b4ccda03007ec2bdb8dee9b26081e7b95670a6207c391025", kill_on_drop: false }` [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 variable: `keep_alive_tick` [INFO] [stdout] --> src/peer.rs:110:17 [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] = note: `#[warn(unused_variables)]` (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: 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: 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] [stderr] Compiling rtorrent v0.1.0 (/opt/rustwide/workdir) [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 { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_peer` [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: 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] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 89 | let _num_pieces = pieces_bytes.len() / 20; [INFO] [stdout] | + [INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MAX_PIPELINED_REQUESTS` [INFO] [stdout] | [INFO] [stdout] 89 - let num_pieces = pieces_bytes.len() / 20; [INFO] [stdout] 89 + let torrent::MAX_PIPELINED_REQUESTS = pieces_bytes.len() / 20; [INFO] [stdout] | [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>, [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>>>, [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, [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: 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 { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_peer` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (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: `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: `keep_alive_tick` [INFO] [stdout] --> src/peer.rs:110:17 [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: 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: 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: `num_pieces` [INFO] [stdout] --> src/utils/mod.rs:89:9 [INFO] [stdout] | [INFO] [stdout] 89 | let num_pieces = pieces_bytes.len() / 20; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 89 | let _num_pieces = pieces_bytes.len() / 20; [INFO] [stdout] | + [INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MAX_PIPELINED_REQUESTS` [INFO] [stdout] | [INFO] [stdout] 89 - let num_pieces = pieces_bytes.len() / 20; [INFO] [stdout] 89 + let torrent::MAX_PIPELINED_REQUESTS = pieces_bytes.len() / 20; [INFO] [stdout] | [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: 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: 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, [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>>>, [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: 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>, [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] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 1.59s [INFO] running `Command { std: "docker" "inspect" "dd83e7ba5e496d36b4ccda03007ec2bdb8dee9b26081e7b95670a6207c391025", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "dd83e7ba5e496d36b4ccda03007ec2bdb8dee9b26081e7b95670a6207c391025", kill_on_drop: false }` [INFO] [stdout] dd83e7ba5e496d36b4ccda03007ec2bdb8dee9b26081e7b95670a6207c391025