[INFO] crate smoltcp 0.5.0 is already in cache [INFO] extracting crate smoltcp 0.5.0 into work/ex/clippy-test-run/sources/stable/reg/smoltcp/0.5.0 [INFO] extracting crate smoltcp 0.5.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/smoltcp/0.5.0 [INFO] validating manifest of smoltcp-0.5.0 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of smoltcp-0.5.0 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing smoltcp-0.5.0 [INFO] removed 8 missing examples [INFO] finished frobbing smoltcp-0.5.0 [INFO] frobbed toml for smoltcp-0.5.0 written to work/ex/clippy-test-run/sources/stable/reg/smoltcp/0.5.0/Cargo.toml [INFO] started frobbing smoltcp-0.5.0 [INFO] removed 8 missing examples [INFO] finished frobbing smoltcp-0.5.0 [INFO] frobbed toml for smoltcp-0.5.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/smoltcp/0.5.0/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting smoltcp-0.5.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-7/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/smoltcp/0.5.0:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 9638292064dbb42eec0182bcaaafb86e6c5f15646a72f4ddef7a20dda0996cfd [INFO] running `"docker" "start" "-a" "9638292064dbb42eec0182bcaaafb86e6c5f15646a72f4ddef7a20dda0996cfd"` [INFO] [stderr] Checking bitflags v1.0.4 [INFO] [stderr] Checking managed v0.7.1 [INFO] [stderr] Checking smoltcp v0.5.0 (/opt/crater/workdir) [INFO] [stderr] warning: lint name `if_same_then_else` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/lib.rs:92:45 [INFO] [stderr] | [INFO] [stderr] 92 | #![cfg_attr(feature = "cargo-clippy", allow(if_same_then_else))] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change it to: `clippy::if_same_then_else` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(renamed_and_removed_lints)] on by default [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/storage/assembler.rs:262:13 [INFO] [stderr] | [INFO] [stderr] 262 | assembler: assembler, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `assembler` [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/storage/assembler.rs:263:13 [INFO] [stderr] | [INFO] [stderr] 263 | offset: offset, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `offset` [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/storage/packet_buffer.rs:19:13 [INFO] [stderr] | [INFO] [stderr] 19 | size: size, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `size` [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/storage/packet_buffer.rs:26:13 [INFO] [stderr] | [INFO] [stderr] 26 | size: size, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `size` [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/phy/sys/raw_socket.rs:28:13 [INFO] [stderr] | [INFO] [stderr] 28 | lower: lower, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `lower` [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/phy/sys/tap_interface.rs:28:13 [INFO] [stderr] | [INFO] [stderr] 28 | lower: lower, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `lower` [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/phy/tracer.rs:40:49 [INFO] [stderr] | [INFO] [stderr] 40 | let rx = RxToken { token: rx_token, writer: writer }; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `writer` [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/phy/tracer.rs:41:49 [INFO] [stderr] | [INFO] [stderr] 41 | let tx = TxToken { token: tx_token, writer: writer }; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `writer` [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/phy/tracer.rs:49:40 [INFO] [stderr] | [INFO] [stderr] 49 | TxToken { token: tx_token, writer: writer } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `writer` [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/phy/fault_injector.rs:108:13 [INFO] [stderr] | [INFO] [stderr] 108 | inner: inner, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `inner` [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/phy/fault_injector.rs:208:17 [INFO] [stderr] | [INFO] [stderr] 208 | config: config, [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: replace it with: `config` [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/phy/fault_injector.rs:214:17 [INFO] [stderr] | [INFO] [stderr] 214 | config: config, [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: replace it with: `config` [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/phy/fault_injector.rs:226:13 [INFO] [stderr] | [INFO] [stderr] 226 | config: config, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `config` [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/phy/fault_injector.rs:227:13 [INFO] [stderr] | [INFO] [stderr] 227 | token: token, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `token` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/phy/pcap_writer.rs:149:69 [INFO] [stderr] | [INFO] [stderr] 149 | let rx = RxToken { token: rx_token, sink: sink.clone(), mode: mode }; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `mode` [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/phy/pcap_writer.rs:150:69 [INFO] [stderr] | [INFO] [stderr] 150 | let tx = TxToken { token: tx_token, sink: sink.clone(), mode: mode }; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `mode` [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/phy/pcap_writer.rs:158:50 [INFO] [stderr] | [INFO] [stderr] 158 | TxToken { token, sink: sink.clone(), mode: mode } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `mode` [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/phy/loopback.rs:47:32 [INFO] [stderr] | [INFO] [stderr] 47 | let rx = RxToken { 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/phy/raw_socket.rs:35:13 [INFO] [stderr] | [INFO] [stderr] 35 | mtu: mtu [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `mtu` [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/phy/tap_interface.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | mtu: mtu [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `mtu` [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/wire/pretty_print.rs:46:24 [INFO] [stderr] | [INFO] [stderr] 46 | PrettyIndent { prefix: prefix, level: 0 } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `prefix` [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: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/wire/pretty_print.rs:51:9 [INFO] [stderr] | [INFO] [stderr] 51 | write!(f, "\n")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/wire/pretty_print.rs:89:13 [INFO] [stderr] | [INFO] [stderr] 89 | prefix: prefix, [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: replace it with: `prefix` [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/wire/pretty_print.rs:90:13 [INFO] [stderr] | [INFO] [stderr] 90 | 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/wire/ip.rs:397:20 [INFO] [stderr] | [INFO] [stderr] 397 | Endpoint { addr: addr, port: port } [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/wire/ip.rs:397:32 [INFO] [stderr] | [INFO] [stderr] 397 | Endpoint { addr: addr, 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/wire/ip.rs:424:48 [INFO] [stderr] | [INFO] [stderr] 424 | Endpoint { addr: Address::Unspecified, 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/wire/ip.rs:430:39 [INFO] [stderr] | [INFO] [stderr] 430 | Endpoint { addr: addr.into(), 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/wire/ip.rs:649:21 [INFO] [stderr] | [INFO] [stderr] 649 | src_addr: src_addr, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `src_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/wire/ip.rs:650:21 [INFO] [stderr] | [INFO] [stderr] 650 | dst_addr: dst_addr, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `dst_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/wire/ip.rs:651:21 [INFO] [stderr] | [INFO] [stderr] 651 | protocol: protocol, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `protocol` [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/wire/ip.rs:652:21 [INFO] [stderr] | [INFO] [stderr] 652 | payload_len: payload_len, hop_limit [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/wire/ip.rs:663:21 [INFO] [stderr] | [INFO] [stderr] 663 | src_addr: src_addr, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `src_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/wire/ip.rs:664:21 [INFO] [stderr] | [INFO] [stderr] 664 | dst_addr: dst_addr, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `dst_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/wire/ip.rs:666:21 [INFO] [stderr] | [INFO] [stderr] 666 | 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/wire/ip.rs:667:21 [INFO] [stderr] | [INFO] [stderr] 667 | hop_limit: hop_limit [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `hop_limit` [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/wire/ipv4.rs:580:13 [INFO] [stderr] | [INFO] [stderr] 580 | 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: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/wire/igmp.rs:366:25 [INFO] [stderr] | [INFO] [stderr] 366 | Err(err) => write!(f, "{}({})\n", indent, err), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/wire/igmp.rs:367:27 [INFO] [stderr] | [INFO] [stderr] 367 | Ok(packet) => write!(f, "{}{}\n", indent, packet), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: lint name `if_same_then_else` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/lib.rs:92:45 [INFO] [stderr] | [INFO] [stderr] 92 | #![cfg_attr(feature = "cargo-clippy", allow(if_same_then_else))] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change it to: `clippy::if_same_then_else` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(renamed_and_removed_lints)] on by default [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/wire/tcp.rs:557:55 [INFO] [stderr] | [INFO] [stderr] 557 | option = TcpOption::Unknown { kind: kind, data: data } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `kind` [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/wire/tcp.rs:557:67 [INFO] [stderr] | [INFO] [stderr] 557 | option = TcpOption::Unknown { kind: kind, data: data } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/wire/tcp.rs:718:13 [INFO] [stderr] | [INFO] [stderr] 718 | 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/wire/tcp.rs:720:13 [INFO] [stderr] | [INFO] [stderr] 720 | ack_number: ack_number, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ack_number` [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/wire/tcp.rs:722:13 [INFO] [stderr] | [INFO] [stderr] 722 | window_scale: window_scale, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `window_scale` [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/wire/tcp.rs:723:13 [INFO] [stderr] | [INFO] [stderr] 723 | max_seg_size: max_seg_size, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `max_seg_size` [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/iface/ethernet.rs:131:13 [INFO] [stderr] | [INFO] [stderr] 131 | device: device, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `device` [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/iface/ethernet.rs:1042:29 [INFO] [stderr] | [INFO] [stderr] 1042 | ident: ident, [INFO] [stderr] | ^^^^^^^^^^^^^ help: replace it with: `ident` [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/iface/ethernet.rs:1043:29 [INFO] [stderr] | [INFO] [stderr] 1043 | seq_no: seq_no, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `seq_no` [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/iface/ethernet.rs:1044:29 [INFO] [stderr] | [INFO] [stderr] 1044 | data: data [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `data` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/iface/ethernet.rs:1101:25 [INFO] [stderr] | [INFO] [stderr] 1101 | target_addr: target_addr, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `target_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/iface/ethernet.rs:1182:21 [INFO] [stderr] | [INFO] [stderr] 1182 | ident: ident, [INFO] [stderr] | ^^^^^^^^^^^^^ help: replace it with: `ident` [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/iface/ethernet.rs:1183:21 [INFO] [stderr] | [INFO] [stderr] 1183 | seq_no: seq_no, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `seq_no` [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/iface/ethernet.rs:1184:21 [INFO] [stderr] | [INFO] [stderr] 1184 | data: data [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `data` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/iface/ethernet.rs:1547:21 [INFO] [stderr] | [INFO] [stderr] 1547 | src_addr: src_addr, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `src_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/iface/ethernet.rs:2023:13 [INFO] [stderr] | [INFO] [stderr] 2023 | src_addr: src_addr, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `src_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/iface/ethernet.rs:2024:13 [INFO] [stderr] | [INFO] [stderr] 2024 | dst_addr: dst_addr, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `dst_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/iface/ethernet.rs:2031:13 [INFO] [stderr] | [INFO] [stderr] 2031 | src_addr: src_addr, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `src_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/iface/ethernet.rs:2032:13 [INFO] [stderr] | [INFO] [stderr] 2032 | dst_addr: dst_addr, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `dst_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/storage/assembler.rs:262:13 [INFO] [stderr] | [INFO] [stderr] 262 | assembler: assembler, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `assembler` [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/storage/assembler.rs:263:13 [INFO] [stderr] | [INFO] [stderr] 263 | offset: offset, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `offset` [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/icmp.rs:73:13 [INFO] [stderr] | [INFO] [stderr] 73 | rx_buffer: rx_buffer, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `rx_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/socket/icmp.rs:74:13 [INFO] [stderr] | [INFO] [stderr] 74 | tx_buffer: tx_buffer, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `tx_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/socket/icmp.rs:339:25 [INFO] [stderr] | [INFO] [stderr] 339 | hop_limit: hop_limit, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `hop_limit` [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/icmp.rs:349:25 [INFO] [stderr] | [INFO] [stderr] 349 | src_addr: src_addr, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `src_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/socket/icmp.rs:353:25 [INFO] [stderr] | [INFO] [stderr] 353 | hop_limit: hop_limit, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `hop_limit` [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/icmp.rs:572:13 [INFO] [stderr] | [INFO] [stderr] 572 | data: data [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/storage/packet_buffer.rs:19:13 [INFO] [stderr] | [INFO] [stderr] 19 | size: size, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `size` [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/socket/icmp.rs:771:13 [INFO] [stderr] | [INFO] [stderr] 771 | data: data [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/socket/udp.rs:35:13 [INFO] [stderr] | [INFO] [stderr] 35 | rx_buffer: rx_buffer, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `rx_buffer` [INFO] [stderr] --> src/storage/packet_buffer.rs:26:13 [INFO] [stderr] | [INFO] [stderr] 26 | size: size, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `size` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/socket/udp.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | tx_buffer: tx_buffer, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `tx_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] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/socket/udp.rs:208:17 [INFO] [stderr] | [INFO] [stderr] 208 | hop_limit: hop_limit, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `hop_limit` [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/phy/sys/raw_socket.rs:28:13 [INFO] [stderr] | [INFO] [stderr] 28 | lower: lower, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `lower` [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/phy/sys/tap_interface.rs:28:13 [INFO] [stderr] | [INFO] [stderr] 28 | lower: lower, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `lower` [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/tcp.rs:273:13 [INFO] [stderr] | [INFO] [stderr] 273 | tx_buffer: tx_buffer, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `tx_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/socket/tcp.rs:274:13 [INFO] [stderr] | [INFO] [stderr] 274 | rx_buffer: rx_buffer, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `rx_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/phy/tracer.rs:40:49 [INFO] [stderr] | [INFO] [stderr] 40 | let rx = RxToken { token: rx_token, writer: writer }; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `writer` [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/phy/tracer.rs:41:49 [INFO] [stderr] | [INFO] [stderr] 41 | let tx = TxToken { token: tx_token, writer: writer }; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `writer` [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/phy/tracer.rs:49:40 [INFO] [stderr] | [INFO] [stderr] 49 | TxToken { token: tx_token, writer: writer } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `writer` [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/phy/fault_injector.rs:108:13 [INFO] [stderr] | [INFO] [stderr] 108 | inner: inner, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `inner` [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/phy/fault_injector.rs:208:17 [INFO] [stderr] | [INFO] [stderr] 208 | config: config, [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: replace it with: `config` [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/phy/fault_injector.rs:214:17 [INFO] [stderr] | [INFO] [stderr] 214 | config: config, [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: replace it with: `config` [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/phy/fault_injector.rs:226:13 [INFO] [stderr] | [INFO] [stderr] 226 | config: config, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `config` [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/phy/fault_injector.rs:227:13 [INFO] [stderr] | [INFO] [stderr] 227 | token: token, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `token` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/socket/tcp.rs:1782:9 [INFO] [stderr] | [INFO] [stderr] 1782 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/phy/pcap_writer.rs:149:69 [INFO] [stderr] | [INFO] [stderr] 149 | let rx = RxToken { token: rx_token, sink: sink.clone(), mode: mode }; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `mode` [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/phy/pcap_writer.rs:150:69 [INFO] [stderr] | [INFO] [stderr] 150 | let tx = TxToken { token: tx_token, sink: sink.clone(), mode: mode }; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `mode` [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/phy/pcap_writer.rs:158:50 [INFO] [stderr] | [INFO] [stderr] 158 | TxToken { token, sink: sink.clone(), mode: mode } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `mode` [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/phy/loopback.rs:47:32 [INFO] [stderr] | [INFO] [stderr] 47 | let rx = RxToken { 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/phy/raw_socket.rs:35:13 [INFO] [stderr] | [INFO] [stderr] 35 | mtu: mtu [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `mtu` [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/phy/tap_interface.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | mtu: mtu [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `mtu` [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/wire/pretty_print.rs:46:24 [INFO] [stderr] | [INFO] [stderr] 46 | PrettyIndent { prefix: prefix, level: 0 } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `prefix` [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: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/wire/pretty_print.rs:51:9 [INFO] [stderr] | [INFO] [stderr] 51 | write!(f, "\n")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/socket/set.rs:42:13 [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] 42 | sockets: sockets [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `sockets` [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] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/socket/set.rs:58:33 [INFO] [stderr] | [INFO] [stderr] 58 | *slot = Some(Item { socket: socket, refs: 1 }); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `socket` [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/wire/pretty_print.rs:89:13 [INFO] [stderr] | [INFO] [stderr] 89 | prefix: prefix, [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: replace it with: `prefix` [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/wire/pretty_print.rs:90:13 [INFO] [stderr] | [INFO] [stderr] 90 | 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/wire/ip.rs:397:20 [INFO] [stderr] | [INFO] [stderr] 397 | Endpoint { addr: addr, port: port } [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/wire/ip.rs:397:32 [INFO] [stderr] | [INFO] [stderr] 397 | Endpoint { addr: addr, 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/wire/ip.rs:424:48 [INFO] [stderr] | [INFO] [stderr] 424 | Endpoint { addr: Address::Unspecified, 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/wire/ip.rs:430:39 [INFO] [stderr] | [INFO] [stderr] 430 | Endpoint { addr: addr.into(), 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/wire/ip.rs:649:21 [INFO] [stderr] | [INFO] [stderr] 649 | src_addr: src_addr, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `src_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/wire/ip.rs:650:21 [INFO] [stderr] | [INFO] [stderr] 650 | dst_addr: dst_addr, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `dst_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/wire/ip.rs:651:21 [INFO] [stderr] | [INFO] [stderr] 651 | protocol: protocol, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `protocol` [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/wire/ip.rs:652:21 [INFO] [stderr] | [INFO] [stderr] 652 | payload_len: payload_len, hop_limit [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/wire/ip.rs:663:21 [INFO] [stderr] | [INFO] [stderr] 663 | src_addr: src_addr, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `src_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/wire/ip.rs:664:21 [INFO] [stderr] | [INFO] [stderr] 664 | dst_addr: dst_addr, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `dst_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/wire/ip.rs:666:21 [INFO] [stderr] | [INFO] [stderr] 666 | 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/wire/ip.rs:667:21 [INFO] [stderr] | [INFO] [stderr] 667 | hop_limit: hop_limit [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `hop_limit` [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/wire/ipv4.rs:580:13 [INFO] [stderr] | [INFO] [stderr] 580 | 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: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/wire/igmp.rs:366:25 [INFO] [stderr] | [INFO] [stderr] 366 | Err(err) => write!(f, "{}({})\n", indent, err), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/wire/igmp.rs:367:27 [INFO] [stderr] | [INFO] [stderr] 367 | Ok(packet) => write!(f, "{}{}\n", indent, packet), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/wire/tcp.rs:557:55 [INFO] [stderr] | [INFO] [stderr] 557 | option = TcpOption::Unknown { kind: kind, data: data } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `kind` [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/wire/tcp.rs:557:67 [INFO] [stderr] | [INFO] [stderr] 557 | option = TcpOption::Unknown { kind: kind, data: data } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/wire/tcp.rs:718:13 [INFO] [stderr] | [INFO] [stderr] 718 | 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/wire/tcp.rs:720:13 [INFO] [stderr] | [INFO] [stderr] 720 | ack_number: ack_number, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ack_number` [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/wire/tcp.rs:722:13 [INFO] [stderr] | [INFO] [stderr] 722 | window_scale: window_scale, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `window_scale` [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/wire/tcp.rs:723:13 [INFO] [stderr] | [INFO] [stderr] 723 | max_seg_size: max_seg_size, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `max_seg_size` [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/iface/ethernet.rs:131:13 [INFO] [stderr] | [INFO] [stderr] 131 | device: device, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `device` [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/iface/ethernet.rs:1042:29 [INFO] [stderr] | [INFO] [stderr] 1042 | ident: ident, [INFO] [stderr] | ^^^^^^^^^^^^^ help: replace it with: `ident` [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/iface/ethernet.rs:1043:29 [INFO] [stderr] | [INFO] [stderr] 1043 | seq_no: seq_no, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `seq_no` [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/iface/ethernet.rs:1044:29 [INFO] [stderr] | [INFO] [stderr] 1044 | data: data [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `data` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/iface/ethernet.rs:1101:25 [INFO] [stderr] | [INFO] [stderr] 1101 | target_addr: target_addr, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `target_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/iface/ethernet.rs:1182:21 [INFO] [stderr] | [INFO] [stderr] 1182 | ident: ident, [INFO] [stderr] | ^^^^^^^^^^^^^ help: replace it with: `ident` [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/iface/ethernet.rs:1183:21 [INFO] [stderr] | [INFO] [stderr] 1183 | seq_no: seq_no, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `seq_no` [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/iface/ethernet.rs:1184:21 [INFO] [stderr] | [INFO] [stderr] 1184 | data: data [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `data` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/iface/ethernet.rs:1547:21 [INFO] [stderr] | [INFO] [stderr] 1547 | src_addr: src_addr, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `src_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/iface/ethernet.rs:2023:13 [INFO] [stderr] | [INFO] [stderr] 2023 | src_addr: src_addr, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `src_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/iface/ethernet.rs:2024:13 [INFO] [stderr] | [INFO] [stderr] 2024 | dst_addr: dst_addr, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `dst_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/iface/ethernet.rs:2031:13 [INFO] [stderr] | [INFO] [stderr] 2031 | src_addr: src_addr, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `src_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/iface/ethernet.rs:2032:13 [INFO] [stderr] | [INFO] [stderr] 2032 | dst_addr: dst_addr, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `dst_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/socket/icmp.rs:73:13 [INFO] [stderr] | [INFO] [stderr] 73 | rx_buffer: rx_buffer, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `rx_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/socket/icmp.rs:74:13 [INFO] [stderr] | [INFO] [stderr] 74 | tx_buffer: tx_buffer, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `tx_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/socket/icmp.rs:339:25 [INFO] [stderr] | [INFO] [stderr] 339 | hop_limit: hop_limit, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `hop_limit` [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/icmp.rs:349:25 [INFO] [stderr] | [INFO] [stderr] 349 | src_addr: src_addr, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `src_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/socket/icmp.rs:353:25 [INFO] [stderr] | [INFO] [stderr] 353 | hop_limit: hop_limit, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `hop_limit` [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/icmp.rs:572:13 [INFO] [stderr] | [INFO] [stderr] 572 | data: data [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/socket/icmp.rs:771:13 [INFO] [stderr] | [INFO] [stderr] 771 | data: data [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/socket/udp.rs:35:13 [INFO] [stderr] | [INFO] [stderr] 35 | rx_buffer: rx_buffer, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `rx_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/socket/udp.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | tx_buffer: tx_buffer, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `tx_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/socket/udp.rs:208:17 [INFO] [stderr] | [INFO] [stderr] 208 | hop_limit: hop_limit, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `hop_limit` [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/tcp.rs:273:13 [INFO] [stderr] | [INFO] [stderr] 273 | tx_buffer: tx_buffer, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `tx_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/socket/tcp.rs:274:13 [INFO] [stderr] | [INFO] [stderr] 274 | rx_buffer: rx_buffer, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `rx_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: using `println!("")` [INFO] [stderr] --> src/socket/tcp.rs:1782:9 [INFO] [stderr] | [INFO] [stderr] 1782 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/socket/set.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | sockets: sockets [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `sockets` [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/set.rs:58:33 [INFO] [stderr] | [INFO] [stderr] 58 | *slot = Some(Item { socket: socket, refs: 1 }); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `socket` [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: lint name `if_same_then_else` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/lib.rs:92:45 [INFO] [stderr] | [INFO] [stderr] 92 | #![cfg_attr(feature = "cargo-clippy", allow(if_same_then_else))] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change it to: `clippy::if_same_then_else` [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/phy/sys/linux.rs:12:41 [INFO] [stderr] | [INFO] [stderr] 12 | pub const TUNSETIFF: libc::c_ulong = 0x400454CA; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x4004_54CA` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/phy/pcap_writer.rs:55:24 [INFO] [stderr] | [INFO] [stderr] 55 | self.write_u32(0xa1b2c3d4); // magic number [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xa1b2_c3d4` [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/wire/ip.rs:204:24 [INFO] [stderr] | [INFO] [stderr] 204 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 205 | | if one { [INFO] [stderr] 206 | | // 1 where 0 was expected [INFO] [stderr] 207 | | return None [INFO] [stderr] 208 | | } [INFO] [stderr] 209 | | } [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] 204 | } else if one { [INFO] [stderr] 205 | // 1 where 0 was expected [INFO] [stderr] 206 | return None [INFO] [stderr] 207 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/wire/ipv4.rs:159:22 [INFO] [stderr] | [INFO] [stderr] 159 | let number = 0xffffffffu32 << (32 - self.prefix_len); [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider: `0xffff_ffffu32` [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/wire/ipv4.rs:179:39 [INFO] [stderr] | [INFO] [stderr] 179 | let number = network_number | 0xffffffffu32 >> network.prefix_len; [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider: `0xffff_ffffu32` [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/wire/ipv6.rs:444:48 [INFO] [stderr] | [INFO] [stderr] 444 | NetworkEndian::read_u24(&data[1..4]) & 0x000fffff [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x000f_ffff` [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/wire/ipv6.rs:526:64 [INFO] [stderr] | [INFO] [stderr] 526 | let raw = (((data[1] & 0xf0) as u32) << 16) | (value & 0x0fffff); [INFO] [stderr] | ^^^^^^^^ help: consider: `0x000f_ffff` [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/wire/ipv6option.rs:29:30 [INFO] [stderr] | [INFO] [stderr] 29 | Skip = 0b00000000, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0000` [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/wire/ipv6option.rs:31:30 [INFO] [stderr] | [INFO] [stderr] 31 | Discard = 0b01000000, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0100_0000` [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/wire/ipv6option.rs:33:30 [INFO] [stderr] | [INFO] [stderr] 33 | DiscardSendAll = 0b10000000, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1000_0000` [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/wire/ipv6option.rs:36:30 [INFO] [stderr] | [INFO] [stderr] 36 | DiscardSendUnicast = 0b11000000, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1100_0000` [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/wire/ipv6option.rs:55:26 [INFO] [stderr] | [INFO] [stderr] 55 | Self::from(raw & 0b11000000u8) [INFO] [stderr] | ^^^^^^^^^^^^ help: consider: `0b1100_0000u8` [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/wire/icmpv6.rs:274:16 [INFO] [stderr] | [INFO] [stderr] 274 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 275 | | if len < self.header_len() { [INFO] [stderr] 276 | | Err(Error::Truncated) [INFO] [stderr] 277 | | } else { [INFO] [stderr] 278 | | Ok(()) [INFO] [stderr] 279 | | } [INFO] [stderr] 280 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [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] 274 | } else if len < self.header_len() { [INFO] [stderr] 275 | Err(Error::Truncated) [INFO] [stderr] 276 | } else { [INFO] [stderr] 277 | Ok(()) [INFO] [stderr] 278 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/wire/ndisc.rs:13:25 [INFO] [stderr] | [INFO] [stderr] 13 | const MANAGED = 0b10000000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1000_0000` [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/wire/ndisc.rs:14:25 [INFO] [stderr] | [INFO] [stderr] 14 | const OTHER = 0b01000000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0100_0000` [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/wire/ndisc.rs:20:27 [INFO] [stderr] | [INFO] [stderr] 20 | const ROUTER = 0b10000000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1000_0000` [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/wire/ndisc.rs:21:27 [INFO] [stderr] | [INFO] [stderr] 21 | const SOLICITED = 0b01000000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0100_0000` [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/wire/ndisc.rs:22:27 [INFO] [stderr] | [INFO] [stderr] 22 | const OVERRIDE = 0b00100000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0010_0000` [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/wire/ndiscoption.rs:39:26 [INFO] [stderr] | [INFO] [stderr] 39 | const ON_LINK = 0b10000000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1000_0000` [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/wire/ndiscoption.rs:40:26 [INFO] [stderr] | [INFO] [stderr] 40 | const ADDRCONF = 0b01000000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0100_0000` [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: unneeded return statement [INFO] [stderr] --> src/wire/ndiscoption.rs:599:31 [INFO] [stderr] | [INFO] [stderr] 599 | Err(_) => return Ok(()), [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/iface/ethernet.rs:1118:9 [INFO] [stderr] | [INFO] [stderr] 1118 | packet [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/iface/ethernet.rs:1074:22 [INFO] [stderr] | [INFO] [stderr] 1074 | let packet = match repr { [INFO] [stderr] | ______________________^ [INFO] [stderr] 1075 | | NdiscRepr::NeighborAdvert { lladdr, target_addr, flags } => { [INFO] [stderr] 1076 | | let ip_addr = ip_repr.src_addr.into(); [INFO] [stderr] 1077 | | match lladdr { [INFO] [stderr] ... | [INFO] [stderr] 1116 | | _ => Ok(Packet::None) [INFO] [stderr] 1117 | | }; [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 `else { if .. }` block can be collapsed [INFO] [stderr] --> src/iface/ethernet.rs:1081:32 [INFO] [stderr] | [INFO] [stderr] 1081 | } else { [INFO] [stderr] | ________________________________^ [INFO] [stderr] 1082 | | if self.neighbor_cache.lookup_pure(&ip_addr, timestamp).is_none() { [INFO] [stderr] 1083 | | self.neighbor_cache.fill(ip_addr, lladdr, timestamp) [INFO] [stderr] 1084 | | } [INFO] [stderr] 1085 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [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] 1081 | } else if self.neighbor_cache.lookup_pure(&ip_addr, timestamp).is_none() { [INFO] [stderr] 1082 | self.neighbor_cache.fill(ip_addr, lladdr, timestamp) [INFO] [stderr] 1083 | } [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/iface/ethernet.rs:1625:13 [INFO] [stderr] | [INFO] [stderr] 1625 | pkt [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/iface/ethernet.rs:1618:23 [INFO] [stderr] | [INFO] [stderr] 1618 | let pkt = Packet::Igmp((Ipv4Repr { [INFO] [stderr] | _______________________^ [INFO] [stderr] 1619 | | src_addr: iface_addr, [INFO] [stderr] 1620 | | dst_addr: Ipv4Address::MULTICAST_ALL_ROUTERS, [INFO] [stderr] 1621 | | protocol: IpProtocol::Igmp, [INFO] [stderr] 1622 | | payload_len: igmp_repr.buffer_len(), [INFO] [stderr] 1623 | | hop_limit: 1, [INFO] [stderr] 1624 | | }, igmp_repr)); [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: unneeded return statement [INFO] [stderr] --> src/socket/set.rs:78:17 [INFO] [stderr] | [INFO] [stderr] 78 | return put(index, &mut sockets[index], socket) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `put(index, &mut sockets[index], socket)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/time.rs:83:75 [INFO] [stderr] | [INFO] [stderr] 83 | Self::from_millis(n.as_secs() as i64 * 1000 + (n.subsec_nanos() / 1000000) as i64) [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: lint name `if_same_then_else` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/lib.rs:92:45 [INFO] [stderr] | [INFO] [stderr] 92 | #![cfg_attr(feature = "cargo-clippy", allow(if_same_then_else))] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change it to: `clippy::if_same_then_else` [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/phy/sys/linux.rs:12:41 [INFO] [stderr] | [INFO] [stderr] 12 | pub const TUNSETIFF: libc::c_ulong = 0x400454CA; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x4004_54CA` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/phy/pcap_writer.rs:55:24 [INFO] [stderr] | [INFO] [stderr] 55 | self.write_u32(0xa1b2c3d4); // magic number [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xa1b2_c3d4` [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/wire/ip.rs:204:24 [INFO] [stderr] | [INFO] [stderr] 204 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 205 | | if one { [INFO] [stderr] 206 | | // 1 where 0 was expected [INFO] [stderr] 207 | | return None [INFO] [stderr] 208 | | } [INFO] [stderr] 209 | | } [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] 204 | } else if one { [INFO] [stderr] 205 | // 1 where 0 was expected [INFO] [stderr] 206 | return None [INFO] [stderr] 207 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/wire/ipv4.rs:159:22 [INFO] [stderr] | [INFO] [stderr] 159 | let number = 0xffffffffu32 << (32 - self.prefix_len); [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider: `0xffff_ffffu32` [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/wire/ipv4.rs:179:39 [INFO] [stderr] | [INFO] [stderr] 179 | let number = network_number | 0xffffffffu32 >> network.prefix_len; [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider: `0xffff_ffffu32` [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/wire/ipv6.rs:444:48 [INFO] [stderr] | [INFO] [stderr] 444 | NetworkEndian::read_u24(&data[1..4]) & 0x000fffff [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x000f_ffff` [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/wire/ipv6.rs:526:64 [INFO] [stderr] | [INFO] [stderr] 526 | let raw = (((data[1] & 0xf0) as u32) << 16) | (value & 0x0fffff); [INFO] [stderr] | ^^^^^^^^ help: consider: `0x000f_ffff` [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/wire/ipv6option.rs:29:30 [INFO] [stderr] | [INFO] [stderr] 29 | Skip = 0b00000000, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0000` [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/wire/ipv6option.rs:31:30 [INFO] [stderr] | [INFO] [stderr] 31 | Discard = 0b01000000, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0100_0000` [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/wire/ipv6option.rs:33:30 [INFO] [stderr] | [INFO] [stderr] 33 | DiscardSendAll = 0b10000000, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1000_0000` [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/wire/ipv6option.rs:36:30 [INFO] [stderr] | [INFO] [stderr] 36 | DiscardSendUnicast = 0b11000000, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1100_0000` [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/wire/ipv6option.rs:55:26 [INFO] [stderr] | [INFO] [stderr] 55 | Self::from(raw & 0b11000000u8) [INFO] [stderr] | ^^^^^^^^^^^^ help: consider: `0b1100_0000u8` [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/wire/ipv6option.rs:492:38 [INFO] [stderr] | [INFO] [stderr] 492 | failure_type = Type::Unknown(0b01000001).into(); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0100_0001` [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/wire/ipv6option.rs:494:38 [INFO] [stderr] | [INFO] [stderr] 494 | failure_type = Type::Unknown(0b10100000).into(); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1010_0000` [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/wire/ipv6option.rs:496:38 [INFO] [stderr] | [INFO] [stderr] 496 | failure_type = Type::Unknown(0b11000100).into(); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1100_0100` [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/wire/icmpv6.rs:274:16 [INFO] [stderr] | [INFO] [stderr] 274 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 275 | | if len < self.header_len() { [INFO] [stderr] 276 | | Err(Error::Truncated) [INFO] [stderr] 277 | | } else { [INFO] [stderr] 278 | | Ok(()) [INFO] [stderr] 279 | | } [INFO] [stderr] 280 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [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] 274 | } else if len < self.header_len() { [INFO] [stderr] 275 | Err(Error::Truncated) [INFO] [stderr] 276 | } else { [INFO] [stderr] 277 | Ok(()) [INFO] [stderr] 278 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/wire/ndisc.rs:13:25 [INFO] [stderr] | [INFO] [stderr] 13 | const MANAGED = 0b10000000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1000_0000` [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/wire/ndisc.rs:14:25 [INFO] [stderr] | [INFO] [stderr] 14 | const OTHER = 0b01000000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0100_0000` [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/wire/ndisc.rs:20:27 [INFO] [stderr] | [INFO] [stderr] 20 | const ROUTER = 0b10000000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1000_0000` [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/wire/ndisc.rs:21:27 [INFO] [stderr] | [INFO] [stderr] 21 | const SOLICITED = 0b01000000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0100_0000` [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/wire/ndisc.rs:22:27 [INFO] [stderr] | [INFO] [stderr] 22 | const OVERRIDE = 0b00100000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0010_0000` [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/wire/ndiscoption.rs:39:26 [INFO] [stderr] | [INFO] [stderr] 39 | const ON_LINK = 0b10000000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1000_0000` [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/wire/ndiscoption.rs:40:26 [INFO] [stderr] | [INFO] [stderr] 40 | const ADDRCONF = 0b01000000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0100_0000` [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: unneeded return statement [INFO] [stderr] --> src/wire/ndiscoption.rs:599:31 [INFO] [stderr] | [INFO] [stderr] 599 | Err(_) => return Ok(()), [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/wire/tcp.rs:933:51 [INFO] [stderr] | [INFO] [stderr] 933 | assert_eq!(packet.seq_number(), SeqNumber(0x01234567)); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0123_4567` [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/wire/tcp.rs:934:51 [INFO] [stderr] | [INFO] [stderr] 934 | assert_eq!(packet.ack_number(), SeqNumber(0x89abcdefu32 as i32)); [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider: `0x89ab_cdefu32` [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/wire/tcp.rs:957:41 [INFO] [stderr] | [INFO] [stderr] 957 | packet.set_seq_number(SeqNumber(0x01234567)); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0123_4567` [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/wire/tcp.rs:958:41 [INFO] [stderr] | [INFO] [stderr] 958 | packet.set_ack_number(SeqNumber(0x89abcdefu32 as i32)); [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider: `0x89ab_cdefu32` [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/wire/tcp.rs:1005:37 [INFO] [stderr] | [INFO] [stderr] 1005 | seq_number: SeqNumber(0x01234567), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0123_4567` [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/iface/ethernet.rs:1118:9 [INFO] [stderr] | [INFO] [stderr] 1118 | packet [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/iface/ethernet.rs:1074:22 [INFO] [stderr] | [INFO] [stderr] 1074 | let packet = match repr { [INFO] [stderr] | ______________________^ [INFO] [stderr] 1075 | | NdiscRepr::NeighborAdvert { lladdr, target_addr, flags } => { [INFO] [stderr] 1076 | | let ip_addr = ip_repr.src_addr.into(); [INFO] [stderr] 1077 | | match lladdr { [INFO] [stderr] ... | [INFO] [stderr] 1116 | | _ => Ok(Packet::None) [INFO] [stderr] 1117 | | }; [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 `else { if .. }` block can be collapsed [INFO] [stderr] --> src/iface/ethernet.rs:1081:32 [INFO] [stderr] | [INFO] [stderr] 1081 | } else { [INFO] [stderr] | ________________________________^ [INFO] [stderr] 1082 | | if self.neighbor_cache.lookup_pure(&ip_addr, timestamp).is_none() { [INFO] [stderr] 1083 | | self.neighbor_cache.fill(ip_addr, lladdr, timestamp) [INFO] [stderr] 1084 | | } [INFO] [stderr] 1085 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [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] 1081 | } else if self.neighbor_cache.lookup_pure(&ip_addr, timestamp).is_none() { [INFO] [stderr] 1082 | self.neighbor_cache.fill(ip_addr, lladdr, timestamp) [INFO] [stderr] 1083 | } [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/iface/ethernet.rs:1625:13 [INFO] [stderr] | [INFO] [stderr] 1625 | pkt [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/iface/ethernet.rs:1618:23 [INFO] [stderr] | [INFO] [stderr] 1618 | let pkt = Packet::Igmp((Ipv4Repr { [INFO] [stderr] | _______________________^ [INFO] [stderr] 1619 | | src_addr: iface_addr, [INFO] [stderr] 1620 | | dst_addr: Ipv4Address::MULTICAST_ALL_ROUTERS, [INFO] [stderr] 1621 | | protocol: IpProtocol::Igmp, [INFO] [stderr] 1622 | | payload_len: igmp_repr.buffer_len(), [INFO] [stderr] 1623 | | hop_limit: 1, [INFO] [stderr] 1624 | | }, igmp_repr)); [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/tcp.rs:1948:14 [INFO] [stderr] | [INFO] [stderr] 1948 | (131071, 1), [INFO] [stderr] | ^^^^^^ help: consider: `131_071` [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/socket/tcp.rs:1949:14 [INFO] [stderr] | [INFO] [stderr] 1949 | (131072, 2), [INFO] [stderr] | ^^^^^^ help: consider: `131_072` [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/socket/tcp.rs:1950:14 [INFO] [stderr] | [INFO] [stderr] 1950 | (524287, 3), [INFO] [stderr] | ^^^^^^ help: consider: `524_287` [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/socket/tcp.rs:1951:14 [INFO] [stderr] | [INFO] [stderr] 1951 | (524288, 4), [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/socket/tcp.rs:1952:14 [INFO] [stderr] | [INFO] [stderr] 1952 | (655350, 4), [INFO] [stderr] | ^^^^^^ help: consider: `655_350` [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/socket/tcp.rs:1953:14 [INFO] [stderr] | [INFO] [stderr] 1953 | (1048576, 5), [INFO] [stderr] | ^^^^^^^ help: consider: `1_048_576` [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/socket/tcp.rs:2345:14 [INFO] [stderr] | [INFO] [stderr] 2345 | (131071, 1), [INFO] [stderr] | ^^^^^^ help: consider: `131_071` [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/socket/tcp.rs:2346:14 [INFO] [stderr] | [INFO] [stderr] 2346 | (131072, 2), [INFO] [stderr] | ^^^^^^ help: consider: `131_072` [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/socket/tcp.rs:2347:14 [INFO] [stderr] | [INFO] [stderr] 2347 | (524287, 3), [INFO] [stderr] | ^^^^^^ help: consider: `524_287` [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/socket/tcp.rs:2348:14 [INFO] [stderr] | [INFO] [stderr] 2348 | (524288, 4), [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/socket/tcp.rs:2349:14 [INFO] [stderr] | [INFO] [stderr] 2349 | (655350, 4), [INFO] [stderr] | ^^^^^^ help: consider: `655_350` [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/socket/tcp.rs:2350:14 [INFO] [stderr] | [INFO] [stderr] 2350 | (1048576, 5), [INFO] [stderr] | ^^^^^^^ help: consider: `1_048_576` [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/socket/tcp.rs:2393:49 [INFO] [stderr] | [INFO] [stderr] 2393 | s.rx_buffer = SocketBuffer::new(vec![0; 262143]); [INFO] [stderr] | ^^^^^^ help: consider: `262_143` [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: unneeded return statement [INFO] [stderr] --> src/socket/set.rs:78:17 [INFO] [stderr] | [INFO] [stderr] 78 | return put(index, &mut sockets[index], socket) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `put(index, &mut sockets[index], socket)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/time.rs:83:75 [INFO] [stderr] | [INFO] [stderr] 83 | Self::from_millis(n.as_secs() as i64 * 1000 + (n.subsec_nanos() / 1000000) as i64) [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/time.rs:282:37 [INFO] [stderr] | [INFO] [stderr] 282 | epoc = Instant::from_millis(2085955200 * 1000).into(); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `2_085_955_200` [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/time.rs:283:85 [INFO] [stderr] | [INFO] [stderr] 283 | assert_eq!(epoc, ::std::time::UNIX_EPOCH + ::std::time::Duration::from_secs(2085955200)); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `2_085_955_200` [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/parsers.rs:102:25 [INFO] [stderr] | [INFO] [stderr] 102 | let mut value = self.accept_digit(hex)? as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.accept_digit(hex)?)` [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 u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/parsers.rs:107:30 [INFO] [stderr] | [INFO] [stderr] 107 | value += digit as u32; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u32::from(digit)` [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 loop variable `n` is used to index `octets` [INFO] [stderr] --> src/parsers.rs:121:18 [INFO] [stderr] | [INFO] [stderr] 121 | for n in 0..6 { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 121 | for (n, ) in octets.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/parsers.rs:144:24 [INFO] [stderr] | [INFO] [stderr] 144 | parts[*idx] = ((octets[0] as u16) << 8) | (octets[1] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(octets[0])` [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/parsers.rs:144:51 [INFO] [stderr] | [INFO] [stderr] 144 | parts[*idx] = ((octets[0] as u16) << 8) | (octets[1] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(octets[1])` [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/parsers.rs:146:24 [INFO] [stderr] | [INFO] [stderr] 146 | parts[*idx] = ((octets[2] as u16) << 8) | (octets[3] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(octets[2])` [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/parsers.rs:146:51 [INFO] [stderr] | [INFO] [stderr] 146 | parts[*idx] = ((octets[2] as u16) << 8) | (octets[3] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(octets[3])` [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 loop variable `n` is used to index `octets` [INFO] [stderr] --> src/parsers.rs:269:18 [INFO] [stderr] | [INFO] [stderr] 269 | for n in 0..4 { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 269 | for (n, ) in octets.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [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/parsers.rs:286:9 [INFO] [stderr] | [INFO] [stderr] 286 | / match self.try(|p| p.accept_ipv4()) { [INFO] [stderr] 287 | | Some(ipv4) => return Ok(IpAddress::Ipv4(ipv4)), [INFO] [stderr] 288 | | None => () [INFO] [stderr] 289 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(ipv4) = self.try(|p| p.accept_ipv4()) { return Ok(IpAddress::Ipv4(ipv4)) }` [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] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/parsers.rs:292:9 [INFO] [stderr] | [INFO] [stderr] 292 | / match self.try(|p| p.accept_ipv6(false)) { [INFO] [stderr] 293 | | Some(ipv6) => return Ok(IpAddress::Ipv6(ipv6)), [INFO] [stderr] 294 | | None => () [INFO] [stderr] 295 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(ipv6) = self.try(|p| p.accept_ipv6(false)) { return Ok(IpAddress::Ipv6(ipv6)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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/parsers.rs:332:9 [INFO] [stderr] | [INFO] [stderr] 332 | / match self.try(|p| p.accept_ipv4_endpoint()) { [INFO] [stderr] 333 | | Some(ipv4) => return Ok(ipv4), [INFO] [stderr] 334 | | None => () [INFO] [stderr] 335 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(ipv4) = self.try(|p| p.accept_ipv4_endpoint()) { return Ok(ipv4) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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/parsers.rs:338:9 [INFO] [stderr] | [INFO] [stderr] 338 | / match self.try(|p| p.accept_ipv6_endpoint()) { [INFO] [stderr] 339 | | Some(ipv6) => return Ok(ipv6), [INFO] [stderr] 340 | | None => () [INFO] [stderr] 341 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(ipv6) = self.try(|p| p.accept_ipv6_endpoint()) { return Ok(ipv6) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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/parsers.rs:422:9 [INFO] [stderr] | [INFO] [stderr] 422 | / match Ipv4Cidr::from_str(s) { [INFO] [stderr] 423 | | Ok(cidr) => return Ok(IpCidr::Ipv4(cidr)), [INFO] [stderr] 424 | | Err(_) => () [INFO] [stderr] 425 | | } [INFO] [stderr] | |_________^ help: try this: `if let Ok(cidr) = Ipv4Cidr::from_str(s) { return Ok(IpCidr::Ipv4(cidr)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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/parsers.rs:428:9 [INFO] [stderr] | [INFO] [stderr] 428 | / match Ipv6Cidr::from_str(s) { [INFO] [stderr] 429 | | Ok(cidr) => return Ok(IpCidr::Ipv6(cidr)), [INFO] [stderr] 430 | | Err(_) => () [INFO] [stderr] 431 | | } [INFO] [stderr] | |_________^ help: try this: `if let Ok(cidr) = Ipv6Cidr::from_str(s) { return Ok(IpCidr::Ipv6(cidr)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/storage/assembler.rs:246:5 [INFO] [stderr] | [INFO] [stderr] 246 | / pub fn iter_data<'a>(&'a self, first_offset: usize) -> AssemblerIter<'a> { [INFO] [stderr] 247 | | AssemblerIter::new(self, first_offset) [INFO] [stderr] 248 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/storage/assembler.rs:278:13 [INFO] [stderr] | [INFO] [stderr] 278 | self.left = self.left + contig.hole_size; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.left += contig.hole_size` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/storage/ring_buffer.rs:193:5 [INFO] [stderr] | [INFO] [stderr] 193 | / pub fn enqueue_many<'b>(&'b mut self, size: usize) -> &'b mut [T] { [INFO] [stderr] 194 | | self.enqueue_many_with(|buf| { [INFO] [stderr] 195 | | let size = cmp::min(size, buf.len()); [INFO] [stderr] 196 | | (size, &mut buf[..size]) [INFO] [stderr] 197 | | }).1 [INFO] [stderr] 198 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/storage/ring_buffer.rs:245:5 [INFO] [stderr] | [INFO] [stderr] 245 | / pub fn dequeue_many<'b>(&'b mut self, size: usize) -> &'b mut [T] { [INFO] [stderr] 246 | | self.dequeue_many_with(|buf| { [INFO] [stderr] 247 | | let size = cmp::min(size, buf.len()); [INFO] [stderr] 248 | | (size, &mut buf[..size]) [INFO] [stderr] 249 | | }).1 [INFO] [stderr] 250 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] error: a const item should never be interior mutable [INFO] [stderr] --> src/storage/packet_buffer.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | pub const EMPTY: PacketMetadata = PacketMetadata { size: 0, header: None }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::declare_interior_mutable_const)] on by default [INFO] [stderr] help: consider requiring `storage::packet_buffer::PacketMetadata` to be `Copy` [INFO] [stderr] --> src/storage/packet_buffer.rs:15:22 [INFO] [stderr] | [INFO] [stderr] 15 | pub const EMPTY: PacketMetadata = PacketMetadata { size: 0, header: None }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#declare_interior_mutable_const [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/phy/sys/raw_socket.rs:22:38 [INFO] [stderr] | [INFO] [stderr] 22 | imp::ETH_P_ALL.to_be() as i32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(imp::ETH_P_ALL.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/phy/fault_injector.rs:42:48 [INFO] [stderr] | [INFO] [stderr] 42 | xorshift32(&mut self.rng_seed) % 100 < pct as u32 [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(pct)` [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 call to `as_ref` does nothing [INFO] [stderr] --> src/phy/fault_injector.rs:255:39 [INFO] [stderr] | [INFO] [stderr] 255 | if config.max_size > 0 && buffer.as_ref().len() > config.max_size { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try this: `buffer` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_asref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: this call to `as_ref` does nothing [INFO] [stderr] --> src/phy/pcap_writer.rs:176:44 [INFO] [stderr] | [INFO] [stderr] 176 | sink.packet(timestamp, buffer.as_ref()), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try this: `buffer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `phy::loopback::Loopback` [INFO] [stderr] --> src/phy/loopback.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | / pub fn new() -> Loopback { [INFO] [stderr] 28 | | Loopback { [INFO] [stderr] 29 | | queue: VecDeque::new(), [INFO] [stderr] 30 | | } [INFO] [stderr] 31 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 18 | #[derive(Default)] [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/phy/mod.rs:140:15 [INFO] [stderr] | [INFO] [stderr] 140 | pub fn rx(&self) -> bool { [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/phy/mod.rs:148:15 [INFO] [stderr] | [INFO] [stderr] 148 | pub fn tx(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ethernet.rs:17:9 [INFO] [stderr] | [INFO] [stderr] 17 | / match self { [INFO] [stderr] 18 | | &EtherType::Ipv4 => write!(f, "IPv4"), [INFO] [stderr] 19 | | &EtherType::Ipv6 => write!(f, "IPv6"), [INFO] [stderr] 20 | | &EtherType::Arp => write!(f, "ARP"), [INFO] [stderr] 21 | | &EtherType::Unknown(id) => write!(f, "0x{:04x}", id) [INFO] [stderr] 22 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 17 | match *self { [INFO] [stderr] 18 | EtherType::Ipv4 => write!(f, "IPv4"), [INFO] [stderr] 19 | EtherType::Ipv6 => write!(f, "IPv6"), [INFO] [stderr] 20 | EtherType::Arp => write!(f, "ARP"), [INFO] [stderr] 21 | EtherType::Unknown(id) => write!(f, "0x{:04x}", id) [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/wire/ethernet.rs:50:23 [INFO] [stderr] | [INFO] [stderr] 50 | pub fn is_unicast(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ethernet.rs:56:25 [INFO] [stderr] | [INFO] [stderr] 56 | pub fn is_broadcast(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ethernet.rs:61:25 [INFO] [stderr] | [INFO] [stderr] 61 | pub fn is_multicast(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ethernet.rs:66:21 [INFO] [stderr] | [INFO] [stderr] 66 | pub fn is_local(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/arp.rs:293:9 [INFO] [stderr] | [INFO] [stderr] 293 | / match self { [INFO] [stderr] 294 | | &Repr::EthernetIpv4 { .. } => field::TPA(6, 4).end, [INFO] [stderr] 295 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 296 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 293 | match *self { [INFO] [stderr] 294 | Repr::EthernetIpv4 { .. } => field::TPA(6, 4).end, [INFO] [stderr] 295 | Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/arp.rs:301:9 [INFO] [stderr] | [INFO] [stderr] 301 | / match self { [INFO] [stderr] 302 | | &Repr::EthernetIpv4 { [INFO] [stderr] 303 | | operation, [INFO] [stderr] 304 | | source_hardware_addr, source_protocol_addr, [INFO] [stderr] ... | [INFO] [stderr] 317 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 318 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 301 | match *self { [INFO] [stderr] 302 | Repr::EthernetIpv4 { [INFO] [stderr] 303 | operation, [INFO] [stderr] 304 | source_hardware_addr, source_protocol_addr, [INFO] [stderr] 305 | target_hardware_addr, target_protocol_addr [INFO] [stderr] 306 | } => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/arp.rs:343:9 [INFO] [stderr] | [INFO] [stderr] 343 | / match self { [INFO] [stderr] 344 | | &Repr::EthernetIpv4 { [INFO] [stderr] 345 | | operation, [INFO] [stderr] 346 | | source_hardware_addr, source_protocol_addr, [INFO] [stderr] ... | [INFO] [stderr] 354 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 355 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 343 | match *self { [INFO] [stderr] 344 | Repr::EthernetIpv4 { [INFO] [stderr] 345 | operation, [INFO] [stderr] 346 | source_hardware_addr, source_protocol_addr, [INFO] [stderr] 347 | target_hardware_addr, target_protocol_addr [INFO] [stderr] 348 | } => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:41:9 [INFO] [stderr] | [INFO] [stderr] 41 | / match self { [INFO] [stderr] 42 | | &Version::Unspecified => write!(f, "IPv?"), [INFO] [stderr] 43 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 44 | | &Version::Ipv4 => write!(f, "IPv4"), [INFO] [stderr] ... | [INFO] [stderr] 47 | | &Version::__Nonexhaustive => unreachable!() [INFO] [stderr] 48 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 41 | match *self { [INFO] [stderr] 42 | Version::Unspecified => write!(f, "IPv?"), [INFO] [stderr] 43 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 44 | Version::Ipv4 => write!(f, "IPv4"), [INFO] [stderr] 45 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 46 | Version::Ipv6 => write!(f, "IPv6"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:70:9 [INFO] [stderr] | [INFO] [stderr] 70 | / match self { [INFO] [stderr] 71 | | &Protocol::HopByHop => write!(f, "Hop-by-Hop"), [INFO] [stderr] 72 | | &Protocol::Icmp => write!(f, "ICMP"), [INFO] [stderr] 73 | | &Protocol::Igmp => write!(f, "IGMP"), [INFO] [stderr] ... | [INFO] [stderr] 81 | | &Protocol::Unknown(id) => write!(f, "0x{:02x}", id) [INFO] [stderr] 82 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 70 | match *self { [INFO] [stderr] 71 | Protocol::HopByHop => write!(f, "Hop-by-Hop"), [INFO] [stderr] 72 | Protocol::Icmp => write!(f, "ICMP"), [INFO] [stderr] 73 | Protocol::Igmp => write!(f, "IGMP"), [INFO] [stderr] 74 | Protocol::Tcp => write!(f, "TCP"), [INFO] [stderr] 75 | Protocol::Udp => write!(f, "UDP"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/wire/ip.rs:111:5 [INFO] [stderr] | [INFO] [stderr] 111 | / pub fn v6(a0: u16, a1: u16, a2: u16, a3: u16, [INFO] [stderr] 112 | | a4: u16, a5: u16, a6: u16, a7: u16) -> Address { [INFO] [stderr] 113 | | Address::Ipv6(Ipv6Address::new(a0, a1, a2, a3, a4, a5, a6, a7)) [INFO] [stderr] 114 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:118:9 [INFO] [stderr] | [INFO] [stderr] 118 | / match self { [INFO] [stderr] 119 | | &Address::Unspecified => &[], [INFO] [stderr] 120 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 121 | | &Address::Ipv4(ref addr) => addr.as_bytes(), [INFO] [stderr] ... | [INFO] [stderr] 124 | | &Address::__Nonexhaustive => unreachable!() [INFO] [stderr] 125 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 118 | match *self { [INFO] [stderr] 119 | Address::Unspecified => &[], [INFO] [stderr] 120 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 121 | Address::Ipv4(ref addr) => addr.as_bytes(), [INFO] [stderr] 122 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 123 | Address::Ipv6(ref addr) => addr.as_bytes(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | / match self { [INFO] [stderr] 131 | | &Address::Unspecified => false, [INFO] [stderr] 132 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 133 | | &Address::Ipv4(addr) => addr.is_unicast(), [INFO] [stderr] ... | [INFO] [stderr] 136 | | &Address::__Nonexhaustive => unreachable!() [INFO] [stderr] 137 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 130 | match *self { [INFO] [stderr] 131 | Address::Unspecified => false, [INFO] [stderr] 132 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 133 | Address::Ipv4(addr) => addr.is_unicast(), [INFO] [stderr] 134 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 135 | Address::Ipv6(addr) => addr.is_unicast(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:142:9 [INFO] [stderr] | [INFO] [stderr] 142 | / match self { [INFO] [stderr] 143 | | &Address::Unspecified => false, [INFO] [stderr] 144 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 145 | | &Address::Ipv4(addr) => addr.is_multicast(), [INFO] [stderr] ... | [INFO] [stderr] 148 | | &Address::__Nonexhaustive => unreachable!() [INFO] [stderr] 149 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 142 | match *self { [INFO] [stderr] 143 | Address::Unspecified => false, [INFO] [stderr] 144 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 145 | Address::Ipv4(addr) => addr.is_multicast(), [INFO] [stderr] 146 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 147 | Address::Ipv6(addr) => addr.is_multicast(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:154:9 [INFO] [stderr] | [INFO] [stderr] 154 | / match self { [INFO] [stderr] 155 | | &Address::Unspecified => false, [INFO] [stderr] 156 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 157 | | &Address::Ipv4(addr) => addr.is_broadcast(), [INFO] [stderr] ... | [INFO] [stderr] 160 | | &Address::__Nonexhaustive => unreachable!() [INFO] [stderr] 161 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 154 | match *self { [INFO] [stderr] 155 | Address::Unspecified => false, [INFO] [stderr] 156 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 157 | Address::Ipv4(addr) => addr.is_broadcast(), [INFO] [stderr] 158 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 159 | Address::Ipv6(_) => false, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:166:9 [INFO] [stderr] | [INFO] [stderr] 166 | / match self { [INFO] [stderr] 167 | | &Address::Unspecified => true, [INFO] [stderr] 168 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 169 | | &Address::Ipv4(addr) => addr.is_unspecified(), [INFO] [stderr] ... | [INFO] [stderr] 172 | | &Address::__Nonexhaustive => unreachable!() [INFO] [stderr] 173 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 166 | match *self { [INFO] [stderr] 167 | Address::Unspecified => true, [INFO] [stderr] 168 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 169 | Address::Ipv4(addr) => addr.is_unspecified(), [INFO] [stderr] 170 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 171 | Address::Ipv6(addr) => addr.is_unspecified(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:178:9 [INFO] [stderr] | [INFO] [stderr] 178 | / match self { [INFO] [stderr] 179 | | &Address::Unspecified => Address::Unspecified, [INFO] [stderr] 180 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 181 | | &Address::Ipv4(_) => Address::Ipv4(Ipv4Address::UNSPECIFIED), [INFO] [stderr] ... | [INFO] [stderr] 184 | | &Address::__Nonexhaustive => unreachable!() [INFO] [stderr] 185 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 178 | match *self { [INFO] [stderr] 179 | Address::Unspecified => Address::Unspecified, [INFO] [stderr] 180 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 181 | Address::Ipv4(_) => Address::Ipv4(Ipv4Address::UNSPECIFIED), [INFO] [stderr] 182 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 183 | Address::Ipv6(_) => Address::Ipv6(Ipv6Address::UNSPECIFIED), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:249:9 [INFO] [stderr] | [INFO] [stderr] 249 | / match self { [INFO] [stderr] 250 | | &Address::Unspecified => write!(f, "*"), [INFO] [stderr] 251 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 252 | | &Address::Ipv4(addr) => write!(f, "{}", addr), [INFO] [stderr] ... | [INFO] [stderr] 255 | | &Address::__Nonexhaustive => unreachable!() [INFO] [stderr] 256 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 249 | match *self { [INFO] [stderr] 250 | Address::Unspecified => write!(f, "*"), [INFO] [stderr] 251 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 252 | Address::Ipv4(addr) => write!(f, "{}", addr), [INFO] [stderr] 253 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 254 | Address::Ipv6(addr) => write!(f, "{}", addr), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:293:9 [INFO] [stderr] | [INFO] [stderr] 293 | / match self { [INFO] [stderr] 294 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 295 | | &Cidr::Ipv4(cidr) => Address::Ipv4(cidr.address()), [INFO] [stderr] 296 | | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 297 | | &Cidr::Ipv6(cidr) => Address::Ipv6(cidr.address()), [INFO] [stderr] 298 | | &Cidr::__Nonexhaustive => unreachable!() [INFO] [stderr] 299 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 293 | match *self { [INFO] [stderr] 294 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 295 | Cidr::Ipv4(cidr) => Address::Ipv4(cidr.address()), [INFO] [stderr] 296 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 297 | Cidr::Ipv6(cidr) => Address::Ipv6(cidr.address()), [INFO] [stderr] 298 | Cidr::__Nonexhaustive => unreachable!() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:304:9 [INFO] [stderr] | [INFO] [stderr] 304 | / match self { [INFO] [stderr] 305 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 306 | | &Cidr::Ipv4(cidr) => cidr.prefix_len(), [INFO] [stderr] 307 | | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 308 | | &Cidr::Ipv6(cidr) => cidr.prefix_len(), [INFO] [stderr] 309 | | &Cidr::__Nonexhaustive => unreachable!() [INFO] [stderr] 310 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 304 | match *self { [INFO] [stderr] 305 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 306 | Cidr::Ipv4(cidr) => cidr.prefix_len(), [INFO] [stderr] 307 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 308 | Cidr::Ipv6(cidr) => cidr.prefix_len(), [INFO] [stderr] 309 | Cidr::__Nonexhaustive => unreachable!() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:372:9 [INFO] [stderr] | [INFO] [stderr] 372 | / match self { [INFO] [stderr] 373 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 374 | | &Cidr::Ipv4(cidr) => write!(f, "{}", cidr), [INFO] [stderr] 375 | | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 376 | | &Cidr::Ipv6(cidr) => write!(f, "{}", cidr), [INFO] [stderr] 377 | | &Cidr::__Nonexhaustive => unreachable!() [INFO] [stderr] 378 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 372 | match *self { [INFO] [stderr] 373 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 374 | Cidr::Ipv4(cidr) => write!(f, "{}", cidr), [INFO] [stderr] 375 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 376 | Cidr::Ipv6(cidr) => write!(f, "{}", cidr), [INFO] [stderr] 377 | Cidr::__Nonexhaustive => unreachable!() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:473:9 [INFO] [stderr] | [INFO] [stderr] 473 | / match self { [INFO] [stderr] 474 | | &Repr::Unspecified { .. } => Version::Unspecified, [INFO] [stderr] 475 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 476 | | &Repr::Ipv4(_) => Version::Ipv4, [INFO] [stderr] ... | [INFO] [stderr] 479 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 480 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 473 | match *self { [INFO] [stderr] 474 | Repr::Unspecified { .. } => Version::Unspecified, [INFO] [stderr] 475 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 476 | Repr::Ipv4(_) => Version::Ipv4, [INFO] [stderr] 477 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 478 | Repr::Ipv6(_) => Version::Ipv6, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:485:9 [INFO] [stderr] | [INFO] [stderr] 485 | / match self { [INFO] [stderr] 486 | | &Repr::Unspecified { src_addr, .. } => src_addr, [INFO] [stderr] 487 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 488 | | &Repr::Ipv4(repr) => Address::Ipv4(repr.src_addr), [INFO] [stderr] ... | [INFO] [stderr] 491 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 492 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 485 | match *self { [INFO] [stderr] 486 | Repr::Unspecified { src_addr, .. } => src_addr, [INFO] [stderr] 487 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 488 | Repr::Ipv4(repr) => Address::Ipv4(repr.src_addr), [INFO] [stderr] 489 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 490 | Repr::Ipv6(repr) => Address::Ipv6(repr.src_addr), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:497:9 [INFO] [stderr] | [INFO] [stderr] 497 | / match self { [INFO] [stderr] 498 | | &Repr::Unspecified { dst_addr, .. } => dst_addr, [INFO] [stderr] 499 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 500 | | &Repr::Ipv4(repr) => Address::Ipv4(repr.dst_addr), [INFO] [stderr] ... | [INFO] [stderr] 503 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 504 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 497 | match *self { [INFO] [stderr] 498 | Repr::Unspecified { dst_addr, .. } => dst_addr, [INFO] [stderr] 499 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 500 | Repr::Ipv4(repr) => Address::Ipv4(repr.dst_addr), [INFO] [stderr] 501 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 502 | Repr::Ipv6(repr) => Address::Ipv6(repr.dst_addr), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:509:9 [INFO] [stderr] | [INFO] [stderr] 509 | / match self { [INFO] [stderr] 510 | | &Repr::Unspecified { protocol, .. } => protocol, [INFO] [stderr] 511 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 512 | | &Repr::Ipv4(repr) => repr.protocol, [INFO] [stderr] ... | [INFO] [stderr] 515 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 516 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 509 | match *self { [INFO] [stderr] 510 | Repr::Unspecified { protocol, .. } => protocol, [INFO] [stderr] 511 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 512 | Repr::Ipv4(repr) => repr.protocol, [INFO] [stderr] 513 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 514 | Repr::Ipv6(repr) => repr.next_header, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:521:9 [INFO] [stderr] | [INFO] [stderr] 521 | / match self { [INFO] [stderr] 522 | | &Repr::Unspecified { payload_len, .. } => payload_len, [INFO] [stderr] 523 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 524 | | &Repr::Ipv4(repr) => repr.payload_len, [INFO] [stderr] ... | [INFO] [stderr] 527 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 528 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 521 | match *self { [INFO] [stderr] 522 | Repr::Unspecified { payload_len, .. } => payload_len, [INFO] [stderr] 523 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 524 | Repr::Ipv4(repr) => repr.payload_len, [INFO] [stderr] 525 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 526 | Repr::Ipv6(repr) => repr.payload_len, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:533:9 [INFO] [stderr] | [INFO] [stderr] 533 | / match self { [INFO] [stderr] 534 | | &mut Repr::Unspecified { ref mut payload_len, .. } => [INFO] [stderr] 535 | | *payload_len = length, [INFO] [stderr] 536 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] ... | [INFO] [stderr] 542 | | &mut Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 543 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 533 | match *self { [INFO] [stderr] 534 | Repr::Unspecified { ref mut payload_len, .. } => [INFO] [stderr] 535 | *payload_len = length, [INFO] [stderr] 536 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 537 | Repr::Ipv4(Ipv4Repr { ref mut payload_len, .. }) => [INFO] [stderr] 538 | *payload_len = length, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:548:9 [INFO] [stderr] | [INFO] [stderr] 548 | / match self { [INFO] [stderr] 549 | | &Repr::Unspecified { hop_limit, .. } => hop_limit, [INFO] [stderr] 550 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 551 | | &Repr::Ipv4(Ipv4Repr { hop_limit, .. }) => hop_limit, [INFO] [stderr] ... | [INFO] [stderr] 554 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 555 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 548 | match *self { [INFO] [stderr] 549 | Repr::Unspecified { hop_limit, .. } => hop_limit, [INFO] [stderr] 550 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 551 | Repr::Ipv4(Ipv4Repr { hop_limit, .. }) => hop_limit, [INFO] [stderr] 552 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 553 | Repr::Ipv6(Ipv6Repr { hop_limit, ..}) => hop_limit, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:584:9 [INFO] [stderr] | [INFO] [stderr] 584 | / match self { [INFO] [stderr] 585 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 586 | | &Repr::Unspecified { [INFO] [stderr] 587 | | src_addr: src_addr @ Address::Unspecified, [INFO] [stderr] ... | [INFO] [stderr] 682 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 683 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 584 | match *self { [INFO] [stderr] 585 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 586 | Repr::Unspecified { [INFO] [stderr] 587 | src_addr: src_addr @ Address::Unspecified, [INFO] [stderr] 588 | dst_addr: Address::Ipv4(dst_addr), [INFO] [stderr] 589 | protocol, payload_len, hop_limit [INFO] [stderr] ... [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/wire/ip.rs:569:25 [INFO] [stderr] | [INFO] [stderr] 569 | / match cidr.address() { [INFO] [stderr] 570 | | $ipty(addr) => { [INFO] [stderr] 571 | | $iprepr.src_addr = addr; [INFO] [stderr] 572 | | return Ok($reprty($iprepr)); [INFO] [stderr] 573 | | }, [INFO] [stderr] 574 | | _ => () [INFO] [stderr] 575 | | } [INFO] [stderr] | |_________________________^ help: try this: `if let $ipty(addr) = cidr.address() { resolve_unspecified!(Repr::Ipv4, Address::Ipv4, repr, fallback_src_addrs) }` [INFO] [stderr] ... [INFO] [stderr] 673 | resolve_unspecified!(Repr::Ipv4, Address::Ipv4, repr, fallback_src_addrs), [INFO] [stderr] | ------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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/wire/ip.rs:569:25 [INFO] [stderr] | [INFO] [stderr] 569 | / match cidr.address() { [INFO] [stderr] 570 | | $ipty(addr) => { [INFO] [stderr] 571 | | $iprepr.src_addr = addr; [INFO] [stderr] 572 | | return Ok($reprty($iprepr)); [INFO] [stderr] 573 | | }, [INFO] [stderr] 574 | | _ => () [INFO] [stderr] 575 | | } [INFO] [stderr] | |_________________________^ help: try this: `if let $ipty(addr) = cidr.address() { resolve_unspecified!(Repr::Ipv6, Address::Ipv6, repr, fallback_src_addrs) }` [INFO] [stderr] ... [INFO] [stderr] 677 | resolve_unspecified!(Repr::Ipv6, Address::Ipv6, repr, fallback_src_addrs), [INFO] [stderr] | ------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:691:9 [INFO] [stderr] | [INFO] [stderr] 691 | / match self { [INFO] [stderr] 692 | | &Repr::Unspecified { .. } => [INFO] [stderr] 693 | | panic!("unspecified IP representation"), [INFO] [stderr] 694 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] ... | [INFO] [stderr] 701 | | unreachable!() [INFO] [stderr] 702 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 691 | match *self { [INFO] [stderr] 692 | Repr::Unspecified { .. } => [INFO] [stderr] 693 | panic!("unspecified IP representation"), [INFO] [stderr] 694 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 695 | Repr::Ipv4(repr) => [INFO] [stderr] 696 | repr.buffer_len(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:710:9 [INFO] [stderr] | [INFO] [stderr] 710 | / match self { [INFO] [stderr] 711 | | &Repr::Unspecified { .. } => [INFO] [stderr] 712 | | panic!("unspecified IP representation"), [INFO] [stderr] 713 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] ... | [INFO] [stderr] 720 | | unreachable!() [INFO] [stderr] 721 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 710 | match *self { [INFO] [stderr] 711 | Repr::Unspecified { .. } => [INFO] [stderr] 712 | panic!("unspecified IP representation"), [INFO] [stderr] 713 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 714 | Repr::Ipv4(repr) => [INFO] [stderr] 715 | repr.emit(&mut Ipv4Packet::new_unchecked(buffer), &_checksum_caps), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/wire/ip.rs:756:26 [INFO] [stderr] | [INFO] [stderr] 756 | accum += NetworkEndian::read_u16(d) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(NetworkEndian::read_u16(d))` [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/wire/ip.rs:766:22 [INFO] [stderr] | [INFO] [stderr] 766 | accum += NetworkEndian::read_u16(data) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(NetworkEndian::read_u16(data))` [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/wire/ip.rs:772:22 [INFO] [stderr] | [INFO] [stderr] 772 | accum += (value as u32) << 8; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(value)` [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/wire/ip.rs:782:22 [INFO] [stderr] | [INFO] [stderr] 782 | accum += word as u32; [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u32::from(word)` [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 call to `as_ref` does nothing [INFO] [stderr] --> src/wire/ip.rs:848:50 [INFO] [stderr] | [INFO] [stderr] 848 | Icmpv4Packet::<&[u8]>::pretty_print(&payload.as_ref(), f, indent) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try this: `payload` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: this call to `as_ref` does nothing [INFO] [stderr] --> src/wire/ip.rs:852:51 [INFO] [stderr] | [INFO] [stderr] 852 | match UdpPacket::<&[u8]>::new_checked(payload.as_ref()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try this: `payload` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: this call to `as_ref` does nothing [INFO] [stderr] --> src/wire/ip.rs:870:51 [INFO] [stderr] | [INFO] [stderr] 870 | match TcpPacket::<&[u8]>::new_checked(payload.as_ref()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try this: `payload` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ipv4.rs:62:23 [INFO] [stderr] | [INFO] [stderr] 62 | pub fn is_unicast(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ipv4.rs:69:25 [INFO] [stderr] | [INFO] [stderr] 69 | pub fn is_broadcast(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ipv4.rs:74:25 [INFO] [stderr] | [INFO] [stderr] 74 | pub fn is_multicast(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ipv4.rs:79:27 [INFO] [stderr] | [INFO] [stderr] 79 | pub fn is_unspecified(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ipv4.rs:84:26 [INFO] [stderr] | [INFO] [stderr] 84 | pub fn is_link_local(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ipv4.rs:89:24 [INFO] [stderr] | [INFO] [stderr] 89 | pub fn is_loopback(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ipv4.rs:144:20 [INFO] [stderr] | [INFO] [stderr] 144 | pub fn address(&self) -> Address { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ipv4.rs:149:23 [INFO] [stderr] | [INFO] [stderr] 149 | pub fn prefix_len(&self) -> u8 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ipv4.rs:154:20 [INFO] [stderr] | [INFO] [stderr] 154 | pub fn netmask(&self) -> Address { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `number` [INFO] [stderr] --> src/wire/ipv4.rs:164:14 [INFO] [stderr] | [INFO] [stderr] 164 | ((number >> 0) & 0xff) as u8, [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ipv4.rs:171:22 [INFO] [stderr] | [INFO] [stderr] 171 | pub fn broadcast(&self) -> Option
{ [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `number` [INFO] [stderr] --> src/wire/ipv4.rs:184:14 [INFO] [stderr] | [INFO] [stderr] 184 | ((number >> 0) & 0xff) as u8, [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ipv4.rs:191:20 [INFO] [stderr] | [INFO] [stderr] 191 | pub fn network(&self) -> Cidr { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ipv4.rs:204:26 [INFO] [stderr] | [INFO] [stderr] 204 | pub fn contains_addr(&self, addr: &Address) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ipv4.rs:204:39 [INFO] [stderr] | [INFO] [stderr] 204 | pub fn contains_addr(&self, addr: &Address) -> bool { [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/wire/ipv4.rs:216:28 [INFO] [stderr] | [INFO] [stderr] 216 | pub fn contains_subnet(&self, subnet: &Cidr) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ipv4.rs:216:43 [INFO] [stderr] | [INFO] [stderr] 216 | pub fn contains_subnet(&self, subnet: &Cidr) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Cidr` [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/wire/ipv4.rs:280:19 [INFO] [stderr] | [INFO] [stderr] 280 | } else if self.header_len() as u16 > self.total_len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.header_len())` [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/wire/ipv4.rs:597:25 [INFO] [stderr] | [INFO] [stderr] 597 | let total_len = packet.header_len() as u16 + self.payload_len as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(packet.header_len())` [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 function has too many arguments (8/7) [INFO] [stderr] --> src/wire/ipv6.rs:47:5 [INFO] [stderr] | [INFO] [stderr] 47 | / pub fn new(a0: u16, a1: u16, a2: u16, a3: u16, [INFO] [stderr] 48 | | a4: u16, a5: u16, a6: u16, a7: u16) -> Address { [INFO] [stderr] 49 | | let mut addr = [0u8; 16]; [INFO] [stderr] 50 | | NetworkEndian::write_u16(&mut addr[0..2], a0); [INFO] [stderr] ... | [INFO] [stderr] 58 | | Address(addr) [INFO] [stderr] 59 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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: the loop variable `word_idx` is used to index `data` [INFO] [stderr] --> src/wire/ipv6.rs:78:25 [INFO] [stderr] | [INFO] [stderr] 78 | for word_idx in 0..8 { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 78 | for (word_idx, ) in data.iter().enumerate().take(8) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `data` [INFO] [stderr] --> src/wire/ipv6.rs:91:18 [INFO] [stderr] | [INFO] [stderr] 91 | for i in 0..8 { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 91 | for (i, ) in data.iter_mut().enumerate().take(8) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/wire/ipv6.rs:526:20 [INFO] [stderr] | [INFO] [stderr] 526 | let raw = (((data[1] & 0xf0) as u32) << 16) | (value & 0x0fffff); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(data[1] & 0xf0)` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ipv6option.rs:16:9 [INFO] [stderr] | [INFO] [stderr] 16 | / match self { [INFO] [stderr] 17 | | &Type::Pad1 => write!(f, "Pad1"), [INFO] [stderr] 18 | | &Type::PadN => write!(f, "PadN"), [INFO] [stderr] 19 | | &Type::Unknown(id) => write!(f, "{}", id) [INFO] [stderr] 20 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 16 | match *self { [INFO] [stderr] 17 | Type::Pad1 => write!(f, "Pad1"), [INFO] [stderr] 18 | Type::PadN => write!(f, "PadN"), [INFO] [stderr] 19 | Type::Unknown(id) => write!(f, "{}", id) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ipv6option.rs:42:9 [INFO] [stderr] | [INFO] [stderr] 42 | / match self { [INFO] [stderr] 43 | | &FailureType::Skip => write!(f, "skip"), [INFO] [stderr] 44 | | &FailureType::Discard => write!(f, "discard"), [INFO] [stderr] 45 | | &FailureType::DiscardSendAll => write!(f, "discard and send error"), [INFO] [stderr] 46 | | &FailureType::DiscardSendUnicast => write!(f, "discard and send error if unicast"), [INFO] [stderr] 47 | | &FailureType::Unknown(id) => write!(f, "Unknown({})", id), [INFO] [stderr] 48 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 42 | match *self { [INFO] [stderr] 43 | FailureType::Skip => write!(f, "skip"), [INFO] [stderr] 44 | FailureType::Discard => write!(f, "discard"), [INFO] [stderr] 45 | FailureType::DiscardSendAll => write!(f, "discard and send error"), [INFO] [stderr] 46 | FailureType::DiscardSendUnicast => write!(f, "discard and send error if unicast"), [INFO] [stderr] 47 | FailureType::Unknown(id) => write!(f, "Unknown({})", id), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ipv6option.rs:250:9 [INFO] [stderr] | [INFO] [stderr] 250 | / match self { [INFO] [stderr] 251 | | &Repr::Pad1 => 1, [INFO] [stderr] 252 | | &Repr::PadN(length) => [INFO] [stderr] 253 | | field::DATA(length).end, [INFO] [stderr] ... | [INFO] [stderr] 257 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 258 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 250 | match *self { [INFO] [stderr] 251 | Repr::Pad1 => 1, [INFO] [stderr] 252 | Repr::PadN(length) => [INFO] [stderr] 253 | field::DATA(length).end, [INFO] [stderr] 254 | Repr::Unknown{ length, .. } => [INFO] [stderr] 255 | field::DATA(length).end, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ipv6option.rs:263:9 [INFO] [stderr] | [INFO] [stderr] 263 | / match self { [INFO] [stderr] 264 | | &Repr::Pad1 => [INFO] [stderr] 265 | | opt.set_option_type(Type::Pad1), [INFO] [stderr] 266 | | &Repr::PadN(len) => { [INFO] [stderr] ... | [INFO] [stderr] 280 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 281 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 263 | match *self { [INFO] [stderr] 264 | Repr::Pad1 => [INFO] [stderr] 265 | opt.set_option_type(Type::Pad1), [INFO] [stderr] 266 | Repr::PadN(len) => { [INFO] [stderr] 267 | opt.set_option_type(Type::PadN); [INFO] [stderr] 268 | opt.set_data_len(len); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ipv6option.rs:354:9 [INFO] [stderr] | [INFO] [stderr] 354 | / match self { [INFO] [stderr] 355 | | &Repr::Pad1 => [INFO] [stderr] 356 | | write!(f, "{} ", Type::Pad1), [INFO] [stderr] 357 | | &Repr::PadN(len) => [INFO] [stderr] ... | [INFO] [stderr] 362 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 363 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 354 | match *self { [INFO] [stderr] 355 | Repr::Pad1 => [INFO] [stderr] 356 | write!(f, "{} ", Type::Pad1), [INFO] [stderr] 357 | Repr::PadN(len) => [INFO] [stderr] 358 | write!(f, "{} length={} ", Type::PadN, len), [INFO] [stderr] 359 | Repr::Unknown{ type_, length, .. } => [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/wire/ipv6fragment.rs:118:9 [INFO] [stderr] | [INFO] [stderr] 118 | data[3] = data[3] & 0xf9; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `data[3] &= 0xf9` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/wire/ipv6fragment.rs:126:45 [INFO] [stderr] | [INFO] [stderr] 126 | let raw = ((value & 0x1fff) << 3) | ((data[3] & 0x7) as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(data[3] & 0x7)` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ipv6routing.rs:39:9 [INFO] [stderr] | [INFO] [stderr] 39 | / match self { [INFO] [stderr] 40 | | &Type::Type0 => write!(f, "Type0"), [INFO] [stderr] 41 | | &Type::Nimrod => write!(f, "Nimrod"), [INFO] [stderr] 42 | | &Type::Type2 => write!(f, "Type2"), [INFO] [stderr] ... | [INFO] [stderr] 47 | | &Type::Unknown(id) => write!(f, "{}", id) [INFO] [stderr] 48 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 39 | match *self { [INFO] [stderr] 40 | Type::Type0 => write!(f, "Type0"), [INFO] [stderr] 41 | Type::Nimrod => write!(f, "Nimrod"), [INFO] [stderr] 42 | Type::Type2 => write!(f, "Type2"), [INFO] [stderr] 43 | Type::Rpl => write!(f, "Rpl"), [INFO] [stderr] 44 | Type::Experiment1 => write!(f, "Experiment1"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/wire/ipv6routing.rs:313:17 [INFO] [stderr] | [INFO] [stderr] 313 | data[field::PAD] = data[field::PAD] & 0xF0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `data[field::PAD] &= 0xF0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ipv6routing.rs:457:9 [INFO] [stderr] | [INFO] [stderr] 457 | / match self { [INFO] [stderr] 458 | | &Repr::Rpl { length, .. } | &Repr::Type2 { length, .. } => { [INFO] [stderr] 459 | | field::DATA(length).end [INFO] [stderr] 460 | | } [INFO] [stderr] 461 | | [INFO] [stderr] 462 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 463 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 457 | match *self { [INFO] [stderr] 458 | Repr::Rpl { length, .. } | Repr::Type2 { length, .. } => { [INFO] [stderr] 459 | field::DATA(length).end [INFO] [stderr] 460 | } [INFO] [stderr] 461 | [INFO] [stderr] 462 | Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ipv6routing.rs:468:9 [INFO] [stderr] | [INFO] [stderr] 468 | / match self { [INFO] [stderr] 469 | | &Repr::Type2 { next_header, length, segments_left, home_address } => { [INFO] [stderr] 470 | | header.set_next_header(next_header); [INFO] [stderr] 471 | | header.set_header_len(length); [INFO] [stderr] ... | [INFO] [stderr] 489 | | &Repr::__Nonexhaustive => unreachable!(), [INFO] [stderr] 490 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 468 | match *self { [INFO] [stderr] 469 | Repr::Type2 { next_header, length, segments_left, home_address } => { [INFO] [stderr] 470 | header.set_next_header(next_header); [INFO] [stderr] 471 | header.set_header_len(length); [INFO] [stderr] 472 | header.set_routing_type(Type::Type2); [INFO] [stderr] 473 | header.set_segments_left(segments_left); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ipv6routing.rs:496:9 [INFO] [stderr] | [INFO] [stderr] 496 | / match self { [INFO] [stderr] 497 | | &Repr::Type2 { next_header, length, segments_left, home_address } => { [INFO] [stderr] 498 | | write!(f, "IPv6 Routing next_hdr={} length={} type={} seg_left={} home_address={}", [INFO] [stderr] 499 | | next_header, length, Type::Type2, segments_left, home_address) [INFO] [stderr] ... | [INFO] [stderr] 506 | | &Repr::__Nonexhaustive => unreachable!(), [INFO] [stderr] 507 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 496 | match *self { [INFO] [stderr] 497 | Repr::Type2 { next_header, length, segments_left, home_address } => { [INFO] [stderr] 498 | write!(f, "IPv6 Routing next_hdr={} length={} type={} seg_left={} home_address={}", [INFO] [stderr] 499 | next_header, length, Type::Type2, segments_left, home_address) [INFO] [stderr] 500 | } [INFO] [stderr] 501 | Repr::Rpl { next_header, length, segments_left, cmpr_i, cmpr_e, pad, .. } => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/icmpv4.rs:37:9 [INFO] [stderr] | [INFO] [stderr] 37 | / match self { [INFO] [stderr] 38 | | &Message::EchoReply => write!(f, "echo reply"), [INFO] [stderr] 39 | | &Message::DstUnreachable => write!(f, "destination unreachable"), [INFO] [stderr] 40 | | &Message::Redirect => write!(f, "message redirect"), [INFO] [stderr] ... | [INFO] [stderr] 48 | | &Message::Unknown(id) => write!(f, "{}", id) [INFO] [stderr] 49 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 37 | match *self { [INFO] [stderr] 38 | Message::EchoReply => write!(f, "echo reply"), [INFO] [stderr] 39 | Message::DstUnreachable => write!(f, "destination unreachable"), [INFO] [stderr] 40 | Message::Redirect => write!(f, "message redirect"), [INFO] [stderr] 41 | Message::EchoRequest => write!(f, "echo request"), [INFO] [stderr] 42 | Message::RouterAdvert => write!(f, "router advertisement"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/icmpv4.rs:93:9 [INFO] [stderr] | [INFO] [stderr] 93 | / match self { [INFO] [stderr] 94 | | &DstUnreachable::NetUnreachable => [INFO] [stderr] 95 | | write!(f, "destination network unreachable"), [INFO] [stderr] 96 | | &DstUnreachable::HostUnreachable => [INFO] [stderr] ... | [INFO] [stderr] 127 | | write!(f, "{}", id) [INFO] [stderr] 128 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 93 | match *self { [INFO] [stderr] 94 | DstUnreachable::NetUnreachable => [INFO] [stderr] 95 | write!(f, "destination network unreachable"), [INFO] [stderr] 96 | DstUnreachable::HostUnreachable => [INFO] [stderr] 97 | write!(f, "destination host unreachable"), [INFO] [stderr] 98 | DstUnreachable::ProtoUnreachable => [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/icmpv4.rs:441:9 [INFO] [stderr] | [INFO] [stderr] 441 | / match self { [INFO] [stderr] 442 | | &Repr::EchoRequest { data, .. } | [INFO] [stderr] 443 | | &Repr::EchoReply { data, .. } => { [INFO] [stderr] 444 | | field::ECHO_SEQNO.end + data.len() [INFO] [stderr] ... | [INFO] [stderr] 449 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 450 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 441 | match *self { [INFO] [stderr] 442 | Repr::EchoRequest { data, .. } | [INFO] [stderr] 443 | Repr::EchoReply { data, .. } => { [INFO] [stderr] 444 | field::ECHO_SEQNO.end + data.len() [INFO] [stderr] 445 | }, [INFO] [stderr] 446 | Repr::DstUnreachable { header, data, .. } => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/icmpv4.rs:458:9 [INFO] [stderr] | [INFO] [stderr] 458 | / match self { [INFO] [stderr] 459 | | &Repr::EchoRequest { ident, seq_no, data } => { [INFO] [stderr] 460 | | packet.set_msg_type(Message::EchoRequest); [INFO] [stderr] 461 | | packet.set_msg_code(0); [INFO] [stderr] ... | [INFO] [stderr] 487 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 488 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 458 | match *self { [INFO] [stderr] 459 | Repr::EchoRequest { ident, seq_no, data } => { [INFO] [stderr] 460 | packet.set_msg_type(Message::EchoRequest); [INFO] [stderr] 461 | packet.set_msg_code(0); [INFO] [stderr] 462 | packet.set_echo_ident(ident); [INFO] [stderr] 463 | packet.set_echo_seq_no(seq_no); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/icmpv4.rs:519:9 [INFO] [stderr] | [INFO] [stderr] 519 | / match self { [INFO] [stderr] 520 | | &Repr::EchoRequest { ident, seq_no, data } => [INFO] [stderr] 521 | | write!(f, "ICMPv4 echo request id={} seq={} len={}", [INFO] [stderr] 522 | | ident, seq_no, data.len()), [INFO] [stderr] ... | [INFO] [stderr] 529 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 530 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 519 | match *self { [INFO] [stderr] 520 | Repr::EchoRequest { ident, seq_no, data } => [INFO] [stderr] 521 | write!(f, "ICMPv4 echo request id={} seq={} len={}", [INFO] [stderr] 522 | ident, seq_no, data.len()), [INFO] [stderr] 523 | Repr::EchoReply { ident, seq_no, data } => [INFO] [stderr] 524 | write!(f, "ICMPv4 echo reply id={} seq={} len={}", [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/wire/icmpv6.rs:48:21 [INFO] [stderr] | [INFO] [stderr] 48 | pub fn is_error(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/icmpv6.rs:56:21 [INFO] [stderr] | [INFO] [stderr] 56 | pub fn is_ndisc(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/icmpv6.rs:68:19 [INFO] [stderr] | [INFO] [stderr] 68 | pub fn is_mld(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/icmpv6.rs:78:9 [INFO] [stderr] | [INFO] [stderr] 78 | / match self { [INFO] [stderr] 79 | | &Message::DstUnreachable => write!(f, "destination unreachable"), [INFO] [stderr] 80 | | &Message::PktTooBig => write!(f, "packet too big"), [INFO] [stderr] 81 | | &Message::TimeExceeded => write!(f, "time exceeded"), [INFO] [stderr] ... | [INFO] [stderr] 92 | | &Message::Unknown(id) => write!(f, "{}", id) [INFO] [stderr] 93 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 78 | match *self { [INFO] [stderr] 79 | Message::DstUnreachable => write!(f, "destination unreachable"), [INFO] [stderr] 80 | Message::PktTooBig => write!(f, "packet too big"), [INFO] [stderr] 81 | Message::TimeExceeded => write!(f, "time exceeded"), [INFO] [stderr] 82 | Message::ParamProblem => write!(f, "parameter problem"), [INFO] [stderr] 83 | Message::EchoReply => write!(f, "echo reply"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/icmpv6.rs:119:9 [INFO] [stderr] | [INFO] [stderr] 119 | / match self { [INFO] [stderr] 120 | | &DstUnreachable::NoRoute => [INFO] [stderr] 121 | | write!(f, "no route to destination"), [INFO] [stderr] 122 | | &DstUnreachable::AdminProhibit => [INFO] [stderr] ... | [INFO] [stderr] 135 | | write!(f, "{}", id) [INFO] [stderr] 136 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 119 | match *self { [INFO] [stderr] 120 | DstUnreachable::NoRoute => [INFO] [stderr] 121 | write!(f, "no route to destination"), [INFO] [stderr] 122 | DstUnreachable::AdminProhibit => [INFO] [stderr] 123 | write!(f, "communication with destination administratively prohibited"), [INFO] [stderr] 124 | DstUnreachable::BeyondScope => [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/icmpv6.rs:154:9 [INFO] [stderr] | [INFO] [stderr] 154 | / match self { [INFO] [stderr] 155 | | &ParamProblem::ErroneousHdrField => [INFO] [stderr] 156 | | write!(f, "erroneous header field."), [INFO] [stderr] 157 | | &ParamProblem::UnrecognizedNxtHdr => [INFO] [stderr] ... | [INFO] [stderr] 162 | | write!(f, "{}", id) [INFO] [stderr] 163 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 154 | match *self { [INFO] [stderr] 155 | ParamProblem::ErroneousHdrField => [INFO] [stderr] 156 | write!(f, "erroneous header field."), [INFO] [stderr] 157 | ParamProblem::UnrecognizedNxtHdr => [INFO] [stderr] 158 | write!(f, "unrecognized next header type."), [INFO] [stderr] 159 | ParamProblem::UnrecognizedOption => [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/icmpv6.rs:179:9 [INFO] [stderr] | [INFO] [stderr] 179 | / match self { [INFO] [stderr] 180 | | &TimeExceeded::HopLimitExceeded => [INFO] [stderr] 181 | | write!(f, "hop limit exceeded in transit"), [INFO] [stderr] 182 | | &TimeExceeded::FragReassemExceeded => [INFO] [stderr] ... | [INFO] [stderr] 185 | | write!(f, "{}", id) [INFO] [stderr] 186 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 179 | match *self { [INFO] [stderr] 180 | TimeExceeded::HopLimitExceeded => [INFO] [stderr] 181 | write!(f, "hop limit exceeded in transit"), [INFO] [stderr] 182 | TimeExceeded::FragReassemExceeded => [INFO] [stderr] 183 | write!(f, "fragment reassembly time exceeded"), [INFO] [stderr] 184 | TimeExceeded::Unknown(id) => [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/wire/icmpv6.rs:421:17 [INFO] [stderr] | [INFO] [stderr] 421 | data[field::SQRV] = data[field::SQRV] & 0xf; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `data[field::SQRV] &= 0xf` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/wire/icmpv6.rs:623:46 [INFO] [stderr] | [INFO] [stderr] 623 | NdiscRepr::parse(packet).map(|repr| Repr::Ndisc(repr)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Repr::Ndisc` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/wire/icmpv6.rs:626:44 [INFO] [stderr] | [INFO] [stderr] 626 | MldRepr::parse(packet).map(|repr| Repr::Mld(repr)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Repr::Mld` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/icmpv6.rs:634:9 [INFO] [stderr] | [INFO] [stderr] 634 | / match self { [INFO] [stderr] 635 | | &Repr::DstUnreachable { header, data, .. } | &Repr::PktTooBig { header, data, .. } | [INFO] [stderr] 636 | | &Repr::TimeExceeded { header, data, .. } | &Repr::ParamProblem { header, data, .. } => { [INFO] [stderr] 637 | | field::UNUSED.end + header.buffer_len() + data.len() [INFO] [stderr] ... | [INFO] [stderr] 649 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 650 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 634 | match *self { [INFO] [stderr] 635 | Repr::DstUnreachable { header, data, .. } | Repr::PktTooBig { header, data, .. } | [INFO] [stderr] 636 | Repr::TimeExceeded { header, data, .. } | Repr::ParamProblem { header, data, .. } => { [INFO] [stderr] 637 | field::UNUSED.end + header.buffer_len() + data.len() [INFO] [stderr] 638 | } [INFO] [stderr] 639 | Repr::EchoRequest { data, .. } | [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/icmpv6.rs:665:9 [INFO] [stderr] | [INFO] [stderr] 665 | / match self { [INFO] [stderr] 666 | | &Repr::DstUnreachable { reason, header, data } => { [INFO] [stderr] 667 | | packet.set_msg_type(Message::DstUnreachable); [INFO] [stderr] 668 | | packet.set_msg_code(reason.into()); [INFO] [stderr] ... | [INFO] [stderr] 722 | | &Repr::__Nonexhaustive => unreachable!(), [INFO] [stderr] 723 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 665 | match *self { [INFO] [stderr] 666 | Repr::DstUnreachable { reason, header, data } => { [INFO] [stderr] 667 | packet.set_msg_type(Message::DstUnreachable); [INFO] [stderr] 668 | packet.set_msg_code(reason.into()); [INFO] [stderr] 669 | [INFO] [stderr] 670 | emit_contained_packet(packet.payload_mut(), header, &data); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/igmp.rs:41:9 [INFO] [stderr] | [INFO] [stderr] 41 | / match self { [INFO] [stderr] 42 | | &Message::MembershipQuery => write!(f, "membership query"), [INFO] [stderr] 43 | | &Message::MembershipReportV2 => write!(f, "version 2 membership report"), [INFO] [stderr] 44 | | &Message::LeaveGroup => write!(f, "leave group"), [INFO] [stderr] 45 | | &Message::MembershipReportV1 => write!(f, "version 1 membership report"), [INFO] [stderr] 46 | | &Message::Unknown(id) => write!(f, "{}", id), [INFO] [stderr] 47 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 41 | match *self { [INFO] [stderr] 42 | Message::MembershipQuery => write!(f, "membership query"), [INFO] [stderr] 43 | Message::MembershipReportV2 => write!(f, "version 2 membership report"), [INFO] [stderr] 44 | Message::LeaveGroup => write!(f, "leave group"), [INFO] [stderr] 45 | Message::MembershipReportV1 => write!(f, "version 1 membership report"), [INFO] [stderr] 46 | Message::Unknown(id) => write!(f, "{}", id), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/igmp.rs:254:9 [INFO] [stderr] | [INFO] [stderr] 254 | / match self { [INFO] [stderr] 255 | | &Repr::MembershipQuery { [INFO] [stderr] 256 | | max_resp_time, [INFO] [stderr] 257 | | group_addr, [INFO] [stderr] ... | [INFO] [stderr] 283 | | } [INFO] [stderr] 284 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 254 | match *self { [INFO] [stderr] 255 | Repr::MembershipQuery { [INFO] [stderr] 256 | max_resp_time, [INFO] [stderr] 257 | group_addr, [INFO] [stderr] 258 | version [INFO] [stderr] 259 | } => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/igmp.rs:330:9 [INFO] [stderr] | [INFO] [stderr] 330 | / match self { [INFO] [stderr] 331 | | &Repr::MembershipQuery { [INFO] [stderr] 332 | | max_resp_time, [INFO] [stderr] 333 | | group_addr, [INFO] [stderr] ... | [INFO] [stderr] 353 | | } [INFO] [stderr] 354 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 330 | match *self { [INFO] [stderr] 331 | Repr::MembershipQuery { [INFO] [stderr] 332 | max_resp_time, [INFO] [stderr] 333 | group_addr, [INFO] [stderr] 334 | version, [INFO] [stderr] 335 | } => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/wire/ndisc.rs:49:29 [INFO] [stderr] | [INFO] [stderr] 49 | Duration::from_secs(NetworkEndian::read_u16(&data[field::ROUTER_LT]) as u64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(NetworkEndian::read_u16(&data[field::ROUTER_LT]))` [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 u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/wire/ndisc.rs:56:31 [INFO] [stderr] | [INFO] [stderr] 56 | Duration::from_millis(NetworkEndian::read_u32(&data[field::REACHABLE_TM]) as u64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(NetworkEndian::read_u32(&data[field::REACHABLE_TM]))` [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 u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/wire/ndisc.rs:63:31 [INFO] [stderr] | [INFO] [stderr] 63 | Duration::from_millis(NetworkEndian::read_u32(&data[field::RETRANS_TM]) as u64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(NetworkEndian::read_u32(&data[field::RETRANS_TM]))` [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: length comparison to zero [INFO] [stderr] --> src/wire/ndisc.rs:230:33 [INFO] [stderr] | [INFO] [stderr] 230 | let lladdr = if packet.payload().len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!packet.payload().is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/wire/ndisc.rs:265:33 [INFO] [stderr] | [INFO] [stderr] 265 | let lladdr = if packet.payload().len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!packet.payload().is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/wire/ndisc.rs:279:33 [INFO] [stderr] | [INFO] [stderr] 279 | let lladdr = if packet.payload().len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!packet.payload().is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ndisc.rs:332:9 [INFO] [stderr] | [INFO] [stderr] 332 | / match self { [INFO] [stderr] 333 | | &Repr::RouterSolicit { lladdr } => { [INFO] [stderr] 334 | | match lladdr { [INFO] [stderr] 335 | | Some(_) => field::UNUSED.end + 8, [INFO] [stderr] ... | [INFO] [stderr] 367 | | } [INFO] [stderr] 368 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 332 | match *self { [INFO] [stderr] 333 | Repr::RouterSolicit { lladdr } => { [INFO] [stderr] 334 | match lladdr { [INFO] [stderr] 335 | Some(_) => field::UNUSED.end + 8, [INFO] [stderr] 336 | None => field::UNUSED.end, [INFO] [stderr] 337 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ndisc.rs:373:9 [INFO] [stderr] | [INFO] [stderr] 373 | / match self { [INFO] [stderr] 374 | | &Repr::RouterSolicit { lladdr } => { [INFO] [stderr] 375 | | packet.set_msg_type(Message::RouterSolicit); [INFO] [stderr] 376 | | packet.set_msg_code(0); [INFO] [stderr] ... | [INFO] [stderr] 458 | | }, [INFO] [stderr] 459 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 373 | match *self { [INFO] [stderr] 374 | Repr::RouterSolicit { lladdr } => { [INFO] [stderr] 375 | packet.set_msg_type(Message::RouterSolicit); [INFO] [stderr] 376 | packet.set_msg_code(0); [INFO] [stderr] 377 | packet.clear_reserved(); [INFO] [stderr] 378 | if let Some(lladdr) = lladdr { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ndiscoption.rs:26:9 [INFO] [stderr] | [INFO] [stderr] 26 | / match self { [INFO] [stderr] 27 | | &Type::SourceLinkLayerAddr => write!(f, "source link-layer address"), [INFO] [stderr] 28 | | &Type::TargetLinkLayerAddr => write!(f, "target link-layer address"), [INFO] [stderr] 29 | | &Type::PrefixInformation => write!(f, "prefix information"), [INFO] [stderr] ... | [INFO] [stderr] 32 | | &Type::Unknown(id) => write!(f, "{}", id) [INFO] [stderr] 33 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 26 | match *self { [INFO] [stderr] 27 | Type::SourceLinkLayerAddr => write!(f, "source link-layer address"), [INFO] [stderr] 28 | Type::TargetLinkLayerAddr => write!(f, "target link-layer address"), [INFO] [stderr] 29 | Type::PrefixInformation => write!(f, "prefix information"), [INFO] [stderr] 30 | Type::RedirectedHeader => write!(f, "redirected header"), [INFO] [stderr] 31 | Type::Mtu => write!(f, "mtu"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/wire/ndiscoption.rs:253:29 [INFO] [stderr] | [INFO] [stderr] 253 | Duration::from_secs(NetworkEndian::read_u32(&data[field::VALID_LT]) as u64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(NetworkEndian::read_u32(&data[field::VALID_LT]))` [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 u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/wire/ndiscoption.rs:260:29 [INFO] [stderr] | [INFO] [stderr] 260 | Duration::from_secs(NetworkEndian::read_u32(&data[field::PREF_LT]) as u64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(NetworkEndian::read_u32(&data[field::PREF_LT]))` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ndiscoption.rs:490:9 [INFO] [stderr] | [INFO] [stderr] 490 | / match self { [INFO] [stderr] 491 | | &Repr::SourceLinkLayerAddr(_) | &Repr::TargetLinkLayerAddr(_) => [INFO] [stderr] 492 | | field::LL_ADDR.end, [INFO] [stderr] 493 | | &Repr::PrefixInformation(_) => [INFO] [stderr] ... | [INFO] [stderr] 500 | | field::DATA(length).end [INFO] [stderr] 501 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 490 | match *self { [INFO] [stderr] 491 | Repr::SourceLinkLayerAddr(_) | Repr::TargetLinkLayerAddr(_) => [INFO] [stderr] 492 | field::LL_ADDR.end, [INFO] [stderr] 493 | Repr::PrefixInformation(_) => [INFO] [stderr] 494 | field::PREFIX.end, [INFO] [stderr] 495 | Repr::RedirectedHeader(RedirectedHeader { header, data }) => [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ndiscoption.rs:507:9 [INFO] [stderr] | [INFO] [stderr] 507 | / match self { [INFO] [stderr] 508 | | &Repr::SourceLinkLayerAddr(addr) => { [INFO] [stderr] 509 | | opt.set_option_type(Type::SourceLinkLayerAddr); [INFO] [stderr] 510 | | opt.set_data_len(1); [INFO] [stderr] ... | [INFO] [stderr] 553 | | } [INFO] [stderr] 554 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 507 | match *self { [INFO] [stderr] 508 | Repr::SourceLinkLayerAddr(addr) => { [INFO] [stderr] 509 | opt.set_option_type(Type::SourceLinkLayerAddr); [INFO] [stderr] 510 | opt.set_data_len(1); [INFO] [stderr] 511 | opt.set_link_layer_addr(addr); [INFO] [stderr] 512 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ndiscoption.rs:561:9 [INFO] [stderr] | [INFO] [stderr] 561 | / match self { [INFO] [stderr] 562 | | &Repr::SourceLinkLayerAddr(addr) => { [INFO] [stderr] 563 | | write!(f, "SourceLinkLayer addr={}", addr) [INFO] [stderr] 564 | | }, [INFO] [stderr] ... | [INFO] [stderr] 585 | | } [INFO] [stderr] 586 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 561 | match *self { [INFO] [stderr] 562 | Repr::SourceLinkLayerAddr(addr) => { [INFO] [stderr] 563 | write!(f, "SourceLinkLayer addr={}", addr) [INFO] [stderr] 564 | }, [INFO] [stderr] 565 | Repr::TargetLinkLayerAddr(addr) => { [INFO] [stderr] 566 | write!(f, "TargetLinkLayer addr={}", addr) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/wire/mld.rs:128:9 [INFO] [stderr] | [INFO] [stderr] 128 | data[field::SQRV] = data[field::SQRV] & 0x7; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `data[field::SQRV] &= 0x7` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: item `wire::udp::Packet` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/wire/udp.rs:30:1 [INFO] [stderr] | [INFO] [stderr] 30 | / impl> Packet { [INFO] [stderr] 31 | | /// Imbue a raw octet buffer with UDP packet structure. [INFO] [stderr] 32 | | pub fn new_unchecked(buffer: T) -> Packet { [INFO] [stderr] 33 | | Packet { buffer } [INFO] [stderr] ... | [INFO] [stderr] 120 | | } [INFO] [stderr] 121 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/wire/udp.rs:117:37 [INFO] [stderr] | [INFO] [stderr] 117 | self.len() as u32), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.len())` [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/wire/udp.rs:173:41 [INFO] [stderr] | [INFO] [stderr] 173 | self.len() as u32), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.len())` [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/wire/tcp.rs:453:38 [INFO] [stderr] | [INFO] [stderr] 453 | let raw = (raw & !0xf000) | ((value as u16) / 4) << 12; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(value)` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/tcp.rs:565:9 [INFO] [stderr] | [INFO] [stderr] 565 | / match self { [INFO] [stderr] 566 | | &TcpOption::EndOfList => 1, [INFO] [stderr] 567 | | &TcpOption::NoOperation => 1, [INFO] [stderr] 568 | | &TcpOption::MaxSegmentSize(_) => 4, [INFO] [stderr] 569 | | &TcpOption::WindowScale(_) => 3, [INFO] [stderr] 570 | | &TcpOption::Unknown { data, .. } => 2 + data.len() [INFO] [stderr] 571 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 565 | match *self { [INFO] [stderr] 566 | TcpOption::EndOfList => 1, [INFO] [stderr] 567 | TcpOption::NoOperation => 1, [INFO] [stderr] 568 | TcpOption::MaxSegmentSize(_) => 4, [INFO] [stderr] 569 | TcpOption::WindowScale(_) => 3, [INFO] [stderr] 570 | TcpOption::Unknown { data, .. } => 2 + data.len() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/tcp.rs:576:9 [INFO] [stderr] | [INFO] [stderr] 576 | / match self { [INFO] [stderr] 577 | | &TcpOption::EndOfList => { [INFO] [stderr] 578 | | length = 1; [INFO] [stderr] 579 | | // There may be padding space which also should be initialized. [INFO] [stderr] ... | [INFO] [stderr] 608 | | } [INFO] [stderr] 609 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 576 | match *self { [INFO] [stderr] 577 | TcpOption::EndOfList => { [INFO] [stderr] 578 | length = 1; [INFO] [stderr] 579 | // There may be padding space which also should be initialized. [INFO] [stderr] 580 | for p in buffer.iter_mut() { [INFO] [stderr] 581 | *p = field::OPT_END; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/tcp.rs:591:17 [INFO] [stderr] | [INFO] [stderr] 591 | / match self { [INFO] [stderr] 592 | | &TcpOption::EndOfList | [INFO] [stderr] 593 | | &TcpOption::NoOperation => [INFO] [stderr] 594 | | unreachable!(), [INFO] [stderr] ... | [INFO] [stderr] 606 | | } [INFO] [stderr] 607 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 591 | match *self { [INFO] [stderr] 592 | TcpOption::EndOfList | [INFO] [stderr] 593 | TcpOption::NoOperation => [INFO] [stderr] 594 | unreachable!(), [INFO] [stderr] 595 | TcpOption::MaxSegmentSize(value) => { [INFO] [stderr] 596 | buffer[0] = field::OPT_MSS; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: item `wire::tcp::Control` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/wire/tcp.rs:624:1 [INFO] [stderr] | [INFO] [stderr] 624 | / impl Control { [INFO] [stderr] 625 | | /// Return the length of a control flag, in terms of sequence space. [INFO] [stderr] 626 | | pub fn len(self) -> usize { [INFO] [stderr] 627 | | match self { [INFO] [stderr] ... | [INFO] [stderr] 639 | | } [INFO] [stderr] 640 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/wire/tcp.rs:679:13 [INFO] [stderr] | [INFO] [stderr] 679 | / match packet.ack() { [INFO] [stderr] 680 | | true => Some(packet.ack_number()), [INFO] [stderr] 681 | | false => None [INFO] [stderr] 682 | | }; [INFO] [stderr] | |_____________^ help: consider using an if/else expression: `if packet.ack() { Some(packet.ack_number()) } else { None }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/wire/tcp.rs:691:15 [INFO] [stderr] | [INFO] [stderr] 691 | while options.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!options.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/wire/tcp.rs:786:16 [INFO] [stderr] | [INFO] [stderr] 786 | if options.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!options.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/wire/tcp.rs:840:15 [INFO] [stderr] | [INFO] [stderr] 840 | while options.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!options.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter_mut() and will not move the BTreeMap [INFO] [stderr] --> src/iface/neighbor.rs:102:45 [INFO] [stderr] | [INFO] [stderr] 102 | let new_btree_map = map.into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter_mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/iface/neighbor.rs:166:9 [INFO] [stderr] | [INFO] [stderr] 166 | / match self.storage.get(protocol_addr) { [INFO] [stderr] 167 | | Some(&Neighbor { expires_at, hardware_addr }) => { [INFO] [stderr] 168 | | if timestamp < expires_at { [INFO] [stderr] 169 | | return Some(hardware_addr) [INFO] [stderr] ... | [INFO] [stderr] 172 | | None => () [INFO] [stderr] 173 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [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] 166 | if let Some(&Neighbor { expires_at, hardware_addr }) = self.storage.get(protocol_addr) { [INFO] [stderr] 167 | if timestamp < expires_at { [INFO] [stderr] 168 | return Some(hardware_addr) [INFO] [stderr] 169 | } [INFO] [stderr] 170 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/iface/ethernet.rs:264:9 [INFO] [stderr] | [INFO] [stderr] 264 | / match self { [INFO] [stderr] 265 | | &Packet::None => None, [INFO] [stderr] 266 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 267 | | &Packet::Arp(_) => None, [INFO] [stderr] ... | [INFO] [stderr] 279 | | &Packet::Tcp((ref ip_repr, _)) => Some(ip_repr.dst_addr()) [INFO] [stderr] 280 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 264 | match *self { [INFO] [stderr] 265 | Packet::None => None, [INFO] [stderr] 266 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 267 | Packet::Arp(_) => None, [INFO] [stderr] 268 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 269 | Packet::Icmpv4((ref ipv4_repr, _)) => Some(ipv4_repr.dst_addr.into()), [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/iface/ethernet.rs:650:34 [INFO] [stderr] | [INFO] [stderr] 650 | fn check_ethernet_addr(addr: &EthernetAddress) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider passing by value instead: `EthernetAddress` [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: called `is_some()` after searching an `Iterator` with find. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/iface/ethernet.rs:671:9 [INFO] [stderr] | [INFO] [stderr] 671 | / self.ip_addrs.iter().find(|cidr| { [INFO] [stderr] 672 | | match *cidr { [INFO] [stderr] 673 | | &IpCidr::Ipv6(cidr) if cidr.address() != Ipv6Address::LOOPBACK=> { [INFO] [stderr] 674 | | // Take the lower order 24 bits of the IPv6 address and [INFO] [stderr] ... | [INFO] [stderr] 679 | | } [INFO] [stderr] 680 | | }).is_some() [INFO] [stderr] | |____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::search_is_some)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/iface/ethernet.rs:672:13 [INFO] [stderr] | [INFO] [stderr] 672 | / match *cidr { [INFO] [stderr] 673 | | &IpCidr::Ipv6(cidr) if cidr.address() != Ipv6Address::LOOPBACK=> { [INFO] [stderr] 674 | | // Take the lower order 24 bits of the IPv6 address and [INFO] [stderr] 675 | | // append those bits to FF02:0:0:0:0:1:FF00::/104. [INFO] [stderr] ... | [INFO] [stderr] 678 | | _ => false, [INFO] [stderr] 679 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 672 | match *(*cidr) { [INFO] [stderr] 673 | IpCidr::Ipv6(cidr) if cidr.address() != Ipv6Address::LOOPBACK=> { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/iface/ethernet.rs:694:24 [INFO] [stderr] | [INFO] [stderr] 694 | |addr| match addr { [INFO] [stderr] | ________________________^ [INFO] [stderr] 695 | | &IpCidr::Ipv4(cidr) => Some(cidr.address()), [INFO] [stderr] 696 | | _ => None, [INFO] [stderr] 697 | | }) [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 694 | |addr| match *addr { [INFO] [stderr] 695 | IpCidr::Ipv4(cidr) => Some(cidr.address()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this call to `as_ref` does nothing [INFO] [stderr] --> src/iface/ethernet.rs:1421:27 [INFO] [stderr] | [INFO] [stderr] 1421 | debug_assert!(tx_buffer.as_ref().len() == tx_len); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try this: `tx_buffer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: this call to `as_mut` does nothing [INFO] [stderr] --> src/iface/ethernet.rs:1422:58 [INFO] [stderr] | [INFO] [stderr] 1422 | let mut frame = EthernetFrame::new_unchecked(tx_buffer.as_mut()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try this: `tx_buffer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: called `is_some()` after searching an `Iterator` with find. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/iface/ethernet.rs:1432:9 [INFO] [stderr] | [INFO] [stderr] 1432 | / self.ip_addrs [INFO] [stderr] 1433 | | .iter() [INFO] [stderr] 1434 | | .find(|cidr| cidr.contains_addr(addr)) [INFO] [stderr] 1435 | | .is_some() [INFO] [stderr] | |______________________^ [INFO] [stderr] | [INFO] [stderr] = note: replace `find(|cidr| cidr.contains_addr(addr)).is_some()` with `any(|cidr| cidr.contains_addr(addr))` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/iface/ethernet.rs:1470:17 [INFO] [stderr] | [INFO] [stderr] 1470 | / match dst_addr { [INFO] [stderr] 1471 | | &IpAddress::Unspecified => [INFO] [stderr] 1472 | | None, [INFO] [stderr] 1473 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] ... | [INFO] [stderr] 1488 | | unreachable!() [INFO] [stderr] 1489 | | }; [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1470 | match *dst_addr { [INFO] [stderr] 1471 | IpAddress::Unspecified => [INFO] [stderr] 1472 | None, [INFO] [stderr] 1473 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 1474 | IpAddress::Ipv4(_addr) => [INFO] [stderr] 1475 | Some(EthernetAddress::from_bytes(&[ [INFO] [stderr] ... [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/iface/ethernet.rs:1490:13 [INFO] [stderr] | [INFO] [stderr] 1490 | / match hardware_addr { [INFO] [stderr] 1491 | | Some(hardware_addr) => [INFO] [stderr] 1492 | | // Destination is multicast [INFO] [stderr] 1493 | | return Ok((hardware_addr, tx_token)), [INFO] [stderr] ... | [INFO] [stderr] 1496 | | (), [INFO] [stderr] 1497 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Some(hardware_addr) = hardware_addr { return Ok((hardware_addr, tx_token)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: this call to `as_mut` does nothing [INFO] [stderr] --> src/socket/raw.rs:94:12 [INFO] [stderr] | [INFO] [stderr] 94 | Ok(packet_buf.as_mut()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try this: `packet_buf` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: this call to `as_mut` does nothing [INFO] [stderr] --> src/socket/raw.rs:144:27 [INFO] [stderr] | [INFO] [stderr] 144 | ip_repr.emit(&mut packet_buf.as_mut()[..header_len], &checksum_caps); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try this: `packet_buf` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: this call to `as_mut` does nothing [INFO] [stderr] --> src/socket/raw.rs:145:9 [INFO] [stderr] | [INFO] [stderr] 145 | packet_buf.as_mut()[header_len..].copy_from_slice(payload); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try this: `packet_buf` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: this call to `as_ref` does nothing [INFO] [stderr] --> src/socket/raw.rs:158:40 [INFO] [stderr] | [INFO] [stderr] 158 | match IpVersion::of_packet(buffer.as_ref())? { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try this: `buffer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: this call to `as_mut` does nothing [INFO] [stderr] --> src/socket/raw.rs:161:62 [INFO] [stderr] | [INFO] [stderr] 161 | let mut packet = Ipv4Packet::new_checked(buffer.as_mut())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try this: `buffer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: this call to `as_mut` does nothing [INFO] [stderr] --> src/socket/raw.rs:177:62 [INFO] [stderr] | [INFO] [stderr] 177 | let mut packet = Ipv6Packet::new_checked(buffer.as_mut())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try this: `buffer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: this call to `as_mut` does nothing [INFO] [stderr] --> src/socket/raw.rs:192:40 [INFO] [stderr] | [INFO] [stderr] 192 | match prepare(ip_protocol, packet_buf.as_mut(), &checksum_caps) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try this: `packet_buf` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/socket/icmp.rs:295:9 [INFO] [stderr] | [INFO] [stderr] 295 | / match icmp_repr { [INFO] [stderr] 296 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 297 | | &IcmpRepr::Ipv4(ref icmp_repr) => { [INFO] [stderr] 298 | | let packet_buf = self.rx_buffer.enqueue(icmp_repr.buffer_len(), [INFO] [stderr] ... | [INFO] [stderr] 316 | | }, [INFO] [stderr] 317 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 295 | match *icmp_repr { [INFO] [stderr] 296 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 297 | IcmpRepr::Ipv4(ref icmp_repr) => { [INFO] [stderr] 298 | let packet_buf = self.rx_buffer.enqueue(icmp_repr.buffer_len(), [INFO] [stderr] 299 | ip_repr.src_addr())?; [INFO] [stderr] 300 | icmp_repr.emit(&mut Icmpv4Packet::new_unchecked(packet_buf), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/socket/tcp.rs:37:9 [INFO] [stderr] | [INFO] [stderr] 37 | / match self { [INFO] [stderr] 38 | | &State::Closed => write!(f, "CLOSED"), [INFO] [stderr] 39 | | &State::Listen => write!(f, "LISTEN"), [INFO] [stderr] 40 | | &State::SynSent => write!(f, "SYN-SENT"), [INFO] [stderr] ... | [INFO] [stderr] 48 | | &State::TimeWait => write!(f, "TIME-WAIT") [INFO] [stderr] 49 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 37 | match *self { [INFO] [stderr] 38 | State::Closed => write!(f, "CLOSED"), [INFO] [stderr] 39 | State::Listen => write!(f, "LISTEN"), [INFO] [stderr] 40 | State::SynSent => write!(f, "SYN-SENT"), [INFO] [stderr] 41 | State::SynReceived => write!(f, "SYN-RECEIVED"), [INFO] [stderr] 42 | State::Established => write!(f, "ESTABLISHED"), [INFO] [stderr] ... [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/tcp.rs:136:9 [INFO] [stderr] | [INFO] [stderr] 136 | / match self { [INFO] [stderr] 137 | | &mut Timer::Idle { ref mut keep_alive_at } => { [INFO] [stderr] 138 | | *keep_alive_at = interval.map(|interval| timestamp + interval) [INFO] [stderr] 139 | | } [INFO] [stderr] 140 | | _ => () [INFO] [stderr] 141 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [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] 136 | if let &mut Timer::Idle { ref mut keep_alive_at } = self { [INFO] [stderr] 137 | *keep_alive_at = interval.map(|interval| timestamp + interval) [INFO] [stderr] 138 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/socket/tcp.rs:136:9 [INFO] [stderr] | [INFO] [stderr] 136 | / match self { [INFO] [stderr] 137 | | &mut Timer::Idle { ref mut keep_alive_at } => { [INFO] [stderr] 138 | | *keep_alive_at = interval.map(|interval| timestamp + interval) [INFO] [stderr] 139 | | } [INFO] [stderr] 140 | | _ => () [INFO] [stderr] 141 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 136 | match *self { [INFO] [stderr] 137 | Timer::Idle { ref mut keep_alive_at } => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/socket/tcp.rs:623:18 [INFO] [stderr] | [INFO] [stderr] 623 | _ if self.rx_buffer.len() > 0 => true, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.rx_buffer.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/socket/tcp.rs:744:12 [INFO] [stderr] | [INFO] [stderr] 744 | if buffer.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!buffer.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 56 [INFO] [stderr] --> src/socket/tcp.rs:872:5 [INFO] [stderr] | [INFO] [stderr] 872 | / pub(crate) fn process(&mut self, timestamp: Instant, ip_repr: &IpRepr, repr: &TcpRepr) -> [INFO] [stderr] 873 | | Result)>> { [INFO] [stderr] 874 | | debug_assert!(self.accepts(ip_repr, repr)); [INFO] [stderr] 875 | | [INFO] [stderr] ... | [INFO] [stderr] 1295 | | } [INFO] [stderr] 1296 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/socket/tcp.rs:952:17 [INFO] [stderr] | [INFO] [stderr] 952 | / let mut segment_in_window = true; [INFO] [stderr] 953 | | [INFO] [stderr] 954 | | if window_start == window_end && segment_start != segment_end { [INFO] [stderr] 955 | | net_debug!("{}:{}:{}: non-zero-length segment with zero receive window, \ [INFO] [stderr] ... | [INFO] [stderr] 958 | | segment_in_window = false; [INFO] [stderr] 959 | | } [INFO] [stderr] | |_________________^ help: it is more idiomatic to write: `let segment_in_window = if window_start == window_end && segment_start != segment_end { ..; false } else { true };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/socket/tcp.rs:1204:21 [INFO] [stderr] | [INFO] [stderr] 1204 | repr.payload.len() == 0 && [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `repr.payload.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 33 [INFO] [stderr] --> src/socket/tcp.rs:1337:5 [INFO] [stderr] | [INFO] [stderr] 1337 | / pub(crate) fn dispatch(&mut self, timestamp: Instant, caps: &DeviceCapabilities, [INFO] [stderr] 1338 | | emit: F) -> Result<()> [INFO] [stderr] 1339 | | where F: FnOnce((IpRepr, TcpRepr)) -> Result<()> { [INFO] [stderr] 1340 | | if !self.remote_endpoint.is_specified() { return Err(Error::Exhausted) } [INFO] [stderr] ... | [INFO] [stderr] 1562 | | Ok(()) [INFO] [stderr] 1563 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/socket/tcp.rs:1485:9 [INFO] [stderr] | [INFO] [stderr] 1485 | / let is_keep_alive; [INFO] [stderr] 1486 | | if self.timer.should_keep_alive(timestamp) && repr.is_empty() { [INFO] [stderr] 1487 | | repr.seq_number = repr.seq_number - 1; [INFO] [stderr] 1488 | | repr.payload = b"\x00"; // RFC 1122 says we should do this [INFO] [stderr] ... | [INFO] [stderr] 1491 | | is_keep_alive = false; [INFO] [stderr] 1492 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let is_keep_alive = if self.timer.should_keep_alive(timestamp) && repr.is_empty() { ..; true } else { false };` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/socket/tcp.rs:1466:66 [INFO] [stderr] | [INFO] [stderr] 1466 | State::Established | State::CloseWait if repr.payload.len() > 0 => [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!repr.payload.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/socket/tcp.rs:1498:19 [INFO] [stderr] | [INFO] [stderr] 1498 | } else if repr.payload.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!repr.payload.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/socket/tcp.rs:1503:48 [INFO] [stderr] | [INFO] [stderr] 1503 | if repr.control != TcpControl::None || repr.payload.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `repr.payload.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/socket/set.rs:142:13 [INFO] [stderr] | [INFO] [stderr] 142 | / if let &mut Some(Item { refs: 0, ref mut socket }) = item { [INFO] [stderr] 143 | | match socket { [INFO] [stderr] 144 | | #[cfg(feature = "socket-raw")] [INFO] [stderr] 145 | | &mut Socket::Raw(_) => [INFO] [stderr] ... | [INFO] [stderr] 161 | | } [INFO] [stderr] 162 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 142 | if let Some(Item { refs: 0, ref mut socket }) = *item { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/socket/set.rs:143:17 [INFO] [stderr] | [INFO] [stderr] 143 | / match socket { [INFO] [stderr] 144 | | #[cfg(feature = "socket-raw")] [INFO] [stderr] 145 | | &mut Socket::Raw(_) => [INFO] [stderr] 146 | | may_remove = true, [INFO] [stderr] ... | [INFO] [stderr] 160 | | &mut Socket::__Nonexhaustive(_) => unreachable!() [INFO] [stderr] 161 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 143 | match *socket { [INFO] [stderr] 144 | #[cfg(feature = "socket-raw")] [INFO] [stderr] 145 | Socket::Raw(_) => [INFO] [stderr] 146 | may_remove = true, [INFO] [stderr] 147 | #[cfg(all(feature = "socket-icmp", any(feature = "proto-ipv4", feature = "proto-ipv6")))] [INFO] [stderr] 148 | Socket::Icmp(_) => [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: methods called `into_*` usually take self by value; consider choosing a less ambiguous name [INFO] [stderr] --> src/socket/ref_.rs:59:23 [INFO] [stderr] | [INFO] [stderr] 59 | pub fn into_inner(mut ref_: Self) -> &'a mut T { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/socket/mod.rs:72:9 [INFO] [stderr] | [INFO] [stderr] 72 | / match self { [INFO] [stderr] 73 | | &PollAt::Ingress => true, [INFO] [stderr] 74 | | _ => false, [INFO] [stderr] 75 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 72 | match *self { [INFO] [stderr] 73 | PollAt::Ingress => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/socket/mod.rs:98:5 [INFO] [stderr] | [INFO] [stderr] 98 | Tcp(TcpSocket<'a>), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 98 | Tcp(Box>), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/socket/mod.rs:111:9 [INFO] [stderr] | [INFO] [stderr] 111 | / match $self_ { [INFO] [stderr] 112 | | #[cfg(feature = "socket-raw")] [INFO] [stderr] 113 | | &$( $mut_ )* Socket::Raw(ref $( $mut_ )* $socket) => $code, [INFO] [stderr] 114 | | #[cfg(all(feature = "socket-icmp", any(feature = "proto-ipv4", feature = "proto-ipv6")))] [INFO] [stderr] ... | [INFO] [stderr] 120 | | &$( $mut_ )* Socket::__Nonexhaustive(_) => unreachable!() [INFO] [stderr] 121 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] ... [INFO] [stderr] 133 | dispatch_socket!(self, |socket| &socket.meta) [INFO] [stderr] | --------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/socket/mod.rs:111:9 [INFO] [stderr] | [INFO] [stderr] 111 | / match $self_ { [INFO] [stderr] 112 | | #[cfg(feature = "socket-raw")] [INFO] [stderr] 113 | | &$( $mut_ )* Socket::Raw(ref $( $mut_ )* $socket) => $code, [INFO] [stderr] 114 | | #[cfg(all(feature = "socket-icmp", any(feature = "proto-ipv4", feature = "proto-ipv6")))] [INFO] [stderr] ... | [INFO] [stderr] 120 | | &$( $mut_ )* Socket::__Nonexhaustive(_) => unreachable!() [INFO] [stderr] 121 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] ... [INFO] [stderr] 137 | dispatch_socket!(mut self, |socket| &mut socket.meta) [INFO] [stderr] | ----------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/socket/mod.rs:111:9 [INFO] [stderr] | [INFO] [stderr] 111 | / match $self_ { [INFO] [stderr] 112 | | #[cfg(feature = "socket-raw")] [INFO] [stderr] 113 | | &$( $mut_ )* Socket::Raw(ref $( $mut_ )* $socket) => $code, [INFO] [stderr] 114 | | #[cfg(all(feature = "socket-icmp", any(feature = "proto-ipv4", feature = "proto-ipv6")))] [INFO] [stderr] ... | [INFO] [stderr] 120 | | &$( $mut_ )* Socket::__Nonexhaustive(_) => unreachable!() [INFO] [stderr] 121 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] ... [INFO] [stderr] 141 | dispatch_socket!(self, |socket| socket.poll_at()) [INFO] [stderr] | ------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/socket/mod.rs:111:9 [INFO] [stderr] | [INFO] [stderr] 111 | / match $self_ { [INFO] [stderr] 112 | | #[cfg(feature = "socket-raw")] [INFO] [stderr] 113 | | &$( $mut_ )* Socket::Raw(ref $( $mut_ )* $socket) => $code, [INFO] [stderr] 114 | | #[cfg(all(feature = "socket-icmp", any(feature = "proto-ipv4", feature = "proto-ipv6")))] [INFO] [stderr] ... | [INFO] [stderr] 120 | | &$( $mut_ )* Socket::__Nonexhaustive(_) => unreachable!() [INFO] [stderr] 121 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] ... [INFO] [stderr] 147 | dispatch_socket!(mut self, |socket| socket.finish()) [INFO] [stderr] | ---------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/socket/mod.rs:162:17 [INFO] [stderr] | [INFO] [stderr] 162 | / match SocketRef::into_inner(ref_) { [INFO] [stderr] 163 | | &mut Socket::$variant(ref mut socket) => Some(SocketRef::new(socket)), [INFO] [stderr] 164 | | _ => None, [INFO] [stderr] 165 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 172 | from_socket!(RawSocket<'a, 'b>, Raw); [INFO] [stderr] | ------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/socket/mod.rs:162:17 [INFO] [stderr] | [INFO] [stderr] 162 | / match SocketRef::into_inner(ref_) { [INFO] [stderr] 163 | | &mut Socket::$variant(ref mut socket) => Some(SocketRef::new(socket)), [INFO] [stderr] 164 | | _ => None, [INFO] [stderr] 165 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 174 | from_socket!(IcmpSocket<'a, 'b>, Icmp); [INFO] [stderr] | --------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/socket/mod.rs:162:17 [INFO] [stderr] | [INFO] [stderr] 162 | / match SocketRef::into_inner(ref_) { [INFO] [stderr] 163 | | &mut Socket::$variant(ref mut socket) => Some(SocketRef::new(socket)), [INFO] [stderr] 164 | | _ => None, [INFO] [stderr] 165 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 176 | from_socket!(UdpSocket<'a, 'b>, Udp); [INFO] [stderr] | ------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/socket/mod.rs:162:17 [INFO] [stderr] | [INFO] [stderr] 162 | / match SocketRef::into_inner(ref_) { [INFO] [stderr] 163 | | &mut Socket::$variant(ref mut socket) => Some(SocketRef::new(socket)), [INFO] [stderr] 164 | | _ => None, [INFO] [stderr] 165 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 178 | from_socket!(TcpSocket<'a>, Tcp); [INFO] [stderr] | --------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/time.rs:53:19 [INFO] [stderr] | [INFO] [stderr] 53 | pub fn millis(&self) -> i64 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/time.rs:59:17 [INFO] [stderr] | [INFO] [stderr] 59 | pub fn secs(&self) -> i64 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/time.rs:65:25 [INFO] [stderr] | [INFO] [stderr] 65 | pub fn total_millis(&self) -> i64 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/time.rs:74:67 [INFO] [stderr] | [INFO] [stderr] 74 | Instant::from_millis((elapsed.as_secs() * 1_000) as i64 + (elapsed.subsec_nanos() / 1_000_000) as i64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(elapsed.subsec_nanos() / 1_000_000)` [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: Calling `subsec_millis()` is more concise than this calculation [INFO] [stderr] --> src/time.rs:74:67 [INFO] [stderr] | [INFO] [stderr] 74 | Instant::from_millis((elapsed.as_secs() * 1_000) as i64 + (elapsed.subsec_nanos() / 1_000_000) as i64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `elapsed.subsec_millis()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::duration_subsec)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duration_subsec [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/time.rs:83:55 [INFO] [stderr] | [INFO] [stderr] 83 | Self::from_millis(n.as_secs() as i64 * 1000 + (n.subsec_nanos() / 1000000) as i64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(n.subsec_nanos() / 1000000)` [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: Calling `subsec_millis()` is more concise than this calculation [INFO] [stderr] --> src/time.rs:83:55 [INFO] [stderr] | [INFO] [stderr] 83 | Self::from_millis(n.as_secs() as i64 * 1000 + (n.subsec_nanos() / 1000000) as i64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `n.subsec_millis()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duration_subsec [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/time.rs:154:19 [INFO] [stderr] | [INFO] [stderr] 154 | pub fn millis(&self) -> u64 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/time.rs:159:17 [INFO] [stderr] | [INFO] [stderr] 159 | pub fn secs(&self) -> u64 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/time.rs:164:25 [INFO] [stderr] | [INFO] [stderr] 164 | pub fn total_millis(&self) -> u64 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/time.rs:209:45 [INFO] [stderr] | [INFO] [stderr] 209 | Duration::from_millis(self.millis * rhs as u64) [INFO] [stderr] | ^^^^^^^^^^ help: try: `u64::from(rhs)` [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 u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/time.rs:215:24 [INFO] [stderr] | [INFO] [stderr] 215 | self.millis *= rhs as u64; [INFO] [stderr] | ^^^^^^^^^^ help: try: `u64::from(rhs)` [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 u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/time.rs:223:45 [INFO] [stderr] | [INFO] [stderr] 223 | Duration::from_millis(self.millis / rhs as u64) [INFO] [stderr] | ^^^^^^^^^^ help: try: `u64::from(rhs)` [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 u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/time.rs:229:24 [INFO] [stderr] | [INFO] [stderr] 229 | self.millis /= rhs as u64; [INFO] [stderr] | ^^^^^^^^^^ help: try: `u64::from(rhs)` [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 u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/time.rs:236:38 [INFO] [stderr] | [INFO] [stderr] 236 | other.as_secs() * 1000 + (other.subsec_nanos() / 1_000_000) as u64 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(other.subsec_nanos() / 1_000_000)` [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: Calling `subsec_millis()` is more concise than this calculation [INFO] [stderr] --> src/time.rs:236:38 [INFO] [stderr] | [INFO] [stderr] 236 | other.as_secs() * 1000 + (other.subsec_nanos() / 1_000_000) as u64 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `other.subsec_millis()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duration_subsec [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:162:9 [INFO] [stderr] | [INFO] [stderr] 162 | / match self { [INFO] [stderr] 163 | | &Error::Exhausted => write!(f, "buffer space exhausted"), [INFO] [stderr] 164 | | &Error::Illegal => write!(f, "illegal operation"), [INFO] [stderr] 165 | | &Error::Unaddressable => write!(f, "unaddressable destination"), [INFO] [stderr] ... | [INFO] [stderr] 172 | | &Error::__Nonexhaustive => unreachable!() [INFO] [stderr] 173 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 162 | match *self { [INFO] [stderr] 163 | Error::Exhausted => write!(f, "buffer space exhausted"), [INFO] [stderr] 164 | Error::Illegal => write!(f, "illegal operation"), [INFO] [stderr] 165 | Error::Unaddressable => write!(f, "unaddressable destination"), [INFO] [stderr] 166 | Error::Truncated => write!(f, "truncated packet"), [INFO] [stderr] 167 | Error::Checksum => write!(f, "checksum error"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `smoltcp`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/parsers.rs:102:25 [INFO] [stderr] | [INFO] [stderr] 102 | let mut value = self.accept_digit(hex)? as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.accept_digit(hex)?)` [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 u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/parsers.rs:107:30 [INFO] [stderr] | [INFO] [stderr] 107 | value += digit as u32; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u32::from(digit)` [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 loop variable `n` is used to index `octets` [INFO] [stderr] --> src/parsers.rs:121:18 [INFO] [stderr] | [INFO] [stderr] 121 | for n in 0..6 { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 121 | for (n, ) in octets.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/parsers.rs:144:24 [INFO] [stderr] | [INFO] [stderr] 144 | parts[*idx] = ((octets[0] as u16) << 8) | (octets[1] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(octets[0])` [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/parsers.rs:144:51 [INFO] [stderr] | [INFO] [stderr] 144 | parts[*idx] = ((octets[0] as u16) << 8) | (octets[1] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(octets[1])` [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/parsers.rs:146:24 [INFO] [stderr] | [INFO] [stderr] 146 | parts[*idx] = ((octets[2] as u16) << 8) | (octets[3] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(octets[2])` [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/parsers.rs:146:51 [INFO] [stderr] | [INFO] [stderr] 146 | parts[*idx] = ((octets[2] as u16) << 8) | (octets[3] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(octets[3])` [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 loop variable `n` is used to index `octets` [INFO] [stderr] --> src/parsers.rs:269:18 [INFO] [stderr] | [INFO] [stderr] 269 | for n in 0..4 { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 269 | for (n, ) in octets.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [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/parsers.rs:286:9 [INFO] [stderr] | [INFO] [stderr] 286 | / match self.try(|p| p.accept_ipv4()) { [INFO] [stderr] 287 | | Some(ipv4) => return Ok(IpAddress::Ipv4(ipv4)), [INFO] [stderr] 288 | | None => () [INFO] [stderr] 289 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(ipv4) = self.try(|p| p.accept_ipv4()) { return Ok(IpAddress::Ipv4(ipv4)) }` [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] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/parsers.rs:292:9 [INFO] [stderr] | [INFO] [stderr] 292 | / match self.try(|p| p.accept_ipv6(false)) { [INFO] [stderr] 293 | | Some(ipv6) => return Ok(IpAddress::Ipv6(ipv6)), [INFO] [stderr] 294 | | None => () [INFO] [stderr] 295 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(ipv6) = self.try(|p| p.accept_ipv6(false)) { return Ok(IpAddress::Ipv6(ipv6)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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/parsers.rs:332:9 [INFO] [stderr] | [INFO] [stderr] 332 | / match self.try(|p| p.accept_ipv4_endpoint()) { [INFO] [stderr] 333 | | Some(ipv4) => return Ok(ipv4), [INFO] [stderr] 334 | | None => () [INFO] [stderr] 335 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(ipv4) = self.try(|p| p.accept_ipv4_endpoint()) { return Ok(ipv4) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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/parsers.rs:338:9 [INFO] [stderr] | [INFO] [stderr] 338 | / match self.try(|p| p.accept_ipv6_endpoint()) { [INFO] [stderr] 339 | | Some(ipv6) => return Ok(ipv6), [INFO] [stderr] 340 | | None => () [INFO] [stderr] 341 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(ipv6) = self.try(|p| p.accept_ipv6_endpoint()) { return Ok(ipv6) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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/parsers.rs:422:9 [INFO] [stderr] | [INFO] [stderr] 422 | / match Ipv4Cidr::from_str(s) { [INFO] [stderr] 423 | | Ok(cidr) => return Ok(IpCidr::Ipv4(cidr)), [INFO] [stderr] 424 | | Err(_) => () [INFO] [stderr] 425 | | } [INFO] [stderr] | |_________^ help: try this: `if let Ok(cidr) = Ipv4Cidr::from_str(s) { return Ok(IpCidr::Ipv4(cidr)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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/parsers.rs:428:9 [INFO] [stderr] | [INFO] [stderr] 428 | / match Ipv6Cidr::from_str(s) { [INFO] [stderr] 429 | | Ok(cidr) => return Ok(IpCidr::Ipv6(cidr)), [INFO] [stderr] 430 | | Err(_) => () [INFO] [stderr] 431 | | } [INFO] [stderr] | |_________^ help: try this: `if let Ok(cidr) = Ipv6Cidr::from_str(s) { return Ok(IpCidr::Ipv6(cidr)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 26 [INFO] [stderr] --> src/parsers.rs:504:5 [INFO] [stderr] | [INFO] [stderr] 504 | / fn test_ipv6() { [INFO] [stderr] 505 | | // Obviously not valid [INFO] [stderr] 506 | | assert_eq!(Ipv6Address::from_str(""), Err(())); [INFO] [stderr] 507 | | assert_eq!(Ipv6Address::from_str("fe80:0:0:0:0:0:0:1"), [INFO] [stderr] ... | [INFO] [stderr] 565 | | Err(())); [INFO] [stderr] 566 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/storage/assembler.rs:246:5 [INFO] [stderr] | [INFO] [stderr] 246 | / pub fn iter_data<'a>(&'a self, first_offset: usize) -> AssemblerIter<'a> { [INFO] [stderr] 247 | | AssemblerIter::new(self, first_offset) [INFO] [stderr] 248 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/storage/assembler.rs:278:13 [INFO] [stderr] | [INFO] [stderr] 278 | self.left = self.left + contig.hole_size; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.left += contig.hole_size` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: an exclusive range would be more readable [INFO] [stderr] --> src/storage/assembler.rs:411:18 [INFO] [stderr] | [INFO] [stderr] 411 | for c in 1..=CONTIG_COUNT-1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: use: `1..CONTIG_COUNT` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_minus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_minus_one [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/storage/ring_buffer.rs:193:5 [INFO] [stderr] | [INFO] [stderr] 193 | / pub fn enqueue_many<'b>(&'b mut self, size: usize) -> &'b mut [T] { [INFO] [stderr] 194 | | self.enqueue_many_with(|buf| { [INFO] [stderr] 195 | | let size = cmp::min(size, buf.len()); [INFO] [stderr] 196 | | (size, &mut buf[..size]) [INFO] [stderr] 197 | | }).1 [INFO] [stderr] 198 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/storage/ring_buffer.rs:245:5 [INFO] [stderr] | [INFO] [stderr] 245 | / pub fn dequeue_many<'b>(&'b mut self, size: usize) -> &'b mut [T] { [INFO] [stderr] 246 | | self.dequeue_many_with(|buf| { [INFO] [stderr] 247 | | let size = cmp::min(size, buf.len()); [INFO] [stderr] 248 | | (size, &mut buf[..size]) [INFO] [stderr] 249 | | }).1 [INFO] [stderr] 250 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/storage/ring_buffer.rs:408:31 [INFO] [stderr] | [INFO] [stderr] 408 | ring.enqueue_one_with(|e| Ok(e)).unwrap(); [INFO] [stderr] | ^^^^^^^^^ help: remove closure as shown: `Ok` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/storage/ring_buffer.rs:413:42 [INFO] [stderr] | [INFO] [stderr] 413 | ring.enqueue_one_with(|e| Ok(*e = i)).unwrap(); [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 413 | ring.enqueue_one_with(|e| Ok(())).unwrap(); [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] error: a const item should never be interior mutable [INFO] [stderr] --> src/storage/packet_buffer.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | pub const EMPTY: PacketMetadata = PacketMetadata { size: 0, header: None }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::declare_interior_mutable_const)] on by default [INFO] [stderr] help: consider requiring `storage::packet_buffer::PacketMetadata` to be `Copy` [INFO] [stderr] --> src/storage/packet_buffer.rs:15:22 [INFO] [stderr] | [INFO] [stderr] 15 | pub const EMPTY: PacketMetadata = PacketMetadata { size: 0, header: None }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#declare_interior_mutable_const [INFO] [stderr] [INFO] [stderr] warning: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> src/storage/packet_buffer.rs:205:56 [INFO] [stderr] | [INFO] [stderr] 205 | assert!(buffer.dequeue_with(|&mut (), payload| { [INFO] [stderr] | ________________________________________________________^ [INFO] [stderr] 206 | | assert_eq!(payload, &b"abcd"[..]); [INFO] [stderr] 207 | | Ok(()) [INFO] [stderr] 208 | | }).is_ok()); [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::block_in_if_condition_stmt)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/phy/sys/raw_socket.rs:22:38 [INFO] [stderr] | [INFO] [stderr] 22 | imp::ETH_P_ALL.to_be() as i32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(imp::ETH_P_ALL.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/phy/fault_injector.rs:42:48 [INFO] [stderr] | [INFO] [stderr] 42 | xorshift32(&mut self.rng_seed) % 100 < pct as u32 [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(pct)` [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 call to `as_ref` does nothing [INFO] [stderr] --> src/phy/fault_injector.rs:255:39 [INFO] [stderr] | [INFO] [stderr] 255 | if config.max_size > 0 && buffer.as_ref().len() > config.max_size { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try this: `buffer` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_asref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: this call to `as_ref` does nothing [INFO] [stderr] --> src/phy/pcap_writer.rs:176:44 [INFO] [stderr] | [INFO] [stderr] 176 | sink.packet(timestamp, buffer.as_ref()), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try this: `buffer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `phy::loopback::Loopback` [INFO] [stderr] --> src/phy/loopback.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | / pub fn new() -> Loopback { [INFO] [stderr] 28 | | Loopback { [INFO] [stderr] 29 | | queue: VecDeque::new(), [INFO] [stderr] 30 | | } [INFO] [stderr] 31 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 18 | #[derive(Default)] [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/phy/mod.rs:140:15 [INFO] [stderr] | [INFO] [stderr] 140 | pub fn rx(&self) -> bool { [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/phy/mod.rs:148:15 [INFO] [stderr] | [INFO] [stderr] 148 | pub fn tx(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ethernet.rs:17:9 [INFO] [stderr] | [INFO] [stderr] 17 | / match self { [INFO] [stderr] 18 | | &EtherType::Ipv4 => write!(f, "IPv4"), [INFO] [stderr] 19 | | &EtherType::Ipv6 => write!(f, "IPv6"), [INFO] [stderr] 20 | | &EtherType::Arp => write!(f, "ARP"), [INFO] [stderr] 21 | | &EtherType::Unknown(id) => write!(f, "0x{:04x}", id) [INFO] [stderr] 22 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 17 | match *self { [INFO] [stderr] 18 | EtherType::Ipv4 => write!(f, "IPv4"), [INFO] [stderr] 19 | EtherType::Ipv6 => write!(f, "IPv6"), [INFO] [stderr] 20 | EtherType::Arp => write!(f, "ARP"), [INFO] [stderr] 21 | EtherType::Unknown(id) => write!(f, "0x{:04x}", id) [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/wire/ethernet.rs:50:23 [INFO] [stderr] | [INFO] [stderr] 50 | pub fn is_unicast(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ethernet.rs:56:25 [INFO] [stderr] | [INFO] [stderr] 56 | pub fn is_broadcast(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ethernet.rs:61:25 [INFO] [stderr] | [INFO] [stderr] 61 | pub fn is_multicast(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ethernet.rs:66:21 [INFO] [stderr] | [INFO] [stderr] 66 | pub fn is_local(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/arp.rs:293:9 [INFO] [stderr] | [INFO] [stderr] 293 | / match self { [INFO] [stderr] 294 | | &Repr::EthernetIpv4 { .. } => field::TPA(6, 4).end, [INFO] [stderr] 295 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 296 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 293 | match *self { [INFO] [stderr] 294 | Repr::EthernetIpv4 { .. } => field::TPA(6, 4).end, [INFO] [stderr] 295 | Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/arp.rs:301:9 [INFO] [stderr] | [INFO] [stderr] 301 | / match self { [INFO] [stderr] 302 | | &Repr::EthernetIpv4 { [INFO] [stderr] 303 | | operation, [INFO] [stderr] 304 | | source_hardware_addr, source_protocol_addr, [INFO] [stderr] ... | [INFO] [stderr] 317 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 318 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 301 | match *self { [INFO] [stderr] 302 | Repr::EthernetIpv4 { [INFO] [stderr] 303 | operation, [INFO] [stderr] 304 | source_hardware_addr, source_protocol_addr, [INFO] [stderr] 305 | target_hardware_addr, target_protocol_addr [INFO] [stderr] 306 | } => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/arp.rs:343:9 [INFO] [stderr] | [INFO] [stderr] 343 | / match self { [INFO] [stderr] 344 | | &Repr::EthernetIpv4 { [INFO] [stderr] 345 | | operation, [INFO] [stderr] 346 | | source_hardware_addr, source_protocol_addr, [INFO] [stderr] ... | [INFO] [stderr] 354 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 355 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 343 | match *self { [INFO] [stderr] 344 | Repr::EthernetIpv4 { [INFO] [stderr] 345 | operation, [INFO] [stderr] 346 | source_hardware_addr, source_protocol_addr, [INFO] [stderr] 347 | target_hardware_addr, target_protocol_addr [INFO] [stderr] 348 | } => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:41:9 [INFO] [stderr] | [INFO] [stderr] 41 | / match self { [INFO] [stderr] 42 | | &Version::Unspecified => write!(f, "IPv?"), [INFO] [stderr] 43 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 44 | | &Version::Ipv4 => write!(f, "IPv4"), [INFO] [stderr] ... | [INFO] [stderr] 47 | | &Version::__Nonexhaustive => unreachable!() [INFO] [stderr] 48 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 41 | match *self { [INFO] [stderr] 42 | Version::Unspecified => write!(f, "IPv?"), [INFO] [stderr] 43 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 44 | Version::Ipv4 => write!(f, "IPv4"), [INFO] [stderr] 45 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 46 | Version::Ipv6 => write!(f, "IPv6"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:70:9 [INFO] [stderr] | [INFO] [stderr] 70 | / match self { [INFO] [stderr] 71 | | &Protocol::HopByHop => write!(f, "Hop-by-Hop"), [INFO] [stderr] 72 | | &Protocol::Icmp => write!(f, "ICMP"), [INFO] [stderr] 73 | | &Protocol::Igmp => write!(f, "IGMP"), [INFO] [stderr] ... | [INFO] [stderr] 81 | | &Protocol::Unknown(id) => write!(f, "0x{:02x}", id) [INFO] [stderr] 82 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 70 | match *self { [INFO] [stderr] 71 | Protocol::HopByHop => write!(f, "Hop-by-Hop"), [INFO] [stderr] 72 | Protocol::Icmp => write!(f, "ICMP"), [INFO] [stderr] 73 | Protocol::Igmp => write!(f, "IGMP"), [INFO] [stderr] 74 | Protocol::Tcp => write!(f, "TCP"), [INFO] [stderr] 75 | Protocol::Udp => write!(f, "UDP"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/wire/ip.rs:111:5 [INFO] [stderr] | [INFO] [stderr] 111 | / pub fn v6(a0: u16, a1: u16, a2: u16, a3: u16, [INFO] [stderr] 112 | | a4: u16, a5: u16, a6: u16, a7: u16) -> Address { [INFO] [stderr] 113 | | Address::Ipv6(Ipv6Address::new(a0, a1, a2, a3, a4, a5, a6, a7)) [INFO] [stderr] 114 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:118:9 [INFO] [stderr] | [INFO] [stderr] 118 | / match self { [INFO] [stderr] 119 | | &Address::Unspecified => &[], [INFO] [stderr] 120 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 121 | | &Address::Ipv4(ref addr) => addr.as_bytes(), [INFO] [stderr] ... | [INFO] [stderr] 124 | | &Address::__Nonexhaustive => unreachable!() [INFO] [stderr] 125 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 118 | match *self { [INFO] [stderr] 119 | Address::Unspecified => &[], [INFO] [stderr] 120 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 121 | Address::Ipv4(ref addr) => addr.as_bytes(), [INFO] [stderr] 122 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 123 | Address::Ipv6(ref addr) => addr.as_bytes(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | / match self { [INFO] [stderr] 131 | | &Address::Unspecified => false, [INFO] [stderr] 132 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 133 | | &Address::Ipv4(addr) => addr.is_unicast(), [INFO] [stderr] ... | [INFO] [stderr] 136 | | &Address::__Nonexhaustive => unreachable!() [INFO] [stderr] 137 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 130 | match *self { [INFO] [stderr] 131 | Address::Unspecified => false, [INFO] [stderr] 132 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 133 | Address::Ipv4(addr) => addr.is_unicast(), [INFO] [stderr] 134 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 135 | Address::Ipv6(addr) => addr.is_unicast(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:142:9 [INFO] [stderr] | [INFO] [stderr] 142 | / match self { [INFO] [stderr] 143 | | &Address::Unspecified => false, [INFO] [stderr] 144 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 145 | | &Address::Ipv4(addr) => addr.is_multicast(), [INFO] [stderr] ... | [INFO] [stderr] 148 | | &Address::__Nonexhaustive => unreachable!() [INFO] [stderr] 149 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 142 | match *self { [INFO] [stderr] 143 | Address::Unspecified => false, [INFO] [stderr] 144 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 145 | Address::Ipv4(addr) => addr.is_multicast(), [INFO] [stderr] 146 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 147 | Address::Ipv6(addr) => addr.is_multicast(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:154:9 [INFO] [stderr] | [INFO] [stderr] 154 | / match self { [INFO] [stderr] 155 | | &Address::Unspecified => false, [INFO] [stderr] 156 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 157 | | &Address::Ipv4(addr) => addr.is_broadcast(), [INFO] [stderr] ... | [INFO] [stderr] 160 | | &Address::__Nonexhaustive => unreachable!() [INFO] [stderr] 161 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 154 | match *self { [INFO] [stderr] 155 | Address::Unspecified => false, [INFO] [stderr] 156 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 157 | Address::Ipv4(addr) => addr.is_broadcast(), [INFO] [stderr] 158 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 159 | Address::Ipv6(_) => false, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:166:9 [INFO] [stderr] | [INFO] [stderr] 166 | / match self { [INFO] [stderr] 167 | | &Address::Unspecified => true, [INFO] [stderr] 168 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 169 | | &Address::Ipv4(addr) => addr.is_unspecified(), [INFO] [stderr] ... | [INFO] [stderr] 172 | | &Address::__Nonexhaustive => unreachable!() [INFO] [stderr] 173 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 166 | match *self { [INFO] [stderr] 167 | Address::Unspecified => true, [INFO] [stderr] 168 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 169 | Address::Ipv4(addr) => addr.is_unspecified(), [INFO] [stderr] 170 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 171 | Address::Ipv6(addr) => addr.is_unspecified(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:178:9 [INFO] [stderr] | [INFO] [stderr] 178 | / match self { [INFO] [stderr] 179 | | &Address::Unspecified => Address::Unspecified, [INFO] [stderr] 180 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 181 | | &Address::Ipv4(_) => Address::Ipv4(Ipv4Address::UNSPECIFIED), [INFO] [stderr] ... | [INFO] [stderr] 184 | | &Address::__Nonexhaustive => unreachable!() [INFO] [stderr] 185 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 178 | match *self { [INFO] [stderr] 179 | Address::Unspecified => Address::Unspecified, [INFO] [stderr] 180 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 181 | Address::Ipv4(_) => Address::Ipv4(Ipv4Address::UNSPECIFIED), [INFO] [stderr] 182 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 183 | Address::Ipv6(_) => Address::Ipv6(Ipv6Address::UNSPECIFIED), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:249:9 [INFO] [stderr] | [INFO] [stderr] 249 | / match self { [INFO] [stderr] 250 | | &Address::Unspecified => write!(f, "*"), [INFO] [stderr] 251 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 252 | | &Address::Ipv4(addr) => write!(f, "{}", addr), [INFO] [stderr] ... | [INFO] [stderr] 255 | | &Address::__Nonexhaustive => unreachable!() [INFO] [stderr] 256 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 249 | match *self { [INFO] [stderr] 250 | Address::Unspecified => write!(f, "*"), [INFO] [stderr] 251 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 252 | Address::Ipv4(addr) => write!(f, "{}", addr), [INFO] [stderr] 253 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 254 | Address::Ipv6(addr) => write!(f, "{}", addr), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:293:9 [INFO] [stderr] | [INFO] [stderr] 293 | / match self { [INFO] [stderr] 294 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 295 | | &Cidr::Ipv4(cidr) => Address::Ipv4(cidr.address()), [INFO] [stderr] 296 | | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 297 | | &Cidr::Ipv6(cidr) => Address::Ipv6(cidr.address()), [INFO] [stderr] 298 | | &Cidr::__Nonexhaustive => unreachable!() [INFO] [stderr] 299 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 293 | match *self { [INFO] [stderr] 294 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 295 | Cidr::Ipv4(cidr) => Address::Ipv4(cidr.address()), [INFO] [stderr] 296 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 297 | Cidr::Ipv6(cidr) => Address::Ipv6(cidr.address()), [INFO] [stderr] 298 | Cidr::__Nonexhaustive => unreachable!() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:304:9 [INFO] [stderr] | [INFO] [stderr] 304 | / match self { [INFO] [stderr] 305 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 306 | | &Cidr::Ipv4(cidr) => cidr.prefix_len(), [INFO] [stderr] 307 | | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 308 | | &Cidr::Ipv6(cidr) => cidr.prefix_len(), [INFO] [stderr] 309 | | &Cidr::__Nonexhaustive => unreachable!() [INFO] [stderr] 310 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 304 | match *self { [INFO] [stderr] 305 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 306 | Cidr::Ipv4(cidr) => cidr.prefix_len(), [INFO] [stderr] 307 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 308 | Cidr::Ipv6(cidr) => cidr.prefix_len(), [INFO] [stderr] 309 | Cidr::__Nonexhaustive => unreachable!() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:372:9 [INFO] [stderr] | [INFO] [stderr] 372 | / match self { [INFO] [stderr] 373 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 374 | | &Cidr::Ipv4(cidr) => write!(f, "{}", cidr), [INFO] [stderr] 375 | | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 376 | | &Cidr::Ipv6(cidr) => write!(f, "{}", cidr), [INFO] [stderr] 377 | | &Cidr::__Nonexhaustive => unreachable!() [INFO] [stderr] 378 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 372 | match *self { [INFO] [stderr] 373 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 374 | Cidr::Ipv4(cidr) => write!(f, "{}", cidr), [INFO] [stderr] 375 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 376 | Cidr::Ipv6(cidr) => write!(f, "{}", cidr), [INFO] [stderr] 377 | Cidr::__Nonexhaustive => unreachable!() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:473:9 [INFO] [stderr] | [INFO] [stderr] 473 | / match self { [INFO] [stderr] 474 | | &Repr::Unspecified { .. } => Version::Unspecified, [INFO] [stderr] 475 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 476 | | &Repr::Ipv4(_) => Version::Ipv4, [INFO] [stderr] ... | [INFO] [stderr] 479 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 480 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 473 | match *self { [INFO] [stderr] 474 | Repr::Unspecified { .. } => Version::Unspecified, [INFO] [stderr] 475 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 476 | Repr::Ipv4(_) => Version::Ipv4, [INFO] [stderr] 477 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 478 | Repr::Ipv6(_) => Version::Ipv6, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:485:9 [INFO] [stderr] | [INFO] [stderr] 485 | / match self { [INFO] [stderr] 486 | | &Repr::Unspecified { src_addr, .. } => src_addr, [INFO] [stderr] 487 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 488 | | &Repr::Ipv4(repr) => Address::Ipv4(repr.src_addr), [INFO] [stderr] ... | [INFO] [stderr] 491 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 492 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 485 | match *self { [INFO] [stderr] 486 | Repr::Unspecified { src_addr, .. } => src_addr, [INFO] [stderr] 487 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 488 | Repr::Ipv4(repr) => Address::Ipv4(repr.src_addr), [INFO] [stderr] 489 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 490 | Repr::Ipv6(repr) => Address::Ipv6(repr.src_addr), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:497:9 [INFO] [stderr] | [INFO] [stderr] 497 | / match self { [INFO] [stderr] 498 | | &Repr::Unspecified { dst_addr, .. } => dst_addr, [INFO] [stderr] 499 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 500 | | &Repr::Ipv4(repr) => Address::Ipv4(repr.dst_addr), [INFO] [stderr] ... | [INFO] [stderr] 503 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 504 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 497 | match *self { [INFO] [stderr] 498 | Repr::Unspecified { dst_addr, .. } => dst_addr, [INFO] [stderr] 499 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 500 | Repr::Ipv4(repr) => Address::Ipv4(repr.dst_addr), [INFO] [stderr] 501 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 502 | Repr::Ipv6(repr) => Address::Ipv6(repr.dst_addr), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:509:9 [INFO] [stderr] | [INFO] [stderr] 509 | / match self { [INFO] [stderr] 510 | | &Repr::Unspecified { protocol, .. } => protocol, [INFO] [stderr] 511 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 512 | | &Repr::Ipv4(repr) => repr.protocol, [INFO] [stderr] ... | [INFO] [stderr] 515 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 516 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 509 | match *self { [INFO] [stderr] 510 | Repr::Unspecified { protocol, .. } => protocol, [INFO] [stderr] 511 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 512 | Repr::Ipv4(repr) => repr.protocol, [INFO] [stderr] 513 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 514 | Repr::Ipv6(repr) => repr.next_header, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:521:9 [INFO] [stderr] | [INFO] [stderr] 521 | / match self { [INFO] [stderr] 522 | | &Repr::Unspecified { payload_len, .. } => payload_len, [INFO] [stderr] 523 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 524 | | &Repr::Ipv4(repr) => repr.payload_len, [INFO] [stderr] ... | [INFO] [stderr] 527 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 528 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 521 | match *self { [INFO] [stderr] 522 | Repr::Unspecified { payload_len, .. } => payload_len, [INFO] [stderr] 523 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 524 | Repr::Ipv4(repr) => repr.payload_len, [INFO] [stderr] 525 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 526 | Repr::Ipv6(repr) => repr.payload_len, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:533:9 [INFO] [stderr] | [INFO] [stderr] 533 | / match self { [INFO] [stderr] 534 | | &mut Repr::Unspecified { ref mut payload_len, .. } => [INFO] [stderr] 535 | | *payload_len = length, [INFO] [stderr] 536 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] ... | [INFO] [stderr] 542 | | &mut Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 543 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 533 | match *self { [INFO] [stderr] 534 | Repr::Unspecified { ref mut payload_len, .. } => [INFO] [stderr] 535 | *payload_len = length, [INFO] [stderr] 536 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 537 | Repr::Ipv4(Ipv4Repr { ref mut payload_len, .. }) => [INFO] [stderr] 538 | *payload_len = length, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:548:9 [INFO] [stderr] | [INFO] [stderr] 548 | / match self { [INFO] [stderr] 549 | | &Repr::Unspecified { hop_limit, .. } => hop_limit, [INFO] [stderr] 550 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 551 | | &Repr::Ipv4(Ipv4Repr { hop_limit, .. }) => hop_limit, [INFO] [stderr] ... | [INFO] [stderr] 554 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 555 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 548 | match *self { [INFO] [stderr] 549 | Repr::Unspecified { hop_limit, .. } => hop_limit, [INFO] [stderr] 550 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 551 | Repr::Ipv4(Ipv4Repr { hop_limit, .. }) => hop_limit, [INFO] [stderr] 552 | #[cfg(feature = "proto-ipv6")] [INFO] [stderr] 553 | Repr::Ipv6(Ipv6Repr { hop_limit, ..}) => hop_limit, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:584:9 [INFO] [stderr] | [INFO] [stderr] 584 | / match self { [INFO] [stderr] 585 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 586 | | &Repr::Unspecified { [INFO] [stderr] 587 | | src_addr: src_addr @ Address::Unspecified, [INFO] [stderr] ... | [INFO] [stderr] 682 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 683 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 584 | match *self { [INFO] [stderr] 585 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 586 | Repr::Unspecified { [INFO] [stderr] 587 | src_addr: src_addr @ Address::Unspecified, [INFO] [stderr] 588 | dst_addr: Address::Ipv4(dst_addr), [INFO] [stderr] 589 | protocol, payload_len, hop_limit [INFO] [stderr] ... [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/wire/ip.rs:569:25 [INFO] [stderr] | [INFO] [stderr] 569 | / match cidr.address() { [INFO] [stderr] 570 | | $ipty(addr) => { [INFO] [stderr] 571 | | $iprepr.src_addr = addr; [INFO] [stderr] 572 | | return Ok($reprty($iprepr)); [INFO] [stderr] 573 | | }, [INFO] [stderr] 574 | | _ => () [INFO] [stderr] 575 | | } [INFO] [stderr] | |_________________________^ help: try this: `if let $ipty(addr) = cidr.address() { resolve_unspecified!(Repr::Ipv4, Address::Ipv4, repr, fallback_src_addrs) }` [INFO] [stderr] ... [INFO] [stderr] 673 | resolve_unspecified!(Repr::Ipv4, Address::Ipv4, repr, fallback_src_addrs), [INFO] [stderr] | ------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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/wire/ip.rs:569:25 [INFO] [stderr] | [INFO] [stderr] 569 | / match cidr.address() { [INFO] [stderr] 570 | | $ipty(addr) => { [INFO] [stderr] 571 | | $iprepr.src_addr = addr; [INFO] [stderr] 572 | | return Ok($reprty($iprepr)); [INFO] [stderr] 573 | | }, [INFO] [stderr] 574 | | _ => () [INFO] [stderr] 575 | | } [INFO] [stderr] | |_________________________^ help: try this: `if let $ipty(addr) = cidr.address() { resolve_unspecified!(Repr::Ipv6, Address::Ipv6, repr, fallback_src_addrs) }` [INFO] [stderr] ... [INFO] [stderr] 677 | resolve_unspecified!(Repr::Ipv6, Address::Ipv6, repr, fallback_src_addrs), [INFO] [stderr] | ------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:691:9 [INFO] [stderr] | [INFO] [stderr] 691 | / match self { [INFO] [stderr] 692 | | &Repr::Unspecified { .. } => [INFO] [stderr] 693 | | panic!("unspecified IP representation"), [INFO] [stderr] 694 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] ... | [INFO] [stderr] 701 | | unreachable!() [INFO] [stderr] 702 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 691 | match *self { [INFO] [stderr] 692 | Repr::Unspecified { .. } => [INFO] [stderr] 693 | panic!("unspecified IP representation"), [INFO] [stderr] 694 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 695 | Repr::Ipv4(repr) => [INFO] [stderr] 696 | repr.buffer_len(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ip.rs:710:9 [INFO] [stderr] | [INFO] [stderr] 710 | / match self { [INFO] [stderr] 711 | | &Repr::Unspecified { .. } => [INFO] [stderr] 712 | | panic!("unspecified IP representation"), [INFO] [stderr] 713 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] ... | [INFO] [stderr] 720 | | unreachable!() [INFO] [stderr] 721 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 710 | match *self { [INFO] [stderr] 711 | Repr::Unspecified { .. } => [INFO] [stderr] 712 | panic!("unspecified IP representation"), [INFO] [stderr] 713 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 714 | Repr::Ipv4(repr) => [INFO] [stderr] 715 | repr.emit(&mut Ipv4Packet::new_unchecked(buffer), &_checksum_caps), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/wire/ip.rs:756:26 [INFO] [stderr] | [INFO] [stderr] 756 | accum += NetworkEndian::read_u16(d) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(NetworkEndian::read_u16(d))` [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/wire/ip.rs:766:22 [INFO] [stderr] | [INFO] [stderr] 766 | accum += NetworkEndian::read_u16(data) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(NetworkEndian::read_u16(data))` [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/wire/ip.rs:772:22 [INFO] [stderr] | [INFO] [stderr] 772 | accum += (value as u32) << 8; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(value)` [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/wire/ip.rs:782:22 [INFO] [stderr] | [INFO] [stderr] 782 | accum += word as u32; [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u32::from(word)` [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 call to `as_ref` does nothing [INFO] [stderr] --> src/wire/ip.rs:848:50 [INFO] [stderr] | [INFO] [stderr] 848 | Icmpv4Packet::<&[u8]>::pretty_print(&payload.as_ref(), f, indent) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try this: `payload` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: this call to `as_ref` does nothing [INFO] [stderr] --> src/wire/ip.rs:852:51 [INFO] [stderr] | [INFO] [stderr] 852 | match UdpPacket::<&[u8]>::new_checked(payload.as_ref()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try this: `payload` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: this call to `as_ref` does nothing [INFO] [stderr] --> src/wire/ip.rs:870:51 [INFO] [stderr] | [INFO] [stderr] 870 | match TcpPacket::<&[u8]>::new_checked(payload.as_ref()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try this: `payload` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ipv4.rs:62:23 [INFO] [stderr] | [INFO] [stderr] 62 | pub fn is_unicast(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ipv4.rs:69:25 [INFO] [stderr] | [INFO] [stderr] 69 | pub fn is_broadcast(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ipv4.rs:74:25 [INFO] [stderr] | [INFO] [stderr] 74 | pub fn is_multicast(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ipv4.rs:79:27 [INFO] [stderr] | [INFO] [stderr] 79 | pub fn is_unspecified(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ipv4.rs:84:26 [INFO] [stderr] | [INFO] [stderr] 84 | pub fn is_link_local(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ipv4.rs:89:24 [INFO] [stderr] | [INFO] [stderr] 89 | pub fn is_loopback(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ipv4.rs:144:20 [INFO] [stderr] | [INFO] [stderr] 144 | pub fn address(&self) -> Address { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ipv4.rs:149:23 [INFO] [stderr] | [INFO] [stderr] 149 | pub fn prefix_len(&self) -> u8 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ipv4.rs:154:20 [INFO] [stderr] | [INFO] [stderr] 154 | pub fn netmask(&self) -> Address { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `number` [INFO] [stderr] --> src/wire/ipv4.rs:164:14 [INFO] [stderr] | [INFO] [stderr] 164 | ((number >> 0) & 0xff) as u8, [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ipv4.rs:171:22 [INFO] [stderr] | [INFO] [stderr] 171 | pub fn broadcast(&self) -> Option
{ [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `number` [INFO] [stderr] --> src/wire/ipv4.rs:184:14 [INFO] [stderr] | [INFO] [stderr] 184 | ((number >> 0) & 0xff) as u8, [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ipv4.rs:191:20 [INFO] [stderr] | [INFO] [stderr] 191 | pub fn network(&self) -> Cidr { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ipv4.rs:204:26 [INFO] [stderr] | [INFO] [stderr] 204 | pub fn contains_addr(&self, addr: &Address) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ipv4.rs:204:39 [INFO] [stderr] | [INFO] [stderr] 204 | pub fn contains_addr(&self, addr: &Address) -> bool { [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/wire/ipv4.rs:216:28 [INFO] [stderr] | [INFO] [stderr] 216 | pub fn contains_subnet(&self, subnet: &Cidr) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/ipv4.rs:216:43 [INFO] [stderr] | [INFO] [stderr] 216 | pub fn contains_subnet(&self, subnet: &Cidr) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Cidr` [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/wire/ipv4.rs:280:19 [INFO] [stderr] | [INFO] [stderr] 280 | } else if self.header_len() as u16 > self.total_len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.header_len())` [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/wire/ipv4.rs:597:25 [INFO] [stderr] | [INFO] [stderr] 597 | let total_len = packet.header_len() as u16 + self.payload_len as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(packet.header_len())` [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 function has too many arguments (8/7) [INFO] [stderr] --> src/wire/ipv6.rs:47:5 [INFO] [stderr] | [INFO] [stderr] 47 | / pub fn new(a0: u16, a1: u16, a2: u16, a3: u16, [INFO] [stderr] 48 | | a4: u16, a5: u16, a6: u16, a7: u16) -> Address { [INFO] [stderr] 49 | | let mut addr = [0u8; 16]; [INFO] [stderr] 50 | | NetworkEndian::write_u16(&mut addr[0..2], a0); [INFO] [stderr] ... | [INFO] [stderr] 58 | | Address(addr) [INFO] [stderr] 59 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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: the loop variable `word_idx` is used to index `data` [INFO] [stderr] --> src/wire/ipv6.rs:78:25 [INFO] [stderr] | [INFO] [stderr] 78 | for word_idx in 0..8 { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 78 | for (word_idx, ) in data.iter().enumerate().take(8) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `data` [INFO] [stderr] --> src/wire/ipv6.rs:91:18 [INFO] [stderr] | [INFO] [stderr] 91 | for i in 0..8 { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 91 | for (i, ) in data.iter_mut().enumerate().take(8) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/wire/ipv6.rs:526:20 [INFO] [stderr] | [INFO] [stderr] 526 | let raw = (((data[1] & 0xf0) as u32) << 16) | (value & 0x0fffff); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(data[1] & 0xf0)` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ipv6option.rs:16:9 [INFO] [stderr] | [INFO] [stderr] 16 | / match self { [INFO] [stderr] 17 | | &Type::Pad1 => write!(f, "Pad1"), [INFO] [stderr] 18 | | &Type::PadN => write!(f, "PadN"), [INFO] [stderr] 19 | | &Type::Unknown(id) => write!(f, "{}", id) [INFO] [stderr] 20 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 16 | match *self { [INFO] [stderr] 17 | Type::Pad1 => write!(f, "Pad1"), [INFO] [stderr] 18 | Type::PadN => write!(f, "PadN"), [INFO] [stderr] 19 | Type::Unknown(id) => write!(f, "{}", id) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ipv6option.rs:42:9 [INFO] [stderr] | [INFO] [stderr] 42 | / match self { [INFO] [stderr] 43 | | &FailureType::Skip => write!(f, "skip"), [INFO] [stderr] 44 | | &FailureType::Discard => write!(f, "discard"), [INFO] [stderr] 45 | | &FailureType::DiscardSendAll => write!(f, "discard and send error"), [INFO] [stderr] 46 | | &FailureType::DiscardSendUnicast => write!(f, "discard and send error if unicast"), [INFO] [stderr] 47 | | &FailureType::Unknown(id) => write!(f, "Unknown({})", id), [INFO] [stderr] 48 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 42 | match *self { [INFO] [stderr] 43 | FailureType::Skip => write!(f, "skip"), [INFO] [stderr] 44 | FailureType::Discard => write!(f, "discard"), [INFO] [stderr] 45 | FailureType::DiscardSendAll => write!(f, "discard and send error"), [INFO] [stderr] 46 | FailureType::DiscardSendUnicast => write!(f, "discard and send error if unicast"), [INFO] [stderr] 47 | FailureType::Unknown(id) => write!(f, "Unknown({})", id), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ipv6option.rs:250:9 [INFO] [stderr] | [INFO] [stderr] 250 | / match self { [INFO] [stderr] 251 | | &Repr::Pad1 => 1, [INFO] [stderr] 252 | | &Repr::PadN(length) => [INFO] [stderr] 253 | | field::DATA(length).end, [INFO] [stderr] ... | [INFO] [stderr] 257 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 258 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 250 | match *self { [INFO] [stderr] 251 | Repr::Pad1 => 1, [INFO] [stderr] 252 | Repr::PadN(length) => [INFO] [stderr] 253 | field::DATA(length).end, [INFO] [stderr] 254 | Repr::Unknown{ length, .. } => [INFO] [stderr] 255 | field::DATA(length).end, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ipv6option.rs:263:9 [INFO] [stderr] | [INFO] [stderr] 263 | / match self { [INFO] [stderr] 264 | | &Repr::Pad1 => [INFO] [stderr] 265 | | opt.set_option_type(Type::Pad1), [INFO] [stderr] 266 | | &Repr::PadN(len) => { [INFO] [stderr] ... | [INFO] [stderr] 280 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 281 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 263 | match *self { [INFO] [stderr] 264 | Repr::Pad1 => [INFO] [stderr] 265 | opt.set_option_type(Type::Pad1), [INFO] [stderr] 266 | Repr::PadN(len) => { [INFO] [stderr] 267 | opt.set_option_type(Type::PadN); [INFO] [stderr] 268 | opt.set_data_len(len); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ipv6option.rs:354:9 [INFO] [stderr] | [INFO] [stderr] 354 | / match self { [INFO] [stderr] 355 | | &Repr::Pad1 => [INFO] [stderr] 356 | | write!(f, "{} ", Type::Pad1), [INFO] [stderr] 357 | | &Repr::PadN(len) => [INFO] [stderr] ... | [INFO] [stderr] 362 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 363 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 354 | match *self { [INFO] [stderr] 355 | Repr::Pad1 => [INFO] [stderr] 356 | write!(f, "{} ", Type::Pad1), [INFO] [stderr] 357 | Repr::PadN(len) => [INFO] [stderr] 358 | write!(f, "{} length={} ", Type::PadN, len), [INFO] [stderr] 359 | Repr::Unknown{ type_, length, .. } => [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/wire/ipv6fragment.rs:118:9 [INFO] [stderr] | [INFO] [stderr] 118 | data[3] = data[3] & 0xf9; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `data[3] &= 0xf9` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/wire/ipv6fragment.rs:126:45 [INFO] [stderr] | [INFO] [stderr] 126 | let raw = ((value & 0x1fff) << 3) | ((data[3] & 0x7) as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(data[3] & 0x7)` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ipv6routing.rs:39:9 [INFO] [stderr] | [INFO] [stderr] 39 | / match self { [INFO] [stderr] 40 | | &Type::Type0 => write!(f, "Type0"), [INFO] [stderr] 41 | | &Type::Nimrod => write!(f, "Nimrod"), [INFO] [stderr] 42 | | &Type::Type2 => write!(f, "Type2"), [INFO] [stderr] ... | [INFO] [stderr] 47 | | &Type::Unknown(id) => write!(f, "{}", id) [INFO] [stderr] 48 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 39 | match *self { [INFO] [stderr] 40 | Type::Type0 => write!(f, "Type0"), [INFO] [stderr] 41 | Type::Nimrod => write!(f, "Nimrod"), [INFO] [stderr] 42 | Type::Type2 => write!(f, "Type2"), [INFO] [stderr] 43 | Type::Rpl => write!(f, "Rpl"), [INFO] [stderr] 44 | Type::Experiment1 => write!(f, "Experiment1"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/wire/ipv6routing.rs:313:17 [INFO] [stderr] | [INFO] [stderr] 313 | data[field::PAD] = data[field::PAD] & 0xF0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `data[field::PAD] &= 0xF0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ipv6routing.rs:457:9 [INFO] [stderr] | [INFO] [stderr] 457 | / match self { [INFO] [stderr] 458 | | &Repr::Rpl { length, .. } | &Repr::Type2 { length, .. } => { [INFO] [stderr] 459 | | field::DATA(length).end [INFO] [stderr] 460 | | } [INFO] [stderr] 461 | | [INFO] [stderr] 462 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 463 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 457 | match *self { [INFO] [stderr] 458 | Repr::Rpl { length, .. } | Repr::Type2 { length, .. } => { [INFO] [stderr] 459 | field::DATA(length).end [INFO] [stderr] 460 | } [INFO] [stderr] 461 | [INFO] [stderr] 462 | Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ipv6routing.rs:468:9 [INFO] [stderr] | [INFO] [stderr] 468 | / match self { [INFO] [stderr] 469 | | &Repr::Type2 { next_header, length, segments_left, home_address } => { [INFO] [stderr] 470 | | header.set_next_header(next_header); [INFO] [stderr] 471 | | header.set_header_len(length); [INFO] [stderr] ... | [INFO] [stderr] 489 | | &Repr::__Nonexhaustive => unreachable!(), [INFO] [stderr] 490 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 468 | match *self { [INFO] [stderr] 469 | Repr::Type2 { next_header, length, segments_left, home_address } => { [INFO] [stderr] 470 | header.set_next_header(next_header); [INFO] [stderr] 471 | header.set_header_len(length); [INFO] [stderr] 472 | header.set_routing_type(Type::Type2); [INFO] [stderr] 473 | header.set_segments_left(segments_left); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ipv6routing.rs:496:9 [INFO] [stderr] | [INFO] [stderr] 496 | / match self { [INFO] [stderr] 497 | | &Repr::Type2 { next_header, length, segments_left, home_address } => { [INFO] [stderr] 498 | | write!(f, "IPv6 Routing next_hdr={} length={} type={} seg_left={} home_address={}", [INFO] [stderr] 499 | | next_header, length, Type::Type2, segments_left, home_address) [INFO] [stderr] ... | [INFO] [stderr] 506 | | &Repr::__Nonexhaustive => unreachable!(), [INFO] [stderr] 507 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 496 | match *self { [INFO] [stderr] 497 | Repr::Type2 { next_header, length, segments_left, home_address } => { [INFO] [stderr] 498 | write!(f, "IPv6 Routing next_hdr={} length={} type={} seg_left={} home_address={}", [INFO] [stderr] 499 | next_header, length, Type::Type2, segments_left, home_address) [INFO] [stderr] 500 | } [INFO] [stderr] 501 | Repr::Rpl { next_header, length, segments_left, cmpr_i, cmpr_e, pad, .. } => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/icmpv4.rs:37:9 [INFO] [stderr] | [INFO] [stderr] 37 | / match self { [INFO] [stderr] 38 | | &Message::EchoReply => write!(f, "echo reply"), [INFO] [stderr] 39 | | &Message::DstUnreachable => write!(f, "destination unreachable"), [INFO] [stderr] 40 | | &Message::Redirect => write!(f, "message redirect"), [INFO] [stderr] ... | [INFO] [stderr] 48 | | &Message::Unknown(id) => write!(f, "{}", id) [INFO] [stderr] 49 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 37 | match *self { [INFO] [stderr] 38 | Message::EchoReply => write!(f, "echo reply"), [INFO] [stderr] 39 | Message::DstUnreachable => write!(f, "destination unreachable"), [INFO] [stderr] 40 | Message::Redirect => write!(f, "message redirect"), [INFO] [stderr] 41 | Message::EchoRequest => write!(f, "echo request"), [INFO] [stderr] 42 | Message::RouterAdvert => write!(f, "router advertisement"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/icmpv4.rs:93:9 [INFO] [stderr] | [INFO] [stderr] 93 | / match self { [INFO] [stderr] 94 | | &DstUnreachable::NetUnreachable => [INFO] [stderr] 95 | | write!(f, "destination network unreachable"), [INFO] [stderr] 96 | | &DstUnreachable::HostUnreachable => [INFO] [stderr] ... | [INFO] [stderr] 127 | | write!(f, "{}", id) [INFO] [stderr] 128 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 93 | match *self { [INFO] [stderr] 94 | DstUnreachable::NetUnreachable => [INFO] [stderr] 95 | write!(f, "destination network unreachable"), [INFO] [stderr] 96 | DstUnreachable::HostUnreachable => [INFO] [stderr] 97 | write!(f, "destination host unreachable"), [INFO] [stderr] 98 | DstUnreachable::ProtoUnreachable => [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/icmpv4.rs:441:9 [INFO] [stderr] | [INFO] [stderr] 441 | / match self { [INFO] [stderr] 442 | | &Repr::EchoRequest { data, .. } | [INFO] [stderr] 443 | | &Repr::EchoReply { data, .. } => { [INFO] [stderr] 444 | | field::ECHO_SEQNO.end + data.len() [INFO] [stderr] ... | [INFO] [stderr] 449 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 450 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 441 | match *self { [INFO] [stderr] 442 | Repr::EchoRequest { data, .. } | [INFO] [stderr] 443 | Repr::EchoReply { data, .. } => { [INFO] [stderr] 444 | field::ECHO_SEQNO.end + data.len() [INFO] [stderr] 445 | }, [INFO] [stderr] 446 | Repr::DstUnreachable { header, data, .. } => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/icmpv4.rs:458:9 [INFO] [stderr] | [INFO] [stderr] 458 | / match self { [INFO] [stderr] 459 | | &Repr::EchoRequest { ident, seq_no, data } => { [INFO] [stderr] 460 | | packet.set_msg_type(Message::EchoRequest); [INFO] [stderr] 461 | | packet.set_msg_code(0); [INFO] [stderr] ... | [INFO] [stderr] 487 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 488 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 458 | match *self { [INFO] [stderr] 459 | Repr::EchoRequest { ident, seq_no, data } => { [INFO] [stderr] 460 | packet.set_msg_type(Message::EchoRequest); [INFO] [stderr] 461 | packet.set_msg_code(0); [INFO] [stderr] 462 | packet.set_echo_ident(ident); [INFO] [stderr] 463 | packet.set_echo_seq_no(seq_no); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/icmpv4.rs:519:9 [INFO] [stderr] | [INFO] [stderr] 519 | / match self { [INFO] [stderr] 520 | | &Repr::EchoRequest { ident, seq_no, data } => [INFO] [stderr] 521 | | write!(f, "ICMPv4 echo request id={} seq={} len={}", [INFO] [stderr] 522 | | ident, seq_no, data.len()), [INFO] [stderr] ... | [INFO] [stderr] 529 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 530 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 519 | match *self { [INFO] [stderr] 520 | Repr::EchoRequest { ident, seq_no, data } => [INFO] [stderr] 521 | write!(f, "ICMPv4 echo request id={} seq={} len={}", [INFO] [stderr] 522 | ident, seq_no, data.len()), [INFO] [stderr] 523 | Repr::EchoReply { ident, seq_no, data } => [INFO] [stderr] 524 | write!(f, "ICMPv4 echo reply id={} seq={} len={}", [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/wire/icmpv6.rs:48:21 [INFO] [stderr] | [INFO] [stderr] 48 | pub fn is_error(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/icmpv6.rs:56:21 [INFO] [stderr] | [INFO] [stderr] 56 | pub fn is_ndisc(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wire/icmpv6.rs:68:19 [INFO] [stderr] | [INFO] [stderr] 68 | pub fn is_mld(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/icmpv6.rs:78:9 [INFO] [stderr] | [INFO] [stderr] 78 | / match self { [INFO] [stderr] 79 | | &Message::DstUnreachable => write!(f, "destination unreachable"), [INFO] [stderr] 80 | | &Message::PktTooBig => write!(f, "packet too big"), [INFO] [stderr] 81 | | &Message::TimeExceeded => write!(f, "time exceeded"), [INFO] [stderr] ... | [INFO] [stderr] 92 | | &Message::Unknown(id) => write!(f, "{}", id) [INFO] [stderr] 93 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 78 | match *self { [INFO] [stderr] 79 | Message::DstUnreachable => write!(f, "destination unreachable"), [INFO] [stderr] 80 | Message::PktTooBig => write!(f, "packet too big"), [INFO] [stderr] 81 | Message::TimeExceeded => write!(f, "time exceeded"), [INFO] [stderr] 82 | Message::ParamProblem => write!(f, "parameter problem"), [INFO] [stderr] 83 | Message::EchoReply => write!(f, "echo reply"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/icmpv6.rs:119:9 [INFO] [stderr] | [INFO] [stderr] 119 | / match self { [INFO] [stderr] 120 | | &DstUnreachable::NoRoute => [INFO] [stderr] 121 | | write!(f, "no route to destination"), [INFO] [stderr] 122 | | &DstUnreachable::AdminProhibit => [INFO] [stderr] ... | [INFO] [stderr] 135 | | write!(f, "{}", id) [INFO] [stderr] 136 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 119 | match *self { [INFO] [stderr] 120 | DstUnreachable::NoRoute => [INFO] [stderr] 121 | write!(f, "no route to destination"), [INFO] [stderr] 122 | DstUnreachable::AdminProhibit => [INFO] [stderr] 123 | write!(f, "communication with destination administratively prohibited"), [INFO] [stderr] 124 | DstUnreachable::BeyondScope => [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/icmpv6.rs:154:9 [INFO] [stderr] | [INFO] [stderr] 154 | / match self { [INFO] [stderr] 155 | | &ParamProblem::ErroneousHdrField => [INFO] [stderr] 156 | | write!(f, "erroneous header field."), [INFO] [stderr] 157 | | &ParamProblem::UnrecognizedNxtHdr => [INFO] [stderr] ... | [INFO] [stderr] 162 | | write!(f, "{}", id) [INFO] [stderr] 163 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 154 | match *self { [INFO] [stderr] 155 | ParamProblem::ErroneousHdrField => [INFO] [stderr] 156 | write!(f, "erroneous header field."), [INFO] [stderr] 157 | ParamProblem::UnrecognizedNxtHdr => [INFO] [stderr] 158 | write!(f, "unrecognized next header type."), [INFO] [stderr] 159 | ParamProblem::UnrecognizedOption => [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/icmpv6.rs:179:9 [INFO] [stderr] | [INFO] [stderr] 179 | / match self { [INFO] [stderr] 180 | | &TimeExceeded::HopLimitExceeded => [INFO] [stderr] 181 | | write!(f, "hop limit exceeded in transit"), [INFO] [stderr] 182 | | &TimeExceeded::FragReassemExceeded => [INFO] [stderr] ... | [INFO] [stderr] 185 | | write!(f, "{}", id) [INFO] [stderr] 186 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 179 | match *self { [INFO] [stderr] 180 | TimeExceeded::HopLimitExceeded => [INFO] [stderr] 181 | write!(f, "hop limit exceeded in transit"), [INFO] [stderr] 182 | TimeExceeded::FragReassemExceeded => [INFO] [stderr] 183 | write!(f, "fragment reassembly time exceeded"), [INFO] [stderr] 184 | TimeExceeded::Unknown(id) => [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/wire/icmpv6.rs:421:17 [INFO] [stderr] | [INFO] [stderr] 421 | data[field::SQRV] = data[field::SQRV] & 0xf; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `data[field::SQRV] &= 0xf` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/wire/icmpv6.rs:623:46 [INFO] [stderr] | [INFO] [stderr] 623 | NdiscRepr::parse(packet).map(|repr| Repr::Ndisc(repr)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Repr::Ndisc` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/wire/icmpv6.rs:626:44 [INFO] [stderr] | [INFO] [stderr] 626 | MldRepr::parse(packet).map(|repr| Repr::Mld(repr)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Repr::Mld` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/icmpv6.rs:634:9 [INFO] [stderr] | [INFO] [stderr] 634 | / match self { [INFO] [stderr] 635 | | &Repr::DstUnreachable { header, data, .. } | &Repr::PktTooBig { header, data, .. } | [INFO] [stderr] 636 | | &Repr::TimeExceeded { header, data, .. } | &Repr::ParamProblem { header, data, .. } => { [INFO] [stderr] 637 | | field::UNUSED.end + header.buffer_len() + data.len() [INFO] [stderr] ... | [INFO] [stderr] 649 | | &Repr::__Nonexhaustive => unreachable!() [INFO] [stderr] 650 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 634 | match *self { [INFO] [stderr] 635 | Repr::DstUnreachable { header, data, .. } | Repr::PktTooBig { header, data, .. } | [INFO] [stderr] 636 | Repr::TimeExceeded { header, data, .. } | Repr::ParamProblem { header, data, .. } => { [INFO] [stderr] 637 | field::UNUSED.end + header.buffer_len() + data.len() [INFO] [stderr] 638 | } [INFO] [stderr] 639 | Repr::EchoRequest { data, .. } | [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/icmpv6.rs:665:9 [INFO] [stderr] | [INFO] [stderr] 665 | / match self { [INFO] [stderr] 666 | | &Repr::DstUnreachable { reason, header, data } => { [INFO] [stderr] 667 | | packet.set_msg_type(Message::DstUnreachable); [INFO] [stderr] 668 | | packet.set_msg_code(reason.into()); [INFO] [stderr] ... | [INFO] [stderr] 722 | | &Repr::__Nonexhaustive => unreachable!(), [INFO] [stderr] 723 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 665 | match *self { [INFO] [stderr] 666 | Repr::DstUnreachable { reason, header, data } => { [INFO] [stderr] 667 | packet.set_msg_type(Message::DstUnreachable); [INFO] [stderr] 668 | packet.set_msg_code(reason.into()); [INFO] [stderr] 669 | [INFO] [stderr] 670 | emit_contained_packet(packet.payload_mut(), header, &data); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/igmp.rs:41:9 [INFO] [stderr] | [INFO] [stderr] 41 | / match self { [INFO] [stderr] 42 | | &Message::MembershipQuery => write!(f, "membership query"), [INFO] [stderr] 43 | | &Message::MembershipReportV2 => write!(f, "version 2 membership report"), [INFO] [stderr] 44 | | &Message::LeaveGroup => write!(f, "leave group"), [INFO] [stderr] 45 | | &Message::MembershipReportV1 => write!(f, "version 1 membership report"), [INFO] [stderr] 46 | | &Message::Unknown(id) => write!(f, "{}", id), [INFO] [stderr] 47 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 41 | match *self { [INFO] [stderr] 42 | Message::MembershipQuery => write!(f, "membership query"), [INFO] [stderr] 43 | Message::MembershipReportV2 => write!(f, "version 2 membership report"), [INFO] [stderr] 44 | Message::LeaveGroup => write!(f, "leave group"), [INFO] [stderr] 45 | Message::MembershipReportV1 => write!(f, "version 1 membership report"), [INFO] [stderr] 46 | Message::Unknown(id) => write!(f, "{}", id), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/igmp.rs:254:9 [INFO] [stderr] | [INFO] [stderr] 254 | / match self { [INFO] [stderr] 255 | | &Repr::MembershipQuery { [INFO] [stderr] 256 | | max_resp_time, [INFO] [stderr] 257 | | group_addr, [INFO] [stderr] ... | [INFO] [stderr] 283 | | } [INFO] [stderr] 284 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 254 | match *self { [INFO] [stderr] 255 | Repr::MembershipQuery { [INFO] [stderr] 256 | max_resp_time, [INFO] [stderr] 257 | group_addr, [INFO] [stderr] 258 | version [INFO] [stderr] 259 | } => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/igmp.rs:330:9 [INFO] [stderr] | [INFO] [stderr] 330 | / match self { [INFO] [stderr] 331 | | &Repr::MembershipQuery { [INFO] [stderr] 332 | | max_resp_time, [INFO] [stderr] 333 | | group_addr, [INFO] [stderr] ... | [INFO] [stderr] 353 | | } [INFO] [stderr] 354 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 330 | match *self { [INFO] [stderr] 331 | Repr::MembershipQuery { [INFO] [stderr] 332 | max_resp_time, [INFO] [stderr] 333 | group_addr, [INFO] [stderr] 334 | version, [INFO] [stderr] 335 | } => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/wire/ndisc.rs:49:29 [INFO] [stderr] | [INFO] [stderr] 49 | Duration::from_secs(NetworkEndian::read_u16(&data[field::ROUTER_LT]) as u64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(NetworkEndian::read_u16(&data[field::ROUTER_LT]))` [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 u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/wire/ndisc.rs:56:31 [INFO] [stderr] | [INFO] [stderr] 56 | Duration::from_millis(NetworkEndian::read_u32(&data[field::REACHABLE_TM]) as u64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(NetworkEndian::read_u32(&data[field::REACHABLE_TM]))` [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 u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/wire/ndisc.rs:63:31 [INFO] [stderr] | [INFO] [stderr] 63 | Duration::from_millis(NetworkEndian::read_u32(&data[field::RETRANS_TM]) as u64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(NetworkEndian::read_u32(&data[field::RETRANS_TM]))` [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: length comparison to zero [INFO] [stderr] --> src/wire/ndisc.rs:230:33 [INFO] [stderr] | [INFO] [stderr] 230 | let lladdr = if packet.payload().len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!packet.payload().is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/wire/ndisc.rs:265:33 [INFO] [stderr] | [INFO] [stderr] 265 | let lladdr = if packet.payload().len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!packet.payload().is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/wire/ndisc.rs:279:33 [INFO] [stderr] | [INFO] [stderr] 279 | let lladdr = if packet.payload().len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!packet.payload().is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ndisc.rs:332:9 [INFO] [stderr] | [INFO] [stderr] 332 | / match self { [INFO] [stderr] 333 | | &Repr::RouterSolicit { lladdr } => { [INFO] [stderr] 334 | | match lladdr { [INFO] [stderr] 335 | | Some(_) => field::UNUSED.end + 8, [INFO] [stderr] ... | [INFO] [stderr] 367 | | } [INFO] [stderr] 368 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 332 | match *self { [INFO] [stderr] 333 | Repr::RouterSolicit { lladdr } => { [INFO] [stderr] 334 | match lladdr { [INFO] [stderr] 335 | Some(_) => field::UNUSED.end + 8, [INFO] [stderr] 336 | None => field::UNUSED.end, [INFO] [stderr] 337 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ndisc.rs:373:9 [INFO] [stderr] | [INFO] [stderr] 373 | / match self { [INFO] [stderr] 374 | | &Repr::RouterSolicit { lladdr } => { [INFO] [stderr] 375 | | packet.set_msg_type(Message::RouterSolicit); [INFO] [stderr] 376 | | packet.set_msg_code(0); [INFO] [stderr] ... | [INFO] [stderr] 458 | | }, [INFO] [stderr] 459 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 373 | match *self { [INFO] [stderr] 374 | Repr::RouterSolicit { lladdr } => { [INFO] [stderr] 375 | packet.set_msg_type(Message::RouterSolicit); [INFO] [stderr] 376 | packet.set_msg_code(0); [INFO] [stderr] 377 | packet.clear_reserved(); [INFO] [stderr] 378 | if let Some(lladdr) = lladdr { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ndiscoption.rs:26:9 [INFO] [stderr] | [INFO] [stderr] 26 | / match self { [INFO] [stderr] 27 | | &Type::SourceLinkLayerAddr => write!(f, "source link-layer address"), [INFO] [stderr] 28 | | &Type::TargetLinkLayerAddr => write!(f, "target link-layer address"), [INFO] [stderr] 29 | | &Type::PrefixInformation => write!(f, "prefix information"), [INFO] [stderr] ... | [INFO] [stderr] 32 | | &Type::Unknown(id) => write!(f, "{}", id) [INFO] [stderr] 33 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 26 | match *self { [INFO] [stderr] 27 | Type::SourceLinkLayerAddr => write!(f, "source link-layer address"), [INFO] [stderr] 28 | Type::TargetLinkLayerAddr => write!(f, "target link-layer address"), [INFO] [stderr] 29 | Type::PrefixInformation => write!(f, "prefix information"), [INFO] [stderr] 30 | Type::RedirectedHeader => write!(f, "redirected header"), [INFO] [stderr] 31 | Type::Mtu => write!(f, "mtu"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/wire/ndiscoption.rs:253:29 [INFO] [stderr] | [INFO] [stderr] 253 | Duration::from_secs(NetworkEndian::read_u32(&data[field::VALID_LT]) as u64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(NetworkEndian::read_u32(&data[field::VALID_LT]))` [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 u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/wire/ndiscoption.rs:260:29 [INFO] [stderr] | [INFO] [stderr] 260 | Duration::from_secs(NetworkEndian::read_u32(&data[field::PREF_LT]) as u64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(NetworkEndian::read_u32(&data[field::PREF_LT]))` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ndiscoption.rs:490:9 [INFO] [stderr] | [INFO] [stderr] 490 | / match self { [INFO] [stderr] 491 | | &Repr::SourceLinkLayerAddr(_) | &Repr::TargetLinkLayerAddr(_) => [INFO] [stderr] 492 | | field::LL_ADDR.end, [INFO] [stderr] 493 | | &Repr::PrefixInformation(_) => [INFO] [stderr] ... | [INFO] [stderr] 500 | | field::DATA(length).end [INFO] [stderr] 501 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 490 | match *self { [INFO] [stderr] 491 | Repr::SourceLinkLayerAddr(_) | Repr::TargetLinkLayerAddr(_) => [INFO] [stderr] 492 | field::LL_ADDR.end, [INFO] [stderr] 493 | Repr::PrefixInformation(_) => [INFO] [stderr] 494 | field::PREFIX.end, [INFO] [stderr] 495 | Repr::RedirectedHeader(RedirectedHeader { header, data }) => [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ndiscoption.rs:507:9 [INFO] [stderr] | [INFO] [stderr] 507 | / match self { [INFO] [stderr] 508 | | &Repr::SourceLinkLayerAddr(addr) => { [INFO] [stderr] 509 | | opt.set_option_type(Type::SourceLinkLayerAddr); [INFO] [stderr] 510 | | opt.set_data_len(1); [INFO] [stderr] ... | [INFO] [stderr] 553 | | } [INFO] [stderr] 554 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 507 | match *self { [INFO] [stderr] 508 | Repr::SourceLinkLayerAddr(addr) => { [INFO] [stderr] 509 | opt.set_option_type(Type::SourceLinkLayerAddr); [INFO] [stderr] 510 | opt.set_data_len(1); [INFO] [stderr] 511 | opt.set_link_layer_addr(addr); [INFO] [stderr] 512 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/ndiscoption.rs:561:9 [INFO] [stderr] | [INFO] [stderr] 561 | / match self { [INFO] [stderr] 562 | | &Repr::SourceLinkLayerAddr(addr) => { [INFO] [stderr] 563 | | write!(f, "SourceLinkLayer addr={}", addr) [INFO] [stderr] 564 | | }, [INFO] [stderr] ... | [INFO] [stderr] 585 | | } [INFO] [stderr] 586 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 561 | match *self { [INFO] [stderr] 562 | Repr::SourceLinkLayerAddr(addr) => { [INFO] [stderr] 563 | write!(f, "SourceLinkLayer addr={}", addr) [INFO] [stderr] 564 | }, [INFO] [stderr] 565 | Repr::TargetLinkLayerAddr(addr) => { [INFO] [stderr] 566 | write!(f, "TargetLinkLayer addr={}", addr) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/wire/mld.rs:128:9 [INFO] [stderr] | [INFO] [stderr] 128 | data[field::SQRV] = data[field::SQRV] & 0x7; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `data[field::SQRV] &= 0x7` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: item `wire::udp::Packet` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/wire/udp.rs:30:1 [INFO] [stderr] | [INFO] [stderr] 30 | / impl> Packet { [INFO] [stderr] 31 | | /// Imbue a raw octet buffer with UDP packet structure. [INFO] [stderr] 32 | | pub fn new_unchecked(buffer: T) -> Packet { [INFO] [stderr] 33 | | Packet { buffer } [INFO] [stderr] ... | [INFO] [stderr] 120 | | } [INFO] [stderr] 121 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/wire/udp.rs:117:37 [INFO] [stderr] | [INFO] [stderr] 117 | self.len() as u32), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.len())` [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/wire/udp.rs:173:41 [INFO] [stderr] | [INFO] [stderr] 173 | self.len() as u32), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.len())` [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/wire/tcp.rs:453:38 [INFO] [stderr] | [INFO] [stderr] 453 | let raw = (raw & !0xf000) | ((value as u16) / 4) << 12; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(value)` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/tcp.rs:565:9 [INFO] [stderr] | [INFO] [stderr] 565 | / match self { [INFO] [stderr] 566 | | &TcpOption::EndOfList => 1, [INFO] [stderr] 567 | | &TcpOption::NoOperation => 1, [INFO] [stderr] 568 | | &TcpOption::MaxSegmentSize(_) => 4, [INFO] [stderr] 569 | | &TcpOption::WindowScale(_) => 3, [INFO] [stderr] 570 | | &TcpOption::Unknown { data, .. } => 2 + data.len() [INFO] [stderr] 571 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 565 | match *self { [INFO] [stderr] 566 | TcpOption::EndOfList => 1, [INFO] [stderr] 567 | TcpOption::NoOperation => 1, [INFO] [stderr] 568 | TcpOption::MaxSegmentSize(_) => 4, [INFO] [stderr] 569 | TcpOption::WindowScale(_) => 3, [INFO] [stderr] 570 | TcpOption::Unknown { data, .. } => 2 + data.len() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/tcp.rs:576:9 [INFO] [stderr] | [INFO] [stderr] 576 | / match self { [INFO] [stderr] 577 | | &TcpOption::EndOfList => { [INFO] [stderr] 578 | | length = 1; [INFO] [stderr] 579 | | // There may be padding space which also should be initialized. [INFO] [stderr] ... | [INFO] [stderr] 608 | | } [INFO] [stderr] 609 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 576 | match *self { [INFO] [stderr] 577 | TcpOption::EndOfList => { [INFO] [stderr] 578 | length = 1; [INFO] [stderr] 579 | // There may be padding space which also should be initialized. [INFO] [stderr] 580 | for p in buffer.iter_mut() { [INFO] [stderr] 581 | *p = field::OPT_END; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wire/tcp.rs:591:17 [INFO] [stderr] | [INFO] [stderr] 591 | / match self { [INFO] [stderr] 592 | | &TcpOption::EndOfList | [INFO] [stderr] 593 | | &TcpOption::NoOperation => [INFO] [stderr] 594 | | unreachable!(), [INFO] [stderr] ... | [INFO] [stderr] 606 | | } [INFO] [stderr] 607 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 591 | match *self { [INFO] [stderr] 592 | TcpOption::EndOfList | [INFO] [stderr] 593 | TcpOption::NoOperation => [INFO] [stderr] 594 | unreachable!(), [INFO] [stderr] 595 | TcpOption::MaxSegmentSize(value) => { [INFO] [stderr] 596 | buffer[0] = field::OPT_MSS; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: item `wire::tcp::Control` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/wire/tcp.rs:624:1 [INFO] [stderr] | [INFO] [stderr] 624 | / impl Control { [INFO] [stderr] 625 | | /// Return the length of a control flag, in terms of sequence space. [INFO] [stderr] 626 | | pub fn len(self) -> usize { [INFO] [stderr] 627 | | match self { [INFO] [stderr] ... | [INFO] [stderr] 639 | | } [INFO] [stderr] 640 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/wire/tcp.rs:679:13 [INFO] [stderr] | [INFO] [stderr] 679 | / match packet.ack() { [INFO] [stderr] 680 | | true => Some(packet.ack_number()), [INFO] [stderr] 681 | | false => None [INFO] [stderr] 682 | | }; [INFO] [stderr] | |_____________^ help: consider using an if/else expression: `if packet.ack() { Some(packet.ack_number()) } else { None }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/wire/tcp.rs:691:15 [INFO] [stderr] | [INFO] [stderr] 691 | while options.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!options.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/wire/tcp.rs:786:16 [INFO] [stderr] | [INFO] [stderr] 786 | if options.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!options.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/wire/tcp.rs:840:15 [INFO] [stderr] | [INFO] [stderr] 840 | while options.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!options.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter_mut() and will not move the BTreeMap [INFO] [stderr] --> src/iface/neighbor.rs:102:45 [INFO] [stderr] | [INFO] [stderr] 102 | let new_btree_map = map.into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter_mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/iface/neighbor.rs:166:9 [INFO] [stderr] | [INFO] [stderr] 166 | / match self.storage.get(protocol_addr) { [INFO] [stderr] 167 | | Some(&Neighbor { expires_at, hardware_addr }) => { [INFO] [stderr] 168 | | if timestamp < expires_at { [INFO] [stderr] 169 | | return Some(hardware_addr) [INFO] [stderr] ... | [INFO] [stderr] 172 | | None => () [INFO] [stderr] 173 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [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] 166 | if let Some(&Neighbor { expires_at, hardware_addr }) = self.storage.get(protocol_addr) { [INFO] [stderr] 167 | if timestamp < expires_at { [INFO] [stderr] 168 | return Some(hardware_addr) [INFO] [stderr] 169 | } [INFO] [stderr] 170 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/iface/ethernet.rs:264:9 [INFO] [stderr] | [INFO] [stderr] 264 | / match self { [INFO] [stderr] 265 | | &Packet::None => None, [INFO] [stderr] 266 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 267 | | &Packet::Arp(_) => None, [INFO] [stderr] ... | [INFO] [stderr] 279 | | &Packet::Tcp((ref ip_repr, _)) => Some(ip_repr.dst_addr()) [INFO] [stderr] 280 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 264 | match *self { [INFO] [stderr] 265 | Packet::None => None, [INFO] [stderr] 266 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 267 | Packet::Arp(_) => None, [INFO] [stderr] 268 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 269 | Packet::Icmpv4((ref ipv4_repr, _)) => Some(ipv4_repr.dst_addr.into()), [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/iface/ethernet.rs:650:34 [INFO] [stderr] | [INFO] [stderr] 650 | fn check_ethernet_addr(addr: &EthernetAddress) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider passing by value instead: `EthernetAddress` [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: called `is_some()` after searching an `Iterator` with find. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/iface/ethernet.rs:671:9 [INFO] [stderr] | [INFO] [stderr] 671 | / self.ip_addrs.iter().find(|cidr| { [INFO] [stderr] 672 | | match *cidr { [INFO] [stderr] 673 | | &IpCidr::Ipv6(cidr) if cidr.address() != Ipv6Address::LOOPBACK=> { [INFO] [stderr] 674 | | // Take the lower order 24 bits of the IPv6 address and [INFO] [stderr] ... | [INFO] [stderr] 679 | | } [INFO] [stderr] 680 | | }).is_some() [INFO] [stderr] | |____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::search_is_some)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/iface/ethernet.rs:672:13 [INFO] [stderr] | [INFO] [stderr] 672 | / match *cidr { [INFO] [stderr] 673 | | &IpCidr::Ipv6(cidr) if cidr.address() != Ipv6Address::LOOPBACK=> { [INFO] [stderr] 674 | | // Take the lower order 24 bits of the IPv6 address and [INFO] [stderr] 675 | | // append those bits to FF02:0:0:0:0:1:FF00::/104. [INFO] [stderr] ... | [INFO] [stderr] 678 | | _ => false, [INFO] [stderr] 679 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 672 | match *(*cidr) { [INFO] [stderr] 673 | IpCidr::Ipv6(cidr) if cidr.address() != Ipv6Address::LOOPBACK=> { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/iface/ethernet.rs:694:24 [INFO] [stderr] | [INFO] [stderr] 694 | |addr| match addr { [INFO] [stderr] | ________________________^ [INFO] [stderr] 695 | | &IpCidr::Ipv4(cidr) => Some(cidr.address()), [INFO] [stderr] 696 | | _ => None, [INFO] [stderr] 697 | | }) [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 694 | |addr| match *addr { [INFO] [stderr] 695 | IpCidr::Ipv4(cidr) => Some(cidr.address()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this call to `as_ref` does nothing [INFO] [stderr] --> src/iface/ethernet.rs:1421:27 [INFO] [stderr] | [INFO] [stderr] 1421 | debug_assert!(tx_buffer.as_ref().len() == tx_len); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try this: `tx_buffer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: this call to `as_mut` does nothing [INFO] [stderr] --> src/iface/ethernet.rs:1422:58 [INFO] [stderr] | [INFO] [stderr] 1422 | let mut frame = EthernetFrame::new_unchecked(tx_buffer.as_mut()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try this: `tx_buffer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: called `is_some()` after searching an `Iterator` with find. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/iface/ethernet.rs:1432:9 [INFO] [stderr] | [INFO] [stderr] 1432 | / self.ip_addrs [INFO] [stderr] 1433 | | .iter() [INFO] [stderr] 1434 | | .find(|cidr| cidr.contains_addr(addr)) [INFO] [stderr] 1435 | | .is_some() [INFO] [stderr] | |______________________^ [INFO] [stderr] | [INFO] [stderr] = note: replace `find(|cidr| cidr.contains_addr(addr)).is_some()` with `any(|cidr| cidr.contains_addr(addr))` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/iface/ethernet.rs:1470:17 [INFO] [stderr] | [INFO] [stderr] 1470 | / match dst_addr { [INFO] [stderr] 1471 | | &IpAddress::Unspecified => [INFO] [stderr] 1472 | | None, [INFO] [stderr] 1473 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] ... | [INFO] [stderr] 1488 | | unreachable!() [INFO] [stderr] 1489 | | }; [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1470 | match *dst_addr { [INFO] [stderr] 1471 | IpAddress::Unspecified => [INFO] [stderr] 1472 | None, [INFO] [stderr] 1473 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 1474 | IpAddress::Ipv4(_addr) => [INFO] [stderr] 1475 | Some(EthernetAddress::from_bytes(&[ [INFO] [stderr] ... [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/iface/ethernet.rs:1490:13 [INFO] [stderr] | [INFO] [stderr] 1490 | / match hardware_addr { [INFO] [stderr] 1491 | | Some(hardware_addr) => [INFO] [stderr] 1492 | | // Destination is multicast [INFO] [stderr] 1493 | | return Ok((hardware_addr, tx_token)), [INFO] [stderr] ... | [INFO] [stderr] 1496 | | (), [INFO] [stderr] 1497 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Some(hardware_addr) = hardware_addr { return Ok((hardware_addr, tx_token)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: called `cloned().collect()` on a slice to create a `Vec`. Calling `to_vec()` is both faster and more readable [INFO] [stderr] --> src/iface/ethernet.rs:1700:27 [INFO] [stderr] | [INFO] [stderr] 1700 | pkts.push(pkt.iter().cloned().collect()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::iter_cloned_collect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_cloned_collect [INFO] [stderr] [INFO] [stderr] warning: this call to `as_mut` does nothing [INFO] [stderr] --> src/socket/raw.rs:94:12 [INFO] [stderr] | [INFO] [stderr] 94 | Ok(packet_buf.as_mut()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try this: `packet_buf` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: this call to `as_mut` does nothing [INFO] [stderr] --> src/socket/raw.rs:144:27 [INFO] [stderr] | [INFO] [stderr] 144 | ip_repr.emit(&mut packet_buf.as_mut()[..header_len], &checksum_caps); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try this: `packet_buf` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: this call to `as_mut` does nothing [INFO] [stderr] --> src/socket/raw.rs:145:9 [INFO] [stderr] | [INFO] [stderr] 145 | packet_buf.as_mut()[header_len..].copy_from_slice(payload); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try this: `packet_buf` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: this call to `as_ref` does nothing [INFO] [stderr] --> src/socket/raw.rs:158:40 [INFO] [stderr] | [INFO] [stderr] 158 | match IpVersion::of_packet(buffer.as_ref())? { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try this: `buffer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: this call to `as_mut` does nothing [INFO] [stderr] --> src/socket/raw.rs:161:62 [INFO] [stderr] | [INFO] [stderr] 161 | let mut packet = Ipv4Packet::new_checked(buffer.as_mut())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try this: `buffer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: this call to `as_mut` does nothing [INFO] [stderr] --> src/socket/raw.rs:177:62 [INFO] [stderr] | [INFO] [stderr] 177 | let mut packet = Ipv6Packet::new_checked(buffer.as_mut())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try this: `buffer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: this call to `as_mut` does nothing [INFO] [stderr] --> src/socket/raw.rs:192:40 [INFO] [stderr] | [INFO] [stderr] 192 | match prepare(ip_protocol, packet_buf.as_mut(), &checksum_caps) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try this: `packet_buf` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/socket/raw.rs:395:37 [INFO] [stderr] | [INFO] [stderr] 395 | let mut wrong_version = ipv4_locals::PACKET_BYTES.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `ipv4_locals::PACKET_BYTES` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/socket/raw.rs:402:38 [INFO] [stderr] | [INFO] [stderr] 402 | let mut wrong_protocol = ipv4_locals::PACKET_BYTES.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `ipv4_locals::PACKET_BYTES` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/socket/raw.rs:413:37 [INFO] [stderr] | [INFO] [stderr] 413 | let mut wrong_version = ipv6_locals::PACKET_BYTES.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `ipv6_locals::PACKET_BYTES` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/socket/raw.rs:420:38 [INFO] [stderr] | [INFO] [stderr] 420 | let mut wrong_protocol = ipv6_locals::PACKET_BYTES.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `ipv6_locals::PACKET_BYTES` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/socket/raw.rs:436:37 [INFO] [stderr] | [INFO] [stderr] 436 | let mut cksumd_packet = ipv4_locals::PACKET_BYTES.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `ipv4_locals::PACKET_BYTES` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/socket/icmp.rs:295:9 [INFO] [stderr] | [INFO] [stderr] 295 | / match icmp_repr { [INFO] [stderr] 296 | | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 297 | | &IcmpRepr::Ipv4(ref icmp_repr) => { [INFO] [stderr] 298 | | let packet_buf = self.rx_buffer.enqueue(icmp_repr.buffer_len(), [INFO] [stderr] ... | [INFO] [stderr] 316 | | }, [INFO] [stderr] 317 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 295 | match *icmp_repr { [INFO] [stderr] 296 | #[cfg(feature = "proto-ipv4")] [INFO] [stderr] 297 | IcmpRepr::Ipv4(ref icmp_repr) => { [INFO] [stderr] 298 | let packet_buf = self.rx_buffer.enqueue(icmp_repr.buffer_len(), [INFO] [stderr] 299 | ip_repr.src_addr())?; [INFO] [stderr] 300 | icmp_repr.emit(&mut Icmpv4Packet::new_unchecked(packet_buf), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/socket/tcp.rs:37:9 [INFO] [stderr] | [INFO] [stderr] 37 | / match self { [INFO] [stderr] 38 | | &State::Closed => write!(f, "CLOSED"), [INFO] [stderr] 39 | | &State::Listen => write!(f, "LISTEN"), [INFO] [stderr] 40 | | &State::SynSent => write!(f, "SYN-SENT"), [INFO] [stderr] ... | [INFO] [stderr] 48 | | &State::TimeWait => write!(f, "TIME-WAIT") [INFO] [stderr] 49 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 37 | match *self { [INFO] [stderr] 38 | State::Closed => write!(f, "CLOSED"), [INFO] [stderr] 39 | State::Listen => write!(f, "LISTEN"), [INFO] [stderr] 40 | State::SynSent => write!(f, "SYN-SENT"), [INFO] [stderr] 41 | State::SynReceived => write!(f, "SYN-RECEIVED"), [INFO] [stderr] 42 | State::Established => write!(f, "ESTABLISHED"), [INFO] [stderr] ... [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/tcp.rs:136:9 [INFO] [stderr] | [INFO] [stderr] 136 | / match self { [INFO] [stderr] 137 | | &mut Timer::Idle { ref mut keep_alive_at } => { [INFO] [stderr] 138 | | *keep_alive_at = interval.map(|interval| timestamp + interval) [INFO] [stderr] 139 | | } [INFO] [stderr] 140 | | _ => () [INFO] [stderr] 141 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [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] 136 | if let &mut Timer::Idle { ref mut keep_alive_at } = self { [INFO] [stderr] 137 | *keep_alive_at = interval.map(|interval| timestamp + interval) [INFO] [stderr] 138 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/socket/tcp.rs:136:9 [INFO] [stderr] | [INFO] [stderr] 136 | / match self { [INFO] [stderr] 137 | | &mut Timer::Idle { ref mut keep_alive_at } => { [INFO] [stderr] 138 | | *keep_alive_at = interval.map(|interval| timestamp + interval) [INFO] [stderr] 139 | | } [INFO] [stderr] 140 | | _ => () [INFO] [stderr] 141 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 136 | match *self { [INFO] [stderr] 137 | Timer::Idle { ref mut keep_alive_at } => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/socket/tcp.rs:623:18 [INFO] [stderr] | [INFO] [stderr] 623 | _ if self.rx_buffer.len() > 0 => true, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.rx_buffer.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/socket/tcp.rs:744:12 [INFO] [stderr] | [INFO] [stderr] 744 | if buffer.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!buffer.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 56 [INFO] [stderr] --> src/socket/tcp.rs:872:5 [INFO] [stderr] | [INFO] [stderr] 872 | / pub(crate) fn process(&mut self, timestamp: Instant, ip_repr: &IpRepr, repr: &TcpRepr) -> [INFO] [stderr] 873 | | Result)>> { [INFO] [stderr] 874 | | debug_assert!(self.accepts(ip_repr, repr)); [INFO] [stderr] 875 | | [INFO] [stderr] ... | [INFO] [stderr] 1295 | | } [INFO] [stderr] 1296 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/socket/tcp.rs:952:17 [INFO] [stderr] | [INFO] [stderr] 952 | / let mut segment_in_window = true; [INFO] [stderr] 953 | | [INFO] [stderr] 954 | | if window_start == window_end && segment_start != segment_end { [INFO] [stderr] 955 | | net_debug!("{}:{}:{}: non-zero-length segment with zero receive window, \ [INFO] [stderr] ... | [INFO] [stderr] 958 | | segment_in_window = false; [INFO] [stderr] 959 | | } [INFO] [stderr] | |_________________^ help: it is more idiomatic to write: `let segment_in_window = if window_start == window_end && segment_start != segment_end { ..; false } else { true };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/socket/tcp.rs:1204:21 [INFO] [stderr] | [INFO] [stderr] 1204 | repr.payload.len() == 0 && [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `repr.payload.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 33 [INFO] [stderr] --> src/socket/tcp.rs:1337:5 [INFO] [stderr] | [INFO] [stderr] 1337 | / pub(crate) fn dispatch(&mut self, timestamp: Instant, caps: &DeviceCapabilities, [INFO] [stderr] 1338 | | emit: F) -> Result<()> [INFO] [stderr] 1339 | | where F: FnOnce((IpRepr, TcpRepr)) -> Result<()> { [INFO] [stderr] 1340 | | if !self.remote_endpoint.is_specified() { return Err(Error::Exhausted) } [INFO] [stderr] ... | [INFO] [stderr] 1562 | | Ok(()) [INFO] [stderr] 1563 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/socket/tcp.rs:1485:9 [INFO] [stderr] | [INFO] [stderr] 1485 | / let is_keep_alive; [INFO] [stderr] 1486 | | if self.timer.should_keep_alive(timestamp) && repr.is_empty() { [INFO] [stderr] 1487 | | repr.seq_number = repr.seq_number - 1; [INFO] [stderr] 1488 | | repr.payload = b"\x00"; // RFC 1122 says we should do this [INFO] [stderr] ... | [INFO] [stderr] 1491 | | is_keep_alive = false; [INFO] [stderr] 1492 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let is_keep_alive = if self.timer.should_keep_alive(timestamp) && repr.is_empty() { ..; true } else { false };` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/socket/tcp.rs:1466:66 [INFO] [stderr] | [INFO] [stderr] 1466 | State::Established | State::CloseWait if repr.payload.len() > 0 => [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!repr.payload.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/socket/tcp.rs:1498:19 [INFO] [stderr] | [INFO] [stderr] 1498 | } else if repr.payload.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!repr.payload.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/socket/tcp.rs:1503:48 [INFO] [stderr] | [INFO] [stderr] 1503 | if repr.control != TcpControl::None || repr.payload.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `repr.payload.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/socket/tcp.rs:1704:16 [INFO] [stderr] | [INFO] [stderr] 1704 | Ok(f(Ok(tcp_repr))) [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 1704 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/socket/set.rs:142:13 [INFO] [stderr] | [INFO] [stderr] 142 | / if let &mut Some(Item { refs: 0, ref mut socket }) = item { [INFO] [stderr] 143 | | match socket { [INFO] [stderr] 144 | | #[cfg(feature = "socket-raw")] [INFO] [stderr] 145 | | &mut Socket::Raw(_) => [INFO] [stderr] ... | [INFO] [stderr] 161 | | } [INFO] [stderr] 162 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 142 | if let Some(Item { refs: 0, ref mut socket }) = *item { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/socket/set.rs:143:17 [INFO] [stderr] | [INFO] [stderr] 143 | / match socket { [INFO] [stderr] 144 | | #[cfg(feature = "socket-raw")] [INFO] [stderr] 145 | | &mut Socket::Raw(_) => [INFO] [stderr] 146 | | may_remove = true, [INFO] [stderr] ... | [INFO] [stderr] 160 | | &mut Socket::__Nonexhaustive(_) => unreachable!() [INFO] [stderr] 161 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 143 | match *socket { [INFO] [stderr] 144 | #[cfg(feature = "socket-raw")] [INFO] [stderr] 145 | Socket::Raw(_) => [INFO] [stderr] 146 | may_remove = true, [INFO] [stderr] 147 | #[cfg(all(feature = "socket-icmp", any(feature = "proto-ipv4", feature = "proto-ipv6")))] [INFO] [stderr] 148 | Socket::Icmp(_) => [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: methods called `into_*` usually take self by value; consider choosing a less ambiguous name [INFO] [stderr] --> src/socket/ref_.rs:59:23 [INFO] [stderr] | [INFO] [stderr] 59 | pub fn into_inner(mut ref_: Self) -> &'a mut T { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/socket/mod.rs:72:9 [INFO] [stderr] | [INFO] [stderr] 72 | / match self { [INFO] [stderr] 73 | | &PollAt::Ingress => true, [INFO] [stderr] 74 | | _ => false, [INFO] [stderr] 75 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 72 | match *self { [INFO] [stderr] 73 | PollAt::Ingress => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/socket/mod.rs:98:5 [INFO] [stderr] | [INFO] [stderr] 98 | Tcp(TcpSocket<'a>), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 98 | Tcp(Box>), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/socket/mod.rs:111:9 [INFO] [stderr] | [INFO] [stderr] 111 | / match $self_ { [INFO] [stderr] 112 | | #[cfg(feature = "socket-raw")] [INFO] [stderr] 113 | | &$( $mut_ )* Socket::Raw(ref $( $mut_ )* $socket) => $code, [INFO] [stderr] 114 | | #[cfg(all(feature = "socket-icmp", any(feature = "proto-ipv4", feature = "proto-ipv6")))] [INFO] [stderr] ... | [INFO] [stderr] 120 | | &$( $mut_ )* Socket::__Nonexhaustive(_) => unreachable!() [INFO] [stderr] 121 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] ... [INFO] [stderr] 133 | dispatch_socket!(self, |socket| &socket.meta) [INFO] [stderr] | --------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/socket/mod.rs:111:9 [INFO] [stderr] | [INFO] [stderr] 111 | / match $self_ { [INFO] [stderr] 112 | | #[cfg(feature = "socket-raw")] [INFO] [stderr] 113 | | &$( $mut_ )* Socket::Raw(ref $( $mut_ )* $socket) => $code, [INFO] [stderr] 114 | | #[cfg(all(feature = "socket-icmp", any(feature = "proto-ipv4", feature = "proto-ipv6")))] [INFO] [stderr] ... | [INFO] [stderr] 120 | | &$( $mut_ )* Socket::__Nonexhaustive(_) => unreachable!() [INFO] [stderr] 121 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] ... [INFO] [stderr] 137 | dispatch_socket!(mut self, |socket| &mut socket.meta) [INFO] [stderr] | ----------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/socket/mod.rs:111:9 [INFO] [stderr] | [INFO] [stderr] 111 | / match $self_ { [INFO] [stderr] 112 | | #[cfg(feature = "socket-raw")] [INFO] [stderr] 113 | | &$( $mut_ )* Socket::Raw(ref $( $mut_ )* $socket) => $code, [INFO] [stderr] 114 | | #[cfg(all(feature = "socket-icmp", any(feature = "proto-ipv4", feature = "proto-ipv6")))] [INFO] [stderr] ... | [INFO] [stderr] 120 | | &$( $mut_ )* Socket::__Nonexhaustive(_) => unreachable!() [INFO] [stderr] 121 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] ... [INFO] [stderr] 141 | dispatch_socket!(self, |socket| socket.poll_at()) [INFO] [stderr] | ------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/socket/mod.rs:111:9 [INFO] [stderr] | [INFO] [stderr] 111 | / match $self_ { [INFO] [stderr] 112 | | #[cfg(feature = "socket-raw")] [INFO] [stderr] 113 | | &$( $mut_ )* Socket::Raw(ref $( $mut_ )* $socket) => $code, [INFO] [stderr] 114 | | #[cfg(all(feature = "socket-icmp", any(feature = "proto-ipv4", feature = "proto-ipv6")))] [INFO] [stderr] ... | [INFO] [stderr] 120 | | &$( $mut_ )* Socket::__Nonexhaustive(_) => unreachable!() [INFO] [stderr] 121 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] ... [INFO] [stderr] 147 | dispatch_socket!(mut self, |socket| socket.finish()) [INFO] [stderr] | ---------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/socket/mod.rs:162:17 [INFO] [stderr] | [INFO] [stderr] 162 | / match SocketRef::into_inner(ref_) { [INFO] [stderr] 163 | | &mut Socket::$variant(ref mut socket) => Some(SocketRef::new(socket)), [INFO] [stderr] 164 | | _ => None, [INFO] [stderr] 165 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 172 | from_socket!(RawSocket<'a, 'b>, Raw); [INFO] [stderr] | ------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/socket/mod.rs:162:17 [INFO] [stderr] | [INFO] [stderr] 162 | / match SocketRef::into_inner(ref_) { [INFO] [stderr] 163 | | &mut Socket::$variant(ref mut socket) => Some(SocketRef::new(socket)), [INFO] [stderr] 164 | | _ => None, [INFO] [stderr] 165 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 174 | from_socket!(IcmpSocket<'a, 'b>, Icmp); [INFO] [stderr] | --------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/socket/mod.rs:162:17 [INFO] [stderr] | [INFO] [stderr] 162 | / match SocketRef::into_inner(ref_) { [INFO] [stderr] 163 | | &mut Socket::$variant(ref mut socket) => Some(SocketRef::new(socket)), [INFO] [stderr] 164 | | _ => None, [INFO] [stderr] 165 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 176 | from_socket!(UdpSocket<'a, 'b>, Udp); [INFO] [stderr] | ------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/socket/mod.rs:162:17 [INFO] [stderr] | [INFO] [stderr] 162 | / match SocketRef::into_inner(ref_) { [INFO] [stderr] 163 | | &mut Socket::$variant(ref mut socket) => Some(SocketRef::new(socket)), [INFO] [stderr] 164 | | _ => None, [INFO] [stderr] 165 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 178 | from_socket!(TcpSocket<'a>, Tcp); [INFO] [stderr] | --------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/time.rs:53:19 [INFO] [stderr] | [INFO] [stderr] 53 | pub fn millis(&self) -> i64 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/time.rs:59:17 [INFO] [stderr] | [INFO] [stderr] 59 | pub fn secs(&self) -> i64 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/time.rs:65:25 [INFO] [stderr] | [INFO] [stderr] 65 | pub fn total_millis(&self) -> i64 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/time.rs:74:67 [INFO] [stderr] | [INFO] [stderr] 74 | Instant::from_millis((elapsed.as_secs() * 1_000) as i64 + (elapsed.subsec_nanos() / 1_000_000) as i64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(elapsed.subsec_nanos() / 1_000_000)` [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: Calling `subsec_millis()` is more concise than this calculation [INFO] [stderr] --> src/time.rs:74:67 [INFO] [stderr] | [INFO] [stderr] 74 | Instant::from_millis((elapsed.as_secs() * 1_000) as i64 + (elapsed.subsec_nanos() / 1_000_000) as i64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `elapsed.subsec_millis()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::duration_subsec)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duration_subsec [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/time.rs:83:55 [INFO] [stderr] | [INFO] [stderr] 83 | Self::from_millis(n.as_secs() as i64 * 1000 + (n.subsec_nanos() / 1000000) as i64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(n.subsec_nanos() / 1000000)` [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: Calling `subsec_millis()` is more concise than this calculation [INFO] [stderr] --> src/time.rs:83:55 [INFO] [stderr] | [INFO] [stderr] 83 | Self::from_millis(n.as_secs() as i64 * 1000 + (n.subsec_nanos() / 1000000) as i64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `n.subsec_millis()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duration_subsec [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/time.rs:154:19 [INFO] [stderr] | [INFO] [stderr] 154 | pub fn millis(&self) -> u64 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/time.rs:159:17 [INFO] [stderr] | [INFO] [stderr] 159 | pub fn secs(&self) -> u64 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/time.rs:164:25 [INFO] [stderr] | [INFO] [stderr] 164 | pub fn total_millis(&self) -> u64 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/time.rs:209:45 [INFO] [stderr] | [INFO] [stderr] 209 | Duration::from_millis(self.millis * rhs as u64) [INFO] [stderr] | ^^^^^^^^^^ help: try: `u64::from(rhs)` [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 u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/time.rs:215:24 [INFO] [stderr] | [INFO] [stderr] 215 | self.millis *= rhs as u64; [INFO] [stderr] | ^^^^^^^^^^ help: try: `u64::from(rhs)` [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 u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/time.rs:223:45 [INFO] [stderr] | [INFO] [stderr] 223 | Duration::from_millis(self.millis / rhs as u64) [INFO] [stderr] | ^^^^^^^^^^ help: try: `u64::from(rhs)` [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 u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/time.rs:229:24 [INFO] [stderr] | [INFO] [stderr] 229 | self.millis /= rhs as u64; [INFO] [stderr] | ^^^^^^^^^^ help: try: `u64::from(rhs)` [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 u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/time.rs:236:38 [INFO] [stderr] | [INFO] [stderr] 236 | other.as_secs() * 1000 + (other.subsec_nanos() / 1_000_000) as u64 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(other.subsec_nanos() / 1_000_000)` [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: Calling `subsec_millis()` is more concise than this calculation [INFO] [stderr] --> src/time.rs:236:38 [INFO] [stderr] | [INFO] [stderr] 236 | other.as_secs() * 1000 + (other.subsec_nanos() / 1_000_000) as u64 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `other.subsec_millis()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duration_subsec [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:162:9 [INFO] [stderr] | [INFO] [stderr] 162 | / match self { [INFO] [stderr] 163 | | &Error::Exhausted => write!(f, "buffer space exhausted"), [INFO] [stderr] 164 | | &Error::Illegal => write!(f, "illegal operation"), [INFO] [stderr] 165 | | &Error::Unaddressable => write!(f, "unaddressable destination"), [INFO] [stderr] ... | [INFO] [stderr] 172 | | &Error::__Nonexhaustive => unreachable!() [INFO] [stderr] 173 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 162 | match *self { [INFO] [stderr] 163 | Error::Exhausted => write!(f, "buffer space exhausted"), [INFO] [stderr] 164 | Error::Illegal => write!(f, "illegal operation"), [INFO] [stderr] 165 | Error::Unaddressable => write!(f, "unaddressable destination"), [INFO] [stderr] 166 | Error::Truncated => write!(f, "truncated packet"), [INFO] [stderr] 167 | Error::Checksum => write!(f, "checksum error"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `smoltcp`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "9638292064dbb42eec0182bcaaafb86e6c5f15646a72f4ddef7a20dda0996cfd"` [INFO] running `"docker" "rm" "-f" "9638292064dbb42eec0182bcaaafb86e6c5f15646a72f4ddef7a20dda0996cfd"` [INFO] [stdout] 9638292064dbb42eec0182bcaaafb86e6c5f15646a72f4ddef7a20dda0996cfd