[INFO] cloning repository https://github.com/Luj8n/rust_torrent [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Luj8n/rust_torrent" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FLuj8n%2Frust_torrent", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FLuj8n%2Frust_torrent'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 79e34fad70c316bdbc81a189cb12dc9410a1d05d [INFO] checking Luj8n/rust_torrent against master#0d56e340472882fa673d4b98d0802b9a799879d0 for pr-101692 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FLuj8n%2Frust_torrent" "/workspace/builds/worker-7/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-7/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/Luj8n/rust_torrent on toolchain 0d56e340472882fa673d4b98d0802b9a799879d0 [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+0d56e340472882fa673d4b98d0802b9a799879d0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/Luj8n/rust_torrent [INFO] finished tweaking git repo https://github.com/Luj8n/rust_torrent [INFO] tweaked toml for git repo https://github.com/Luj8n/rust_torrent written to /workspace/builds/worker-7/source/Cargo.toml [INFO] crate git repo https://github.com/Luj8n/rust_torrent already has a lockfile, it will not be regenerated [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+0d56e340472882fa673d4b98d0802b9a799879d0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded urlencoding v2.1.2 [INFO] [stderr] Downloaded unicode-ident v1.0.3 [INFO] [stderr] Downloaded lock_api v0.4.8 [INFO] [stderr] Downloaded reqwest v0.11.11 [INFO] [stderr] Downloaded wasm-bindgen v0.2.82 [INFO] [stderr] Downloaded wasm-bindgen-futures v0.4.32 [INFO] [stderr] Downloaded h2 v0.3.14 [INFO] [stderr] Downloaded url v2.3.0 [INFO] [stderr] Downloaded security-framework v2.7.0 [INFO] [stderr] Downloaded object v0.29.0 [INFO] [stderr] Downloaded sha1 v0.10.4 [INFO] [stderr] Downloaded wasm-bindgen-macro v0.2.82 [INFO] [stderr] Downloaded backtrace v0.3.66 [INFO] [stderr] Downloaded bip_bencode v0.4.4 [INFO] [stderr] Downloaded gimli v0.26.2 [INFO] [stderr] Downloaded web-sys v0.3.59 [INFO] [stderr] Downloaded socket2 v0.4.7 [INFO] [stderr] Downloaded js-sys v0.3.59 [INFO] [stderr] Downloaded wasm-bindgen-backend v0.2.82 [INFO] [stderr] Downloaded wasm-bindgen-shared v0.2.82 [INFO] [stderr] Downloaded wasm-bindgen-macro-support v0.2.82 [INFO] running `Command { std: "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" "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:824c28ce115f6b999260af6986f3384c158e782489540e41c0b698ca1d9fd927" "/opt/rustwide/cargo-home/bin/cargo" "+0d56e340472882fa673d4b98d0802b9a799879d0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 46c9f2d590027c86bb6870653fc0eea6a4b1965d5156f38112a5e23a6be24bf4 [INFO] running `Command { std: "docker" "start" "-a" "46c9f2d590027c86bb6870653fc0eea6a4b1965d5156f38112a5e23a6be24bf4", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "46c9f2d590027c86bb6870653fc0eea6a4b1965d5156f38112a5e23a6be24bf4", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "46c9f2d590027c86bb6870653fc0eea6a4b1965d5156f38112a5e23a6be24bf4", kill_on_drop: false }` [INFO] [stdout] 46c9f2d590027c86bb6870653fc0eea6a4b1965d5156f38112a5e23a6be24bf4 [INFO] running `Command { std: "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" "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:824c28ce115f6b999260af6986f3384c158e782489540e41c0b698ca1d9fd927" "/opt/rustwide/cargo-home/bin/cargo" "+0d56e340472882fa673d4b98d0802b9a799879d0" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 2fa9b2cb5217f82dd14157e4f8d681d7eec84500cf3a7b9b797d6a2f59171a0c [INFO] running `Command { std: "docker" "start" "-a" "2fa9b2cb5217f82dd14157e4f8d681d7eec84500cf3a7b9b797d6a2f59171a0c", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Compiling autocfg v1.1.0 [INFO] [stderr] Checking cfg-if v1.0.0 [INFO] [stderr] Compiling libc v0.2.132 [INFO] [stderr] Compiling proc-macro2 v1.0.43 [INFO] [stderr] Compiling unicode-ident v1.0.3 [INFO] [stderr] Compiling quote v1.0.21 [INFO] [stderr] Compiling syn v1.0.99 [INFO] [stderr] Checking once_cell v1.14.0 [INFO] [stderr] Compiling memchr v2.5.0 [INFO] [stderr] Compiling cc v1.0.73 [INFO] [stderr] Checking scopeguard v1.1.0 [INFO] [stderr] Checking pin-project-lite v0.2.9 [INFO] [stderr] Compiling log v0.4.17 [INFO] [stderr] Compiling futures-core v0.3.24 [INFO] [stderr] Compiling pkg-config v0.3.25 [INFO] [stderr] Compiling parking_lot_core v0.9.3 [INFO] [stderr] Checking futures-sink v0.3.24 [INFO] [stderr] Checking bytes v1.2.1 [INFO] [stderr] Checking smallvec v1.9.0 [INFO] [stderr] Compiling futures-channel v0.3.24 [INFO] [stderr] Compiling futures-task v0.3.24 [INFO] [stderr] Compiling futures-util v0.3.24 [INFO] [stderr] Compiling version_check v0.9.4 [INFO] [stderr] Compiling typenum v1.15.0 [INFO] [stderr] Checking pin-utils v0.1.0 [INFO] [stderr] Checking itoa v1.0.3 [INFO] [stderr] Compiling crossbeam-utils v0.8.11 [INFO] [stderr] Checking futures-io v0.3.24 [INFO] [stderr] Compiling openssl v0.10.41 [INFO] [stderr] Checking foreign-types-shared v0.1.1 [INFO] [stderr] Checking fnv v1.0.7 [INFO] [stderr] Checking matches v0.1.9 [INFO] [stderr] Checking tinyvec_macros v0.1.0 [INFO] [stderr] Compiling native-tls v0.2.10 [INFO] [stderr] Compiling httparse v1.8.0 [INFO] [stderr] Checking hashbrown v0.12.3 [INFO] [stderr] Checking bitflags v1.3.2 [INFO] [stderr] Checking percent-encoding v2.1.0 [INFO] [stderr] Checking try-lock v0.2.3 [INFO] [stderr] Compiling rayon-core v1.9.3 [INFO] [stderr] Checking gimli v0.26.2 [INFO] [stderr] Checking openssl-probe v0.1.5 [INFO] [stderr] Checking adler v1.0.2 [INFO] [stderr] Compiling serde v1.0.144 [INFO] [stderr] Compiling encoding_rs v0.8.31 [INFO] [stderr] Checking unicode-bidi v0.3.8 [INFO] [stderr] Checking httpdate v1.0.2 [INFO] [stderr] Checking rustc-demangle v0.1.21 [INFO] [stderr] Checking tower-service v0.3.2 [INFO] [stderr] Checking ryu v1.0.11 [INFO] [stderr] Checking ppv-lite86 v0.2.16 [INFO] [stderr] Compiling anyhow v1.0.64 [INFO] [stderr] Checking lazy_static v1.4.0 [INFO] [stderr] Checking cpufeatures v0.2.5 [INFO] [stderr] Checking mime v0.3.16 [INFO] [stderr] Checking either v1.8.0 [INFO] [stderr] Checking ipnet v2.5.0 [INFO] [stderr] Checking base64 v0.13.0 [INFO] [stderr] Checking urlencoding v2.1.2 [INFO] [stderr] Checking tracing-core v0.1.29 [INFO] [stderr] Checking http v0.2.8 [INFO] [stderr] Checking tinyvec v1.6.0 [INFO] [stderr] Checking miniz_oxide v0.5.4 [INFO] [stderr] Compiling generic-array v0.14.6 [INFO] [stderr] Compiling lock_api v0.4.8 [INFO] [stderr] Compiling slab v0.4.7 [INFO] [stderr] Compiling tokio v1.21.0 [INFO] [stderr] Compiling indexmap v1.9.1 [INFO] [stderr] Compiling memoffset v0.6.5 [INFO] [stderr] Compiling crossbeam-epoch v0.9.10 [INFO] [stderr] Compiling rayon v1.5.3 [INFO] [stderr] Checking foreign-types v0.3.2 [INFO] [stderr] Checking form_urlencoded v1.0.1 [INFO] [stderr] Checking tracing v0.1.36 [INFO] [stderr] Checking want v0.3.0 [INFO] [stderr] Checking crossbeam-channel v0.5.6 [INFO] [stderr] Checking http-body v0.4.5 [INFO] [stderr] Checking object v0.29.0 [INFO] [stderr] Checking unicode-normalization v0.1.21 [INFO] [stderr] Compiling openssl-sys v0.9.75 [INFO] [stderr] Compiling backtrace v0.3.66 [INFO] [stderr] Checking num_cpus v1.13.1 [INFO] [stderr] Checking mio v0.8.4 [INFO] [stderr] Checking signal-hook-registry v1.4.0 [INFO] [stderr] Checking socket2 v0.4.7 [INFO] [stderr] Checking getrandom v0.2.7 [INFO] [stderr] Checking parking_lot v0.12.1 [INFO] [stderr] Checking rand_core v0.6.3 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking idna v0.2.3 [INFO] [stderr] Checking addr2line v0.17.0 [INFO] [stderr] Checking crypto-common v0.1.6 [INFO] [stderr] Checking block-buffer v0.10.3 [INFO] [stderr] Checking digest v0.10.3 [INFO] [stderr] Checking sha1 v0.10.4 [INFO] [stderr] Checking url v2.3.0 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking error-chain v0.11.0 [INFO] [stderr] Checking bip_bencode v0.4.4 [INFO] [stderr] Checking crossbeam-deque v0.8.2 [INFO] [stderr] Compiling futures-macro v0.3.24 [INFO] [stderr] Compiling tokio-macros v1.8.0 [INFO] [stderr] Compiling openssl-macros v0.1.0 [INFO] [stderr] Checking futures-executor v0.3.24 [INFO] [stderr] Checking futures v0.3.24 [INFO] [stderr] Checking tokio-util v0.7.3 [INFO] [stderr] Checking tokio-native-tls v0.3.0 [INFO] [stderr] Checking h2 v0.3.14 [INFO] [stderr] Checking hyper v0.14.20 [INFO] [stderr] Checking hyper-tls v0.5.0 [INFO] [stderr] Checking reqwest v0.11.11 [INFO] [stderr] Checking rust_torrent v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `anyhow` [INFO] [stdout] --> src/peer.rs:1:14 [INFO] [stdout] | [INFO] [stdout] 1 | use anyhow::{anyhow, Result}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `anyhow` [INFO] [stdout] --> src/peer.rs:1:14 [INFO] [stdout] | [INFO] [stdout] 1 | use anyhow::{anyhow, Result}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bytes_read` [INFO] [stdout] --> src/file_manager.rs:57:17 [INFO] [stdout] | [INFO] [stdout] 57 | let bytes_read = file.read_at(&mut bytes, offset).unwrap(); [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bytes_read` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `n` [INFO] [stdout] --> src/peer.rs:178:22 [INFO] [stdout] | [INFO] [stdout] 178 | Ok(n) => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_n` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `hashed` [INFO] [stdout] --> src/peer.rs:266:31 [INFO] [stdout] | [INFO] [stdout] 266 | let hashed = sha1_hash(&block); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_hashed` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `stream` [INFO] [stdout] --> src/torrent.rs:186:15 [INFO] [stdout] | [INFO] [stdout] 186 | Ok((stream, socket)) = listener.accept() => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_stream` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `socket` [INFO] [stdout] --> src/torrent.rs:186:23 [INFO] [stdout] | [INFO] [stdout] 186 | Ok((stream, socket)) = listener.accept() => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_socket` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `event` [INFO] [stdout] --> src/torrent.rs:478:5 [INFO] [stdout] | [INFO] [stdout] 478 | event: Option, [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_event` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tracker_id` [INFO] [stdout] --> src/torrent.rs:479:5 [INFO] [stdout] | [INFO] [stdout] 479 | tracker_id: Option, [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tracker_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bytes_read` [INFO] [stdout] --> src/file_manager.rs:57:17 [INFO] [stdout] | [INFO] [stdout] 57 | let bytes_read = file.read_at(&mut bytes, offset).unwrap(); [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bytes_read` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `n` [INFO] [stdout] --> src/peer.rs:178:22 [INFO] [stdout] | [INFO] [stdout] 178 | Ok(n) => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_n` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `hashed` [INFO] [stdout] --> src/peer.rs:266:31 [INFO] [stdout] | [INFO] [stdout] 266 | let hashed = sha1_hash(&block); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_hashed` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `stream` [INFO] [stdout] --> src/torrent.rs:186:15 [INFO] [stdout] | [INFO] [stdout] 186 | Ok((stream, socket)) = listener.accept() => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_stream` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `socket` [INFO] [stdout] --> src/torrent.rs:186:23 [INFO] [stdout] | [INFO] [stdout] 186 | Ok((stream, socket)) = listener.accept() => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_socket` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `event` [INFO] [stdout] --> src/torrent.rs:478:5 [INFO] [stdout] | [INFO] [stdout] 478 | event: Option, [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_event` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tracker_id` [INFO] [stdout] --> src/torrent.rs:479:5 [INFO] [stdout] | [INFO] [stdout] 479 | tracker_id: Option, [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tracker_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `random_bytes` is never used [INFO] [stdout] --> src/bytes.rs:29:8 [INFO] [stdout] | [INFO] [stdout] 29 | pub fn random_bytes() -> [u8; 20] { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `encode_bytes` is never used [INFO] [stdout] --> src/bytes.rs:35:8 [INFO] [stdout] | [INFO] [stdout] 35 | pub fn encode_bytes(bytes: &[u8]) -> String { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `bytes_to_hexadecimal` is never used [INFO] [stdout] --> src/bytes.rs:49:8 [INFO] [stdout] | [INFO] [stdout] 49 | pub fn bytes_to_hexadecimal(bytes: &[u8]) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `nibble_to_hexadeximal` is never used [INFO] [stdout] --> src/bytes.rs:62:4 [INFO] [stdout] | [INFO] [stdout] 62 | fn nibble_to_hexadeximal(nibble: u8) -> char { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `BLOCK_SIZE` is never used [INFO] [stdout] --> src/constants.rs:1:11 [INFO] [stdout] | [INFO] [stdout] 1 | pub const BLOCK_SIZE: u32 = 1 << 14; // = 2^14 = 16KB [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_ALLOWED_BLOCK_SIZE` is never used [INFO] [stdout] --> src/constants.rs:2:11 [INFO] [stdout] | [INFO] [stdout] 2 | pub const MAX_ALLOWED_BLOCK_SIZE: u32 = 1 << 17; // = 2^17 = 128KB [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Write` and `Read` are never constructed [INFO] [stdout] --> src/file_manager.rs:13:3 [INFO] [stdout] | [INFO] [stdout] 12 | pub enum FileManagerMessage { [INFO] [stdout] | ------------------ variants in this enum [INFO] [stdout] 13 | Write { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 18 | Read { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FileManagerMessage` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/peer.rs:19:3 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct Peer { [INFO] [stdout] | ---- fields in this struct [INFO] [stdout] 19 | address: SocketAddr, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 20 | peer_id: Mutex>, // before handshake it's None [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 21 | [INFO] [stdout] 22 | am_choking: Mutex, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 23 | am_interested: Mutex, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 24 | peer_choking: Mutex, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 25 | peer_interested: Mutex, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 26 | [INFO] [stdout] 27 | downloaded_from: Mutex, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 28 | uploaded_to: Mutex, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 29 | downloaded_from_rate: Mutex, // bytes per second [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 30 | uploaded_to_rate: Mutex, // bytes per second [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 31 | [INFO] [stdout] 32 | piece_availability: Mutex>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 33 | [INFO] [stdout] 34 | torrent: Weak, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 35 | peer: Weak, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/peer.rs:39:10 [INFO] [stdout] | [INFO] [stdout] 39 | pub fn new(address: SocketAddr, torrent: Weak) -> Arc { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `start` is never used [INFO] [stdout] --> src/peer.rs:64:16 [INFO] [stdout] | [INFO] [stdout] 64 | pub async fn start(&self, stream: Option) -> Result<()> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `handshake_message` is never used [INFO] [stdout] --> src/peer.rs:320:10 [INFO] [stdout] | [INFO] [stdout] 320 | pub fn handshake_message(info_hash: &[u8; 20], peer_id: &[u8; 20]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `choke_message` is never used [INFO] [stdout] --> src/peer.rs:332:10 [INFO] [stdout] | [INFO] [stdout] 332 | pub fn choke_message() -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `unchoke_message` is never used [INFO] [stdout] --> src/peer.rs:341:10 [INFO] [stdout] | [INFO] [stdout] 341 | pub fn unchoke_message() -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `interested_message` is never used [INFO] [stdout] --> src/peer.rs:350:10 [INFO] [stdout] | [INFO] [stdout] 350 | pub fn interested_message() -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `not_interested_message` is never used [INFO] [stdout] --> src/peer.rs:359:10 [INFO] [stdout] | [INFO] [stdout] 359 | pub fn not_interested_message() -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `have_message` is never used [INFO] [stdout] --> src/peer.rs:368:10 [INFO] [stdout] | [INFO] [stdout] 368 | pub fn have_message(piece_index: u32) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `bitfield_message` is never used [INFO] [stdout] --> src/peer.rs:378:10 [INFO] [stdout] | [INFO] [stdout] 378 | pub fn bitfield_message(bitfield: &[bool]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `request_message` is never used [INFO] [stdout] --> src/peer.rs:402:10 [INFO] [stdout] | [INFO] [stdout] 402 | pub fn request_message(piece_index: u32, begin: u32, length: u32) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `piece_message` is never used [INFO] [stdout] --> src/peer.rs:414:10 [INFO] [stdout] | [INFO] [stdout] 414 | pub fn piece_message(piece_index: u32, begin: u32, block: &[u8]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `cancel_message` is never used [INFO] [stdout] --> src/peer.rs:426:10 [INFO] [stdout] | [INFO] [stdout] 426 | pub fn cancel_message(piece_index: u32, begin: u32, length: u32) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/torrent.rs:20:3 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct Torrent { [INFO] [stdout] | ------- fields in this struct [INFO] [stdout] 19 | pub metainfo: MetaInfo, [INFO] [stdout] 20 | port: u16, [INFO] [stdout] | ^^^^ [INFO] [stdout] 21 | pub peer_id: [u8; 20], [INFO] [stdout] 22 | files: Vec, // TODO: later add a feature to choose which files to download [INFO] [stdout] | ^^^^^ [INFO] [stdout] 23 | file_manager_sender: Sender, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 24 | [INFO] [stdout] 25 | bytes_uploaded: Mutex, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 26 | bytes_downloaded: Mutex, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 27 | peers: Mutex>>, // TODO: probably hashmap better [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 30 | torrent: Weak, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/torrent.rs:35:3 [INFO] [stdout] | [INFO] [stdout] 34 | pub struct TrackerResponse { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 35 | warning_message: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 36 | interval: u64, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 37 | min_interval: Option, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 38 | tracker_id: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 39 | complete: u64, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 40 | incomplete: u64, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 41 | peer_info: Vec, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TrackerResponse` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Started`, `Stopped` and `Completed` are never constructed [INFO] [stdout] --> src/torrent.rs:45:3 [INFO] [stdout] | [INFO] [stdout] 44 | pub enum TrackerEvent { [INFO] [stdout] | ------------ variants in this enum [INFO] [stdout] 45 | Started, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 46 | Stopped, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 47 | Completed, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `start_downloading` is never used [INFO] [stdout] --> src/torrent.rs:144:10 [INFO] [stdout] | [INFO] [stdout] 144 | pub fn start_downloading(&self) -> Sender { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `pause` is never used [INFO] [stdout] --> src/torrent.rs:204:16 [INFO] [stdout] | [INFO] [stdout] 204 | pub async fn pause(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `get_statistics` is never used [INFO] [stdout] --> src/torrent.rs:208:16 [INFO] [stdout] | [INFO] [stdout] 208 | pub async fn get_statistics(&self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `get_file_sections` is never used [INFO] [stdout] --> src/torrent.rs:212:6 [INFO] [stdout] | [INFO] [stdout] 212 | fn get_file_sections(&self, offset: u64, length: u64) -> Vec<(&FileInfo, u64, u64)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `check_piece_hash` is never used [INFO] [stdout] --> src/torrent.rs:241:12 [INFO] [stdout] | [INFO] [stdout] 241 | async fn check_piece_hash(&self, piece_index: u32) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `check_whole_hash` is never used [INFO] [stdout] --> src/torrent.rs:259:12 [INFO] [stdout] | [INFO] [stdout] 259 | async fn check_whole_hash(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `read_chunk` is never used [INFO] [stdout] --> src/torrent.rs:269:16 [INFO] [stdout] | [INFO] [stdout] 269 | pub async fn read_chunk(&self, piece_index: u32, offset: u64, length: u64) -> Vec { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `write_chunk` is never used [INFO] [stdout] --> src/torrent.rs:284:16 [INFO] [stdout] | [INFO] [stdout] 284 | pub async fn write_chunk(&self, piece_index: u32, offset: u64, bytes: Vec) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `write_data` is never used [INFO] [stdout] --> src/torrent.rs:305:12 [INFO] [stdout] | [INFO] [stdout] 305 | async fn write_data(&self, file_info: &FileInfo, offset: u64, bytes: Vec) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `read_data` is never used [INFO] [stdout] --> src/torrent.rs:317:12 [INFO] [stdout] | [INFO] [stdout] 317 | async fn read_data(&self, file_info: &FileInfo, offset: u64, length: u64) -> Vec { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `bytes_left` is never used [INFO] [stdout] --> src/torrent.rs:334:12 [INFO] [stdout] | [INFO] [stdout] 334 | async fn bytes_left(&self) -> u64 { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `request_tracker` is never used [INFO] [stdout] --> src/torrent.rs:345:12 [INFO] [stdout] | [INFO] [stdout] 345 | async fn request_tracker( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `request_tracker_http` is never used [INFO] [stdout] --> src/torrent.rs:366:12 [INFO] [stdout] | [INFO] [stdout] 366 | async fn request_tracker_http( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `request_tracker_udp` is never used [INFO] [stdout] --> src/torrent.rs:476:12 [INFO] [stdout] | [INFO] [stdout] 476 | async fn request_tracker_udp( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 45 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `random_bytes` is never used [INFO] [stdout] --> src/bytes.rs:29:8 [INFO] [stdout] | [INFO] [stdout] 29 | pub fn random_bytes() -> [u8; 20] { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `encode_bytes` is never used [INFO] [stdout] --> src/bytes.rs:35:8 [INFO] [stdout] | [INFO] [stdout] 35 | pub fn encode_bytes(bytes: &[u8]) -> String { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `bytes_to_hexadecimal` is never used [INFO] [stdout] --> src/bytes.rs:49:8 [INFO] [stdout] | [INFO] [stdout] 49 | pub fn bytes_to_hexadecimal(bytes: &[u8]) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `nibble_to_hexadeximal` is never used [INFO] [stdout] --> src/bytes.rs:62:4 [INFO] [stdout] | [INFO] [stdout] 62 | fn nibble_to_hexadeximal(nibble: u8) -> char { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `BLOCK_SIZE` is never used [INFO] [stdout] --> src/constants.rs:1:11 [INFO] [stdout] | [INFO] [stdout] 1 | pub const BLOCK_SIZE: u32 = 1 << 14; // = 2^14 = 16KB [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_ALLOWED_BLOCK_SIZE` is never used [INFO] [stdout] --> src/constants.rs:2:11 [INFO] [stdout] | [INFO] [stdout] 2 | pub const MAX_ALLOWED_BLOCK_SIZE: u32 = 1 << 17; // = 2^17 = 128KB [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Write` and `Read` are never constructed [INFO] [stdout] --> src/file_manager.rs:13:3 [INFO] [stdout] | [INFO] [stdout] 12 | pub enum FileManagerMessage { [INFO] [stdout] | ------------------ variants in this enum [INFO] [stdout] 13 | Write { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 18 | Read { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FileManagerMessage` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/peer.rs:19:3 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct Peer { [INFO] [stdout] | ---- fields in this struct [INFO] [stdout] 19 | address: SocketAddr, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 20 | peer_id: Mutex>, // before handshake it's None [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 21 | [INFO] [stdout] 22 | am_choking: Mutex, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 23 | am_interested: Mutex, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 24 | peer_choking: Mutex, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 25 | peer_interested: Mutex, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 26 | [INFO] [stdout] 27 | downloaded_from: Mutex, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 28 | uploaded_to: Mutex, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 29 | downloaded_from_rate: Mutex, // bytes per second [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 30 | uploaded_to_rate: Mutex, // bytes per second [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 31 | [INFO] [stdout] 32 | piece_availability: Mutex>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 33 | [INFO] [stdout] 34 | torrent: Weak, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 35 | peer: Weak, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/peer.rs:39:10 [INFO] [stdout] | [INFO] [stdout] 39 | pub fn new(address: SocketAddr, torrent: Weak) -> Arc { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `start` is never used [INFO] [stdout] --> src/peer.rs:64:16 [INFO] [stdout] | [INFO] [stdout] 64 | pub async fn start(&self, stream: Option) -> Result<()> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `handshake_message` is never used [INFO] [stdout] --> src/peer.rs:320:10 [INFO] [stdout] | [INFO] [stdout] 320 | pub fn handshake_message(info_hash: &[u8; 20], peer_id: &[u8; 20]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `choke_message` is never used [INFO] [stdout] --> src/peer.rs:332:10 [INFO] [stdout] | [INFO] [stdout] 332 | pub fn choke_message() -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `unchoke_message` is never used [INFO] [stdout] --> src/peer.rs:341:10 [INFO] [stdout] | [INFO] [stdout] 341 | pub fn unchoke_message() -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `interested_message` is never used [INFO] [stdout] --> src/peer.rs:350:10 [INFO] [stdout] | [INFO] [stdout] 350 | pub fn interested_message() -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `not_interested_message` is never used [INFO] [stdout] --> src/peer.rs:359:10 [INFO] [stdout] | [INFO] [stdout] 359 | pub fn not_interested_message() -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `have_message` is never used [INFO] [stdout] --> src/peer.rs:368:10 [INFO] [stdout] | [INFO] [stdout] 368 | pub fn have_message(piece_index: u32) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `bitfield_message` is never used [INFO] [stdout] --> src/peer.rs:378:10 [INFO] [stdout] | [INFO] [stdout] 378 | pub fn bitfield_message(bitfield: &[bool]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `request_message` is never used [INFO] [stdout] --> src/peer.rs:402:10 [INFO] [stdout] | [INFO] [stdout] 402 | pub fn request_message(piece_index: u32, begin: u32, length: u32) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `piece_message` is never used [INFO] [stdout] --> src/peer.rs:414:10 [INFO] [stdout] | [INFO] [stdout] 414 | pub fn piece_message(piece_index: u32, begin: u32, block: &[u8]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `cancel_message` is never used [INFO] [stdout] --> src/peer.rs:426:10 [INFO] [stdout] | [INFO] [stdout] 426 | pub fn cancel_message(piece_index: u32, begin: u32, length: u32) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/torrent.rs:20:3 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct Torrent { [INFO] [stdout] | ------- fields in this struct [INFO] [stdout] 19 | pub metainfo: MetaInfo, [INFO] [stdout] 20 | port: u16, [INFO] [stdout] | ^^^^ [INFO] [stdout] 21 | pub peer_id: [u8; 20], [INFO] [stdout] 22 | files: Vec, // TODO: later add a feature to choose which files to download [INFO] [stdout] | ^^^^^ [INFO] [stdout] 23 | file_manager_sender: Sender, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 24 | [INFO] [stdout] 25 | bytes_uploaded: Mutex, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 26 | bytes_downloaded: Mutex, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 27 | peers: Mutex>>, // TODO: probably hashmap better [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 30 | torrent: Weak, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/torrent.rs:35:3 [INFO] [stdout] | [INFO] [stdout] 34 | pub struct TrackerResponse { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 35 | warning_message: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 36 | interval: u64, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 37 | min_interval: Option, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 38 | tracker_id: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 39 | complete: u64, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 40 | incomplete: u64, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 41 | peer_info: Vec, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TrackerResponse` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Started`, `Stopped` and `Completed` are never constructed [INFO] [stdout] --> src/torrent.rs:45:3 [INFO] [stdout] | [INFO] [stdout] 44 | pub enum TrackerEvent { [INFO] [stdout] | ------------ variants in this enum [INFO] [stdout] 45 | Started, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 46 | Stopped, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 47 | Completed, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `start_downloading` is never used [INFO] [stdout] --> src/torrent.rs:144:10 [INFO] [stdout] | [INFO] [stdout] 144 | pub fn start_downloading(&self) -> Sender { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `pause` is never used [INFO] [stdout] --> src/torrent.rs:204:16 [INFO] [stdout] | [INFO] [stdout] 204 | pub async fn pause(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `get_statistics` is never used [INFO] [stdout] --> src/torrent.rs:208:16 [INFO] [stdout] | [INFO] [stdout] 208 | pub async fn get_statistics(&self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `get_file_sections` is never used [INFO] [stdout] --> src/torrent.rs:212:6 [INFO] [stdout] | [INFO] [stdout] 212 | fn get_file_sections(&self, offset: u64, length: u64) -> Vec<(&FileInfo, u64, u64)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `check_piece_hash` is never used [INFO] [stdout] --> src/torrent.rs:241:12 [INFO] [stdout] | [INFO] [stdout] 241 | async fn check_piece_hash(&self, piece_index: u32) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `check_whole_hash` is never used [INFO] [stdout] --> src/torrent.rs:259:12 [INFO] [stdout] | [INFO] [stdout] 259 | async fn check_whole_hash(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `read_chunk` is never used [INFO] [stdout] --> src/torrent.rs:269:16 [INFO] [stdout] | [INFO] [stdout] 269 | pub async fn read_chunk(&self, piece_index: u32, offset: u64, length: u64) -> Vec { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `write_chunk` is never used [INFO] [stdout] --> src/torrent.rs:284:16 [INFO] [stdout] | [INFO] [stdout] 284 | pub async fn write_chunk(&self, piece_index: u32, offset: u64, bytes: Vec) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `write_data` is never used [INFO] [stdout] --> src/torrent.rs:305:12 [INFO] [stdout] | [INFO] [stdout] 305 | async fn write_data(&self, file_info: &FileInfo, offset: u64, bytes: Vec) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `read_data` is never used [INFO] [stdout] --> src/torrent.rs:317:12 [INFO] [stdout] | [INFO] [stdout] 317 | async fn read_data(&self, file_info: &FileInfo, offset: u64, length: u64) -> Vec { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `bytes_left` is never used [INFO] [stdout] --> src/torrent.rs:334:12 [INFO] [stdout] | [INFO] [stdout] 334 | async fn bytes_left(&self) -> u64 { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `request_tracker` is never used [INFO] [stdout] --> src/torrent.rs:345:12 [INFO] [stdout] | [INFO] [stdout] 345 | async fn request_tracker( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `request_tracker_http` is never used [INFO] [stdout] --> src/torrent.rs:366:12 [INFO] [stdout] | [INFO] [stdout] 366 | async fn request_tracker_http( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `request_tracker_udp` is never used [INFO] [stdout] --> src/torrent.rs:476:12 [INFO] [stdout] | [INFO] [stdout] 476 | async fn request_tracker_udp( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 45 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 17.76s [INFO] running `Command { std: "docker" "inspect" "2fa9b2cb5217f82dd14157e4f8d681d7eec84500cf3a7b9b797d6a2f59171a0c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2fa9b2cb5217f82dd14157e4f8d681d7eec84500cf3a7b9b797d6a2f59171a0c", kill_on_drop: false }` [INFO] [stdout] 2fa9b2cb5217f82dd14157e4f8d681d7eec84500cf3a7b9b797d6a2f59171a0c