[INFO] cloning repository https://github.com/zyywo/dhcp-tool [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/zyywo/dhcp-tool" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fzyywo%2Fdhcp-tool", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fzyywo%2Fdhcp-tool'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] b1d85fcf68b0c7f3e58f265471b1a142666d8e67 [INFO] linting zyywo/dhcp-tool against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fzyywo%2Fdhcp-tool" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/zyywo/dhcp-tool [INFO] finished tweaking git repo https://github.com/zyywo/dhcp-tool [INFO] tweaked toml for git repo https://github.com/zyywo/dhcp-tool written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/zyywo/dhcp-tool on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/zyywo/dhcp-tool already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded dhcproto-macros v0.1.0 [INFO] [stderr] Downloaded clap v4.5.26 [INFO] [stderr] Downloaded thiserror-impl v1.0.68 [INFO] [stderr] Downloaded dhcproto v0.12.0 [INFO] [stderr] Downloaded thiserror v1.0.68 [INFO] [stderr] Downloaded clap_builder v4.5.26 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 64699939aa47afae0956a079935cca59c3b4b3c0d4f5b1fb47286222fe76d615 [INFO] running `Command { std: "docker" "start" "-a" "64699939aa47afae0956a079935cca59c3b4b3c0d4f5b1fb47286222fe76d615", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "64699939aa47afae0956a079935cca59c3b4b3c0d4f5b1fb47286222fe76d615", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "64699939aa47afae0956a079935cca59c3b4b3c0d4f5b1fb47286222fe76d615", kill_on_drop: false }` [INFO] [stdout] 64699939aa47afae0956a079935cca59c3b4b3c0d4f5b1fb47286222fe76d615 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 9839fdadaf54d34bcdc8c81c384d6f0d0f6f85e4624f08df4ceccfb2e82b2d82 [INFO] running `Command { std: "docker" "start" "-a" "9839fdadaf54d34bcdc8c81c384d6f0d0f6f85e4624f08df4ceccfb2e82b2d82", kill_on_drop: false }` [INFO] [stderr] Compiling zerocopy-derive v0.7.35 [INFO] [stderr] Checking no-std-net v0.6.0 [INFO] [stderr] Compiling serde v1.0.214 [INFO] [stderr] Checking getrandom v0.2.15 [INFO] [stderr] Compiling thiserror v1.0.68 [INFO] [stderr] Checking pnet_sys v0.35.0 [INFO] [stderr] Compiling thiserror-impl v1.0.68 [INFO] [stderr] Checking unicode-normalization v0.1.24 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Compiling pnet_macros v0.35.0 [INFO] [stderr] Checking unicode-bidi v0.3.17 [INFO] [stderr] Checking matches v0.1.10 [INFO] [stderr] Checking url v2.5.3 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Checking ipnet v2.10.1 [INFO] [stderr] Checking data-encoding v2.6.0 [INFO] [stderr] Checking pnet_base v0.35.0 [INFO] [stderr] Compiling pnet v0.35.0 [INFO] [stderr] Checking pnet_macros_support v0.35.0 [INFO] [stderr] Compiling clap_derive v4.5.24 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking clap_builder v4.5.26 [INFO] [stderr] Compiling dhcproto-macros v0.1.0 [INFO] [stderr] Checking zerocopy v0.7.35 [INFO] [stderr] Checking idna v0.2.3 [INFO] [stderr] Checking pnet_packet v0.35.0 [INFO] [stderr] Checking ppv-lite86 v0.2.20 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Compiling enum-as-inner v0.5.1 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking clap v4.5.26 [INFO] [stderr] Checking trust-dns-proto v0.22.0 [INFO] [stderr] Checking ipnetwork v0.20.0 [INFO] [stderr] Checking pnet_datalink v0.35.0 [INFO] [stderr] Checking pnet_transport v0.35.0 [INFO] [stderr] Checking dhcproto v0.12.0 [INFO] [stderr] Checking dhcp-tool v0.1.3 (/opt/rustwide/workdir) [INFO] [stdout] warning: this loop could be written as a `while let` loop [INFO] [stdout] --> src/utils.rs:102:5 [INFO] [stdout] | [INFO] [stdout] 102 | / loop { [INFO] [stdout] 103 | | if let Some(j) = i.next() { [INFO] [stdout] 104 | | let h = match j.to_digit(16) { [INFO] [stdout] 105 | | Some(x) => x, [INFO] [stdout] ... | [INFO] [stdout] 121 | | } [INFO] [stdout] | |_____^ help: try: `while let Some(j) = i.next() { .. }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stdout] = note: `#[warn(clippy::while_let_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/utils.rs:104:21 [INFO] [stdout] | [INFO] [stdout] 104 | let h = match j.to_digit(16) { [INFO] [stdout] | _____________________^ [INFO] [stdout] 105 | | Some(x) => x, [INFO] [stdout] 106 | | None => return None, [INFO] [stdout] 107 | | }; [INFO] [stdout] | |_____________^ help: try instead: `j.to_digit(16)?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/utils.rs:110:28 [INFO] [stdout] | [INFO] [stdout] 110 | Some(x) => match x.to_digit(16) { [INFO] [stdout] | ____________________________^ [INFO] [stdout] 111 | | Some(z) => z, [INFO] [stdout] 112 | | None => return None, [INFO] [stdout] 113 | | }, [INFO] [stdout] | |_________________^ help: try instead: `x.to_digit(16)?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `while let` loop [INFO] [stdout] --> src/utils.rs:102:5 [INFO] [stdout] | [INFO] [stdout] 102 | / loop { [INFO] [stdout] 103 | | if let Some(j) = i.next() { [INFO] [stdout] 104 | | let h = match j.to_digit(16) { [INFO] [stdout] 105 | | Some(x) => x, [INFO] [stdout] ... | [INFO] [stdout] 121 | | } [INFO] [stdout] | |_____^ help: try: `while let Some(j) = i.next() { .. }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stdout] = note: `#[warn(clippy::while_let_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/utils.rs:104:21 [INFO] [stdout] | [INFO] [stdout] 104 | let h = match j.to_digit(16) { [INFO] [stdout] | _____________________^ [INFO] [stdout] 105 | | Some(x) => x, [INFO] [stdout] 106 | | None => return None, [INFO] [stdout] 107 | | }; [INFO] [stdout] | |_____________^ help: try instead: `j.to_digit(16)?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/utils.rs:110:28 [INFO] [stdout] | [INFO] [stdout] 110 | Some(x) => match x.to_digit(16) { [INFO] [stdout] | ____________________________^ [INFO] [stdout] 111 | | Some(z) => z, [INFO] [stdout] 112 | | None => return None, [INFO] [stdout] 113 | | }, [INFO] [stdout] | |_________________^ help: try instead: `x.to_digit(16)?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:73:30 [INFO] [stdout] | [INFO] [stdout] 73 | ether_packet.set_payload(&ipv4_pkg.packet()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: change this to: `ipv4_pkg.packet()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:97:20 [INFO] [stdout] | [INFO] [stdout] 97 | if !(eth_packet.get_ethertype() == EtherType::new(0x0800)) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(eth_packet.get_ethertype() != EtherType::new(0x0800))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:117:20 [INFO] [stdout] | [INFO] [stdout] 117 | if !(dhcp_msg.xid() == xid) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(dhcp_msg.xid() != xid)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:204:20 [INFO] [stdout] | [INFO] [stdout] 204 | if !(eth_packet.get_ethertype() == EtherType::new(0x0800)) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(eth_packet.get_ethertype() != EtherType::new(0x0800))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:208:20 [INFO] [stdout] | [INFO] [stdout] 208 | if !(ip_packet.get_next_level_protocol() == IpNextHeaderProtocol::new(17)) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(ip_packet.get_next_level_protocol() != IpNextHeaderProtocol::new(17))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:217:20 [INFO] [stdout] | [INFO] [stdout] 217 | if !(dhcp_msg.xid() == xid) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(dhcp_msg.xid() != xid)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/main.rs:143:10 [INFO] [stdout] | [INFO] [stdout] 143 | .expect(format!("没有这个接口 {}", interface).as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|| panic!("没有这个接口 {}", interface))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] = note: `#[warn(clippy::expect_fun_call)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `filter(..).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(..)` instead [INFO] [stdout] --> src/main.rs:139:21 [INFO] [stdout] | [INFO] [stdout] 139 | let interface = interfaces [INFO] [stdout] | _____________________^ [INFO] [stdout] 140 | | .into_iter() [INFO] [stdout] 141 | | .filter(interface_match) [INFO] [stdout] 142 | | .next() [INFO] [stdout] | |_______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stdout] = note: `#[warn(clippy::filter_next)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 139 ~ let interface = interfaces [INFO] [stdout] 140 + .into_iter().find(interface_match) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:73:30 [INFO] [stdout] | [INFO] [stdout] 73 | ether_packet.set_payload(&ipv4_pkg.packet()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: change this to: `ipv4_pkg.packet()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:97:20 [INFO] [stdout] | [INFO] [stdout] 97 | if !(eth_packet.get_ethertype() == EtherType::new(0x0800)) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(eth_packet.get_ethertype() != EtherType::new(0x0800))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:117:20 [INFO] [stdout] | [INFO] [stdout] 117 | if !(dhcp_msg.xid() == xid) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(dhcp_msg.xid() != xid)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/main.rs:238:1 [INFO] [stdout] | [INFO] [stdout] 238 | / fn request_ip_from_dhcp_server( [INFO] [stdout] 239 | | interface: u32, [INFO] [stdout] 240 | | ip_src: Ipv4Addr, [INFO] [stdout] 241 | | mac_src: MacAddr, [INFO] [stdout] ... | [INFO] [stdout] 246 | | timeout_secs: u64, [INFO] [stdout] 247 | | ) -> Option { [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:204:20 [INFO] [stdout] | [INFO] [stdout] 204 | if !(eth_packet.get_ethertype() == EtherType::new(0x0800)) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(eth_packet.get_ethertype() != EtherType::new(0x0800))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:208:20 [INFO] [stdout] | [INFO] [stdout] 208 | if !(ip_packet.get_next_level_protocol() == IpNextHeaderProtocol::new(17)) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(ip_packet.get_next_level_protocol() != IpNextHeaderProtocol::new(17))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:217:20 [INFO] [stdout] | [INFO] [stdout] 217 | if !(dhcp_msg.xid() == xid) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(dhcp_msg.xid() != xid)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/main.rs:143:10 [INFO] [stdout] | [INFO] [stdout] 143 | .expect(format!("没有这个接口 {}", interface).as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|| panic!("没有这个接口 {}", interface))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] = note: `#[warn(clippy::expect_fun_call)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `filter(..).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(..)` instead [INFO] [stdout] --> src/main.rs:139:21 [INFO] [stdout] | [INFO] [stdout] 139 | let interface = interfaces [INFO] [stdout] | _____________________^ [INFO] [stdout] 140 | | .into_iter() [INFO] [stdout] 141 | | .filter(interface_match) [INFO] [stdout] 142 | | .next() [INFO] [stdout] | |_______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stdout] = note: `#[warn(clippy::filter_next)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 139 ~ let interface = interfaces [INFO] [stdout] 140 + .into_iter().find(interface_match) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/main.rs:255:10 [INFO] [stdout] | [INFO] [stdout] 255 | .expect(format!("没有这个接口 {}", interface).as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|| panic!("没有这个接口 {}", interface))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `filter(..).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(..)` instead [INFO] [stdout] --> src/main.rs:251:21 [INFO] [stdout] | [INFO] [stdout] 251 | let interface = interfaces [INFO] [stdout] | _____________________^ [INFO] [stdout] 252 | | .into_iter() [INFO] [stdout] 253 | | .filter(interface_match) [INFO] [stdout] 254 | | .next() [INFO] [stdout] | |_______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 251 ~ let interface = interfaces [INFO] [stdout] 252 + .into_iter().find(interface_match) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/main.rs:296:21 [INFO] [stdout] | [INFO] [stdout] 296 | let offer_msg = match recive_dhcp_packet( [INFO] [stdout] | _____________________^ [INFO] [stdout] 297 | | &mut rx, [INFO] [stdout] 298 | | target_server_ip, [INFO] [stdout] 299 | | target_server_mac, [INFO] [stdout] ... | [INFO] [stdout] 304 | | None => return None, [INFO] [stdout] 305 | | }; [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] help: try instead [INFO] [stdout] | [INFO] [stdout] 296 ~ let offer_msg = recive_dhcp_packet( [INFO] [stdout] 297 + &mut rx, [INFO] [stdout] 298 + target_server_ip, [INFO] [stdout] 299 + target_server_mac, [INFO] [stdout] 300 + xid, [INFO] [stdout] 301 + timeout_secs, [INFO] [stdout] 302 ~ )?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/main.rs:238:1 [INFO] [stdout] | [INFO] [stdout] 238 | / fn request_ip_from_dhcp_server( [INFO] [stdout] 239 | | interface: u32, [INFO] [stdout] 240 | | ip_src: Ipv4Addr, [INFO] [stdout] 241 | | mac_src: MacAddr, [INFO] [stdout] ... | [INFO] [stdout] 246 | | timeout_secs: u64, [INFO] [stdout] 247 | | ) -> Option { [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/main.rs:255:10 [INFO] [stdout] | [INFO] [stdout] 255 | .expect(format!("没有这个接口 {}", interface).as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|| panic!("没有这个接口 {}", interface))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `filter(..).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(..)` instead [INFO] [stdout] --> src/main.rs:251:21 [INFO] [stdout] | [INFO] [stdout] 251 | let interface = interfaces [INFO] [stdout] | _____________________^ [INFO] [stdout] 252 | | .into_iter() [INFO] [stdout] 253 | | .filter(interface_match) [INFO] [stdout] 254 | | .next() [INFO] [stdout] | |_______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 251 ~ let interface = interfaces [INFO] [stdout] 252 + .into_iter().find(interface_match) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/main.rs:296:21 [INFO] [stdout] | [INFO] [stdout] 296 | let offer_msg = match recive_dhcp_packet( [INFO] [stdout] | _____________________^ [INFO] [stdout] 297 | | &mut rx, [INFO] [stdout] 298 | | target_server_ip, [INFO] [stdout] 299 | | target_server_mac, [INFO] [stdout] ... | [INFO] [stdout] 304 | | None => return None, [INFO] [stdout] 305 | | }; [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] help: try instead [INFO] [stdout] | [INFO] [stdout] 296 ~ let offer_msg = recive_dhcp_packet( [INFO] [stdout] 297 + &mut rx, [INFO] [stdout] 298 + target_server_ip, [INFO] [stdout] 299 + target_server_mac, [INFO] [stdout] 300 + xid, [INFO] [stdout] 301 + timeout_secs, [INFO] [stdout] 302 ~ )?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:481:36 [INFO] [stdout] | [INFO] [stdout] 481 | Ipv4Addr::from_str(&ip_src).unwrap(), [INFO] [stdout] | ^^^^^^^ help: change this to: `ip_src` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:482:35 [INFO] [stdout] | [INFO] [stdout] 482 | MacAddr::from_str(&mac_src).unwrap(), [INFO] [stdout] | ^^^^^^^^ help: change this to: `mac_src` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:483:36 [INFO] [stdout] | [INFO] [stdout] 483 | Ipv4Addr::from_str(&ip_dst).unwrap(), [INFO] [stdout] | ^^^^^^^ help: change this to: `ip_dst` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:484:35 [INFO] [stdout] | [INFO] [stdout] 484 | MacAddr::from_str(&mac_dst).unwrap(), [INFO] [stdout] | ^^^^^^^^ help: change this to: `mac_dst` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:508:40 [INFO] [stdout] | [INFO] [stdout] 508 | Ipv4Addr::from_str(&ip_src).unwrap(), [INFO] [stdout] | ^^^^^^^ help: change this to: `ip_src` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:510:40 [INFO] [stdout] | [INFO] [stdout] 510 | Ipv4Addr::from_str(&ip_dst).unwrap(), [INFO] [stdout] | ^^^^^^^ help: change this to: `ip_dst` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:511:39 [INFO] [stdout] | [INFO] [stdout] 511 | MacAddr::from_str(&mac_dst).unwrap(), [INFO] [stdout] | ^^^^^^^^ help: change this to: `mac_dst` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:512:40 [INFO] [stdout] | [INFO] [stdout] 512 | Ipv4Addr::from_str(&server_ip).unwrap(), [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `server_ip` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> src/main.rs:513:21 [INFO] [stdout] | [INFO] [stdout] 513 | / match target_server_mac { [INFO] [stdout] 514 | | Some(x) => Some(MacAddr::from_str(x).unwrap()), [INFO] [stdout] 515 | | None => None, [INFO] [stdout] 516 | | }, [INFO] [stdout] | |_____________________^ help: try: `target_server_mac.as_ref().map(|x| MacAddr::from_str(x).unwrap())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] = note: `#[warn(clippy::manual_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:481:36 [INFO] [stdout] | [INFO] [stdout] 481 | Ipv4Addr::from_str(&ip_src).unwrap(), [INFO] [stdout] | ^^^^^^^ help: change this to: `ip_src` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:482:35 [INFO] [stdout] | [INFO] [stdout] 482 | MacAddr::from_str(&mac_src).unwrap(), [INFO] [stdout] | ^^^^^^^^ help: change this to: `mac_src` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:483:36 [INFO] [stdout] | [INFO] [stdout] 483 | Ipv4Addr::from_str(&ip_dst).unwrap(), [INFO] [stdout] | ^^^^^^^ help: change this to: `ip_dst` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:484:35 [INFO] [stdout] | [INFO] [stdout] 484 | MacAddr::from_str(&mac_dst).unwrap(), [INFO] [stdout] | ^^^^^^^^ help: change this to: `mac_dst` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:508:40 [INFO] [stdout] | [INFO] [stdout] 508 | Ipv4Addr::from_str(&ip_src).unwrap(), [INFO] [stdout] | ^^^^^^^ help: change this to: `ip_src` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:510:40 [INFO] [stdout] | [INFO] [stdout] 510 | Ipv4Addr::from_str(&ip_dst).unwrap(), [INFO] [stdout] | ^^^^^^^ help: change this to: `ip_dst` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:511:39 [INFO] [stdout] | [INFO] [stdout] 511 | MacAddr::from_str(&mac_dst).unwrap(), [INFO] [stdout] | ^^^^^^^^ help: change this to: `mac_dst` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:512:40 [INFO] [stdout] | [INFO] [stdout] 512 | Ipv4Addr::from_str(&server_ip).unwrap(), [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `server_ip` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> src/main.rs:513:21 [INFO] [stdout] | [INFO] [stdout] 513 | / match target_server_mac { [INFO] [stdout] 514 | | Some(x) => Some(MacAddr::from_str(x).unwrap()), [INFO] [stdout] 515 | | None => None, [INFO] [stdout] 516 | | }, [INFO] [stdout] | |_____________________^ help: try: `target_server_mac.as_ref().map(|x| MacAddr::from_str(x).unwrap())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] = note: `#[warn(clippy::manual_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 14.95s [INFO] running `Command { std: "docker" "inspect" "9839fdadaf54d34bcdc8c81c384d6f0d0f6f85e4624f08df4ceccfb2e82b2d82", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9839fdadaf54d34bcdc8c81c384d6f0d0f6f85e4624f08df4ceccfb2e82b2d82", kill_on_drop: false }` [INFO] [stdout] 9839fdadaf54d34bcdc8c81c384d6f0d0f6f85e4624f08df4ceccfb2e82b2d82