[INFO] crate gaffer_udp 0.1.4 is already in cache [INFO] extracting crate gaffer_udp 0.1.4 into work/ex/clippy-test-run/sources/stable/reg/gaffer_udp/0.1.4 [INFO] extracting crate gaffer_udp 0.1.4 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/gaffer_udp/0.1.4 [INFO] validating manifest of gaffer_udp-0.1.4 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 gaffer_udp-0.1.4 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 gaffer_udp-0.1.4 [INFO] removed 0 missing tests [INFO] finished frobbing gaffer_udp-0.1.4 [INFO] frobbed toml for gaffer_udp-0.1.4 written to work/ex/clippy-test-run/sources/stable/reg/gaffer_udp/0.1.4/Cargo.toml [INFO] started frobbing gaffer_udp-0.1.4 [INFO] removed 0 missing tests [INFO] finished frobbing gaffer_udp-0.1.4 [INFO] frobbed toml for gaffer_udp-0.1.4 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/gaffer_udp/0.1.4/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 gaffer_udp-0.1.4 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/gaffer_udp/0.1.4:/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] 0d5342165d2495abd16f67435c683f18daa56bfd1d599b52172aadc1ba2c4b7a [INFO] running `"docker" "start" "-a" "0d5342165d2495abd16f67435c683f18daa56bfd1d599b52172aadc1ba2c4b7a"` [INFO] [stderr] Compiling itertools v0.4.19 [INFO] [stderr] Compiling syntex_pos v0.39.0 [INFO] [stderr] Checking gaffer_udp v0.1.4 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/packet.rs:36:38 [INFO] [stderr] | [INFO] [stderr] 36 | GafferPacket { addr: first_addr, payload: payload } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `payload` [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/packet.rs:68:7 [INFO] [stderr] | [INFO] [stderr] 68 | seq: seq, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `seq` [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/packet.rs:69:7 [INFO] [stderr] | [INFO] [stderr] 69 | ack_seq: ack_seq, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `ack_seq` [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/packet.rs:70:7 [INFO] [stderr] | [INFO] [stderr] 70 | ack_field: ack_field, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ack_field` [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/packet.rs:71:7 [INFO] [stderr] | [INFO] [stderr] 71 | payload: payload [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `payload` [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/socket/mod.rs:43:20 [INFO] [stderr] | [INFO] [stderr] 43 | GafferPacket { addr: addr, payload: packet.payload } [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] Compiling syntex_errors v0.39.0 [INFO] [stderr] warning: this looks like an `else if` but the `else` is missing [INFO] [stderr] --> src/connection.rs:60:6 [INFO] [stderr] | [INFO] [stderr] 60 | } if pos_diff < 32000 { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::suspicious_else_formatting)] on by default [INFO] [stderr] = note: to remove this lint, add the missing `else` or add a new line before the second `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: operator precedence can trip the unwary [INFO] [stderr] --> src/connection.rs:68:34 [INFO] [stderr] | [INFO] [stderr] 68 | self.field = self.field | (1 << neg_diff - 1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider parenthesizing your expression: `1 << (neg_diff - 1)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::precedence)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#precedence [INFO] [stderr] [INFO] [stderr] warning: operator precedence can trip the unwary [INFO] [stderr] --> src/connection.rs:113:41 [INFO] [stderr] | [INFO] [stderr] 113 | let field_acked = (seq_field & (1 << diff - 1) != 0); [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider parenthesizing your expression: `1 << (diff - 1)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#precedence [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'mio::udp::UdpSocket': use net module instead [INFO] [stderr] --> src/socket/non_blocking.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use mio::udp::UdpSocket; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'mio::udp::UdpSocket': use net module instead [INFO] [stderr] --> src/socket/non_blocking.rs:16:15 [INFO] [stderr] | [INFO] [stderr] 16 | udp_socket: UdpSocket, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'mio::udp::UdpSocket': use net module instead [INFO] [stderr] --> src/socket/non_blocking.rs:24:5 [INFO] [stderr] | [INFO] [stderr] 24 | UdpSocket::bind(&first_addr).map(|sock| { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'mio::udp::UdpSocket::bind': use net module instead [INFO] [stderr] --> src/socket/non_blocking.rs:24:5 [INFO] [stderr] | [INFO] [stderr] 24 | UdpSocket::bind(&first_addr).map(|sock| { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'mio::udp::UdpSocket::recv_from': use net module instead [INFO] [stderr] --> src/socket/non_blocking.rs:41:21 [INFO] [stderr] | [INFO] [stderr] 41 | self.udp_socket.recv_from(&mut self.recv_buffer) [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'mio::udp::UdpSocket::send_to': use net module instead [INFO] [stderr] --> src/socket/non_blocking.rs:78:21 [INFO] [stderr] | [INFO] [stderr] 78 | self.udp_socket.send_to(payload.as_ref(), &destination) [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/addr.rs:15:19 [INFO] [stderr] | [INFO] [stderr] 15 | iter.next().ok_or(io::Error::new(io::ErrorKind::Other, "There was no socket addr")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| io::Error::new(io::ErrorKind::Other, "There was no socket addr"))` [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 should consider adding a `Default` implementation for `connection::Connection` [INFO] [stderr] --> src/connection.rs:23:3 [INFO] [stderr] | [INFO] [stderr] 23 | / pub fn new() -> Connection { [INFO] [stderr] 24 | | Connection { [INFO] [stderr] 25 | | seq_num: 0, [INFO] [stderr] 26 | | dropped_packets: Vec::new(), [INFO] [stderr] ... | [INFO] [stderr] 29 | | } [INFO] [stderr] 30 | | } [INFO] [stderr] | |___^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 22 | impl Default for connection::Connection { [INFO] [stderr] 23 | fn default() -> Self { [INFO] [stderr] 24 | Self::new() [INFO] [stderr] 25 | } [INFO] [stderr] 26 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `connection::ExternalAcks` [INFO] [stderr] --> src/connection.rs:45:3 [INFO] [stderr] | [INFO] [stderr] 45 | / pub fn new() -> ExternalAcks { [INFO] [stderr] 46 | | ExternalAcks { last_seq: 0, field: 0, initialized: false } [INFO] [stderr] 47 | | } [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] 38 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/connection.rs:68:7 [INFO] [stderr] | [INFO] [stderr] 68 | self.field = self.field | (1 << neg_diff - 1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.field |= (1 << neg_diff - 1)` [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: you should consider deriving a `Default` implementation for `connection::AckRecord` [INFO] [stderr] --> src/connection.rs:84:3 [INFO] [stderr] | [INFO] [stderr] 84 | / pub fn new() -> AckRecord { [INFO] [stderr] 85 | | AckRecord { packets: HashMap::new() } [INFO] [stderr] 86 | | } [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] 79 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: methods called `is_*` usually take self by reference or no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/connection.rs:88:19 [INFO] [stderr] | [INFO] [stderr] 88 | pub fn is_empty(&mut self) -> bool { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `socket::GafferState` [INFO] [stderr] --> src/socket/mod.rs:21:3 [INFO] [stderr] | [INFO] [stderr] 21 | / pub fn new() -> GafferState { [INFO] [stderr] 22 | | GafferState { connections: HashMap::new() } [INFO] [stderr] 23 | | } [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] 16 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/socket/mod.rs:26:53 [INFO] [stderr] | [INFO] [stderr] 26 | let connection = self.connections.entry(p.addr).or_insert(Connection::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(Connection::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] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/socket/mod.rs:34:51 [INFO] [stderr] | [INFO] [stderr] 34 | let connection = self.connections.entry(addr).or_insert(Connection::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(Connection::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] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/socket/mod.rs:39:51 [INFO] [stderr] | [INFO] [stderr] 39 | let connection = self.connections.entry(addr).or_insert(Connection::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(Connection::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] Compiling syntex_syntax v0.39.0 [INFO] [stderr] Compiling aster v0.22.1 [INFO] [stderr] Compiling syntex v0.39.0 [INFO] [stderr] Compiling serde_codegen_internals v0.4.0 [INFO] [stderr] Compiling quasi v0.16.0 [INFO] [stderr] Compiling quasi_codegen v0.16.0 [INFO] [stderr] Compiling serde_codegen v0.7.15 [INFO] [stderr] Compiling cucumber v0.1.3 [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/packet.rs:36:38 [INFO] [stderr] | [INFO] [stderr] 36 | GafferPacket { addr: first_addr, payload: payload } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `payload` [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/packet.rs:68:7 [INFO] [stderr] | [INFO] [stderr] 68 | seq: seq, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `seq` [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/packet.rs:69:7 [INFO] [stderr] | [INFO] [stderr] 69 | ack_seq: ack_seq, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `ack_seq` [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/packet.rs:70:7 [INFO] [stderr] | [INFO] [stderr] 70 | ack_field: ack_field, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ack_field` [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/packet.rs:71:7 [INFO] [stderr] | [INFO] [stderr] 71 | payload: payload [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `payload` [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/socket/mod.rs:43:20 [INFO] [stderr] | [INFO] [stderr] 43 | GafferPacket { addr: addr, payload: packet.payload } [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: this looks like an `else if` but the `else` is missing [INFO] [stderr] --> src/connection.rs:60:6 [INFO] [stderr] | [INFO] [stderr] 60 | } if pos_diff < 32000 { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::suspicious_else_formatting)] on by default [INFO] [stderr] = note: to remove this lint, add the missing `else` or add a new line before the second `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: operator precedence can trip the unwary [INFO] [stderr] --> src/connection.rs:68:34 [INFO] [stderr] | [INFO] [stderr] 68 | self.field = self.field | (1 << neg_diff - 1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider parenthesizing your expression: `1 << (neg_diff - 1)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::precedence)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#precedence [INFO] [stderr] [INFO] [stderr] warning: operator precedence can trip the unwary [INFO] [stderr] --> src/connection.rs:113:41 [INFO] [stderr] | [INFO] [stderr] 113 | let field_acked = (seq_field & (1 << diff - 1) != 0); [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider parenthesizing your expression: `1 << (diff - 1)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#precedence [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'mio::udp::UdpSocket': use net module instead [INFO] [stderr] --> src/socket/non_blocking.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use mio::udp::UdpSocket; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'mio::udp::UdpSocket': use net module instead [INFO] [stderr] --> src/socket/non_blocking.rs:16:15 [INFO] [stderr] | [INFO] [stderr] 16 | udp_socket: UdpSocket, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'mio::udp::UdpSocket': use net module instead [INFO] [stderr] --> src/socket/non_blocking.rs:24:5 [INFO] [stderr] | [INFO] [stderr] 24 | UdpSocket::bind(&first_addr).map(|sock| { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'mio::udp::UdpSocket::bind': use net module instead [INFO] [stderr] --> src/socket/non_blocking.rs:24:5 [INFO] [stderr] | [INFO] [stderr] 24 | UdpSocket::bind(&first_addr).map(|sock| { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'mio::udp::UdpSocket::recv_from': use net module instead [INFO] [stderr] --> src/socket/non_blocking.rs:41:21 [INFO] [stderr] | [INFO] [stderr] 41 | self.udp_socket.recv_from(&mut self.recv_buffer) [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'mio::udp::UdpSocket::send_to': use net module instead [INFO] [stderr] --> src/socket/non_blocking.rs:78:21 [INFO] [stderr] | [INFO] [stderr] 78 | self.udp_socket.send_to(payload.as_ref(), &destination) [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/addr.rs:15:19 [INFO] [stderr] | [INFO] [stderr] 15 | iter.next().ok_or(io::Error::new(io::ErrorKind::Other, "There was no socket addr")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| io::Error::new(io::ErrorKind::Other, "There was no socket addr"))` [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 should consider adding a `Default` implementation for `connection::Connection` [INFO] [stderr] --> src/connection.rs:23:3 [INFO] [stderr] | [INFO] [stderr] 23 | / pub fn new() -> Connection { [INFO] [stderr] 24 | | Connection { [INFO] [stderr] 25 | | seq_num: 0, [INFO] [stderr] 26 | | dropped_packets: Vec::new(), [INFO] [stderr] ... | [INFO] [stderr] 29 | | } [INFO] [stderr] 30 | | } [INFO] [stderr] | |___^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 22 | impl Default for connection::Connection { [INFO] [stderr] 23 | fn default() -> Self { [INFO] [stderr] 24 | Self::new() [INFO] [stderr] 25 | } [INFO] [stderr] 26 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `connection::ExternalAcks` [INFO] [stderr] --> src/connection.rs:45:3 [INFO] [stderr] | [INFO] [stderr] 45 | / pub fn new() -> ExternalAcks { [INFO] [stderr] 46 | | ExternalAcks { last_seq: 0, field: 0, initialized: false } [INFO] [stderr] 47 | | } [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] 38 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/connection.rs:68:7 [INFO] [stderr] | [INFO] [stderr] 68 | self.field = self.field | (1 << neg_diff - 1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.field |= (1 << neg_diff - 1)` [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: you should consider deriving a `Default` implementation for `connection::AckRecord` [INFO] [stderr] --> src/connection.rs:84:3 [INFO] [stderr] | [INFO] [stderr] 84 | / pub fn new() -> AckRecord { [INFO] [stderr] 85 | | AckRecord { packets: HashMap::new() } [INFO] [stderr] 86 | | } [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] 79 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: methods called `is_*` usually take self by reference or no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/connection.rs:88:19 [INFO] [stderr] | [INFO] [stderr] 88 | pub fn is_empty(&mut self) -> bool { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `socket::GafferState` [INFO] [stderr] --> src/socket/mod.rs:21:3 [INFO] [stderr] | [INFO] [stderr] 21 | / pub fn new() -> GafferState { [INFO] [stderr] 22 | | GafferState { connections: HashMap::new() } [INFO] [stderr] 23 | | } [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] 16 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/socket/mod.rs:26:53 [INFO] [stderr] | [INFO] [stderr] 26 | let connection = self.connections.entry(p.addr).or_insert(Connection::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(Connection::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] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/socket/mod.rs:34:51 [INFO] [stderr] | [INFO] [stderr] 34 | let connection = self.connections.entry(addr).or_insert(Connection::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(Connection::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] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/socket/mod.rs:39:51 [INFO] [stderr] | [INFO] [stderr] 39 | let connection = self.connections.entry(addr).or_insert(Connection::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(Connection::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] warning: the operation is ineffective. Consider reducing it to `0 | // 5 (missing) [INFO] [stderr] (1 << 1) | // 4 (present) [INFO] [stderr] (0 << 2)` [INFO] [stderr] --> src/lib.rs:169:9 [INFO] [stderr] | [INFO] [stderr] 169 | / 0 | // 5 (missing) [INFO] [stderr] 170 | | (1 << 1) | // 4 (present) [INFO] [stderr] 171 | | (0 << 2) | // 3 (missing) [INFO] [stderr] 172 | | (0 << 3) | // 2 (missing) [INFO] [stderr] | |________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `0 | // 5 (missing) [INFO] [stderr] (1 << 1)` [INFO] [stderr] --> src/lib.rs:169:9 [INFO] [stderr] | [INFO] [stderr] 169 | / 0 | // 5 (missing) [INFO] [stderr] 170 | | (1 << 1) | // 4 (present) [INFO] [stderr] 171 | | (0 << 2) | // 3 (missing) [INFO] [stderr] | |________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `(1 << 1)` [INFO] [stderr] --> src/lib.rs:169:9 [INFO] [stderr] | [INFO] [stderr] 169 | / 0 | // 5 (missing) [INFO] [stderr] 170 | | (1 << 1) | // 4 (present) [INFO] [stderr] | |________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> features/step_definitions/socket_steps.rs:38:42 [INFO] [stderr] | [INFO] [stderr] 38 | world.sockets.get_mut(&own_port).ok_or(InvokeResponse::fail_from_str("No socket at that port")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| InvokeResponse::fail_from_str("No socket at that port"))` [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: use of `ok_or` followed by a function call [INFO] [stderr] --> features/step_definitions/socket_steps.rs:51:38 [INFO] [stderr] | [INFO] [stderr] 51 | world.sockets.get_mut(&own_port).ok_or(InvokeResponse::fail_from_str("No socket at that port")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| InvokeResponse::fail_from_str("No socket at that port"))` [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] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> features/step_definitions/socket_steps.rs:68:42 [INFO] [stderr] | [INFO] [stderr] 68 | world.sockets.get_mut(&own_port).ok_or(InvokeResponse::fail_from_str("No socket at that port")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| InvokeResponse::fail_from_str("No socket at that port"))` [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] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> features/step_definitions/gaffer_socket_steps.rs:37:49 [INFO] [stderr] | [INFO] [stderr] 37 | world.gaffer_sockets.get_mut(&own_port).ok_or(InvokeResponse::fail_from_str("No socket at that port")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| InvokeResponse::fail_from_str("No socket at that port"))` [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] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> features/step_definitions/gaffer_socket_steps.rs:51:45 [INFO] [stderr] | [INFO] [stderr] 51 | world.gaffer_sockets.get_mut(&own_port).ok_or(InvokeResponse::fail_from_str("No socket at that port")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| InvokeResponse::fail_from_str("No socket at that port"))` [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] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> features/step_definitions/gaffer_socket_steps.rs:67:49 [INFO] [stderr] | [INFO] [stderr] 67 | world.gaffer_sockets.get_mut(&own_port).ok_or(InvokeResponse::fail_from_str("No socket at that port")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| InvokeResponse::fail_from_str("No socket at that port"))` [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] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> features/support/packets.rs:20:8 [INFO] [stderr] | [INFO] [stderr] 20 | if table.get(0).unwrap().len() != 2 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `&table[0]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> features/support/packets.rs:30:17 [INFO] [stderr] | [INFO] [stderr] 30 | let key = row.get(0).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try this: `&row[0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> features/support/packets.rs:31:19 [INFO] [stderr] | [INFO] [stderr] 31 | let value = row.get(1).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try this: `&row[1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> features/support/packets.rs:76:40 [INFO] [stderr] | [INFO] [stderr] 76 | for value in table.get(0).unwrap().into_iter() { [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> features/support/packets.rs:76:18 [INFO] [stderr] | [INFO] [stderr] 76 | for value in table.get(0).unwrap().into_iter() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `&table[0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 1m 10s [INFO] running `"docker" "inspect" "0d5342165d2495abd16f67435c683f18daa56bfd1d599b52172aadc1ba2c4b7a"` [INFO] running `"docker" "rm" "-f" "0d5342165d2495abd16f67435c683f18daa56bfd1d599b52172aadc1ba2c4b7a"` [INFO] [stdout] 0d5342165d2495abd16f67435c683f18daa56bfd1d599b52172aadc1ba2c4b7a