[INFO] updating cached repository lolzballs/ntcp [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/lolzballs/ntcp [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/lolzballs/ntcp" "work/ex/clippy-test-run/sources/stable/gh/lolzballs/ntcp"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/lolzballs/ntcp'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/lolzballs/ntcp" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/lolzballs/ntcp"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/lolzballs/ntcp'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 88c3db132aea844a3599c704c1dfcd86fc50f455 [INFO] sha for GitHub repo lolzballs/ntcp: 88c3db132aea844a3599c704c1dfcd86fc50f455 [INFO] validating manifest of lolzballs/ntcp 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 lolzballs/ntcp 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 lolzballs/ntcp [INFO] removed workspace from lolzballs/ntcp [INFO] finished frobbing lolzballs/ntcp [INFO] frobbed toml for lolzballs/ntcp written to work/ex/clippy-test-run/sources/stable/gh/lolzballs/ntcp/Cargo.toml [INFO] started frobbing lolzballs/ntcp [INFO] removed workspace from lolzballs/ntcp [INFO] finished frobbing lolzballs/ntcp [INFO] frobbed toml for lolzballs/ntcp written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/lolzballs/ntcp/Cargo.toml [INFO] crate lolzballs/ntcp has a lockfile. skipping [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 lolzballs/ntcp against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/lolzballs/ntcp:/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 -Dclippy::into_iter_on_array" "-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] 42ff7cd93487ad6f4e9c6f0553a5f44d11dfcb06992fe3997a0b4969150d37aa [INFO] running `"docker" "start" "-a" "42ff7cd93487ad6f4e9c6f0553a5f44d11dfcb06992fe3997a0b4969150d37aa"` [INFO] [stderr] Checking ntcp v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ipv4.rs:49:28 [INFO] [stderr] | [INFO] [stderr] 49 | return Ok(Packet { buffer: buffer }); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `buffer` [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/ipv4.rs:54:35 [INFO] [stderr] | [INFO] [stderr] 54 | let packet = Packet { buffer: buffer }; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `buffer` [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/ipv4.rs:311:16 [INFO] [stderr] | [INFO] [stderr] 311 | payload_len: payload_len, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `payload_len` [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/tcp.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | addr: addr, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `addr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tcp.rs:18:13 [INFO] [stderr] | [INFO] [stderr] 18 | port: port, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `port` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tcp.rs:46:25 [INFO] [stderr] | [INFO] [stderr] 46 | Ok(Packet { buffer: buffer }) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `buffer` [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/tcp.rs:424:16 [INFO] [stderr] | [INFO] [stderr] 424 | control: control, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `control` [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/platform/raw.rs:77:16 [INFO] [stderr] | [INFO] [stderr] 77 | recvfd: recvfd, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `recvfd` [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/platform/raw.rs:78:16 [INFO] [stderr] | [INFO] [stderr] 78 | sendfd: sendfd, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `sendfd` [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/platform/raw.rs:80:16 [INFO] [stderr] | [INFO] [stderr] 80 | ring: ring, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `ring` [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/interface.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | endpoint: endpoint, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `endpoint` [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/interface.rs:258:21 [INFO] [stderr] | [INFO] [stderr] 258 | 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/socket/interface.rs:261:21 [INFO] [stderr] | [INFO] [stderr] 261 | 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/socket.rs:23:13 [INFO] [stderr] | [INFO] [stderr] 23 | endpoint: endpoint, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `endpoint` [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/socket.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | rx: rx, [INFO] [stderr] | ^^^^^^ help: replace it with: `rx` [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/socket.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | tx: tx, [INFO] [stderr] | ^^^^^^ help: replace it with: `tx` [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/ipv4.rs:49:28 [INFO] [stderr] | [INFO] [stderr] 49 | return Ok(Packet { buffer: buffer }); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `buffer` [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/ipv4.rs:54:35 [INFO] [stderr] | [INFO] [stderr] 54 | let packet = Packet { buffer: buffer }; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `buffer` [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/ipv4.rs:311:16 [INFO] [stderr] | [INFO] [stderr] 311 | payload_len: payload_len, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `payload_len` [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/tcp.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | addr: addr, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `addr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tcp.rs:18:13 [INFO] [stderr] | [INFO] [stderr] 18 | port: port, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `port` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tcp.rs:46:25 [INFO] [stderr] | [INFO] [stderr] 46 | Ok(Packet { buffer: buffer }) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `buffer` [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/tcp.rs:424:16 [INFO] [stderr] | [INFO] [stderr] 424 | control: control, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `control` [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/platform/raw.rs:77:16 [INFO] [stderr] | [INFO] [stderr] 77 | recvfd: recvfd, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `recvfd` [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/platform/raw.rs:78:16 [INFO] [stderr] | [INFO] [stderr] 78 | sendfd: sendfd, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `sendfd` [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/platform/raw.rs:80:16 [INFO] [stderr] | [INFO] [stderr] 80 | ring: ring, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `ring` [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/interface.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | endpoint: endpoint, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `endpoint` [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/interface.rs:258:21 [INFO] [stderr] | [INFO] [stderr] 258 | 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/socket/interface.rs:261:21 [INFO] [stderr] | [INFO] [stderr] 261 | 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/socket.rs:23:13 [INFO] [stderr] | [INFO] [stderr] 23 | endpoint: endpoint, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `endpoint` [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/socket.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | rx: rx, [INFO] [stderr] | ^^^^^^ help: replace it with: `rx` [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/socket.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | tx: tx, [INFO] [stderr] | ^^^^^^ help: replace it with: `tx` [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: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/ipv4.rs:205:37 [INFO] [stderr] | [INFO] [stderr] 205 | ((if flag { 1 << 6 } else { 0 })); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::double_parens)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/ipv4.rs:213:37 [INFO] [stderr] | [INFO] [stderr] 213 | ((if flag { 1 << 5 } else { 0 })); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::cmp` [INFO] [stderr] --> src/platform/raw.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::cmp; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::time::Instant` [INFO] [stderr] --> src/platform/raw.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use std::time::Instant; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/platform/raw.rs:16:31 [INFO] [stderr] | [INFO] [stderr] 16 | const RING_FRAME_LEN: usize = 262224; [INFO] [stderr] | ^^^^^^ help: consider: `262_224` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/platform/raw.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | (&mut *(self.base as *mut tpacket_hdr)).tp_status = 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `*(self.base as *mut tpacket_hdr).tp_status` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ref_in_deref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/platform/raw.rs:79:28 [INFO] [stderr] | [INFO] [stderr] 79 | block_size: 524288, [INFO] [stderr] | ^^^^^^ help: consider: `524_288` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/platform/raw.rs:96:28 [INFO] [stderr] | [INFO] [stderr] 96 | tp_frame_size: 262224, [INFO] [stderr] | ^^^^^^ help: consider: `262_224` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ptr` [INFO] [stderr] --> src/socket/interface.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use std::ptr; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `MappedBuffer` [INFO] [stderr] --> src/socket/interface.rs:13:16 [INFO] [stderr] | [INFO] [stderr] 13 | use platform::{MappedBuffer, RawSocket}; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/socket/interface.rs:138:13 [INFO] [stderr] | [INFO] [stderr] 138 | total_len [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/socket/interface.rs:137:29 [INFO] [stderr] | [INFO] [stderr] 137 | let total_len = ip.total_len() as usize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/socket/interface.rs:128:26 [INFO] [stderr] | [INFO] [stderr] 128 | seq: 123123, [INFO] [stderr] | ^^^^^^ help: consider: `123_123` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/socket/interface.rs:176:13 [INFO] [stderr] | [INFO] [stderr] 176 | total_len [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/socket/interface.rs:175:29 [INFO] [stderr] | [INFO] [stderr] 175 | let total_len = ip.total_len() as usize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/socket/interface.rs:214:13 [INFO] [stderr] | [INFO] [stderr] 214 | total_len [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/socket/interface.rs:213:29 [INFO] [stderr] | [INFO] [stderr] 213 | let total_len = ip.total_len() as usize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/ipv4.rs:205:37 [INFO] [stderr] | [INFO] [stderr] 205 | ((if flag { 1 << 6 } else { 0 })); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::double_parens)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/ipv4.rs:213:37 [INFO] [stderr] | [INFO] [stderr] 213 | ((if flag { 1 << 5 } else { 0 })); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::cmp` [INFO] [stderr] --> src/platform/raw.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::cmp; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::time::Instant` [INFO] [stderr] --> src/platform/raw.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use std::time::Instant; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/platform/raw.rs:16:31 [INFO] [stderr] | [INFO] [stderr] 16 | const RING_FRAME_LEN: usize = 262224; [INFO] [stderr] | ^^^^^^ help: consider: `262_224` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/platform/raw.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | (&mut *(self.base as *mut tpacket_hdr)).tp_status = 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `*(self.base as *mut tpacket_hdr).tp_status` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ref_in_deref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/platform/raw.rs:79:28 [INFO] [stderr] | [INFO] [stderr] 79 | block_size: 524288, [INFO] [stderr] | ^^^^^^ help: consider: `524_288` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/platform/raw.rs:96:28 [INFO] [stderr] | [INFO] [stderr] 96 | tp_frame_size: 262224, [INFO] [stderr] | ^^^^^^ help: consider: `262_224` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ptr` [INFO] [stderr] --> src/socket/interface.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use std::ptr; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `MappedBuffer` [INFO] [stderr] --> src/socket/interface.rs:13:16 [INFO] [stderr] | [INFO] [stderr] 13 | use platform::{MappedBuffer, RawSocket}; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/socket/interface.rs:138:13 [INFO] [stderr] | [INFO] [stderr] 138 | total_len [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/socket/interface.rs:137:29 [INFO] [stderr] | [INFO] [stderr] 137 | let total_len = ip.total_len() as usize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/socket/interface.rs:128:26 [INFO] [stderr] | [INFO] [stderr] 128 | seq: 123123, [INFO] [stderr] | ^^^^^^ help: consider: `123_123` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/socket/interface.rs:176:13 [INFO] [stderr] | [INFO] [stderr] 176 | total_len [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/socket/interface.rs:175:29 [INFO] [stderr] | [INFO] [stderr] 175 | let total_len = ip.total_len() as usize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/socket/interface.rs:214:13 [INFO] [stderr] | [INFO] [stderr] 214 | total_len [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/socket/interface.rs:213:29 [INFO] [stderr] | [INFO] [stderr] 213 | let total_len = ip.total_len() as usize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/socket/interface.rs:204:26 [INFO] [stderr] | [INFO] [stderr] 204 | seq: 123123, [INFO] [stderr] | ^^^^^^ help: consider: `123_123` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/socket/interface.rs:268:13 [INFO] [stderr] | [INFO] [stderr] 268 | total_len [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/socket/interface.rs:267:29 [INFO] [stderr] | [INFO] [stderr] 267 | let total_len = ip.total_len() as usize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/socket/interface.rs:353:9 [INFO] [stderr] | [INFO] [stderr] 353 | / if tcprepr.control == tcp::Control::Syn { [INFO] [stderr] 354 | | if tcprepr.ack.is_none() { [INFO] [stderr] 355 | | Self::send_syn_ack(&raw, &tcp, local, remote); [INFO] [stderr] 356 | | [INFO] [stderr] ... | [INFO] [stderr] 364 | | } [INFO] [stderr] 365 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 353 | if tcprepr.control == tcp::Control::Syn && tcprepr.ack.is_none() { [INFO] [stderr] 354 | Self::send_syn_ack(&raw, &tcp, local, remote); [INFO] [stderr] 355 | [INFO] [stderr] 356 | // Channel for sending packets [INFO] [stderr] 357 | let (rx_tx, rx_rx) = mpsc::channel(); [INFO] [stderr] 358 | [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/socket/mod.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | mod socket; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/socket/interface.rs:204:26 [INFO] [stderr] | [INFO] [stderr] 204 | seq: 123123, [INFO] [stderr] | ^^^^^^ help: consider: `123_123` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/socket/interface.rs:268:13 [INFO] [stderr] | [INFO] [stderr] 268 | total_len [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/socket/interface.rs:267:29 [INFO] [stderr] | [INFO] [stderr] 267 | let total_len = ip.total_len() as usize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/socket/interface.rs:353:9 [INFO] [stderr] | [INFO] [stderr] 353 | / if tcprepr.control == tcp::Control::Syn { [INFO] [stderr] 354 | | if tcprepr.ack.is_none() { [INFO] [stderr] 355 | | Self::send_syn_ack(&raw, &tcp, local, remote); [INFO] [stderr] 356 | | [INFO] [stderr] ... | [INFO] [stderr] 364 | | } [INFO] [stderr] 365 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 353 | if tcprepr.control == tcp::Control::Syn && tcprepr.ack.is_none() { [INFO] [stderr] 354 | Self::send_syn_ack(&raw, &tcp, local, remote); [INFO] [stderr] 355 | [INFO] [stderr] 356 | // Channel for sending packets [INFO] [stderr] 357 | let (rx_tx, rx_rx) = mpsc::channel(); [INFO] [stderr] 358 | [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/socket/mod.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | mod socket; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: unreachable statement [INFO] [stderr] --> src/ipv4.rs:50:9 [INFO] [stderr] | [INFO] [stderr] 50 | let len = buffer.as_ref().len(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unreachable_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: unreachable statement [INFO] [stderr] --> src/ipv4.rs:50:9 [INFO] [stderr] | [INFO] [stderr] 50 | let len = buffer.as_ref().len(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unreachable_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `src_addr` [INFO] [stderr] --> src/tcp.rs:387:29 [INFO] [stderr] | [INFO] [stderr] 387 | src_addr: &ipv4::Address, [INFO] [stderr] | ^^^^^^^^ help: consider using `_src_addr` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `dst_addr` [INFO] [stderr] --> src/tcp.rs:388:29 [INFO] [stderr] | [INFO] [stderr] 388 | dst_addr: &ipv4::Address) [INFO] [stderr] | ^^^^^^^^ help: consider using `_dst_addr` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `seq` [INFO] [stderr] --> src/socket/interface.rs:332:38 [INFO] [stderr] | [INFO] [stderr] 332 | seq: seq, [INFO] [stderr] | ^^^ help: consider using `_seq` instead [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ipv4.rs:166:13 [INFO] [stderr] | [INFO] [stderr] 166 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ipv4.rs:172:13 [INFO] [stderr] | [INFO] [stderr] 172 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ipv4.rs:178:13 [INFO] [stderr] | [INFO] [stderr] 178 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ipv4.rs:184:13 [INFO] [stderr] | [INFO] [stderr] 184 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ipv4.rs:190:13 [INFO] [stderr] | [INFO] [stderr] 190 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ipv4.rs:196:13 [INFO] [stderr] | [INFO] [stderr] 196 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ipv4.rs:203:13 [INFO] [stderr] | [INFO] [stderr] 203 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ipv4.rs:211:13 [INFO] [stderr] | [INFO] [stderr] 211 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ipv4.rs:218:13 [INFO] [stderr] | [INFO] [stderr] 218 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ipv4.rs:224:13 [INFO] [stderr] | [INFO] [stderr] 224 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ipv4.rs:230:13 [INFO] [stderr] | [INFO] [stderr] 230 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ipv4.rs:236:13 [INFO] [stderr] | [INFO] [stderr] 236 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ipv4.rs:242:13 [INFO] [stderr] | [INFO] [stderr] 242 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ipv4.rs:251:13 [INFO] [stderr] | [INFO] [stderr] 251 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `src_addr` [INFO] [stderr] --> src/tcp.rs:387:29 [INFO] [stderr] | [INFO] [stderr] 387 | src_addr: &ipv4::Address, [INFO] [stderr] | ^^^^^^^^ help: consider using `_src_addr` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `dst_addr` [INFO] [stderr] --> src/tcp.rs:388:29 [INFO] [stderr] | [INFO] [stderr] 388 | dst_addr: &ipv4::Address) [INFO] [stderr] | ^^^^^^^^ help: consider using `_dst_addr` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `seq` [INFO] [stderr] --> src/socket/interface.rs:332:38 [INFO] [stderr] | [INFO] [stderr] 332 | seq: seq, [INFO] [stderr] | ^^^ help: consider using `_seq` instead [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:173:13 [INFO] [stderr] | [INFO] [stderr] 173 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:179:13 [INFO] [stderr] | [INFO] [stderr] 179 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:185:13 [INFO] [stderr] | [INFO] [stderr] 185 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:191:13 [INFO] [stderr] | [INFO] [stderr] 191 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:197:13 [INFO] [stderr] | [INFO] [stderr] 197 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:204:13 [INFO] [stderr] | [INFO] [stderr] 204 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:211:13 [INFO] [stderr] | [INFO] [stderr] 211 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:221:13 [INFO] [stderr] | [INFO] [stderr] 221 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:231:13 [INFO] [stderr] | [INFO] [stderr] 231 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:241:13 [INFO] [stderr] | [INFO] [stderr] 241 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:251:13 [INFO] [stderr] | [INFO] [stderr] 251 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:261:13 [INFO] [stderr] | [INFO] [stderr] 261 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:271:13 [INFO] [stderr] | [INFO] [stderr] 271 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:281:13 [INFO] [stderr] | [INFO] [stderr] 281 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:291:13 [INFO] [stderr] | [INFO] [stderr] 291 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:301:13 [INFO] [stderr] | [INFO] [stderr] 301 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:307:13 [INFO] [stderr] | [INFO] [stderr] 307 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ipv4.rs:166:13 [INFO] [stderr] | [INFO] [stderr] 166 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:313:13 [INFO] [stderr] | [INFO] [stderr] 313 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ipv4.rs:172:13 [INFO] [stderr] | [INFO] [stderr] 172 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ipv4.rs:178:13 [INFO] [stderr] | [INFO] [stderr] 178 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ipv4.rs:184:13 [INFO] [stderr] | [INFO] [stderr] 184 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ipv4.rs:190:13 [INFO] [stderr] | [INFO] [stderr] 190 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:336:13 [INFO] [stderr] | [INFO] [stderr] 336 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:342:13 [INFO] [stderr] | [INFO] [stderr] 342 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ipv4.rs:196:13 [INFO] [stderr] | [INFO] [stderr] 196 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ipv4.rs:203:13 [INFO] [stderr] | [INFO] [stderr] 203 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ipv4.rs:211:13 [INFO] [stderr] | [INFO] [stderr] 211 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ipv4.rs:218:13 [INFO] [stderr] | [INFO] [stderr] 218 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ipv4.rs:224:13 [INFO] [stderr] | [INFO] [stderr] 224 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ipv4.rs:230:13 [INFO] [stderr] | [INFO] [stderr] 230 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ipv4.rs:236:13 [INFO] [stderr] | [INFO] [stderr] 236 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ipv4.rs:242:13 [INFO] [stderr] | [INFO] [stderr] 242 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ipv4.rs:251:13 [INFO] [stderr] | [INFO] [stderr] 251 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/platform/raw.rs:158:13 [INFO] [stderr] | [INFO] [stderr] 158 | let mut header = unsafe { [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] --> src/tcp.rs:173:13 [INFO] [stderr] | [INFO] [stderr] 173 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:179:13 [INFO] [stderr] | [INFO] [stderr] 179 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:185:13 [INFO] [stderr] | [INFO] [stderr] 185 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:191:13 [INFO] [stderr] | [INFO] [stderr] 191 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:197:13 [INFO] [stderr] | [INFO] [stderr] 197 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:204:13 [INFO] [stderr] | [INFO] [stderr] 204 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:211:13 [INFO] [stderr] | [INFO] [stderr] 211 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:221:13 [INFO] [stderr] | [INFO] [stderr] 221 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:231:13 [INFO] [stderr] | [INFO] [stderr] 231 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:241:13 [INFO] [stderr] | [INFO] [stderr] 241 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:251:13 [INFO] [stderr] | [INFO] [stderr] 251 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:261:13 [INFO] [stderr] | [INFO] [stderr] 261 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:271:13 [INFO] [stderr] | [INFO] [stderr] 271 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:281:13 [INFO] [stderr] | [INFO] [stderr] 281 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:291:13 [INFO] [stderr] | [INFO] [stderr] 291 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:301:13 [INFO] [stderr] | [INFO] [stderr] 301 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:307:13 [INFO] [stderr] | [INFO] [stderr] 307 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:313:13 [INFO] [stderr] | [INFO] [stderr] 313 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:336:13 [INFO] [stderr] | [INFO] [stderr] 336 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tcp.rs:342:13 [INFO] [stderr] | [INFO] [stderr] 342 | let mut buf = self.buffer.as_mut(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/platform/raw.rs:158:13 [INFO] [stderr] | [INFO] [stderr] 158 | let mut header = unsafe { [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/socket/socket.rs:78:21 [INFO] [stderr] | [INFO] [stderr] 78 | let mut buf = &mut buf[read_len..]; [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/socket/socket.rs:80:21 [INFO] [stderr] | [INFO] [stderr] 80 | let mut buf = &mut buf[..len]; [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `TP_STATUS_COPY` [INFO] [stderr] --> src/platform/if_packet.rs:13:1 [INFO] [stderr] | [INFO] [stderr] 13 | pub const TP_STATUS_COPY: libc::c_ulong = 1 << 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `TP_STATUS_LOSING` [INFO] [stderr] --> src/platform/if_packet.rs:14:1 [INFO] [stderr] | [INFO] [stderr] 14 | pub const TP_STATUS_LOSING: libc::c_ulong = 1 << 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `ring_offset` [INFO] [stderr] --> src/platform/raw.rs:66:5 [INFO] [stderr] | [INFO] [stderr] 66 | ring_offset: usize, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `RECV_BUF_LEN` [INFO] [stderr] --> src/socket/interface.rs:16:1 [INFO] [stderr] | [INFO] [stderr] 16 | const RECV_BUF_LEN: usize = 17000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Closed` [INFO] [stderr] --> src/socket/mod.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | Closed, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ipv4.rs:23:19 [INFO] [stderr] | [INFO] [stderr] 23 | pub fn as_u32(&self) -> u32 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/socket/socket.rs:78:21 [INFO] [stderr] | [INFO] [stderr] 78 | let mut buf = &mut buf[read_len..]; [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/socket/socket.rs:80:21 [INFO] [stderr] | [INFO] [stderr] 80 | let mut buf = &mut buf[..len]; [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `TP_STATUS_COPY` [INFO] [stderr] --> src/platform/if_packet.rs:13:1 [INFO] [stderr] | [INFO] [stderr] 13 | pub const TP_STATUS_COPY: libc::c_ulong = 1 << 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `TP_STATUS_LOSING` [INFO] [stderr] --> src/platform/if_packet.rs:14:1 [INFO] [stderr] | [INFO] [stderr] 14 | pub const TP_STATUS_LOSING: libc::c_ulong = 1 << 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `ring_offset` [INFO] [stderr] --> src/platform/raw.rs:66:5 [INFO] [stderr] | [INFO] [stderr] 66 | ring_offset: usize, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `RECV_BUF_LEN` [INFO] [stderr] --> src/socket/interface.rs:16:1 [INFO] [stderr] | [INFO] [stderr] 16 | const RECV_BUF_LEN: usize = 17000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Closed` [INFO] [stderr] --> src/socket/mod.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | Closed, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ipv4.rs:23:19 [INFO] [stderr] | [INFO] [stderr] 23 | pub fn as_u32(&self) -> u32 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ipv4.rs:235:42 [INFO] [stderr] | [INFO] [stderr] 235 | pub fn set_src_addr(&mut self, addr: &Address) { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `Address` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ipv4.rs:241:42 [INFO] [stderr] | [INFO] [stderr] 241 | pub fn set_dst_addr(&mut self, addr: &Address) { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `Address` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/ipv4.rs:320:19 [INFO] [stderr] | [INFO] [stderr] 320 | let len = packet.header_len() as u16 + self.payload_len as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(packet.header_len())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/ipv4.rs:349:17 [INFO] [stderr] | [INFO] [stderr] 349 | NetworkEndian::read_u16(&data[i..i + 2]).to_be() as u32 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(NetworkEndian::read_u16(&data[i..i + 2]).to_be())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/ipv4.rs:351:17 [INFO] [stderr] | [INFO] [stderr] 351 | (data[i] as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u32::from(data[i])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ipv4.rs:361:36 [INFO] [stderr] | [INFO] [stderr] 361 | pub fn pseudo_header(src_addr: &Address, dst_addr: &Address, length: u16) -> u32 { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `Address` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ipv4.rs:361:56 [INFO] [stderr] | [INFO] [stderr] 361 | pub fn pseudo_header(src_addr: &Address, dst_addr: &Address, length: u16) -> u32 { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `Address` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/ipv4.rs:365:71 [INFO] [stderr] | [INFO] [stderr] 365 | (src >> 16) + (src & 0xFFFF) + (dst >> 16) + (dst & 0xFFFF) + (length.to_be() as u32) + [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(length.to_be())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/ipv4.rs:366:9 [INFO] [stderr] | [INFO] [stderr] 366 | ((TCP_PROTOCOL as u16).to_be() as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from((TCP_PROTOCOL as u16).to_be())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/ipv4.rs:366:10 [INFO] [stderr] | [INFO] [stderr] 366 | ((TCP_PROTOCOL as u16).to_be() as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(TCP_PROTOCOL)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ipv4.rs:235:42 [INFO] [stderr] | [INFO] [stderr] 235 | pub fn set_src_addr(&mut self, addr: &Address) { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `Address` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ipv4.rs:241:42 [INFO] [stderr] | [INFO] [stderr] 241 | pub fn set_dst_addr(&mut self, addr: &Address) { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `Address` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tcp.rs:152:44 [INFO] [stderr] | [INFO] [stderr] 152 | pub fn checksum_valid(&self, src_addr: &ipv4::Address, dst_addr: &ipv4::Address) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider passing by value instead: `ipv4::Address` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tcp.rs:152:70 [INFO] [stderr] | [INFO] [stderr] 152 | pub fn checksum_valid(&self, src_addr: &ipv4::Address, dst_addr: &ipv4::Address) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider passing by value instead: `ipv4::Address` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tcp.rs:318:47 [INFO] [stderr] | [INFO] [stderr] 318 | pub fn fill_checksum(&mut self, src_addr: &ipv4::Address, dst_addr: &ipv4::Address) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider passing by value instead: `ipv4::Address` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tcp.rs:318:73 [INFO] [stderr] | [INFO] [stderr] 318 | pub fn fill_checksum(&mut self, src_addr: &ipv4::Address, dst_addr: &ipv4::Address) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider passing by value instead: `ipv4::Address` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/ipv4.rs:320:19 [INFO] [stderr] | [INFO] [stderr] 320 | let len = packet.header_len() as u16 + self.payload_len as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(packet.header_len())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/ipv4.rs:349:17 [INFO] [stderr] | [INFO] [stderr] 349 | NetworkEndian::read_u16(&data[i..i + 2]).to_be() as u32 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(NetworkEndian::read_u16(&data[i..i + 2]).to_be())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/ipv4.rs:351:17 [INFO] [stderr] | [INFO] [stderr] 351 | (data[i] as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u32::from(data[i])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tcp.rs:387:39 [INFO] [stderr] | [INFO] [stderr] 387 | src_addr: &ipv4::Address, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider passing by value instead: `ipv4::Address` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tcp.rs:388:39 [INFO] [stderr] | [INFO] [stderr] 388 | dst_addr: &ipv4::Address) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider passing by value instead: `ipv4::Address` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tcp.rs:435:38 [INFO] [stderr] | [INFO] [stderr] 435 | src_addr: &ipv4::Address, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider passing by value instead: `ipv4::Address` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tcp.rs:436:38 [INFO] [stderr] | [INFO] [stderr] 436 | dst_addr: &ipv4::Address) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider passing by value instead: `ipv4::Address` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ipv4.rs:361:36 [INFO] [stderr] | [INFO] [stderr] 361 | pub fn pseudo_header(src_addr: &Address, dst_addr: &Address, length: u16) -> u32 { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `Address` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ipv4.rs:361:56 [INFO] [stderr] | [INFO] [stderr] 361 | pub fn pseudo_header(src_addr: &Address, dst_addr: &Address, length: u16) -> u32 { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `Address` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/ipv4.rs:365:71 [INFO] [stderr] | [INFO] [stderr] 365 | (src >> 16) + (src & 0xFFFF) + (dst >> 16) + (dst & 0xFFFF) + (length.to_be() as u32) + [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(length.to_be())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/ipv4.rs:366:9 [INFO] [stderr] | [INFO] [stderr] 366 | ((TCP_PROTOCOL as u16).to_be() as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from((TCP_PROTOCOL as u16).to_be())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/ipv4.rs:366:10 [INFO] [stderr] | [INFO] [stderr] 366 | ((TCP_PROTOCOL as u16).to_be() as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(TCP_PROTOCOL)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `1` [INFO] [stderr] --> src/platform/if_packet.rs:12:43 [INFO] [stderr] | [INFO] [stderr] 12 | pub const TP_STATUS_USER: libc::c_ulong = 1 << 0; [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: use of `offset` with a `usize` casted to an `isize` [INFO] [stderr] --> src/platform/raw.rs:51:35 [INFO] [stderr] | [INFO] [stderr] 51 | slice::from_raw_parts(self.base.offset(TPACKET_HDR_LEN as isize) as *const u8, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.base.add(TPACKET_HDR_LEN)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_offset_with_cast)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/platform/raw.rs:128:70 [INFO] [stderr] | [INFO] [stderr] 128 | unsafe { libc::socket(libc::AF_PACKET, libc::SOCK_DGRAM, ETH_P_IP.to_be() as i32) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(ETH_P_IP.to_be())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: use of `offset` with a `usize` casted to an `isize` [INFO] [stderr] --> src/platform/raw.rs:160:27 [INFO] [stderr] | [INFO] [stderr] 160 | let pointer = self.ring.offset((index * self.block_size) as isize) as *mut tpacket_hdr; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.ring.add((index * self.block_size))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast [INFO] [stderr] [INFO] [stderr] error: Variable in the condition are not mutated in the loop body. This either leads to an infinite or to a never running loop. [INFO] [stderr] --> src/platform/raw.rs:164:15 [INFO] [stderr] | [INFO] [stderr] 164 | while header.tp_status & TP_STATUS_USER == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::while_immutable_condition)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_immutable_condition [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tcp.rs:152:44 [INFO] [stderr] | [INFO] [stderr] 152 | pub fn checksum_valid(&self, src_addr: &ipv4::Address, dst_addr: &ipv4::Address) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider passing by value instead: `ipv4::Address` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tcp.rs:152:70 [INFO] [stderr] | [INFO] [stderr] 152 | pub fn checksum_valid(&self, src_addr: &ipv4::Address, dst_addr: &ipv4::Address) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider passing by value instead: `ipv4::Address` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: The function/method `::send` doesn't need a mutable reference [INFO] [stderr] --> src/socket/interface.rs:78:66 [INFO] [stderr] | [INFO] [stderr] 78 | &mut sockets, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tcp.rs:318:47 [INFO] [stderr] | [INFO] [stderr] 318 | pub fn fill_checksum(&mut self, src_addr: &ipv4::Address, dst_addr: &ipv4::Address) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider passing by value instead: `ipv4::Address` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tcp.rs:318:73 [INFO] [stderr] | [INFO] [stderr] 318 | pub fn fill_checksum(&mut self, src_addr: &ipv4::Address, dst_addr: &ipv4::Address) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider passing by value instead: `ipv4::Address` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tcp.rs:387:39 [INFO] [stderr] | [INFO] [stderr] 387 | src_addr: &ipv4::Address, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider passing by value instead: `ipv4::Address` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tcp.rs:388:39 [INFO] [stderr] | [INFO] [stderr] 388 | dst_addr: &ipv4::Address) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider passing by value instead: `ipv4::Address` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tcp.rs:435:38 [INFO] [stderr] | [INFO] [stderr] 435 | src_addr: &ipv4::Address, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider passing by value instead: `ipv4::Address` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tcp.rs:436:38 [INFO] [stderr] | [INFO] [stderr] 436 | dst_addr: &ipv4::Address) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider passing by value instead: `ipv4::Address` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `1` [INFO] [stderr] --> src/platform/if_packet.rs:12:43 [INFO] [stderr] | [INFO] [stderr] 12 | pub const TP_STATUS_USER: libc::c_ulong = 1 << 0; [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 `seq:` in this pattern is redundant [INFO] [stderr] --> src/socket/interface.rs:243:32 [INFO] [stderr] | [INFO] [stderr] 243 | seq: ref mut seq, [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_shorthand_field_patterns)] on by default [INFO] [stderr] [INFO] [stderr] warning: the `ack:` in this pattern is redundant [INFO] [stderr] --> src/socket/interface.rs:244:32 [INFO] [stderr] | [INFO] [stderr] 244 | ack: ref mut ack, [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/socket/interface.rs:274:5 [INFO] [stderr] | [INFO] [stderr] 274 | / fn process_tcp(raw: &Arc, [INFO] [stderr] 275 | | local: tcp::Endpoint, [INFO] [stderr] 276 | | remote: tcp::Endpoint, [INFO] [stderr] 277 | | tcp: tcp::Packet<&[u8]>, [INFO] [stderr] ... | [INFO] [stderr] 365 | | } [INFO] [stderr] 366 | | } [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/socket/interface.rs:291:25 [INFO] [stderr] | [INFO] [stderr] 291 | / match socket.0 { [INFO] [stderr] 292 | | // SYN-ACK of handshake [INFO] [stderr] 293 | | SocketState::SynSent => { [INFO] [stderr] 294 | | if tcprepr.ack.is_some() { [INFO] [stderr] ... | [INFO] [stderr] 311 | | _ => (), [INFO] [stderr] 312 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 291 | if let SocketState::SynSent = socket.0 { [INFO] [stderr] 292 | if tcprepr.ack.is_some() { [INFO] [stderr] 293 | Self::send_ack(&raw, &tcp, local, remote); [INFO] [stderr] 294 | let (rx_tx, rx_rx) = mpsc::channel(); [INFO] [stderr] 295 | [INFO] [stderr] 296 | socket_send [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: the `ack:` in this pattern is redundant [INFO] [stderr] --> src/socket/interface.rs:331:33 [INFO] [stderr] | [INFO] [stderr] 331 | ack: ref mut ack, [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] [INFO] [stderr] warning: the `seq:` in this pattern is redundant [INFO] [stderr] --> src/socket/interface.rs:332:33 [INFO] [stderr] | [INFO] [stderr] 332 | seq: seq, [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `default` [INFO] [stderr] --> src/socket/interface.rs:376:23 [INFO] [stderr] | [INFO] [stderr] 376 | let buf = raw.recv(index).unwrap_or(Default::default()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `raw.recv(index).unwrap_or_default()` [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 `offset` with a `usize` casted to an `isize` [INFO] [stderr] --> src/platform/raw.rs:51:35 [INFO] [stderr] | [INFO] [stderr] 51 | slice::from_raw_parts(self.base.offset(TPACKET_HDR_LEN as isize) as *const u8, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.base.add(TPACKET_HDR_LEN)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_offset_with_cast)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/platform/raw.rs:128:70 [INFO] [stderr] | [INFO] [stderr] 128 | unsafe { libc::socket(libc::AF_PACKET, libc::SOCK_DGRAM, ETH_P_IP.to_be() as i32) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(ETH_P_IP.to_be())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/socket/socket.rs:41:10 [INFO] [stderr] | [INFO] [stderr] 41 | (self) [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: use of `offset` with a `usize` casted to an `isize` [INFO] [stderr] --> src/platform/raw.rs:160:27 [INFO] [stderr] | [INFO] [stderr] 160 | let pointer = self.ring.offset((index * self.block_size) as isize) as *mut tpacket_hdr; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.ring.add((index * self.block_size))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast [INFO] [stderr] [INFO] [stderr] error: Variable in the condition are not mutated in the loop body. This either leads to an infinite or to a never running loop. [INFO] [stderr] --> src/platform/raw.rs:164:15 [INFO] [stderr] | [INFO] [stderr] 164 | while header.tp_status & TP_STATUS_USER == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::while_immutable_condition)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_immutable_condition [INFO] [stderr] [INFO] [stderr] warning: The function/method `::send` doesn't need a mutable reference [INFO] [stderr] --> src/socket/interface.rs:78:66 [INFO] [stderr] | [INFO] [stderr] 78 | &mut sockets, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `ntcp`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: the `seq:` in this pattern is redundant [INFO] [stderr] --> src/socket/interface.rs:243:32 [INFO] [stderr] | [INFO] [stderr] 243 | seq: ref mut seq, [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_shorthand_field_patterns)] on by default [INFO] [stderr] [INFO] [stderr] warning: the `ack:` in this pattern is redundant [INFO] [stderr] --> src/socket/interface.rs:244:32 [INFO] [stderr] | [INFO] [stderr] 244 | ack: ref mut ack, [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/socket/interface.rs:274:5 [INFO] [stderr] | [INFO] [stderr] 274 | / fn process_tcp(raw: &Arc, [INFO] [stderr] 275 | | local: tcp::Endpoint, [INFO] [stderr] 276 | | remote: tcp::Endpoint, [INFO] [stderr] 277 | | tcp: tcp::Packet<&[u8]>, [INFO] [stderr] ... | [INFO] [stderr] 365 | | } [INFO] [stderr] 366 | | } [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/socket/interface.rs:291:25 [INFO] [stderr] | [INFO] [stderr] 291 | / match socket.0 { [INFO] [stderr] 292 | | // SYN-ACK of handshake [INFO] [stderr] 293 | | SocketState::SynSent => { [INFO] [stderr] 294 | | if tcprepr.ack.is_some() { [INFO] [stderr] ... | [INFO] [stderr] 311 | | _ => (), [INFO] [stderr] 312 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 291 | if let SocketState::SynSent = socket.0 { [INFO] [stderr] 292 | if tcprepr.ack.is_some() { [INFO] [stderr] 293 | Self::send_ack(&raw, &tcp, local, remote); [INFO] [stderr] 294 | let (rx_tx, rx_rx) = mpsc::channel(); [INFO] [stderr] 295 | [INFO] [stderr] 296 | socket_send [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: the `ack:` in this pattern is redundant [INFO] [stderr] --> src/socket/interface.rs:331:33 [INFO] [stderr] | [INFO] [stderr] 331 | ack: ref mut ack, [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] [INFO] [stderr] warning: the `seq:` in this pattern is redundant [INFO] [stderr] --> src/socket/interface.rs:332:33 [INFO] [stderr] | [INFO] [stderr] 332 | seq: seq, [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `default` [INFO] [stderr] --> src/socket/interface.rs:376:23 [INFO] [stderr] | [INFO] [stderr] 376 | let buf = raw.recv(index).unwrap_or(Default::default()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `raw.recv(index).unwrap_or_default()` [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: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/socket/socket.rs:41:10 [INFO] [stderr] | [INFO] [stderr] 41 | (self) [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] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `ntcp`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "42ff7cd93487ad6f4e9c6f0553a5f44d11dfcb06992fe3997a0b4969150d37aa"` [INFO] running `"docker" "rm" "-f" "42ff7cd93487ad6f4e9c6f0553a5f44d11dfcb06992fe3997a0b4969150d37aa"` [INFO] [stdout] 42ff7cd93487ad6f4e9c6f0553a5f44d11dfcb06992fe3997a0b4969150d37aa