[INFO] crate bip_utracker 0.4.0 is already in cache [INFO] extracting crate bip_utracker 0.4.0 into work/ex/clippy-test-run/sources/stable/reg/bip_utracker/0.4.0 [INFO] extracting crate bip_utracker 0.4.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/bip_utracker/0.4.0 [INFO] validating manifest of bip_utracker-0.4.0 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of bip_utracker-0.4.0 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing bip_utracker-0.4.0 [INFO] removed 0 missing tests [INFO] finished frobbing bip_utracker-0.4.0 [INFO] frobbed toml for bip_utracker-0.4.0 written to work/ex/clippy-test-run/sources/stable/reg/bip_utracker/0.4.0/Cargo.toml [INFO] started frobbing bip_utracker-0.4.0 [INFO] removed 0 missing tests [INFO] finished frobbing bip_utracker-0.4.0 [INFO] frobbed toml for bip_utracker-0.4.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/bip_utracker/0.4.0/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting bip_utracker-0.4.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/bip_utracker/0.4.0:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 352b2787393b045d43826a82f733bf585fd14fcf22f8a29e0918224a662a3412 [INFO] running `"docker" "start" "-a" "352b2787393b045d43826a82f733bf585fd14fcf22f8a29e0918224a662a3412"` [INFO] [stderr] Checking miow v0.1.5 [INFO] [stderr] Checking bip_handshake v0.7.1 [INFO] [stderr] Checking mio v0.5.1 [INFO] [stderr] Checking umio v0.3.0 [INFO] [stderr] Checking bip_utracker v0.4.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/announce.rs:52:13 [INFO] [stderr] | [INFO] [stderr] 52 | peer_id: peer_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `peer_id` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/announce.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | state: state, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `state` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/announce.rs:54:13 [INFO] [stderr] | [INFO] [stderr] 54 | ip: ip, [INFO] [stderr] | ^^^^^^ help: replace it with: `ip` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/announce.rs:55:13 [INFO] [stderr] | [INFO] [stderr] 55 | key: key, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `key` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/announce.rs:56:13 [INFO] [stderr] | [INFO] [stderr] 56 | num_want: num_want, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `num_want` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/announce.rs:57:13 [INFO] [stderr] | [INFO] [stderr] 57 | port: port, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `port` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/announce.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | options: options, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `options` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/announce.rs:189:13 [INFO] [stderr] | [INFO] [stderr] 189 | interval: interval, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `interval` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/announce.rs:190:13 [INFO] [stderr] | [INFO] [stderr] 190 | leechers: leechers, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `leechers` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/announce.rs:191:13 [INFO] [stderr] | [INFO] [stderr] 191 | seeders: seeders, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `seeders` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/announce.rs:192:13 [INFO] [stderr] | [INFO] [stderr] 192 | peers: peers, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `peers` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/announce.rs:287:13 [INFO] [stderr] | [INFO] [stderr] 287 | event: event, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `event` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/announce.rs:52:13 [INFO] [stderr] | [INFO] [stderr] 52 | peer_id: peer_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `peer_id` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/announce.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | state: state, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `state` [INFO] [stderr] | [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/contact.rs:90:28 [INFO] [stderr] | [INFO] [stderr] 90 | CompactPeersIter { iter: iter } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/contact.rs:176:13 [INFO] [stderr] | [INFO] [stderr] 176 | peers: peers, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `peers` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/contact.rs:276:13 [INFO] [stderr] | [INFO] [stderr] 276 | peers: peers, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `peers` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/announce.rs:54:13 [INFO] [stderr] | [INFO] [stderr] 54 | ip: ip, [INFO] [stderr] | ^^^^^^ help: replace it with: `ip` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/announce.rs:55:13 [INFO] [stderr] | [INFO] [stderr] 55 | key: key, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `key` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/announce.rs:56:13 [INFO] [stderr] | [INFO] [stderr] 56 | num_want: num_want, [INFO] [stderr] --> src/option.rs:189:25 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `num_want` [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] 189 | URLDataOption { url_data: url_data } [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `url_data` [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/announce.rs:57:13 [INFO] [stderr] | [INFO] [stderr] 57 | port: port, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `port` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/announce.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | options: options, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `options` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/announce.rs:189:13 [INFO] [stderr] | [INFO] [stderr] 189 | interval: interval, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `interval` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/announce.rs:190:13 [INFO] [stderr] | [INFO] [stderr] 190 | leechers: leechers, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `leechers` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scrape.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | seeders: seeders, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `seeders` [INFO] [stderr] | [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/announce.rs:191:13 [INFO] [stderr] | [INFO] [stderr] 191 | seeders: seeders, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `seeders` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scrape.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | downloaded: downloaded, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `downloaded` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/announce.rs:192:13 [INFO] [stderr] | [INFO] [stderr] 192 | peers: peers, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `peers` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scrape.rs:26:13 [INFO] [stderr] | [INFO] [stderr] 26 | leechers: leechers, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `leechers` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/announce.rs:287:13 [INFO] [stderr] | [INFO] [stderr] 287 | event: event, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `event` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/client/dispatcher.rs:102:13 [INFO] [stderr] | [INFO] [stderr] 102 | port: port, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `port` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/client/dispatcher.rs:106:13 [INFO] [stderr] | [INFO] [stderr] 106 | limiter: limiter, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `limiter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/client/dispatcher.rs:343:13 [INFO] [stderr] | [INFO] [stderr] 343 | addr: addr, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `addr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/client/dispatcher.rs:345:13 [INFO] [stderr] | [INFO] [stderr] 345 | request: request, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `request` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/contact.rs:90:28 [INFO] [stderr] | [INFO] [stderr] 90 | CompactPeersIter { iter: iter } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `iter` [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/client/mod.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | token: token, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `token` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/client/mod.rs:43:13 [INFO] [stderr] | [INFO] [stderr] 43 | result: result, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `result` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/contact.rs:176:13 [INFO] [stderr] | [INFO] [stderr] 176 | peers: peers, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `peers` [INFO] [stderr] | [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/client/mod.rs:137:21 [INFO] [stderr] | [INFO] [stderr] 137 | limiter: limiter, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `limiter` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/client/mod.rs:205:13 [INFO] [stderr] | [INFO] [stderr] 205 | capacity: capacity, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `capacity` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/contact.rs:276:13 [INFO] [stderr] | [INFO] [stderr] 276 | peers: peers, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `peers` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/server/dispatcher.rs:60:28 [INFO] [stderr] | [INFO] [stderr] 60 | ServerDispatcher { handler: handler } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `handler` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/server/mod.rs:24:81 [INFO] [stderr] | [INFO] [stderr] 24 | dispatcher::create_dispatcher(bind, handler).map(|send| TrackerServer { send: send }) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `send` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/option.rs:189:25 [INFO] [stderr] | [INFO] [stderr] 189 | URLDataOption { url_data: url_data } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `url_data` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scrape.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | seeders: seeders, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `seeders` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scrape.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | downloaded: downloaded, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `downloaded` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scrape.rs:26:13 [INFO] [stderr] | [INFO] [stderr] 26 | leechers: leechers, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `leechers` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/client/dispatcher.rs:102:13 [INFO] [stderr] | [INFO] [stderr] 102 | port: port, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `port` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/client/dispatcher.rs:106:13 [INFO] [stderr] | [INFO] [stderr] 106 | limiter: limiter, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `limiter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/client/dispatcher.rs:343:13 [INFO] [stderr] | [INFO] [stderr] 343 | addr: addr, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `addr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/client/dispatcher.rs:345:13 [INFO] [stderr] | [INFO] [stderr] 345 | request: request, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `request` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/client/mod.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | token: token, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `token` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/client/mod.rs:43:13 [INFO] [stderr] | [INFO] [stderr] 43 | result: result, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `result` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/client/mod.rs:137:21 [INFO] [stderr] | [INFO] [stderr] 137 | limiter: limiter, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `limiter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/client/mod.rs:205:13 [INFO] [stderr] | [INFO] [stderr] 205 | capacity: capacity, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `capacity` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/server/dispatcher.rs:60:28 [INFO] [stderr] | [INFO] [stderr] 60 | ServerDispatcher { handler: handler } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `handler` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/server/mod.rs:24:81 [INFO] [stderr] | [INFO] [stderr] 24 | dispatcher::create_dispatcher(bind, handler).map(|send| TrackerServer { send: send }) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `send` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/request.rs:15:41 [INFO] [stderr] | [INFO] [stderr] 15 | pub const CONNECT_ID_PROTOCOL_ID: u64 = 0x41727101980; [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider: `0x0417_2710_1980` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/announce.rs:537:45 [INFO] [stderr] | [INFO] [stderr] 537 | let (downloaded, left, uploaded) = (123908, 12309123, 123123); [INFO] [stderr] | ^^^^^^ help: consider: `123_908` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/announce.rs:537:53 [INFO] [stderr] | [INFO] [stderr] 537 | let (downloaded, left, uploaded) = (123908, 12309123, 123123); [INFO] [stderr] | ^^^^^^^^ help: consider: `12_309_123` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/announce.rs:537:63 [INFO] [stderr] | [INFO] [stderr] 537 | let (downloaded, left, uploaded) = (123908, 12309123, 123123); [INFO] [stderr] | ^^^^^^ help: consider: `123_123` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/announce.rs:540:19 [INFO] [stderr] | [INFO] [stderr] 540 | let key = 234234; [INFO] [stderr] | ^^^^^^ help: consider: `234_234` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/announce.rs:575:46 [INFO] [stderr] | [INFO] [stderr] 575 | let (interval, leechers, seeders) = (213123, 3423423, 2342343); [INFO] [stderr] | ^^^^^^ help: consider: `213_123` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/announce.rs:575:54 [INFO] [stderr] | [INFO] [stderr] 575 | let (interval, leechers, seeders) = (213123, 3423423, 2342343); [INFO] [stderr] | ^^^^^^^ help: consider: `3_423_423` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/announce.rs:575:63 [INFO] [stderr] | [INFO] [stderr] 575 | let (interval, leechers, seeders) = (213123, 3423423, 2342343); [INFO] [stderr] | ^^^^^^^ help: consider: `2_342_343` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/announce.rs:598:45 [INFO] [stderr] | [INFO] [stderr] 598 | let (downloaded, left, uploaded) = (123908, 12309123, 123123); [INFO] [stderr] | ^^^^^^ help: consider: `123_908` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/announce.rs:598:53 [INFO] [stderr] | [INFO] [stderr] 598 | let (downloaded, left, uploaded) = (123908, 12309123, 123123); [INFO] [stderr] | ^^^^^^^^ help: consider: `12_309_123` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/announce.rs:598:63 [INFO] [stderr] | [INFO] [stderr] 598 | let (downloaded, left, uploaded) = (123908, 12309123, 123123); [INFO] [stderr] | ^^^^^^ help: consider: `123_123` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/announce.rs:747:45 [INFO] [stderr] | [INFO] [stderr] 747 | let (downloaded, left, uploaded) = (456789, 283465, 200000); [INFO] [stderr] | ^^^^^^ help: consider: `456_789` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/announce.rs:747:53 [INFO] [stderr] | [INFO] [stderr] 747 | let (downloaded, left, uploaded) = (456789, 283465, 200000); [INFO] [stderr] | ^^^^^^ help: consider: `283_465` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/announce.rs:747:61 [INFO] [stderr] | [INFO] [stderr] 747 | let (downloaded, left, uploaded) = (456789, 283465, 200000); [INFO] [stderr] | ^^^^^^ help: consider: `200_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/announce.rs:751:38 [INFO] [stderr] | [INFO] [stderr] 751 | let (key, num_want, port) = (255123, -102340, 1515); [INFO] [stderr] | ^^^^^^ help: consider: `255_123` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/announce.rs:751:47 [INFO] [stderr] | [INFO] [stderr] 751 | let (key, num_want, port) = (255123, -102340, 1515); [INFO] [stderr] | ^^^^^^ help: consider: `102_340` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/announce.rs:784:45 [INFO] [stderr] | [INFO] [stderr] 784 | let (downloaded, left, uploaded) = (456789, 283465, 200000); [INFO] [stderr] | ^^^^^^ help: consider: `456_789` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/announce.rs:784:53 [INFO] [stderr] | [INFO] [stderr] 784 | let (downloaded, left, uploaded) = (456789, 283465, 200000); [INFO] [stderr] | ^^^^^^ help: consider: `283_465` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/announce.rs:784:61 [INFO] [stderr] | [INFO] [stderr] 784 | let (downloaded, left, uploaded) = (456789, 283465, 200000); [INFO] [stderr] | ^^^^^^ help: consider: `200_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/announce.rs:786:36 [INFO] [stderr] | [INFO] [stderr] 786 | let (_, num_want, port) = (255123, -102340, 1515); [INFO] [stderr] | ^^^^^^ help: consider: `255_123` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/announce.rs:786:45 [INFO] [stderr] | [INFO] [stderr] 786 | let (_, num_want, port) = (255123, -102340, 1515); [INFO] [stderr] | ^^^^^^ help: consider: `102_340` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/announce.rs:866:45 [INFO] [stderr] | [INFO] [stderr] 866 | let (downloaded, left, uploaded) = (202340, 52340, 5043); [INFO] [stderr] | ^^^^^^ help: consider: `202_340` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/announce.rs:882:45 [INFO] [stderr] | [INFO] [stderr] 882 | let (downloaded, left, uploaded) = (202340, 52340, 5043); [INFO] [stderr] | ^^^^^^ help: consider: `202_340` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/request.rs:15:41 [INFO] [stderr] | [INFO] [stderr] 15 | pub const CONNECT_ID_PROTOCOL_ID: u64 = 0x41727101980; [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider: `0x0417_2710_1980` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/request.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 27 | / match self { [INFO] [stderr] 28 | | &RequestType::Connect => RequestType::Connect, [INFO] [stderr] 29 | | &RequestType::Announce(ref req) => RequestType::Announce(req.to_owned()), [INFO] [stderr] 30 | | &RequestType::Scrape(ref req) => RequestType::Scrape(req.to_owned()), [INFO] [stderr] 31 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 27 | match *self { [INFO] [stderr] 28 | RequestType::Connect => RequestType::Connect, [INFO] [stderr] 29 | RequestType::Announce(ref req) => RequestType::Announce(req.to_owned()), [INFO] [stderr] 30 | RequestType::Scrape(ref req) => RequestType::Scrape(req.to_owned()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/request.rs:66:9 [INFO] [stderr] | [INFO] [stderr] 66 | / match self.request_type() { [INFO] [stderr] 67 | | &RequestType::Connect => { [INFO] [stderr] 68 | | try!(writer.write_u32::(::CONNECT_ACTION_ID)); [INFO] [stderr] 69 | | try!(writer.write_u32::(self.transaction_id())); [INFO] [stderr] ... | [INFO] [stderr] 87 | | } [INFO] [stderr] 88 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 66 | match *self.request_type() { [INFO] [stderr] 67 | RequestType::Connect => { [INFO] [stderr] 68 | try!(writer.write_u32::(::CONNECT_ACTION_ID)); [INFO] [stderr] 69 | try!(writer.write_u32::(self.transaction_id())); [INFO] [stderr] 70 | } [INFO] [stderr] 71 | RequestType::Announce(ref req) => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/request.rs:121:1 [INFO] [stderr] | [INFO] [stderr] 121 | / fn parse_request<'a>(bytes: &'a [u8]) -> IResult<&'a [u8], TrackerRequest<'a>> { [INFO] [stderr] 122 | | switch!(bytes, tuple!(be_u64, be_u32, be_u32), [INFO] [stderr] 123 | | (CONNECT_ID_PROTOCOL_ID, ::CONNECT_ACTION_ID, tid) => value!( [INFO] [stderr] 124 | | TrackerRequest::new(CONNECT_ID_PROTOCOL_ID, tid, RequestType::Connect) [INFO] [stderr] ... | [INFO] [stderr] 135 | | ) [INFO] [stderr] 136 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/request.rs:122:5 [INFO] [stderr] | [INFO] [stderr] 122 | / switch!(bytes, tuple!(be_u64, be_u32, be_u32), [INFO] [stderr] 123 | | (CONNECT_ID_PROTOCOL_ID, ::CONNECT_ACTION_ID, tid) => value!( [INFO] [stderr] 124 | | TrackerRequest::new(CONNECT_ID_PROTOCOL_ID, tid, RequestType::Connect) [INFO] [stderr] 125 | | ) | [INFO] [stderr] ... | [INFO] [stderr] 134 | | }) [INFO] [stderr] 135 | | ) [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/response.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 27 | / match self { [INFO] [stderr] 28 | | &ResponseType::Connect(id) => ResponseType::Connect(id), [INFO] [stderr] 29 | | &ResponseType::Announce(ref res) => ResponseType::Announce(res.to_owned()), [INFO] [stderr] 30 | | &ResponseType::Scrape(ref res) => ResponseType::Scrape(res.to_owned()), [INFO] [stderr] 31 | | &ResponseType::Error(ref err) => ResponseType::Error(err.to_owned()), [INFO] [stderr] 32 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 27 | match *self { [INFO] [stderr] 28 | ResponseType::Connect(id) => ResponseType::Connect(id), [INFO] [stderr] 29 | ResponseType::Announce(ref res) => ResponseType::Announce(res.to_owned()), [INFO] [stderr] 30 | ResponseType::Scrape(ref res) => ResponseType::Scrape(res.to_owned()), [INFO] [stderr] 31 | ResponseType::Error(ref err) => ResponseType::Error(err.to_owned()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/response.rs:60:9 [INFO] [stderr] | [INFO] [stderr] 60 | / match self.response_type() { [INFO] [stderr] 61 | | &ResponseType::Connect(id) => { [INFO] [stderr] 62 | | try!(writer.write_u32::(::CONNECT_ACTION_ID)); [INFO] [stderr] 63 | | try!(writer.write_u32::(self.transaction_id())); [INFO] [stderr] ... | [INFO] [stderr] 89 | | } [INFO] [stderr] 90 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 60 | match *self.response_type() { [INFO] [stderr] 61 | ResponseType::Connect(id) => { [INFO] [stderr] 62 | try!(writer.write_u32::(::CONNECT_ACTION_ID)); [INFO] [stderr] 63 | try!(writer.write_u32::(self.transaction_id())); [INFO] [stderr] 64 | [INFO] [stderr] 65 | try!(writer.write_u64::(id)); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/response.rs:68:33 [INFO] [stderr] | [INFO] [stderr] 68 | let action_id = match req.peers() { [INFO] [stderr] | _________________________________^ [INFO] [stderr] 69 | | &CompactPeers::V4(_) => ::ANNOUNCE_IPV4_ACTION_ID, [INFO] [stderr] 70 | | &CompactPeers::V6(_) => ::ANNOUNCE_IPV6_ACTION_ID, [INFO] [stderr] 71 | | }; [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 68 | let action_id = match *req.peers() { [INFO] [stderr] 69 | CompactPeers::V4(_) => ::ANNOUNCE_IPV4_ACTION_ID, [INFO] [stderr] 70 | CompactPeers::V6(_) => ::ANNOUNCE_IPV6_ACTION_ID, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/response.rs:114:1 [INFO] [stderr] | [INFO] [stderr] 114 | / fn parse_response<'a>(bytes: &'a [u8]) -> IResult<&'a [u8], TrackerResponse<'a>> { [INFO] [stderr] 115 | | switch!(bytes, tuple!(be_u32, be_u32), [INFO] [stderr] 116 | | (::CONNECT_ACTION_ID, tid) => map!(be_u64, |cid| TrackerResponse::new(tid, ResponseType::Connect(cid)) ) | [INFO] [stderr] 117 | | (::ANNOUNCE_IPV4_ACTION_ID, tid) => map!(call!(AnnounceResponse::from_bytes_v4), |ann_res| { [INFO] [stderr] ... | [INFO] [stderr] 129 | | ) [INFO] [stderr] 130 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/response.rs:115:5 [INFO] [stderr] | [INFO] [stderr] 115 | / switch!(bytes, tuple!(be_u32, be_u32), [INFO] [stderr] 116 | | (::CONNECT_ACTION_ID, tid) => map!(be_u64, |cid| TrackerResponse::new(tid, ResponseType::Connect(cid)) ) | [INFO] [stderr] 117 | | (::ANNOUNCE_IPV4_ACTION_ID, tid) => map!(call!(AnnounceResponse::from_bytes_v4), |ann_res| { [INFO] [stderr] 118 | | TrackerResponse::new(tid, ResponseType::Announce(ann_res)) [INFO] [stderr] ... | [INFO] [stderr] 128 | | }) [INFO] [stderr] 129 | | ) [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/announce.rs:41:5 [INFO] [stderr] | [INFO] [stderr] 41 | / pub fn new(hash: InfoHash, [INFO] [stderr] 42 | | peer_id: PeerId, [INFO] [stderr] 43 | | state: ClientState, [INFO] [stderr] 44 | | ip: SourceIP, [INFO] [stderr] ... | [INFO] [stderr] 59 | | } [INFO] [stderr] 60 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/announce.rs:362:27 [INFO] [stderr] | [INFO] [stderr] 362 | pub fn write_bytes(&self, mut writer: W) -> io::Result<()> [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/announce.rs:371:18 [INFO] [stderr] | [INFO] [stderr] 371 | pub fn as_id(&self) -> i32 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/announce.rs:372:9 [INFO] [stderr] | [INFO] [stderr] 372 | / match self { [INFO] [stderr] 373 | | &AnnounceEvent::None => ANNOUNCE_NONE_EVENT, [INFO] [stderr] 374 | | &AnnounceEvent::Completed => ANNOUNCE_COMPLETED_EVENT, [INFO] [stderr] 375 | | &AnnounceEvent::Started => ANNOUNCE_STARTED_EVENT, [INFO] [stderr] 376 | | &AnnounceEvent::Stopped => ANNOUNCE_STOPPED_EVENT, [INFO] [stderr] 377 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 372 | match *self { [INFO] [stderr] 373 | AnnounceEvent::None => ANNOUNCE_NONE_EVENT, [INFO] [stderr] 374 | AnnounceEvent::Completed => ANNOUNCE_COMPLETED_EVENT, [INFO] [stderr] 375 | AnnounceEvent::Started => ANNOUNCE_STARTED_EVENT, [INFO] [stderr] 376 | AnnounceEvent::Stopped => ANNOUNCE_STOPPED_EVENT, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/announce.rs:382:5 [INFO] [stderr] | [INFO] [stderr] 382 | / switch!(bytes, be_i32, [INFO] [stderr] 383 | | ANNOUNCE_NONE_EVENT => value!(AnnounceEvent::None) | [INFO] [stderr] 384 | | ANNOUNCE_COMPLETED_EVENT => value!(AnnounceEvent::Completed) | [INFO] [stderr] 385 | | ANNOUNCE_STARTED_EVENT => value!(AnnounceEvent::Started) | [INFO] [stderr] 386 | | ANNOUNCE_STOPPED_EVENT => value!(AnnounceEvent::Stopped) [INFO] [stderr] 387 | | ) [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/announce.rs:420:9 [INFO] [stderr] | [INFO] [stderr] 420 | / match self { [INFO] [stderr] 421 | | &SourceIP::ImpliedV4 => self.write_bytes_slice(writer, &IMPLIED_IPV4_ID[..]), [INFO] [stderr] 422 | | &SourceIP::ImpliedV6 => self.write_bytes_slice(writer, &IMPLIED_IPV6_ID[..]), [INFO] [stderr] 423 | | &SourceIP::ExplicitV4(addr) => { [INFO] [stderr] ... | [INFO] [stderr] 428 | | } [INFO] [stderr] 429 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 420 | match *self { [INFO] [stderr] 421 | SourceIP::ImpliedV4 => self.write_bytes_slice(writer, &IMPLIED_IPV4_ID[..]), [INFO] [stderr] 422 | SourceIP::ImpliedV6 => self.write_bytes_slice(writer, &IMPLIED_IPV6_ID[..]), [INFO] [stderr] 423 | SourceIP::ExplicitV4(addr) => { [INFO] [stderr] 424 | self.write_bytes_slice(writer, &convert::ipv4_to_bytes_be(addr)[..]) [INFO] [stderr] 425 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/announce.rs:434:9 [INFO] [stderr] | [INFO] [stderr] 434 | / match self { [INFO] [stderr] 435 | | &SourceIP::ImpliedV6 => true, [INFO] [stderr] 436 | | &SourceIP::ExplicitV6(_) => true, [INFO] [stderr] 437 | | &SourceIP::ImpliedV4 => false, [INFO] [stderr] 438 | | &SourceIP::ExplicitV4(_) => false, [INFO] [stderr] 439 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 434 | match *self { [INFO] [stderr] 435 | SourceIP::ImpliedV6 => true, [INFO] [stderr] 436 | SourceIP::ExplicitV6(_) => true, [INFO] [stderr] 437 | SourceIP::ImpliedV4 => false, [INFO] [stderr] 438 | SourceIP::ExplicitV4(_) => false, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/announce.rs:463:38 [INFO] [stderr] | [INFO] [stderr] 463 | map!(count_fixed!(u8, be_u8, 4), |b| convert::bytes_be_to_ipv4(b)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `convert::bytes_be_to_ipv4` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/announce.rs:474:39 [INFO] [stderr] | [INFO] [stderr] 474 | map!(count_fixed!(u8, be_u8, 16), |b| convert::bytes_be_to_ipv6(b)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `convert::bytes_be_to_ipv6` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/announce.rs:495:27 [INFO] [stderr] | [INFO] [stderr] 495 | pub fn write_bytes(&self, mut writer: W) -> io::Result<()> [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/announce.rs:498:27 [INFO] [stderr] | [INFO] [stderr] 498 | let write_value = match self { [INFO] [stderr] | ___________________________^ [INFO] [stderr] 499 | | &DesiredPeers::Default => DEFAULT_NUM_WANT, [INFO] [stderr] 500 | | &DesiredPeers::Specified(count) => count, [INFO] [stderr] 501 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 498 | let write_value = match *self { [INFO] [stderr] 499 | DesiredPeers::Default => DEFAULT_NUM_WANT, [INFO] [stderr] 500 | DesiredPeers::Specified(count) => count, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/announce.rs:510:5 [INFO] [stderr] | [INFO] [stderr] 510 | / switch!(bytes, tuple!(be_i32, value!(true)), [INFO] [stderr] 511 | | (DEFAULT_NUM_WANT, true) => value!(DesiredPeers::Default) | [INFO] [stderr] 512 | | (specified_peers, true) => value!(DesiredPeers::Specified(specified_peers)) [INFO] [stderr] 513 | | ) [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/contact.rs:45:9 [INFO] [stderr] | [INFO] [stderr] 45 | / match self { [INFO] [stderr] 46 | | &CompactPeers::V4(ref peers) => peers.write_bytes(writer), [INFO] [stderr] 47 | | &CompactPeers::V6(ref peers) => peers.write_bytes(writer), [INFO] [stderr] 48 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 45 | match *self { [INFO] [stderr] 46 | CompactPeers::V4(ref peers) => peers.write_bytes(writer), [INFO] [stderr] 47 | CompactPeers::V6(ref peers) => peers.write_bytes(writer), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/contact.rs:52:5 [INFO] [stderr] | [INFO] [stderr] 52 | / pub fn iter<'b>(&'b self) -> CompactPeersIter<'b> { [INFO] [stderr] 53 | | match self { [INFO] [stderr] 54 | | &CompactPeers::V4(ref peers) => { [INFO] [stderr] 55 | | CompactPeersIter::new(CompactPeersIterType::V4(peers.iter())) [INFO] [stderr] ... | [INFO] [stderr] 60 | | } [INFO] [stderr] 61 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/contact.rs:53:9 [INFO] [stderr] | [INFO] [stderr] 53 | / match self { [INFO] [stderr] 54 | | &CompactPeers::V4(ref peers) => { [INFO] [stderr] 55 | | CompactPeersIter::new(CompactPeersIterType::V4(peers.iter())) [INFO] [stderr] 56 | | } [INFO] [stderr] ... | [INFO] [stderr] 59 | | } [INFO] [stderr] 60 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 53 | match *self { [INFO] [stderr] 54 | CompactPeers::V4(ref peers) => { [INFO] [stderr] 55 | CompactPeersIter::new(CompactPeersIterType::V4(peers.iter())) [INFO] [stderr] 56 | } [INFO] [stderr] 57 | CompactPeers::V6(ref peers) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/contact.rs:65:9 [INFO] [stderr] | [INFO] [stderr] 65 | / match self { [INFO] [stderr] 66 | | &CompactPeers::V4(ref peers) => CompactPeers::V4(peers.to_owned()), [INFO] [stderr] 67 | | &CompactPeers::V6(ref peers) => CompactPeers::V6(peers.to_owned()), [INFO] [stderr] 68 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 65 | match *self { [INFO] [stderr] 66 | CompactPeers::V4(ref peers) => CompactPeers::V4(peers.to_owned()), [INFO] [stderr] 67 | CompactPeers::V6(ref peers) => CompactPeers::V6(peers.to_owned()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/contact.rs:99:71 [INFO] [stderr] | [INFO] [stderr] 99 | CompactPeersIterType::V4(ref mut iter) => iter.next().map(|a| SocketAddr::V4(a)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `SocketAddr::V4` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/contact.rs:100:71 [INFO] [stderr] | [INFO] [stderr] 100 | CompactPeersIterType::V6(ref mut iter) => iter.next().map(|a| SocketAddr::V6(a)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `SocketAddr::V6` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `contact::CompactPeersV4<'a>` [INFO] [stderr] --> src/contact.rs:115:5 [INFO] [stderr] | [INFO] [stderr] 115 | / pub fn new() -> CompactPeersV4<'a> { [INFO] [stderr] 116 | | CompactPeersV4 { peers: Cow::Owned(Vec::new()) } [INFO] [stderr] 117 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 109 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/contact.rs:141:5 [INFO] [stderr] | [INFO] [stderr] 141 | / pub fn iter<'b>(&'b self) -> CompactPeersV4Iter<'b> { [INFO] [stderr] 142 | | CompactPeersV4Iter::new(&*self.peers) [INFO] [stderr] 143 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/contact.rs:151:1 [INFO] [stderr] | [INFO] [stderr] 151 | / fn parse_peers_v4<'a>(bytes: &'a [u8]) -> IResult<&'a [u8], CompactPeersV4<'a>> { [INFO] [stderr] 152 | | let remainder_bytes = bytes.len() % SOCKET_ADDR_V4_BYTES; [INFO] [stderr] 153 | | [INFO] [stderr] 154 | | if remainder_bytes != 0 { [INFO] [stderr] ... | [INFO] [stderr] 160 | | } [INFO] [stderr] 161 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `contact::CompactPeersV6<'a>` [INFO] [stderr] --> src/contact.rs:215:5 [INFO] [stderr] | [INFO] [stderr] 215 | / pub fn new() -> CompactPeersV6<'a> { [INFO] [stderr] 216 | | CompactPeersV6 { peers: Cow::Owned(Vec::new()) } [INFO] [stderr] 217 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 209 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/contact.rs:241:5 [INFO] [stderr] | [INFO] [stderr] 241 | / pub fn iter<'b>(&'b self) -> CompactPeersV6Iter<'b> { [INFO] [stderr] 242 | | CompactPeersV6Iter::new(&*self.peers) [INFO] [stderr] 243 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/contact.rs:251:1 [INFO] [stderr] | [INFO] [stderr] 251 | / fn parse_peers_v6<'a>(bytes: &'a [u8]) -> IResult<&'a [u8], CompactPeersV6<'a>> { [INFO] [stderr] 252 | | let remainder_bytes = bytes.len() % SOCKET_ADDR_V6_BYTES; [INFO] [stderr] 253 | | [INFO] [stderr] 254 | | if remainder_bytes != 0 { [INFO] [stderr] ... | [INFO] [stderr] 260 | | } [INFO] [stderr] 261 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `option::AnnounceOptions<'a>` [INFO] [stderr] --> src/option.rs:40:5 [INFO] [stderr] | [INFO] [stderr] 40 | / pub fn new() -> AnnounceOptions<'a> { [INFO] [stderr] 41 | | AnnounceOptions { raw_options: HashMap::new() } [INFO] [stderr] 42 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 34 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/option.rs:151:1 [INFO] [stderr] | [INFO] [stderr] 151 | / fn parse_no_option<'a>(bytes: &'a [u8]) -> IResult<&'a [u8], bool> { [INFO] [stderr] 152 | | map!(bytes, tag!([NO_OPERATION_BYTE]), |_| false) [INFO] [stderr] 153 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/option.rs:254:50 [INFO] [stderr] | [INFO] [stderr] 254 | let expected = [super::URL_DATA_BYTE, 2, 'A' as u8, 'A' as u8, super::END_OF_OPTIONS_BYTE]; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'A' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/option.rs:254:61 [INFO] [stderr] | [INFO] [stderr] 254 | let expected = [super::URL_DATA_BYTE, 2, 'A' as u8, 'A' as u8, super::END_OF_OPTIONS_BYTE]; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'A' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `scrape::ScrapeRequest<'a>` [INFO] [stderr] --> src/scrape.rs:70:5 [INFO] [stderr] | [INFO] [stderr] 70 | / pub fn new() -> ScrapeRequest<'a> { [INFO] [stderr] 71 | | ScrapeRequest { hashes: Cow::Owned(Vec::new()) } [INFO] [stderr] 72 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 64 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scrape.rs:96:5 [INFO] [stderr] | [INFO] [stderr] 96 | / pub fn iter<'b>(&'b self) -> ScrapeRequestIter<'b> { [INFO] [stderr] 97 | | ScrapeRequestIter::new(&*self.hashes) [INFO] [stderr] 98 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scrape.rs:106:1 [INFO] [stderr] | [INFO] [stderr] 106 | / fn parse_request<'a>(bytes: &'a [u8]) -> IResult<&'a [u8], ScrapeRequest<'a>> { [INFO] [stderr] 107 | | let remainder_bytes = bytes.len() % bt::INFO_HASH_LEN; [INFO] [stderr] 108 | | [INFO] [stderr] 109 | | if remainder_bytes != 0 { [INFO] [stderr] ... | [INFO] [stderr] 115 | | } [INFO] [stderr] 116 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `scrape::ScrapeResponse<'a>` [INFO] [stderr] --> src/scrape.rs:128:5 [INFO] [stderr] | [INFO] [stderr] 128 | / pub fn new() -> ScrapeResponse<'a> { [INFO] [stderr] 129 | | ScrapeResponse { stats: Cow::Owned(Vec::new()) } [INFO] [stderr] 130 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 122 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scrape.rs:163:5 [INFO] [stderr] | [INFO] [stderr] 163 | / pub fn iter<'b>(&'b self) -> ScrapeResponseIter<'b> { [INFO] [stderr] 164 | | ScrapeResponseIter::new(&*self.stats) [INFO] [stderr] 165 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scrape.rs:173:1 [INFO] [stderr] | [INFO] [stderr] 173 | / fn parse_response<'a>(bytes: &'a [u8]) -> IResult<&'a [u8], ScrapeResponse<'a>> { [INFO] [stderr] 174 | | let remainder_bytes = bytes.len() % SCRAPE_STATS_BYTES; [INFO] [stderr] 175 | | [INFO] [stderr] 176 | | if remainder_bytes != 0 { [INFO] [stderr] ... | [INFO] [stderr] 182 | | } [INFO] [stderr] 183 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: called `skip(x).next()` on an iterator. This is more succinctly expressed by calling `nth(x)` [INFO] [stderr] --> src/client/dispatcher.rs:114:31 [INFO] [stderr] | [INFO] [stderr] 114 | let next_token = *self.active_requests.keys().skip(token_index).next().unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::iter_skip_next)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/client/dispatcher.rs:174:9 [INFO] [stderr] | [INFO] [stderr] 174 | / if let &ResponseType::Connect(id) = response.response_type() { [INFO] [stderr] 175 | | self.id_cache.put(addr, id); [INFO] [stderr] 176 | | [INFO] [stderr] 177 | | self.active_requests.insert(token, conn_timer); [INFO] [stderr] ... | [INFO] [stderr] 200 | | } [INFO] [stderr] 201 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 174 | if let ResponseType::Connect(id) = *response.response_type() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/client/mod.rs:74:9 [INFO] [stderr] | [INFO] [stderr] 74 | / match self { [INFO] [stderr] 75 | | &ClientResponse::Announce(ref res) => Some(res), [INFO] [stderr] 76 | | &ClientResponse::Scrape(_) => None, [INFO] [stderr] 77 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 74 | match *self { [INFO] [stderr] 75 | ClientResponse::Announce(ref res) => Some(res), [INFO] [stderr] 76 | ClientResponse::Scrape(_) => None, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/client/mod.rs:86:9 [INFO] [stderr] | [INFO] [stderr] 86 | / match self { [INFO] [stderr] 87 | | &ClientResponse::Announce(_) => None, [INFO] [stderr] 88 | | &ClientResponse::Scrape(ref res) => Some(res), [INFO] [stderr] 89 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 86 | match *self { [INFO] [stderr] 87 | ClientResponse::Announce(_) => None, [INFO] [stderr] 88 | ClientResponse::Scrape(ref res) => Some(res), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/request.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 27 | / match self { [INFO] [stderr] 28 | | &RequestType::Connect => RequestType::Connect, [INFO] [stderr] 29 | | &RequestType::Announce(ref req) => RequestType::Announce(req.to_owned()), [INFO] [stderr] 30 | | &RequestType::Scrape(ref req) => RequestType::Scrape(req.to_owned()), [INFO] [stderr] 31 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 27 | match *self { [INFO] [stderr] 28 | RequestType::Connect => RequestType::Connect, [INFO] [stderr] 29 | RequestType::Announce(ref req) => RequestType::Announce(req.to_owned()), [INFO] [stderr] 30 | RequestType::Scrape(ref req) => RequestType::Scrape(req.to_owned()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/request.rs:66:9 [INFO] [stderr] | [INFO] [stderr] 66 | / match self.request_type() { [INFO] [stderr] 67 | | &RequestType::Connect => { [INFO] [stderr] 68 | | try!(writer.write_u32::(::CONNECT_ACTION_ID)); [INFO] [stderr] 69 | | try!(writer.write_u32::(self.transaction_id())); [INFO] [stderr] ... | [INFO] [stderr] 87 | | } [INFO] [stderr] 88 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 66 | match *self.request_type() { [INFO] [stderr] 67 | RequestType::Connect => { [INFO] [stderr] 68 | try!(writer.write_u32::(::CONNECT_ACTION_ID)); [INFO] [stderr] 69 | try!(writer.write_u32::(self.transaction_id())); [INFO] [stderr] 70 | } [INFO] [stderr] 71 | RequestType::Announce(ref req) => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/request.rs:121:1 [INFO] [stderr] | [INFO] [stderr] 121 | / fn parse_request<'a>(bytes: &'a [u8]) -> IResult<&'a [u8], TrackerRequest<'a>> { [INFO] [stderr] 122 | | switch!(bytes, tuple!(be_u64, be_u32, be_u32), [INFO] [stderr] 123 | | (CONNECT_ID_PROTOCOL_ID, ::CONNECT_ACTION_ID, tid) => value!( [INFO] [stderr] 124 | | TrackerRequest::new(CONNECT_ID_PROTOCOL_ID, tid, RequestType::Connect) [INFO] [stderr] ... | [INFO] [stderr] 135 | | ) [INFO] [stderr] 136 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/server/dispatcher.rs:71:9 [INFO] [stderr] | [INFO] [stderr] 71 | / match request.request_type() { [INFO] [stderr] 72 | | &RequestType::Connect => { [INFO] [stderr] 73 | | if conn_id == request::CONNECT_ID_PROTOCOL_ID { [INFO] [stderr] 74 | | self.forward_connect(provider, trans_id, addr); [INFO] [stderr] ... | [INFO] [stderr] 82 | | } [INFO] [stderr] 83 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 71 | match *request.request_type() { [INFO] [stderr] 72 | RequestType::Connect => { [INFO] [stderr] 73 | if conn_id == request::CONNECT_ID_PROTOCOL_ID { [INFO] [stderr] 74 | self.forward_connect(provider, trans_id, addr); [INFO] [stderr] 75 | } // TODO: Add Logging [INFO] [stderr] 76 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/request.rs:122:5 [INFO] [stderr] | [INFO] [stderr] 122 | / switch!(bytes, tuple!(be_u64, be_u32, be_u32), [INFO] [stderr] 123 | | (CONNECT_ID_PROTOCOL_ID, ::CONNECT_ACTION_ID, tid) => value!( [INFO] [stderr] 124 | | TrackerRequest::new(CONNECT_ID_PROTOCOL_ID, tid, RequestType::Connect) [INFO] [stderr] 125 | | ) | [INFO] [stderr] ... | [INFO] [stderr] 134 | | }) [INFO] [stderr] 135 | | ) [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/response.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 27 | / match self { [INFO] [stderr] 28 | | &ResponseType::Connect(id) => ResponseType::Connect(id), [INFO] [stderr] 29 | | &ResponseType::Announce(ref res) => ResponseType::Announce(res.to_owned()), [INFO] [stderr] 30 | | &ResponseType::Scrape(ref res) => ResponseType::Scrape(res.to_owned()), [INFO] [stderr] 31 | | &ResponseType::Error(ref err) => ResponseType::Error(err.to_owned()), [INFO] [stderr] 32 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 27 | match *self { [INFO] [stderr] 28 | ResponseType::Connect(id) => ResponseType::Connect(id), [INFO] [stderr] 29 | ResponseType::Announce(ref res) => ResponseType::Announce(res.to_owned()), [INFO] [stderr] 30 | ResponseType::Scrape(ref res) => ResponseType::Scrape(res.to_owned()), [INFO] [stderr] 31 | ResponseType::Error(ref err) => ResponseType::Error(err.to_owned()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/response.rs:60:9 [INFO] [stderr] | [INFO] [stderr] 60 | / match self.response_type() { [INFO] [stderr] 61 | | &ResponseType::Connect(id) => { [INFO] [stderr] 62 | | try!(writer.write_u32::(::CONNECT_ACTION_ID)); [INFO] [stderr] 63 | | try!(writer.write_u32::(self.transaction_id())); [INFO] [stderr] ... | [INFO] [stderr] 89 | | } [INFO] [stderr] 90 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 60 | match *self.response_type() { [INFO] [stderr] 61 | ResponseType::Connect(id) => { [INFO] [stderr] 62 | try!(writer.write_u32::(::CONNECT_ACTION_ID)); [INFO] [stderr] 63 | try!(writer.write_u32::(self.transaction_id())); [INFO] [stderr] 64 | [INFO] [stderr] 65 | try!(writer.write_u64::(id)); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/response.rs:68:33 [INFO] [stderr] | [INFO] [stderr] 68 | let action_id = match req.peers() { [INFO] [stderr] | _________________________________^ [INFO] [stderr] 69 | | &CompactPeers::V4(_) => ::ANNOUNCE_IPV4_ACTION_ID, [INFO] [stderr] 70 | | &CompactPeers::V6(_) => ::ANNOUNCE_IPV6_ACTION_ID, [INFO] [stderr] 71 | | }; [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 68 | let action_id = match *req.peers() { [INFO] [stderr] 69 | CompactPeers::V4(_) => ::ANNOUNCE_IPV4_ACTION_ID, [INFO] [stderr] 70 | CompactPeers::V6(_) => ::ANNOUNCE_IPV6_ACTION_ID, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/response.rs:114:1 [INFO] [stderr] | [INFO] [stderr] 114 | / fn parse_response<'a>(bytes: &'a [u8]) -> IResult<&'a [u8], TrackerResponse<'a>> { [INFO] [stderr] 115 | | switch!(bytes, tuple!(be_u32, be_u32), [INFO] [stderr] 116 | | (::CONNECT_ACTION_ID, tid) => map!(be_u64, |cid| TrackerResponse::new(tid, ResponseType::Connect(cid)) ) | [INFO] [stderr] 117 | | (::ANNOUNCE_IPV4_ACTION_ID, tid) => map!(call!(AnnounceResponse::from_bytes_v4), |ann_res| { [INFO] [stderr] ... | [INFO] [stderr] 129 | | ) [INFO] [stderr] 130 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/response.rs:115:5 [INFO] [stderr] | [INFO] [stderr] 115 | / switch!(bytes, tuple!(be_u32, be_u32), [INFO] [stderr] 116 | | (::CONNECT_ACTION_ID, tid) => map!(be_u64, |cid| TrackerResponse::new(tid, ResponseType::Connect(cid)) ) | [INFO] [stderr] 117 | | (::ANNOUNCE_IPV4_ACTION_ID, tid) => map!(call!(AnnounceResponse::from_bytes_v4), |ann_res| { [INFO] [stderr] 118 | | TrackerResponse::new(tid, ResponseType::Announce(ann_res)) [INFO] [stderr] ... | [INFO] [stderr] 128 | | }) [INFO] [stderr] 129 | | ) [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/announce.rs:41:5 [INFO] [stderr] | [INFO] [stderr] 41 | / pub fn new(hash: InfoHash, [INFO] [stderr] 42 | | peer_id: PeerId, [INFO] [stderr] 43 | | state: ClientState, [INFO] [stderr] 44 | | ip: SourceIP, [INFO] [stderr] ... | [INFO] [stderr] 59 | | } [INFO] [stderr] 60 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/announce.rs:362:27 [INFO] [stderr] | [INFO] [stderr] 362 | pub fn write_bytes(&self, mut writer: W) -> io::Result<()> [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/announce.rs:371:18 [INFO] [stderr] | [INFO] [stderr] 371 | pub fn as_id(&self) -> i32 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/announce.rs:372:9 [INFO] [stderr] | [INFO] [stderr] 372 | / match self { [INFO] [stderr] 373 | | &AnnounceEvent::None => ANNOUNCE_NONE_EVENT, [INFO] [stderr] 374 | | &AnnounceEvent::Completed => ANNOUNCE_COMPLETED_EVENT, [INFO] [stderr] 375 | | &AnnounceEvent::Started => ANNOUNCE_STARTED_EVENT, [INFO] [stderr] 376 | | &AnnounceEvent::Stopped => ANNOUNCE_STOPPED_EVENT, [INFO] [stderr] 377 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 372 | match *self { [INFO] [stderr] 373 | AnnounceEvent::None => ANNOUNCE_NONE_EVENT, [INFO] [stderr] 374 | AnnounceEvent::Completed => ANNOUNCE_COMPLETED_EVENT, [INFO] [stderr] 375 | AnnounceEvent::Started => ANNOUNCE_STARTED_EVENT, [INFO] [stderr] 376 | AnnounceEvent::Stopped => ANNOUNCE_STOPPED_EVENT, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/announce.rs:382:5 [INFO] [stderr] | [INFO] [stderr] 382 | / switch!(bytes, be_i32, [INFO] [stderr] 383 | | ANNOUNCE_NONE_EVENT => value!(AnnounceEvent::None) | [INFO] [stderr] 384 | | ANNOUNCE_COMPLETED_EVENT => value!(AnnounceEvent::Completed) | [INFO] [stderr] 385 | | ANNOUNCE_STARTED_EVENT => value!(AnnounceEvent::Started) | [INFO] [stderr] 386 | | ANNOUNCE_STOPPED_EVENT => value!(AnnounceEvent::Stopped) [INFO] [stderr] 387 | | ) [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/announce.rs:420:9 [INFO] [stderr] | [INFO] [stderr] 420 | / match self { [INFO] [stderr] 421 | | &SourceIP::ImpliedV4 => self.write_bytes_slice(writer, &IMPLIED_IPV4_ID[..]), [INFO] [stderr] 422 | | &SourceIP::ImpliedV6 => self.write_bytes_slice(writer, &IMPLIED_IPV6_ID[..]), [INFO] [stderr] 423 | | &SourceIP::ExplicitV4(addr) => { [INFO] [stderr] ... | [INFO] [stderr] 428 | | } [INFO] [stderr] 429 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 420 | match *self { [INFO] [stderr] 421 | SourceIP::ImpliedV4 => self.write_bytes_slice(writer, &IMPLIED_IPV4_ID[..]), [INFO] [stderr] 422 | SourceIP::ImpliedV6 => self.write_bytes_slice(writer, &IMPLIED_IPV6_ID[..]), [INFO] [stderr] 423 | SourceIP::ExplicitV4(addr) => { [INFO] [stderr] 424 | self.write_bytes_slice(writer, &convert::ipv4_to_bytes_be(addr)[..]) [INFO] [stderr] 425 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/announce.rs:434:9 [INFO] [stderr] | [INFO] [stderr] 434 | / match self { [INFO] [stderr] 435 | | &SourceIP::ImpliedV6 => true, [INFO] [stderr] 436 | | &SourceIP::ExplicitV6(_) => true, [INFO] [stderr] 437 | | &SourceIP::ImpliedV4 => false, [INFO] [stderr] 438 | | &SourceIP::ExplicitV4(_) => false, [INFO] [stderr] 439 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 434 | match *self { [INFO] [stderr] 435 | SourceIP::ImpliedV6 => true, [INFO] [stderr] 436 | SourceIP::ExplicitV6(_) => true, [INFO] [stderr] 437 | SourceIP::ImpliedV4 => false, [INFO] [stderr] 438 | SourceIP::ExplicitV4(_) => false, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/announce.rs:463:38 [INFO] [stderr] | [INFO] [stderr] 463 | map!(count_fixed!(u8, be_u8, 4), |b| convert::bytes_be_to_ipv4(b)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `convert::bytes_be_to_ipv4` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/announce.rs:474:39 [INFO] [stderr] | [INFO] [stderr] 474 | map!(count_fixed!(u8, be_u8, 16), |b| convert::bytes_be_to_ipv6(b)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `convert::bytes_be_to_ipv6` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/announce.rs:495:27 [INFO] [stderr] | [INFO] [stderr] 495 | pub fn write_bytes(&self, mut writer: W) -> io::Result<()> [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/announce.rs:498:27 [INFO] [stderr] | [INFO] [stderr] 498 | let write_value = match self { [INFO] [stderr] | ___________________________^ [INFO] [stderr] 499 | | &DesiredPeers::Default => DEFAULT_NUM_WANT, [INFO] [stderr] 500 | | &DesiredPeers::Specified(count) => count, [INFO] [stderr] 501 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 498 | let write_value = match *self { [INFO] [stderr] 499 | DesiredPeers::Default => DEFAULT_NUM_WANT, [INFO] [stderr] 500 | DesiredPeers::Specified(count) => count, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/announce.rs:510:5 [INFO] [stderr] | [INFO] [stderr] 510 | / switch!(bytes, tuple!(be_i32, value!(true)), [INFO] [stderr] 511 | | (DEFAULT_NUM_WANT, true) => value!(DesiredPeers::Default) | [INFO] [stderr] 512 | | (specified_peers, true) => value!(DesiredPeers::Specified(specified_peers)) [INFO] [stderr] 513 | | ) [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/contact.rs:45:9 [INFO] [stderr] | [INFO] [stderr] 45 | / match self { [INFO] [stderr] 46 | | &CompactPeers::V4(ref peers) => peers.write_bytes(writer), [INFO] [stderr] 47 | | &CompactPeers::V6(ref peers) => peers.write_bytes(writer), [INFO] [stderr] 48 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 45 | match *self { [INFO] [stderr] 46 | CompactPeers::V4(ref peers) => peers.write_bytes(writer), [INFO] [stderr] 47 | CompactPeers::V6(ref peers) => peers.write_bytes(writer), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/contact.rs:52:5 [INFO] [stderr] | [INFO] [stderr] 52 | / pub fn iter<'b>(&'b self) -> CompactPeersIter<'b> { [INFO] [stderr] 53 | | match self { [INFO] [stderr] 54 | | &CompactPeers::V4(ref peers) => { [INFO] [stderr] 55 | | CompactPeersIter::new(CompactPeersIterType::V4(peers.iter())) [INFO] [stderr] ... | [INFO] [stderr] 60 | | } [INFO] [stderr] 61 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/contact.rs:53:9 [INFO] [stderr] | [INFO] [stderr] 53 | / match self { [INFO] [stderr] 54 | | &CompactPeers::V4(ref peers) => { [INFO] [stderr] 55 | | CompactPeersIter::new(CompactPeersIterType::V4(peers.iter())) [INFO] [stderr] 56 | | } [INFO] [stderr] ... | [INFO] [stderr] 59 | | } [INFO] [stderr] 60 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 53 | match *self { [INFO] [stderr] 54 | CompactPeers::V4(ref peers) => { [INFO] [stderr] 55 | CompactPeersIter::new(CompactPeersIterType::V4(peers.iter())) [INFO] [stderr] 56 | } [INFO] [stderr] 57 | CompactPeers::V6(ref peers) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/contact.rs:65:9 [INFO] [stderr] | [INFO] [stderr] 65 | / match self { [INFO] [stderr] 66 | | &CompactPeers::V4(ref peers) => CompactPeers::V4(peers.to_owned()), [INFO] [stderr] 67 | | &CompactPeers::V6(ref peers) => CompactPeers::V6(peers.to_owned()), [INFO] [stderr] 68 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 65 | match *self { [INFO] [stderr] 66 | CompactPeers::V4(ref peers) => CompactPeers::V4(peers.to_owned()), [INFO] [stderr] 67 | CompactPeers::V6(ref peers) => CompactPeers::V6(peers.to_owned()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/contact.rs:99:71 [INFO] [stderr] | [INFO] [stderr] 99 | CompactPeersIterType::V4(ref mut iter) => iter.next().map(|a| SocketAddr::V4(a)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `SocketAddr::V4` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/contact.rs:100:71 [INFO] [stderr] | [INFO] [stderr] 100 | CompactPeersIterType::V6(ref mut iter) => iter.next().map(|a| SocketAddr::V6(a)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `SocketAddr::V6` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `contact::CompactPeersV4<'a>` [INFO] [stderr] --> src/contact.rs:115:5 [INFO] [stderr] | [INFO] [stderr] 115 | / pub fn new() -> CompactPeersV4<'a> { [INFO] [stderr] 116 | | CompactPeersV4 { peers: Cow::Owned(Vec::new()) } [INFO] [stderr] 117 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 109 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/contact.rs:141:5 [INFO] [stderr] | [INFO] [stderr] 141 | / pub fn iter<'b>(&'b self) -> CompactPeersV4Iter<'b> { [INFO] [stderr] 142 | | CompactPeersV4Iter::new(&*self.peers) [INFO] [stderr] 143 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/contact.rs:151:1 [INFO] [stderr] | [INFO] [stderr] 151 | / fn parse_peers_v4<'a>(bytes: &'a [u8]) -> IResult<&'a [u8], CompactPeersV4<'a>> { [INFO] [stderr] 152 | | let remainder_bytes = bytes.len() % SOCKET_ADDR_V4_BYTES; [INFO] [stderr] 153 | | [INFO] [stderr] 154 | | if remainder_bytes != 0 { [INFO] [stderr] ... | [INFO] [stderr] 160 | | } [INFO] [stderr] 161 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `contact::CompactPeersV6<'a>` [INFO] [stderr] --> src/contact.rs:215:5 [INFO] [stderr] | [INFO] [stderr] 215 | / pub fn new() -> CompactPeersV6<'a> { [INFO] [stderr] 216 | | CompactPeersV6 { peers: Cow::Owned(Vec::new()) } [INFO] [stderr] 217 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 209 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/contact.rs:241:5 [INFO] [stderr] | [INFO] [stderr] 241 | / pub fn iter<'b>(&'b self) -> CompactPeersV6Iter<'b> { [INFO] [stderr] 242 | | CompactPeersV6Iter::new(&*self.peers) [INFO] [stderr] 243 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/contact.rs:251:1 [INFO] [stderr] | [INFO] [stderr] 251 | / fn parse_peers_v6<'a>(bytes: &'a [u8]) -> IResult<&'a [u8], CompactPeersV6<'a>> { [INFO] [stderr] 252 | | let remainder_bytes = bytes.len() % SOCKET_ADDR_V6_BYTES; [INFO] [stderr] 253 | | [INFO] [stderr] 254 | | if remainder_bytes != 0 { [INFO] [stderr] ... | [INFO] [stderr] 260 | | } [INFO] [stderr] 261 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `option::AnnounceOptions<'a>` [INFO] [stderr] --> src/option.rs:40:5 [INFO] [stderr] | [INFO] [stderr] 40 | / pub fn new() -> AnnounceOptions<'a> { [INFO] [stderr] 41 | | AnnounceOptions { raw_options: HashMap::new() } [INFO] [stderr] 42 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 34 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/option.rs:151:1 [INFO] [stderr] | [INFO] [stderr] 151 | / fn parse_no_option<'a>(bytes: &'a [u8]) -> IResult<&'a [u8], bool> { [INFO] [stderr] 152 | | map!(bytes, tag!([NO_OPERATION_BYTE]), |_| false) [INFO] [stderr] 153 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `scrape::ScrapeRequest<'a>` [INFO] [stderr] --> src/scrape.rs:70:5 [INFO] [stderr] | [INFO] [stderr] 70 | / pub fn new() -> ScrapeRequest<'a> { [INFO] [stderr] 71 | | ScrapeRequest { hashes: Cow::Owned(Vec::new()) } [INFO] [stderr] 72 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 64 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scrape.rs:96:5 [INFO] [stderr] | [INFO] [stderr] 96 | / pub fn iter<'b>(&'b self) -> ScrapeRequestIter<'b> { [INFO] [stderr] 97 | | ScrapeRequestIter::new(&*self.hashes) [INFO] [stderr] 98 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scrape.rs:106:1 [INFO] [stderr] | [INFO] [stderr] 106 | / fn parse_request<'a>(bytes: &'a [u8]) -> IResult<&'a [u8], ScrapeRequest<'a>> { [INFO] [stderr] 107 | | let remainder_bytes = bytes.len() % bt::INFO_HASH_LEN; [INFO] [stderr] 108 | | [INFO] [stderr] 109 | | if remainder_bytes != 0 { [INFO] [stderr] ... | [INFO] [stderr] 115 | | } [INFO] [stderr] 116 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `scrape::ScrapeResponse<'a>` [INFO] [stderr] --> src/scrape.rs:128:5 [INFO] [stderr] | [INFO] [stderr] 128 | / pub fn new() -> ScrapeResponse<'a> { [INFO] [stderr] 129 | | ScrapeResponse { stats: Cow::Owned(Vec::new()) } [INFO] [stderr] 130 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 122 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scrape.rs:163:5 [INFO] [stderr] | [INFO] [stderr] 163 | / pub fn iter<'b>(&'b self) -> ScrapeResponseIter<'b> { [INFO] [stderr] 164 | | ScrapeResponseIter::new(&*self.stats) [INFO] [stderr] 165 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scrape.rs:173:1 [INFO] [stderr] | [INFO] [stderr] 173 | / fn parse_response<'a>(bytes: &'a [u8]) -> IResult<&'a [u8], ScrapeResponse<'a>> { [INFO] [stderr] 174 | | let remainder_bytes = bytes.len() % SCRAPE_STATS_BYTES; [INFO] [stderr] 175 | | [INFO] [stderr] 176 | | if remainder_bytes != 0 { [INFO] [stderr] ... | [INFO] [stderr] 182 | | } [INFO] [stderr] 183 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: called `skip(x).next()` on an iterator. This is more succinctly expressed by calling `nth(x)` [INFO] [stderr] --> src/client/dispatcher.rs:114:31 [INFO] [stderr] | [INFO] [stderr] 114 | let next_token = *self.active_requests.keys().skip(token_index).next().unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::iter_skip_next)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/client/dispatcher.rs:174:9 [INFO] [stderr] | [INFO] [stderr] 174 | / if let &ResponseType::Connect(id) = response.response_type() { [INFO] [stderr] 175 | | self.id_cache.put(addr, id); [INFO] [stderr] 176 | | [INFO] [stderr] 177 | | self.active_requests.insert(token, conn_timer); [INFO] [stderr] ... | [INFO] [stderr] 200 | | } [INFO] [stderr] 201 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 174 | if let ResponseType::Connect(id) = *response.response_type() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/client/mod.rs:74:9 [INFO] [stderr] | [INFO] [stderr] 74 | / match self { [INFO] [stderr] 75 | | &ClientResponse::Announce(ref res) => Some(res), [INFO] [stderr] 76 | | &ClientResponse::Scrape(_) => None, [INFO] [stderr] 77 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 74 | match *self { [INFO] [stderr] 75 | ClientResponse::Announce(ref res) => Some(res), [INFO] [stderr] 76 | ClientResponse::Scrape(_) => None, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/client/mod.rs:86:9 [INFO] [stderr] | [INFO] [stderr] 86 | / match self { [INFO] [stderr] 87 | | &ClientResponse::Announce(_) => None, [INFO] [stderr] 88 | | &ClientResponse::Scrape(ref res) => Some(res), [INFO] [stderr] 89 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 86 | match *self { [INFO] [stderr] 87 | ClientResponse::Announce(_) => None, [INFO] [stderr] 88 | ClientResponse::Scrape(ref res) => Some(res), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/server/dispatcher.rs:71:9 [INFO] [stderr] | [INFO] [stderr] 71 | / match request.request_type() { [INFO] [stderr] 72 | | &RequestType::Connect => { [INFO] [stderr] 73 | | if conn_id == request::CONNECT_ID_PROTOCOL_ID { [INFO] [stderr] 74 | | self.forward_connect(provider, trans_id, addr); [INFO] [stderr] ... | [INFO] [stderr] 82 | | } [INFO] [stderr] 83 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 71 | match *request.request_type() { [INFO] [stderr] 72 | RequestType::Connect => { [INFO] [stderr] 73 | if conn_id == request::CONNECT_ID_PROTOCOL_ID { [INFO] [stderr] 74 | self.forward_connect(provider, trans_id, addr); [INFO] [stderr] 75 | } // TODO: Add Logging [INFO] [stderr] 76 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> test/mod.rs:152:26 [INFO] [stderr] | [INFO] [stderr] 152 | (MockHandshakerSink{ send: send }, MockHandshakerStream{ recv: recv }) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `send` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> test/mod.rs:152:62 [INFO] [stderr] | [INFO] [stderr] 152 | (MockHandshakerSink{ send: send }, MockHandshakerStream{ recv: recv }) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `recv` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> test/test_client_drop.rs:25:9 [INFO] [stderr] | [INFO] [stderr] 25 | send_token [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> test/test_client_drop.rs:20:26 [INFO] [stderr] | [INFO] [stderr] 20 | let send_token = client.request(server_addr, ClientRequest::Announce( [INFO] [stderr] | __________________________^ [INFO] [stderr] 21 | | [0u8; bt::INFO_HASH_LEN].into(), [INFO] [stderr] 22 | | ClientState::new(0, 0, 0, AnnounceEvent::None) [INFO] [stderr] 23 | | )).unwrap(); [INFO] [stderr] | |___________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> test/test_client_drop.rs:38:5 [INFO] [stderr] | [INFO] [stderr] 38 | / match metadata.result() { [INFO] [stderr] 39 | | &Err(ClientError::ClientShutdown) => (), [INFO] [stderr] 40 | | _ => panic!("Did Not Receive ClientShutdown...") [INFO] [stderr] 41 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 38 | match *metadata.result() { [INFO] [stderr] 39 | Err(ClientError::ClientShutdown) => (), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> test/mod.rs:73:69 [INFO] [stderr] | [INFO] [stderr] 73 | let peers = inner_lock.peers_map.entry(req.info_hash()).or_insert(HashSet::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(HashSet::new)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> test/mod.rs:94:25 [INFO] [stderr] | [INFO] [stderr] 94 | / match addr { [INFO] [stderr] 95 | | &SocketAddr::V4(v4_addr) => Some(v4_addr), [INFO] [stderr] 96 | | &SocketAddr::V6(_) => None [INFO] [stderr] 97 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 94 | match *addr { [INFO] [stderr] 95 | SocketAddr::V4(v4_addr) => Some(v4_addr), [INFO] [stderr] 96 | SocketAddr::V6(_) => None [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> test/mod.rs:109:25 [INFO] [stderr] | [INFO] [stderr] 109 | / match addr { [INFO] [stderr] 110 | | &SocketAddr::V4(_) => None, [INFO] [stderr] 111 | | &SocketAddr::V6(v6_addr) => Some(v6_addr) [INFO] [stderr] 112 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 109 | match *addr { [INFO] [stderr] 110 | SocketAddr::V4(_) => None, [INFO] [stderr] 111 | SocketAddr::V6(v6_addr) => Some(v6_addr) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> test/mod.rs:135:62 [INFO] [stderr] | [INFO] [stderr] 135 | let peers = inner_lock.peers_map.entry(hash).or_insert(HashSet::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(HashSet::new)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 22.96s [INFO] running `"docker" "inspect" "352b2787393b045d43826a82f733bf585fd14fcf22f8a29e0918224a662a3412"` [INFO] running `"docker" "rm" "-f" "352b2787393b045d43826a82f733bf585fd14fcf22f8a29e0918224a662a3412"` [INFO] [stdout] 352b2787393b045d43826a82f733bf585fd14fcf22f8a29e0918224a662a3412