[INFO] crate rlpx 0.4.1 is already in cache [INFO] extracting crate rlpx 0.4.1 into work/ex/clippy-test-run/sources/stable/reg/rlpx/0.4.1 [INFO] extracting crate rlpx 0.4.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/rlpx/0.4.1 [INFO] validating manifest of rlpx-0.4.1 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 rlpx-0.4.1 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 rlpx-0.4.1 [INFO] finished frobbing rlpx-0.4.1 [INFO] frobbed toml for rlpx-0.4.1 written to work/ex/clippy-test-run/sources/stable/reg/rlpx/0.4.1/Cargo.toml [INFO] started frobbing rlpx-0.4.1 [INFO] finished frobbing rlpx-0.4.1 [INFO] frobbed toml for rlpx-0.4.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/rlpx/0.4.1/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 rlpx-0.4.1 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/rlpx/0.4.1:/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] 783ba4977dcdbb1f512d133c5dd39dfc7f32efe444a4ccef64dbcd536a62c51c [INFO] running `"docker" "start" "-a" "783ba4977dcdbb1f512d133c5dd39dfc7f32efe444a4ccef64dbcd536a62c51c"` [INFO] [stderr] Checking ethereum-hexutil v0.2.3 [INFO] [stderr] Checking elastic-array-plus v0.9.1 [INFO] [stderr] Checking sha3 v0.6.0 [INFO] [stderr] Checking hmac-drbg v0.1.2 [INFO] [stderr] Checking libsecp256k1 v0.1.15 [INFO] [stderr] Checking ethereum-rlp v0.2.3 [INFO] [stderr] Checking ethereum-bigint v0.2.9 [INFO] [stderr] Checking rlpx v0.4.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ecies/proto.rs:178:25 [INFO] [stderr] | [INFO] [stderr] 178 | remote_id: remote_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `remote_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/ecies/proto.rs:178:25 [INFO] [stderr] | [INFO] [stderr] 178 | remote_id: remote_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `remote_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: unused import: `SecretKey` [INFO] [stderr] --> src/util.rs:2:34 [INFO] [stderr] | [INFO] [stderr] 2 | use secp256k1::{self, PublicKey, SecretKey}; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `crypto::blockmodes::CtrMode` [INFO] [stderr] --> src/util.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use crypto::blockmodes::CtrMode; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crypto::aessafe::AesSafe128Encryptor` [INFO] [stderr] --> src/util.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use crypto::aessafe::AesSafe128Encryptor; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `RefReadBuffer`, `RefWriteBuffer` [INFO] [stderr] --> src/util.rs:8:22 [INFO] [stderr] | [INFO] [stderr] 8 | use crypto::buffer::{RefReadBuffer, RefWriteBuffer}; [INFO] [stderr] | ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `rlp` [INFO] [stderr] --> src/ecies/algorithm.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | use rlp; [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `AsyncWrite` [INFO] [stderr] --> src/ecies/proto.rs:3:27 [INFO] [stderr] | [INFO] [stderr] 3 | use tokio_io::{AsyncRead, AsyncWrite}; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Core` [INFO] [stderr] --> src/ecies/proto.rs:5:35 [INFO] [stderr] | [INFO] [stderr] 5 | use tokio_core::reactor::{Handle, Core}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `BufMut` [INFO] [stderr] --> src/ecies/proto.rs:7:23 [INFO] [stderr] | [INFO] [stderr] 7 | use bytes::{BytesMut, BufMut}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `AsyncRead`, `AsyncWrite` [INFO] [stderr] --> src/peer.rs:8:16 [INFO] [stderr] | [INFO] [stderr] 8 | use tokio_io::{AsyncRead, AsyncWrite}; [INFO] [stderr] | ^^^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Decoder`, `Encoder`, `Framed` [INFO] [stderr] --> src/peer.rs:9:23 [INFO] [stderr] | [INFO] [stderr] 9 | use tokio_io::codec::{Framed, Encoder, Decoder}; [INFO] [stderr] | ^^^^^^ ^^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `self` [INFO] [stderr] --> src/peer.rs:10:17 [INFO] [stderr] | [INFO] [stderr] 10 | use secp256k1::{self, PublicKey, SecretKey}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `util::pk2id` [INFO] [stderr] --> src/lib.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | use util::pk2id; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `PublicKey` [INFO] [stderr] --> src/lib.rs:31:17 [INFO] [stderr] | [INFO] [stderr] 31 | use secp256k1::{PublicKey, SecretKey}; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `futures::future` [INFO] [stderr] --> src/lib.rs:32:5 [INFO] [stderr] | [INFO] [stderr] 32 | use futures::future; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashMap` [INFO] [stderr] --> src/lib.rs:36:5 [INFO] [stderr] | [INFO] [stderr] 36 | use std::collections::HashMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `AsyncRead`, `AsyncWrite` [INFO] [stderr] --> src/lib.rs:39:16 [INFO] [stderr] | [INFO] [stderr] 39 | use tokio_io::{AsyncRead, AsyncWrite}; [INFO] [stderr] | ^^^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Decoder`, `Encoder`, `Framed` [INFO] [stderr] --> src/lib.rs:40:23 [INFO] [stderr] | [INFO] [stderr] 40 | use tokio_io::codec::{Framed, Encoder, Decoder}; [INFO] [stderr] | ^^^^^^ ^^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::Framed': Moved to tokio-codec [INFO] [stderr] --> src/ecies/proto.rs:4:23 [INFO] [stderr] | [INFO] [stderr] 4 | use tokio_io::codec::{Framed, Encoder, Decoder}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::Framed': Moved to tokio-codec [INFO] [stderr] --> src/ecies/proto.rs:145:13 [INFO] [stderr] | [INFO] [stderr] 145 | stream: Framed, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::Framed': Moved to tokio-codec [INFO] [stderr] --> src/peer.rs:9:23 [INFO] [stderr] | [INFO] [stderr] 9 | use tokio_io::codec::{Framed, Encoder, Decoder}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::Framed': Moved to tokio-codec [INFO] [stderr] --> src/lib.rs:40:23 [INFO] [stderr] | [INFO] [stderr] 40 | use tokio_io::codec::{Framed, Encoder, Decoder}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `SecretKey` [INFO] [stderr] --> src/util.rs:2:34 [INFO] [stderr] | [INFO] [stderr] 2 | use secp256k1::{self, PublicKey, SecretKey}; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `crypto::blockmodes::CtrMode` [INFO] [stderr] --> src/util.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use crypto::blockmodes::CtrMode; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crypto::aessafe::AesSafe128Encryptor` [INFO] [stderr] --> src/util.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use crypto::aessafe::AesSafe128Encryptor; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `RefReadBuffer`, `RefWriteBuffer` [INFO] [stderr] --> src/util.rs:8:22 [INFO] [stderr] | [INFO] [stderr] 8 | use crypto::buffer::{RefReadBuffer, RefWriteBuffer}; [INFO] [stderr] | ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `rlp` [INFO] [stderr] --> src/ecies/algorithm.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | use rlp; [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `id2pk`, `keccak256` [INFO] [stderr] --> src/ecies/algorithm.rs:449:16 [INFO] [stderr] | [INFO] [stderr] 449 | use util::{keccak256, pk2id, id2pk}; [INFO] [stderr] | ^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Message`, `SharedSecret` [INFO] [stderr] --> src/ecies/algorithm.rs:450:21 [INFO] [stderr] | [INFO] [stderr] 450 | use secp256k1::{Message, SharedSecret, PublicKey, SecretKey}; [INFO] [stderr] | ^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `H256`, `H512` [INFO] [stderr] --> src/ecies/algorithm.rs:451:18 [INFO] [stderr] | [INFO] [stderr] 451 | use bigint::{H512, H256}; [INFO] [stderr] | ^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `AsyncWrite` [INFO] [stderr] --> src/ecies/proto.rs:3:27 [INFO] [stderr] | [INFO] [stderr] 3 | use tokio_io::{AsyncRead, AsyncWrite}; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Core` [INFO] [stderr] --> src/ecies/proto.rs:5:35 [INFO] [stderr] | [INFO] [stderr] 5 | use tokio_core::reactor::{Handle, Core}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `BufMut` [INFO] [stderr] --> src/ecies/proto.rs:7:23 [INFO] [stderr] | [INFO] [stderr] 7 | use bytes::{BytesMut, BufMut}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `AsyncRead`, `AsyncWrite` [INFO] [stderr] --> src/peer.rs:8:16 [INFO] [stderr] | [INFO] [stderr] 8 | use tokio_io::{AsyncRead, AsyncWrite}; [INFO] [stderr] | ^^^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Decoder`, `Encoder`, `Framed` [INFO] [stderr] --> src/peer.rs:9:23 [INFO] [stderr] | [INFO] [stderr] 9 | use tokio_io::codec::{Framed, Encoder, Decoder}; [INFO] [stderr] | ^^^^^^ ^^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `self` [INFO] [stderr] --> src/peer.rs:10:17 [INFO] [stderr] | [INFO] [stderr] 10 | use secp256k1::{self, PublicKey, SecretKey}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `util::pk2id` [INFO] [stderr] --> src/lib.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | use util::pk2id; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `PublicKey` [INFO] [stderr] --> src/lib.rs:31:17 [INFO] [stderr] | [INFO] [stderr] 31 | use secp256k1::{PublicKey, SecretKey}; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `futures::future` [INFO] [stderr] --> src/lib.rs:32:5 [INFO] [stderr] | [INFO] [stderr] 32 | use futures::future; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashMap` [INFO] [stderr] --> src/lib.rs:36:5 [INFO] [stderr] | [INFO] [stderr] 36 | use std::collections::HashMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `AsyncRead`, `AsyncWrite` [INFO] [stderr] --> src/lib.rs:39:16 [INFO] [stderr] | [INFO] [stderr] 39 | use tokio_io::{AsyncRead, AsyncWrite}; [INFO] [stderr] | ^^^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Decoder`, `Encoder`, `Framed` [INFO] [stderr] --> src/lib.rs:40:23 [INFO] [stderr] | [INFO] [stderr] 40 | use tokio_io::codec::{Framed, Encoder, Decoder}; [INFO] [stderr] | ^^^^^^ ^^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::Framed': Moved to tokio-codec [INFO] [stderr] --> src/ecies/proto.rs:4:23 [INFO] [stderr] | [INFO] [stderr] 4 | use tokio_io::codec::{Framed, Encoder, Decoder}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::Framed': Moved to tokio-codec [INFO] [stderr] --> src/ecies/proto.rs:145:13 [INFO] [stderr] | [INFO] [stderr] 145 | stream: Framed, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::Framed': Moved to tokio-codec [INFO] [stderr] --> src/peer.rs:9:23 [INFO] [stderr] | [INFO] [stderr] 9 | use tokio_io::codec::{Framed, Encoder, Decoder}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::codec::Framed': Moved to tokio-codec [INFO] [stderr] --> src/lib.rs:40:23 [INFO] [stderr] | [INFO] [stderr] 40 | use tokio_io::codec::{Framed, Encoder, Decoder}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::AsyncRead::framed': Use tokio_codec::Decoder::framed instead [INFO] [stderr] --> src/ecies/proto.rs:168:24 [INFO] [stderr] | [INFO] [stderr] 168 | socket.framed(ecies).send(ECIESValue::Auth) [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::AsyncRead::framed': Use tokio_codec::Decoder::framed instead [INFO] [stderr] --> src/ecies/proto.rs:201:29 [INFO] [stderr] | [INFO] [stderr] 201 | let stream = stream.framed(ecies).into_future().map_err(|(e, _)| e) [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::AsyncRead::framed': Use tokio_codec::Decoder::framed instead [INFO] [stderr] --> src/ecies/proto.rs:168:24 [INFO] [stderr] | [INFO] [stderr] 168 | socket.framed(ecies).send(ECIESValue::Auth) [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'tokio_io::AsyncRead::framed': Use tokio_codec::Decoder::framed instead [INFO] [stderr] --> src/ecies/proto.rs:201:29 [INFO] [stderr] | [INFO] [stderr] 201 | let stream = stream.framed(ecies).into_future().map_err(|(e, _)| e) [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `e` [INFO] [stderr] --> src/ecies/proto.rs:159:17 [INFO] [stderr] | [INFO] [stderr] 159 | Err(e) => return Box::new(future::err( [INFO] [stderr] | ^ help: consider using `_e` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `e` [INFO] [stderr] --> src/ecies/proto.rs:195:17 [INFO] [stderr] | [INFO] [stderr] 195 | Err(e) => return Box::new(future::err( [INFO] [stderr] | ^ help: consider using `_e` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `header` [INFO] [stderr] --> src/ecies/proto.rs:281:33 [INFO] [stderr] | [INFO] [stderr] 281 | AsyncSink::NotReady(header) => return Ok(AsyncSink::NotReady(item)), [INFO] [stderr] | ^^^^^^ help: consider using `_header` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `error` [INFO] [stderr] --> src/errors.rs:16:13 [INFO] [stderr] | [INFO] [stderr] 16 | fn from(error: ECIESError) -> io::Error { [INFO] [stderr] | ^^^^^ help: consider using `_error` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `addr` [INFO] [stderr] --> src/lib.rs:192:48 [INFO] [stderr] | [INFO] [stderr] 192 | Async::Ready(Some((stream, addr))) => { [INFO] [stderr] | ^^^^ help: consider using `_addr` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `newly_connected` [INFO] [stderr] --> src/lib.rs:282:25 [INFO] [stderr] | [INFO] [stderr] 282 | let ref mut newly_connected = self.newly_connected; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using `_newly_connected` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `client_public_key` [INFO] [stderr] --> src/ecies/algorithm.rs:460:13 [INFO] [stderr] | [INFO] [stderr] 460 | let client_public_key = PublicKey::from_secret_key(&client_secret_key); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider using `_client_public_key` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `e` [INFO] [stderr] --> src/ecies/proto.rs:159:17 [INFO] [stderr] | [INFO] [stderr] 159 | Err(e) => return Box::new(future::err( [INFO] [stderr] | ^ help: consider using `_e` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `e` [INFO] [stderr] --> src/ecies/proto.rs:195:17 [INFO] [stderr] | [INFO] [stderr] 195 | Err(e) => return Box::new(future::err( [INFO] [stderr] | ^ help: consider using `_e` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `header` [INFO] [stderr] --> src/ecies/proto.rs:281:33 [INFO] [stderr] | [INFO] [stderr] 281 | AsyncSink::NotReady(header) => return Ok(AsyncSink::NotReady(item)), [INFO] [stderr] | ^^^^^^ help: consider using `_header` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `error` [INFO] [stderr] --> src/errors.rs:16:13 [INFO] [stderr] | [INFO] [stderr] 16 | fn from(error: ECIESError) -> io::Error { [INFO] [stderr] | ^^^^^ help: consider using `_error` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `addr` [INFO] [stderr] --> src/lib.rs:192:48 [INFO] [stderr] | [INFO] [stderr] 192 | Async::Ready(Some((stream, addr))) => { [INFO] [stderr] | ^^^^ help: consider using `_addr` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `newly_connected` [INFO] [stderr] --> src/lib.rs:282:25 [INFO] [stderr] | [INFO] [stderr] 282 | let ref mut newly_connected = self.newly_connected; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using `_newly_connected` instead [INFO] [stderr] [INFO] [stderr] warning: field is never used: `protocol_version` [INFO] [stderr] --> src/peer.rs:82:5 [INFO] [stderr] | [INFO] [stderr] 82 | protocol_version: usize, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: field is never used: `client_version` [INFO] [stderr] --> src/peer.rs:83:5 [INFO] [stderr] | [INFO] [stderr] 83 | client_version: String, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `port` [INFO] [stderr] --> src/peer.rs:85:5 [INFO] [stderr] | [INFO] [stderr] 85 | port: u16, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `id` [INFO] [stderr] --> src/peer.rs:86:5 [INFO] [stderr] | [INFO] [stderr] 86 | id: H512, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/util.rs:46:14 [INFO] [stderr] | [INFO] [stderr] 46 | for i in 0..64 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `raw[1..(64 + 1)].clone_from_slice(&s[..64])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_memcpy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: constant `SHA256BlockSize` should have an upper case name such as `SHA256_BLOCK_SIZE` [INFO] [stderr] --> src/ecies/algorithm.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 29 | const SHA256BlockSize: usize = 64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_upper_case_globals)] on by default [INFO] [stderr] [INFO] [stderr] warning: constant `reps` should have an upper case name such as `REPS` [INFO] [stderr] --> src/ecies/algorithm.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | const reps: usize = (32 + 7) * 8 / (SHA256BlockSize * 8); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/ecies/algorithm.rs:33:20 [INFO] [stderr] | [INFO] [stderr] 33 | for counter in 0..(reps+1) { [INFO] [stderr] | ^^^^^^^^^^^ help: use: `0..=reps` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/ecies/algorithm.rs:151:18 [INFO] [stderr] | [INFO] [stderr] 151 | for i in 0..65 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `pub_raw[..65].clone_from_slice(&encrypted[..65])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `msg_raw` [INFO] [stderr] --> src/ecies/algorithm.rs:183:18 [INFO] [stderr] | [INFO] [stderr] 183 | for i in 0..32 { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 183 | for (i, ) in msg_raw.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/ecies/algorithm.rs:183:18 [INFO] [stderr] | [INFO] [stderr] 183 | for i in 0..32 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `msg_raw[..32].clone_from_slice(&umsg.as_ref()[..32])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/ecies/algorithm.rs:208:18 [INFO] [stderr] | [INFO] [stderr] 208 | for i in 0..64 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `sig_data[..64].clone_from_slice(&data[..64])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `msg_raw` [INFO] [stderr] --> src/ecies/algorithm.rs:224:18 [INFO] [stderr] | [INFO] [stderr] 224 | for i in 0..32 { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 224 | for (i, ) in msg_raw.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/ecies/algorithm.rs:224:18 [INFO] [stderr] | [INFO] [stderr] 224 | for i in 0..32 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `msg_raw[..32].clone_from_slice(&umsg.as_ref()[..32])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/ecies/algorithm.rs:246:18 [INFO] [stderr] | [INFO] [stderr] 246 | for i in 0..AUTH_LEN { [INFO] [stderr] | ^^^^^^^^^^^ help: try replacing the loop by: `data[..AUTH_LEN].clone_from_slice(&unencrypted[..AUTH_LEN])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/ecies/algorithm.rs:287:18 [INFO] [stderr] | [INFO] [stderr] 287 | for i in 0..ACK_LEN { [INFO] [stderr] | ^^^^^^^^^^ help: try replacing the loop by: `data[..ACK_LEN].clone_from_slice(&unencrypted[..ACK_LEN])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/ecies/algorithm.rs:290:9 [INFO] [stderr] | [INFO] [stderr] 290 | self.parse_ack_unencrypted(data); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/ecies/algorithm.rs:341:9 [INFO] [stderr] | [INFO] [stderr] 341 | buffer.write_uint::(size as u64, 3); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/ecies/algorithm.rs:347:9 [INFO] [stderr] | [INFO] [stderr] 347 | / self.egress_aes.as_mut().unwrap().encrypt( [INFO] [stderr] 348 | | &mut RefReadBuffer::new(&header), [INFO] [stderr] 349 | | &mut RefWriteBuffer::new(&mut encrypted), false); [INFO] [stderr] | |_____________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `encrypted`. [INFO] [stderr] --> src/ecies/algorithm.rs:354:18 [INFO] [stderr] | [INFO] [stderr] 354 | for i in 0..16 { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 354 | for in &encrypted { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `tag`. [INFO] [stderr] --> src/ecies/algorithm.rs:357:18 [INFO] [stderr] | [INFO] [stderr] 357 | for i in 0..16 { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 357 | for in tag.iter().take(16) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/ecies/algorithm.rs:374:9 [INFO] [stderr] | [INFO] [stderr] 374 | / self.ingress_aes.as_mut().unwrap().decrypt( [INFO] [stderr] 375 | | &mut RefReadBuffer::new(&header), [INFO] [stderr] 376 | | &mut RefWriteBuffer::new(&mut decrypted), false); [INFO] [stderr] | |_____________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/ecies/algorithm.rs:410:18 [INFO] [stderr] | [INFO] [stderr] 410 | for i in 0..data.len() { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try replacing the loop by: `data_padded[..data.len()].clone_from_slice(&data[..])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/ecies/algorithm.rs:414:9 [INFO] [stderr] | [INFO] [stderr] 414 | / self.egress_aes.as_mut().unwrap().encrypt( [INFO] [stderr] 415 | | &mut RefReadBuffer::new(&data_padded), [INFO] [stderr] 416 | | &mut RefWriteBuffer::new(&mut encrypted), false); [INFO] [stderr] | |_____________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/ecies/algorithm.rs:437:9 [INFO] [stderr] | [INFO] [stderr] 437 | / self.ingress_aes.as_mut().unwrap().decrypt( [INFO] [stderr] 438 | | &mut RefReadBuffer::new(&body), [INFO] [stderr] 439 | | &mut RefWriteBuffer::new(&mut ret), false); [INFO] [stderr] | |_______________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: field is never used: `protocol_version` [INFO] [stderr] --> src/peer.rs:82:5 [INFO] [stderr] | [INFO] [stderr] 82 | protocol_version: usize, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: field is never used: `client_version` [INFO] [stderr] --> src/peer.rs:83:5 [INFO] [stderr] | [INFO] [stderr] 83 | client_version: String, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `port` [INFO] [stderr] --> src/peer.rs:85:5 [INFO] [stderr] | [INFO] [stderr] 85 | port: u16, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `id` [INFO] [stderr] --> src/peer.rs:86:5 [INFO] [stderr] | [INFO] [stderr] 86 | id: H512, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/util.rs:46:14 [INFO] [stderr] | [INFO] [stderr] 46 | for i in 0..64 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `raw[1..(64 + 1)].clone_from_slice(&s[..64])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_memcpy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: constant `SHA256BlockSize` should have an upper case name such as `SHA256_BLOCK_SIZE` [INFO] [stderr] --> src/ecies/algorithm.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 29 | const SHA256BlockSize: usize = 64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `reps` should have an upper case name such as `REPS` [INFO] [stderr] --> src/ecies/algorithm.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | const reps: usize = (32 + 7) * 8 / (SHA256BlockSize * 8); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/ecies/algorithm.rs:33:20 [INFO] [stderr] | [INFO] [stderr] 33 | for counter in 0..(reps+1) { [INFO] [stderr] | ^^^^^^^^^^^ help: use: `0..=reps` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/ecies/algorithm.rs:151:18 [INFO] [stderr] | [INFO] [stderr] 151 | for i in 0..65 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `pub_raw[..65].clone_from_slice(&encrypted[..65])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `msg_raw` [INFO] [stderr] --> src/ecies/algorithm.rs:183:18 [INFO] [stderr] | [INFO] [stderr] 183 | for i in 0..32 { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 183 | for (i, ) in msg_raw.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/ecies/algorithm.rs:183:18 [INFO] [stderr] | [INFO] [stderr] 183 | for i in 0..32 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `msg_raw[..32].clone_from_slice(&umsg.as_ref()[..32])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/ecies/algorithm.rs:208:18 [INFO] [stderr] | [INFO] [stderr] 208 | for i in 0..64 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `sig_data[..64].clone_from_slice(&data[..64])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `msg_raw` [INFO] [stderr] --> src/ecies/algorithm.rs:224:18 [INFO] [stderr] | [INFO] [stderr] 224 | for i in 0..32 { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 224 | for (i, ) in msg_raw.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/ecies/algorithm.rs:224:18 [INFO] [stderr] | [INFO] [stderr] 224 | for i in 0..32 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `msg_raw[..32].clone_from_slice(&umsg.as_ref()[..32])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/ecies/algorithm.rs:246:18 [INFO] [stderr] | [INFO] [stderr] 246 | for i in 0..AUTH_LEN { [INFO] [stderr] | ^^^^^^^^^^^ help: try replacing the loop by: `data[..AUTH_LEN].clone_from_slice(&unencrypted[..AUTH_LEN])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/peer.rs:102:5 [INFO] [stderr] | [INFO] [stderr] 102 | / pub fn connect( [INFO] [stderr] 103 | | addr: &SocketAddr, handle: &Handle, [INFO] [stderr] 104 | | secret_key: SecretKey, remote_id: H512, [INFO] [stderr] 105 | | protocol_version: usize, client_version: String, [INFO] [stderr] ... | [INFO] [stderr] 113 | | })) [INFO] [stderr] 114 | | } [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: it looks like you're manually copying between slices [INFO] [stderr] --> src/ecies/algorithm.rs:287:18 [INFO] [stderr] | [INFO] [stderr] 287 | for i in 0..ACK_LEN { [INFO] [stderr] | ^^^^^^^^^^ help: try replacing the loop by: `data[..ACK_LEN].clone_from_slice(&unencrypted[..ACK_LEN])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/ecies/algorithm.rs:290:9 [INFO] [stderr] | [INFO] [stderr] 290 | self.parse_ack_unencrypted(data); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/ecies/algorithm.rs:341:9 [INFO] [stderr] | [INFO] [stderr] 341 | buffer.write_uint::(size as u64, 3); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/ecies/algorithm.rs:347:9 [INFO] [stderr] | [INFO] [stderr] 347 | / self.egress_aes.as_mut().unwrap().encrypt( [INFO] [stderr] 348 | | &mut RefReadBuffer::new(&header), [INFO] [stderr] 349 | | &mut RefWriteBuffer::new(&mut encrypted), false); [INFO] [stderr] | |_____________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `encrypted`. [INFO] [stderr] --> src/ecies/algorithm.rs:354:18 [INFO] [stderr] | [INFO] [stderr] 354 | for i in 0..16 { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 354 | for in &encrypted { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `tag`. [INFO] [stderr] --> src/ecies/algorithm.rs:357:18 [INFO] [stderr] | [INFO] [stderr] 357 | for i in 0..16 { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 357 | for in tag.iter().take(16) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/ecies/algorithm.rs:374:9 [INFO] [stderr] | [INFO] [stderr] 374 | / self.ingress_aes.as_mut().unwrap().decrypt( [INFO] [stderr] 375 | | &mut RefReadBuffer::new(&header), [INFO] [stderr] 376 | | &mut RefWriteBuffer::new(&mut decrypted), false); [INFO] [stderr] | |_____________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/ecies/algorithm.rs:410:18 [INFO] [stderr] | [INFO] [stderr] 410 | for i in 0..data.len() { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try replacing the loop by: `data_padded[..data.len()].clone_from_slice(&data[..])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/ecies/algorithm.rs:414:9 [INFO] [stderr] | [INFO] [stderr] 414 | / self.egress_aes.as_mut().unwrap().encrypt( [INFO] [stderr] 415 | | &mut RefReadBuffer::new(&data_padded), [INFO] [stderr] 416 | | &mut RefWriteBuffer::new(&mut encrypted), false); [INFO] [stderr] | |_____________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/ecies/algorithm.rs:437:9 [INFO] [stderr] | [INFO] [stderr] 437 | / self.ingress_aes.as_mut().unwrap().decrypt( [INFO] [stderr] 438 | | &mut RefReadBuffer::new(&body), [INFO] [stderr] 439 | | &mut RefWriteBuffer::new(&mut ret), false); [INFO] [stderr] | |_______________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: called `is_some()` after searching an `Iterator` with find. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/peer.rs:205:32 [INFO] [stderr] | [INFO] [stderr] 205 | if val.capabilities.iter().find( [INFO] [stderr] | ________________________________^ [INFO] [stderr] 206 | | |v| v.name == cap_info.name && v.version == cap_info.version) [INFO] [stderr] 207 | | .is_some() [INFO] [stderr] | |__________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::search_is_some)] on by default [INFO] [stderr] = note: replace `find(|v| v.name == cap_info.name && v.version == cap_info.version).is_some()` with `any(|v| v.name == cap_info.name && v.version == cap_info.version)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/peer.rs:209:58 [INFO] [stderr] | [INFO] [stderr] 209 | shared_capabilities.push(cap_info.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `cap_info` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/peer.rs:218:38 [INFO] [stderr] | [INFO] [stderr] 218 | else if v.version < cap_info.version { false } [INFO] [stderr] | ______________________________________^ [INFO] [stderr] 219 | | else { true } [INFO] [stderr] | |_____________________________________________^ help: you can reduce it to: `!(v.version < cap_info.version)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/peer.rs:223:61 [INFO] [stderr] | [INFO] [stderr] 223 | shared_capabilities.sort_by_key(|v| v.name.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 223 | shared_capabilities.sort_by_key(|v| &(*v.name).clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 223 | shared_capabilities.sort_by_key(|v| &str::clone(v.name)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/peer.rs:296:33 [INFO] [stderr] | [INFO] [stderr] 296 | message_id = message_id - cap.length; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `message_id -= cap.length` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/peer.rs:297:33 [INFO] [stderr] | [INFO] [stderr] 297 | index = index + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `index += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/peer.rs:304:26 [INFO] [stderr] | [INFO] [stderr] 304 | (self.shared_capabilities[index].clone(), message_id) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.shared_capabilities[index]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/peer.rs:345:17 [INFO] [stderr] | [INFO] [stderr] 345 | message_id = message_id + scap.length; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `message_id += scap.length` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/peer.rs:350:9 [INFO] [stderr] | [INFO] [stderr] 350 | message_id = message_id + id; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `message_id += id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/mac.rs:26:9 [INFO] [stderr] | [INFO] [stderr] 26 | / aes.encrypt( [INFO] [stderr] 27 | | &mut RefReadBuffer::new(self.digest().as_ref()), [INFO] [stderr] 28 | | &mut RefWriteBuffer::new(encrypted.as_mut()), true); [INFO] [stderr] | |________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/mac.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | encrypted[i] = encrypted[i] ^ data[i]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `encrypted[i] ^= data[i]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/mac.rs:40:9 [INFO] [stderr] | [INFO] [stderr] 40 | / aes.encrypt( [INFO] [stderr] 41 | | &mut RefReadBuffer::new(self.digest().as_ref()), [INFO] [stderr] 42 | | &mut RefWriteBuffer::new(encrypted.as_mut()), true); [INFO] [stderr] | |________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/mac.rs:44:13 [INFO] [stderr] | [INFO] [stderr] 44 | encrypted[i] = encrypted[i] ^ prev[i]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `encrypted[i] ^= prev[i]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/mac.rs:50:21 [INFO] [stderr] | [INFO] [stderr] 50 | H128::from(&self.hasher.clone().result()[0..16]) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.hasher` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:137:13 [INFO] [stderr] | [INFO] [stderr] 137 | let ref mut futures = self.futures; [INFO] [stderr] | ----^^^^^^^^^^^^^^^---------------- help: try: `let futures = &mut self.futures;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:138:13 [INFO] [stderr] | [INFO] [stderr] 138 | let ref mut streams = self.streams; [INFO] [stderr] | ----^^^^^^^^^^^^^^^---------------- help: try: `let streams = &mut self.streams;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:139:13 [INFO] [stderr] | [INFO] [stderr] 139 | let ref mut newly_disconnected = self.newly_disconnected; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^^^^^^^--------------------------- help: try: `let newly_disconnected = &mut self.newly_disconnected;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:157:13 [INFO] [stderr] | [INFO] [stderr] 157 | let ref mut futures = self.futures; [INFO] [stderr] | ----^^^^^^^^^^^^^^^---------------- help: try: `let futures = &mut self.futures;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:158:13 [INFO] [stderr] | [INFO] [stderr] 158 | let ref mut incoming_futures = self.incoming_futures; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^^^^^------------------------- help: try: `let incoming_futures = &mut self.incoming_futures;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:159:13 [INFO] [stderr] | [INFO] [stderr] 159 | let ref mut streams = self.streams; [INFO] [stderr] | ----^^^^^^^^^^^^^^^---------------- help: try: `let streams = &mut self.streams;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:160:13 [INFO] [stderr] | [INFO] [stderr] 160 | let ref mut active_peers = self.active_peers; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^--------------------- help: try: `let active_peers = &mut self.active_peers;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:161:13 [INFO] [stderr] | [INFO] [stderr] 161 | let ref mut newly_connected = self.newly_connected; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^^^^------------------------ help: try: `let newly_connected = &mut self.newly_connected;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/lib.rs:190:13 [INFO] [stderr] | [INFO] [stderr] 190 | / loop { [INFO] [stderr] 191 | | match tcp_incoming.poll()? { [INFO] [stderr] 192 | | Async::Ready(Some((stream, addr))) => { [INFO] [stderr] 193 | | incoming_futures.push(PeerStream::incoming( [INFO] [stderr] ... | [INFO] [stderr] 200 | | } [INFO] [stderr] 201 | | } [INFO] [stderr] | |_____________^ help: try: `while let Async::Ready(Some((stream, addr))) = tcp_incoming.poll()? { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:264:12 [INFO] [stderr] | [INFO] [stderr] 264 | if self.newly_connected.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.newly_connected.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:271:12 [INFO] [stderr] | [INFO] [stderr] 271 | if self.newly_disconnected.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.newly_disconnected.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:280:17 [INFO] [stderr] | [INFO] [stderr] 280 | let ref mut streams = self.streams; [INFO] [stderr] | ----^^^^^^^^^^^^^^^---------------- help: try: `let streams = &mut self.streams;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:281:17 [INFO] [stderr] | [INFO] [stderr] 281 | let ref mut active_peers = self.active_peers; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^--------------------- help: try: `let active_peers = &mut self.active_peers;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:282:17 [INFO] [stderr] | [INFO] [stderr] 282 | let ref mut newly_connected = self.newly_connected; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^^^^------------------------ help: try: `let newly_connected = &mut self.newly_connected;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:283:17 [INFO] [stderr] | [INFO] [stderr] 283 | let ref mut newly_disconnected = self.newly_disconnected; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^^^^^^^--------------------------- help: try: `let newly_disconnected = &mut self.newly_disconnected;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:323:16 [INFO] [stderr] | [INFO] [stderr] 323 | if self.newly_connected.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.newly_connected.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:330:16 [INFO] [stderr] | [INFO] [stderr] 330 | if self.newly_disconnected.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.newly_disconnected.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:347:13 [INFO] [stderr] | [INFO] [stderr] 347 | let ref mut streams = self.streams; [INFO] [stderr] | ----^^^^^^^^^^^^^^^---------------- help: try: `let streams = &mut self.streams;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:348:13 [INFO] [stderr] | [INFO] [stderr] 348 | let ref mut active_peers = self.active_peers; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^--------------------- help: try: `let active_peers = &mut self.active_peers;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:349:13 [INFO] [stderr] | [INFO] [stderr] 349 | let ref mut newly_disconnected = self.newly_disconnected; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^^^^^^^--------------------------- help: try: `let newly_disconnected = &mut self.newly_disconnected;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/lib.rs:352:12 [INFO] [stderr] | [INFO] [stderr] 352 | if match &message.node { [INFO] [stderr] | ____________^ [INFO] [stderr] 353 | | &RLPxNode::Any => true, [INFO] [stderr] 354 | | _ => false, [INFO] [stderr] 355 | | } { [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: try [INFO] [stderr] | [INFO] [stderr] 352 | if match message.node { [INFO] [stderr] 353 | RLPxNode::Any => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:398:13 [INFO] [stderr] | [INFO] [stderr] 398 | let ref mut streams = self.streams; [INFO] [stderr] | ----^^^^^^^^^^^^^^^---------------- help: try: `let streams = &mut self.streams;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:399:13 [INFO] [stderr] | [INFO] [stderr] 399 | let ref mut active_peers = self.active_peers; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^--------------------- help: try: `let active_peers = &mut self.active_peers;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:400:13 [INFO] [stderr] | [INFO] [stderr] 400 | let ref mut newly_disconnected = self.newly_disconnected; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^^^^^^^--------------------------- help: try: `let newly_disconnected = &mut self.newly_disconnected;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/peer.rs:102:5 [INFO] [stderr] | [INFO] [stderr] 102 | / pub fn connect( [INFO] [stderr] 103 | | addr: &SocketAddr, handle: &Handle, [INFO] [stderr] 104 | | secret_key: SecretKey, remote_id: H512, [INFO] [stderr] 105 | | protocol_version: usize, client_version: String, [INFO] [stderr] ... | [INFO] [stderr] 113 | | })) [INFO] [stderr] 114 | | } [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] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] warning: called `is_some()` after searching an `Iterator` with find. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/peer.rs:205:32 [INFO] [stderr] | [INFO] [stderr] 205 | if val.capabilities.iter().find( [INFO] [stderr] | ________________________________^ [INFO] [stderr] 206 | | |v| v.name == cap_info.name && v.version == cap_info.version) [INFO] [stderr] 207 | | .is_some() [INFO] [stderr] | |__________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::search_is_some)] on by default [INFO] [stderr] = note: replace `find(|v| v.name == cap_info.name && v.version == cap_info.version).is_some()` with `any(|v| v.name == cap_info.name && v.version == cap_info.version)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/peer.rs:209:58 [INFO] [stderr] | [INFO] [stderr] 209 | shared_capabilities.push(cap_info.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `cap_info` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/peer.rs:218:38 [INFO] [stderr] | [INFO] [stderr] 218 | else if v.version < cap_info.version { false } [INFO] [stderr] | ______________________________________^ [INFO] [stderr] 219 | | else { true } [INFO] [stderr] | |_____________________________________________^ help: you can reduce it to: `!(v.version < cap_info.version)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/peer.rs:223:61 [INFO] [stderr] | [INFO] [stderr] 223 | shared_capabilities.sort_by_key(|v| v.name.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 223 | shared_capabilities.sort_by_key(|v| &(*v.name).clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 223 | shared_capabilities.sort_by_key(|v| &str::clone(v.name)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: Could not compile `rlpx`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/peer.rs:296:33 [INFO] [stderr] | [INFO] [stderr] 296 | message_id = message_id - cap.length; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `message_id -= cap.length` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/peer.rs:297:33 [INFO] [stderr] | [INFO] [stderr] 297 | index = index + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `index += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/peer.rs:304:26 [INFO] [stderr] | [INFO] [stderr] 304 | (self.shared_capabilities[index].clone(), message_id) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.shared_capabilities[index]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/peer.rs:345:17 [INFO] [stderr] | [INFO] [stderr] 345 | message_id = message_id + scap.length; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `message_id += scap.length` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/peer.rs:350:9 [INFO] [stderr] | [INFO] [stderr] 350 | message_id = message_id + id; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `message_id += id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/mac.rs:26:9 [INFO] [stderr] | [INFO] [stderr] 26 | / aes.encrypt( [INFO] [stderr] 27 | | &mut RefReadBuffer::new(self.digest().as_ref()), [INFO] [stderr] 28 | | &mut RefWriteBuffer::new(encrypted.as_mut()), true); [INFO] [stderr] | |________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/mac.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | encrypted[i] = encrypted[i] ^ data[i]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `encrypted[i] ^= data[i]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/mac.rs:40:9 [INFO] [stderr] | [INFO] [stderr] 40 | / aes.encrypt( [INFO] [stderr] 41 | | &mut RefReadBuffer::new(self.digest().as_ref()), [INFO] [stderr] 42 | | &mut RefWriteBuffer::new(encrypted.as_mut()), true); [INFO] [stderr] | |________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/mac.rs:44:13 [INFO] [stderr] | [INFO] [stderr] 44 | encrypted[i] = encrypted[i] ^ prev[i]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `encrypted[i] ^= prev[i]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/mac.rs:50:21 [INFO] [stderr] | [INFO] [stderr] 50 | H128::from(&self.hasher.clone().result()[0..16]) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.hasher` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:137:13 [INFO] [stderr] | [INFO] [stderr] 137 | let ref mut futures = self.futures; [INFO] [stderr] | ----^^^^^^^^^^^^^^^---------------- help: try: `let futures = &mut self.futures;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:138:13 [INFO] [stderr] | [INFO] [stderr] 138 | let ref mut streams = self.streams; [INFO] [stderr] | ----^^^^^^^^^^^^^^^---------------- help: try: `let streams = &mut self.streams;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:139:13 [INFO] [stderr] | [INFO] [stderr] 139 | let ref mut newly_disconnected = self.newly_disconnected; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^^^^^^^--------------------------- help: try: `let newly_disconnected = &mut self.newly_disconnected;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:157:13 [INFO] [stderr] | [INFO] [stderr] 157 | let ref mut futures = self.futures; [INFO] [stderr] | ----^^^^^^^^^^^^^^^---------------- help: try: `let futures = &mut self.futures;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:158:13 [INFO] [stderr] | [INFO] [stderr] 158 | let ref mut incoming_futures = self.incoming_futures; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^^^^^------------------------- help: try: `let incoming_futures = &mut self.incoming_futures;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:159:13 [INFO] [stderr] | [INFO] [stderr] 159 | let ref mut streams = self.streams; [INFO] [stderr] | ----^^^^^^^^^^^^^^^---------------- help: try: `let streams = &mut self.streams;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:160:13 [INFO] [stderr] | [INFO] [stderr] 160 | let ref mut active_peers = self.active_peers; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^--------------------- help: try: `let active_peers = &mut self.active_peers;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:161:13 [INFO] [stderr] | [INFO] [stderr] 161 | let ref mut newly_connected = self.newly_connected; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^^^^------------------------ help: try: `let newly_connected = &mut self.newly_connected;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/lib.rs:190:13 [INFO] [stderr] | [INFO] [stderr] 190 | / loop { [INFO] [stderr] 191 | | match tcp_incoming.poll()? { [INFO] [stderr] 192 | | Async::Ready(Some((stream, addr))) => { [INFO] [stderr] 193 | | incoming_futures.push(PeerStream::incoming( [INFO] [stderr] ... | [INFO] [stderr] 200 | | } [INFO] [stderr] 201 | | } [INFO] [stderr] | |_____________^ help: try: `while let Async::Ready(Some((stream, addr))) = tcp_incoming.poll()? { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:264:12 [INFO] [stderr] | [INFO] [stderr] 264 | if self.newly_connected.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.newly_connected.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:271:12 [INFO] [stderr] | [INFO] [stderr] 271 | if self.newly_disconnected.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.newly_disconnected.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:280:17 [INFO] [stderr] | [INFO] [stderr] 280 | let ref mut streams = self.streams; [INFO] [stderr] | ----^^^^^^^^^^^^^^^---------------- help: try: `let streams = &mut self.streams;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:281:17 [INFO] [stderr] | [INFO] [stderr] 281 | let ref mut active_peers = self.active_peers; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^--------------------- help: try: `let active_peers = &mut self.active_peers;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:282:17 [INFO] [stderr] | [INFO] [stderr] 282 | let ref mut newly_connected = self.newly_connected; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^^^^------------------------ help: try: `let newly_connected = &mut self.newly_connected;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:283:17 [INFO] [stderr] | [INFO] [stderr] 283 | let ref mut newly_disconnected = self.newly_disconnected; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^^^^^^^--------------------------- help: try: `let newly_disconnected = &mut self.newly_disconnected;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:323:16 [INFO] [stderr] | [INFO] [stderr] 323 | if self.newly_connected.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.newly_connected.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:330:16 [INFO] [stderr] | [INFO] [stderr] 330 | if self.newly_disconnected.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.newly_disconnected.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:347:13 [INFO] [stderr] | [INFO] [stderr] 347 | let ref mut streams = self.streams; [INFO] [stderr] | ----^^^^^^^^^^^^^^^---------------- help: try: `let streams = &mut self.streams;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:348:13 [INFO] [stderr] | [INFO] [stderr] 348 | let ref mut active_peers = self.active_peers; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^--------------------- help: try: `let active_peers = &mut self.active_peers;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:349:13 [INFO] [stderr] | [INFO] [stderr] 349 | let ref mut newly_disconnected = self.newly_disconnected; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^^^^^^^--------------------------- help: try: `let newly_disconnected = &mut self.newly_disconnected;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/lib.rs:352:12 [INFO] [stderr] | [INFO] [stderr] 352 | if match &message.node { [INFO] [stderr] | ____________^ [INFO] [stderr] 353 | | &RLPxNode::Any => true, [INFO] [stderr] 354 | | _ => false, [INFO] [stderr] 355 | | } { [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: try [INFO] [stderr] | [INFO] [stderr] 352 | if match message.node { [INFO] [stderr] 353 | RLPxNode::Any => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:398:13 [INFO] [stderr] | [INFO] [stderr] 398 | let ref mut streams = self.streams; [INFO] [stderr] | ----^^^^^^^^^^^^^^^---------------- help: try: `let streams = &mut self.streams;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:399:13 [INFO] [stderr] | [INFO] [stderr] 399 | let ref mut active_peers = self.active_peers; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^--------------------- help: try: `let active_peers = &mut self.active_peers;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:400:13 [INFO] [stderr] | [INFO] [stderr] 400 | let ref mut newly_disconnected = self.newly_disconnected; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^^^^^^^--------------------------- help: try: `let newly_disconnected = &mut self.newly_disconnected;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `rlpx`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "783ba4977dcdbb1f512d133c5dd39dfc7f32efe444a4ccef64dbcd536a62c51c"` [INFO] running `"docker" "rm" "-f" "783ba4977dcdbb1f512d133c5dd39dfc7f32efe444a4ccef64dbcd536a62c51c"` [INFO] [stdout] 783ba4977dcdbb1f512d133c5dd39dfc7f32efe444a4ccef64dbcd536a62c51c