[INFO] crate pnet_datalink 0.21.0 is already in cache [INFO] extracting crate pnet_datalink 0.21.0 into work/ex/clippy-test-run/sources/stable/reg/pnet_datalink/0.21.0 [INFO] extracting crate pnet_datalink 0.21.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/pnet_datalink/0.21.0 [INFO] validating manifest of pnet_datalink-0.21.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 pnet_datalink-0.21.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 pnet_datalink-0.21.0 [INFO] finished frobbing pnet_datalink-0.21.0 [INFO] frobbed toml for pnet_datalink-0.21.0 written to work/ex/clippy-test-run/sources/stable/reg/pnet_datalink/0.21.0/Cargo.toml [INFO] started frobbing pnet_datalink-0.21.0 [INFO] finished frobbing pnet_datalink-0.21.0 [INFO] frobbed toml for pnet_datalink-0.21.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/pnet_datalink/0.21.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 pnet_datalink-0.21.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/pnet_datalink/0.21.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] b2ba1426fb798f015716b4dc30b942e0685266775c7a37c702638e5bd2a3749b [INFO] running `"docker" "start" "-a" "b2ba1426fb798f015716b4dc30b942e0685266775c7a37c702638e5bd2a3749b"` [INFO] [stderr] Checking pnet_sys v0.21.0 [INFO] [stderr] Checking pnet_datalink v0.21.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/unix_interfaces.rs:53:17 [INFO] [stderr] | [INFO] [stderr] 53 | mac: mac, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `mac` [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/unix_interfaces.rs:53:17 [INFO] [stderr] | [INFO] [stderr] 53 | mac: mac, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `mac` [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/dummy.rs:45:13 [INFO] [stderr] | [INFO] [stderr] 45 | receiver: receiver, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `receiver` [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/dummy.rs:47:13 [INFO] [stderr] | [INFO] [stderr] 47 | sender: sender, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `sender` [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/unix_interfaces.rs:53:17 [INFO] [stderr] | [INFO] [stderr] 53 | mac: mac, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `mac` [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/unix_interfaces.rs:53:17 [INFO] [stderr] | [INFO] [stderr] 53 | mac: mac, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `mac` [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/dummy.rs:45:13 [INFO] [stderr] | [INFO] [stderr] 45 | receiver: receiver, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `receiver` [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/dummy.rs:47:13 [INFO] [stderr] | [INFO] [stderr] 47 | sender: sender, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `sender` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/linux.rs:210:24 [INFO] [stderr] | [INFO] [stderr] 210 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 211 | | if let Err(e) = pnet_sys::send_to(self.socket.fd, [INFO] [stderr] 212 | | chunk, [INFO] [stderr] 213 | | send_addr, [INFO] [stderr] ... | [INFO] [stderr] 216 | | } [INFO] [stderr] 217 | | } [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] 210 | } else if let Err(e) = pnet_sys::send_to(self.socket.fd, [INFO] [stderr] 211 | chunk, [INFO] [stderr] 212 | send_addr, [INFO] [stderr] 213 | self.send_addr_len as libc::socklen_t) { [INFO] [stderr] 214 | return Some(Err(e)); [INFO] [stderr] 215 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/linux.rs:306:5 [INFO] [stderr] | [INFO] [stderr] 306 | mod interfaces; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/linux.rs:210:24 [INFO] [stderr] | [INFO] [stderr] 210 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 211 | | if let Err(e) = pnet_sys::send_to(self.socket.fd, [INFO] [stderr] 212 | | chunk, [INFO] [stderr] 213 | | send_addr, [INFO] [stderr] ... | [INFO] [stderr] 216 | | } [INFO] [stderr] 217 | | } [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] 210 | } else if let Err(e) = pnet_sys::send_to(self.socket.fd, [INFO] [stderr] 211 | chunk, [INFO] [stderr] 212 | send_addr, [INFO] [stderr] 213 | self.send_addr_len as libc::socklen_t) { [INFO] [stderr] 214 | return Some(Err(e)); [INFO] [stderr] 215 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/linux.rs:306:5 [INFO] [stderr] | [INFO] [stderr] 306 | mod interfaces; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/lib.rs:237:24 [INFO] [stderr] | [INFO] [stderr] 237 | const FLAGS: [&'static str; 5] = ["UP", "BROADCAST", "LOOPBACK", "POINTOPOINT", "MULTICAST"]; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/linux.rs:210:24 [INFO] [stderr] | [INFO] [stderr] 210 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 211 | | if let Err(e) = pnet_sys::send_to(self.socket.fd, [INFO] [stderr] 212 | | chunk, [INFO] [stderr] 213 | | send_addr, [INFO] [stderr] ... | [INFO] [stderr] 216 | | } [INFO] [stderr] 217 | | } [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] 210 | } else if let Err(e) = pnet_sys::send_to(self.socket.fd, [INFO] [stderr] 211 | chunk, [INFO] [stderr] 212 | send_addr, [INFO] [stderr] 213 | self.send_addr_len as libc::socklen_t) { [INFO] [stderr] 214 | return Some(Err(e)); [INFO] [stderr] 215 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/linux.rs:306:5 [INFO] [stderr] | [INFO] [stderr] 306 | mod interfaces; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/linux.rs:210:24 [INFO] [stderr] | [INFO] [stderr] 210 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 211 | | if let Err(e) = pnet_sys::send_to(self.socket.fd, [INFO] [stderr] 212 | | chunk, [INFO] [stderr] 213 | | send_addr, [INFO] [stderr] ... | [INFO] [stderr] 216 | | } [INFO] [stderr] 217 | | } [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] 210 | } else if let Err(e) = pnet_sys::send_to(self.socket.fd, [INFO] [stderr] 211 | chunk, [INFO] [stderr] 212 | send_addr, [INFO] [stderr] 213 | self.send_addr_len as libc::socklen_t) { [INFO] [stderr] 214 | return Some(Err(e)); [INFO] [stderr] 215 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/linux.rs:306:5 [INFO] [stderr] | [INFO] [stderr] 306 | mod interfaces; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/lib.rs:237:24 [INFO] [stderr] | [INFO] [stderr] 237 | const FLAGS: [&'static str; 5] = ["UP", "BROADCAST", "LOOPBACK", "POINTOPOINT", "MULTICAST"]; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer to a pointer [INFO] [stderr] --> src/linux.rs:32:43 [INFO] [stderr] | [INFO] [stderr] 32 | let sll: *mut libc::sockaddr_ll = mem::transmute(storage); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `storage as *mut libc::sockaddr_ll` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_ptr_to_ptr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/linux.rs:99:62 [INFO] [stderr] | [INFO] [stderr] 99 | let socket = unsafe { libc::socket(libc::AF_PACKET, typ, proto.to_be() as i32) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(proto.to_be())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/linux.rs:104:70 [INFO] [stderr] | [INFO] [stderr] 104 | let len = network_addr_to_sockaddr(network_interface, &mut addr, proto as i32); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `i32::from(proto)` [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] error: casting from `*const libc::sockaddr` to a more-strictly-aligned pointer (`*const libc::sockaddr_ll`) [INFO] [stderr] --> src/linux.rs:149:30 [INFO] [stderr] | [INFO] [stderr] 149 | send_addr: unsafe { *(send_addr as *const libc::sockaddr_ll) }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::cast_ptr_alignment)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/linux.rs:151:43 [INFO] [stderr] | [INFO] [stderr] 151 | timeout: config.write_timeout.map(|to| pnet_sys::duration_to_timespec(to)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `pnet_sys::duration_to_timespec` [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/linux.rs:158:42 [INFO] [stderr] | [INFO] [stderr] 158 | timeout: config.read_timeout.map(|to| pnet_sys::duration_to_timespec(to)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `pnet_sys::duration_to_timespec` [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: manual implementation of an assign operation [INFO] [stderr] --> src/unix_interfaces.rs:32:9 [INFO] [stderr] | [INFO] [stderr] 32 | old.flags = old.flags | new.flags; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `old.flags |= new.flags` [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: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/unix_interfaces.rs:88:19 [INFO] [stderr] | [INFO] [stderr] 88 | } else if (*sa).sa_family as libc::c_int == libc::AF_PACKET { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from((*sa).sa_family)` [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: transmute from a pointer to a pointer [INFO] [stderr] --> src/unix_interfaces.rs:89:49 [INFO] [stderr] | [INFO] [stderr] 89 | let sll: *const libc::sockaddr_ll = mem::transmute(sa); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `sa as *const libc::sockaddr_ll` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*const libc::sockaddr`) to a reference type (`&libc::sockaddr_storage`) [INFO] [stderr] --> src/unix_interfaces.rs:100:17 [INFO] [stderr] | [INFO] [stderr] 100 | mem::transmute(sa), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `&*(sa as *const libc::sockaddr_storage)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_ptr_to_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer to a pointer [INFO] [stderr] --> src/linux.rs:32:43 [INFO] [stderr] | [INFO] [stderr] 32 | let sll: *mut libc::sockaddr_ll = mem::transmute(storage); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `storage as *mut libc::sockaddr_ll` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/linux.rs:99:62 [INFO] [stderr] | [INFO] [stderr] 99 | let socket = unsafe { libc::socket(libc::AF_PACKET, typ, proto.to_be() as i32) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(proto.to_be())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/linux.rs:104:70 [INFO] [stderr] | [INFO] [stderr] 104 | let len = network_addr_to_sockaddr(network_interface, &mut addr, proto as i32); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `i32::from(proto)` [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] error: casting from `*const libc::sockaddr` to a more-strictly-aligned pointer (`*const libc::sockaddr_ll`) [INFO] [stderr] --> src/linux.rs:149:30 [INFO] [stderr] | [INFO] [stderr] 149 | send_addr: unsafe { *(send_addr as *const libc::sockaddr_ll) }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/linux.rs:151:43 [INFO] [stderr] | [INFO] [stderr] 151 | timeout: config.write_timeout.map(|to| pnet_sys::duration_to_timespec(to)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `pnet_sys::duration_to_timespec` [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/linux.rs:158:42 [INFO] [stderr] | [INFO] [stderr] 158 | timeout: config.read_timeout.map(|to| pnet_sys::duration_to_timespec(to)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `pnet_sys::duration_to_timespec` [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: manual implementation of an assign operation [INFO] [stderr] --> src/unix_interfaces.rs:32:9 [INFO] [stderr] | [INFO] [stderr] 32 | old.flags = old.flags | new.flags; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `old.flags |= new.flags` [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 u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/unix_interfaces.rs:88:19 [INFO] [stderr] | [INFO] [stderr] 88 | } else if (*sa).sa_family as libc::c_int == libc::AF_PACKET { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from((*sa).sa_family)` [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: transmute from a pointer to a pointer [INFO] [stderr] --> src/unix_interfaces.rs:89:49 [INFO] [stderr] | [INFO] [stderr] 89 | let sll: *const libc::sockaddr_ll = mem::transmute(sa); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `sa as *const libc::sockaddr_ll` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*const libc::sockaddr`) to a reference type (`&libc::sockaddr_storage`) [INFO] [stderr] --> src/unix_interfaces.rs:100:17 [INFO] [stderr] | [INFO] [stderr] 100 | mem::transmute(sa), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `&*(sa as *const libc::sockaddr_storage)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/dummy.rs:162:16 [INFO] [stderr] | [INFO] [stderr] 162 | (0..3).map(|i| dummy_interface(i)).collect() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `dummy_interface` [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/dummy.rs:172:16 [INFO] [stderr] | [INFO] [stderr] 172 | index: i as u32, [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(i)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: use of `#[inline]` on trait method `build_and_send` which has no body [INFO] [stderr] --> src/lib.rs:166:5 [INFO] [stderr] | [INFO] [stderr] 166 | #[inline] [INFO] [stderr] | _____-^^^^^^^^ [INFO] [stderr] 167 | | fn build_and_send(&mut self, [INFO] [stderr] | |____- help: remove [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::inline_fn_without_body)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#inline_fn_without_body [INFO] [stderr] [INFO] [stderr] error: use of `#[inline]` on trait method `send_to` which has no body [INFO] [stderr] --> src/lib.rs:178:5 [INFO] [stderr] | [INFO] [stderr] 178 | #[inline] [INFO] [stderr] | _____-^^^^^^^^ [INFO] [stderr] 179 | | fn send_to(&mut self, [INFO] [stderr] | |____- help: remove [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#inline_fn_without_body [INFO] [stderr] [INFO] [stderr] error: use of `#[inline]` on trait method `next` which has no body [INFO] [stderr] --> src/lib.rs:189:5 [INFO] [stderr] | [INFO] [stderr] 189 | #[inline] [INFO] [stderr] | _____-^^^^^^^^ [INFO] [stderr] 190 | | /// Get the next Ethernet frame in the channel [INFO] [stderr] | |____- help: remove [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#inline_fn_without_body [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/lib.rs:258:22 [INFO] [stderr] | [INFO] [stderr] 258 | .unwrap_or("N/A".to_owned()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "N/A".to_owned())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:259:22 [INFO] [stderr] | [INFO] [stderr] 259 | let ips = if self.ips.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.ips.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] error: aborting due to 5 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `pnet_datalink`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: transmute from a pointer to a pointer [INFO] [stderr] --> src/linux.rs:32:43 [INFO] [stderr] | [INFO] [stderr] 32 | let sll: *mut libc::sockaddr_ll = mem::transmute(storage); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `storage as *mut libc::sockaddr_ll` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_ptr_to_ptr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/linux.rs:99:62 [INFO] [stderr] | [INFO] [stderr] 99 | let socket = unsafe { libc::socket(libc::AF_PACKET, typ, proto.to_be() as i32) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(proto.to_be())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/linux.rs:104:70 [INFO] [stderr] | [INFO] [stderr] 104 | let len = network_addr_to_sockaddr(network_interface, &mut addr, proto as i32); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `i32::from(proto)` [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] error: casting from `*const libc::sockaddr` to a more-strictly-aligned pointer (`*const libc::sockaddr_ll`) [INFO] [stderr] --> src/linux.rs:149:30 [INFO] [stderr] | [INFO] [stderr] 149 | send_addr: unsafe { *(send_addr as *const libc::sockaddr_ll) }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::cast_ptr_alignment)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/linux.rs:151:43 [INFO] [stderr] | [INFO] [stderr] 151 | timeout: config.write_timeout.map(|to| pnet_sys::duration_to_timespec(to)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `pnet_sys::duration_to_timespec` [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/linux.rs:158:42 [INFO] [stderr] | [INFO] [stderr] 158 | timeout: config.read_timeout.map(|to| pnet_sys::duration_to_timespec(to)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `pnet_sys::duration_to_timespec` [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: manual implementation of an assign operation [INFO] [stderr] --> src/unix_interfaces.rs:32:9 [INFO] [stderr] | [INFO] [stderr] 32 | old.flags = old.flags | new.flags; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `old.flags |= new.flags` [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: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/unix_interfaces.rs:88:19 [INFO] [stderr] | [INFO] [stderr] 88 | } else if (*sa).sa_family as libc::c_int == libc::AF_PACKET { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from((*sa).sa_family)` [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: transmute from a pointer to a pointer [INFO] [stderr] --> src/unix_interfaces.rs:89:49 [INFO] [stderr] | [INFO] [stderr] 89 | let sll: *const libc::sockaddr_ll = mem::transmute(sa); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `sa as *const libc::sockaddr_ll` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*const libc::sockaddr`) to a reference type (`&libc::sockaddr_storage`) [INFO] [stderr] --> src/unix_interfaces.rs:100:17 [INFO] [stderr] | [INFO] [stderr] 100 | mem::transmute(sa), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `&*(sa as *const libc::sockaddr_storage)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_ptr_to_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer to a pointer [INFO] [stderr] --> src/linux.rs:32:43 [INFO] [stderr] | [INFO] [stderr] 32 | let sll: *mut libc::sockaddr_ll = mem::transmute(storage); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `storage as *mut libc::sockaddr_ll` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/linux.rs:99:62 [INFO] [stderr] | [INFO] [stderr] 99 | let socket = unsafe { libc::socket(libc::AF_PACKET, typ, proto.to_be() as i32) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(proto.to_be())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/linux.rs:104:70 [INFO] [stderr] | [INFO] [stderr] 104 | let len = network_addr_to_sockaddr(network_interface, &mut addr, proto as i32); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `i32::from(proto)` [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] error: casting from `*const libc::sockaddr` to a more-strictly-aligned pointer (`*const libc::sockaddr_ll`) [INFO] [stderr] --> src/linux.rs:149:30 [INFO] [stderr] | [INFO] [stderr] 149 | send_addr: unsafe { *(send_addr as *const libc::sockaddr_ll) }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/linux.rs:151:43 [INFO] [stderr] | [INFO] [stderr] 151 | timeout: config.write_timeout.map(|to| pnet_sys::duration_to_timespec(to)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `pnet_sys::duration_to_timespec` [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/linux.rs:158:42 [INFO] [stderr] | [INFO] [stderr] 158 | timeout: config.read_timeout.map(|to| pnet_sys::duration_to_timespec(to)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `pnet_sys::duration_to_timespec` [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: manual implementation of an assign operation [INFO] [stderr] --> src/unix_interfaces.rs:32:9 [INFO] [stderr] | [INFO] [stderr] 32 | old.flags = old.flags | new.flags; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `old.flags |= new.flags` [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 u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/unix_interfaces.rs:88:19 [INFO] [stderr] | [INFO] [stderr] 88 | } else if (*sa).sa_family as libc::c_int == libc::AF_PACKET { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from((*sa).sa_family)` [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: transmute from a pointer to a pointer [INFO] [stderr] --> src/unix_interfaces.rs:89:49 [INFO] [stderr] | [INFO] [stderr] 89 | let sll: *const libc::sockaddr_ll = mem::transmute(sa); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `sa as *const libc::sockaddr_ll` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*const libc::sockaddr`) to a reference type (`&libc::sockaddr_storage`) [INFO] [stderr] --> src/unix_interfaces.rs:100:17 [INFO] [stderr] | [INFO] [stderr] 100 | mem::transmute(sa), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `&*(sa as *const libc::sockaddr_storage)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/dummy.rs:162:16 [INFO] [stderr] | [INFO] [stderr] 162 | (0..3).map(|i| dummy_interface(i)).collect() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `dummy_interface` [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/dummy.rs:172:16 [INFO] [stderr] | [INFO] [stderr] 172 | index: i as u32, [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(i)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/dummy.rs:299:12 [INFO] [stderr] | [INFO] [stderr] 299 | -> (Sender>>, [INFO] [stderr] | ____________^ [INFO] [stderr] 300 | | Receiver>, [INFO] [stderr] 301 | | Box, [INFO] [stderr] 302 | | Box) { [INFO] [stderr] | |__________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] error: use of `#[inline]` on trait method `build_and_send` which has no body [INFO] [stderr] --> src/lib.rs:166:5 [INFO] [stderr] | [INFO] [stderr] 166 | #[inline] [INFO] [stderr] | _____-^^^^^^^^ [INFO] [stderr] 167 | | fn build_and_send(&mut self, [INFO] [stderr] | |____- help: remove [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::inline_fn_without_body)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#inline_fn_without_body [INFO] [stderr] [INFO] [stderr] error: use of `#[inline]` on trait method `send_to` which has no body [INFO] [stderr] --> src/lib.rs:178:5 [INFO] [stderr] | [INFO] [stderr] 178 | #[inline] [INFO] [stderr] | _____-^^^^^^^^ [INFO] [stderr] 179 | | fn send_to(&mut self, [INFO] [stderr] | |____- help: remove [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#inline_fn_without_body [INFO] [stderr] [INFO] [stderr] error: use of `#[inline]` on trait method `next` which has no body [INFO] [stderr] --> src/lib.rs:189:5 [INFO] [stderr] | [INFO] [stderr] 189 | #[inline] [INFO] [stderr] | _____-^^^^^^^^ [INFO] [stderr] 190 | | /// Get the next Ethernet frame in the channel [INFO] [stderr] | |____- help: remove [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#inline_fn_without_body [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/lib.rs:258:22 [INFO] [stderr] | [INFO] [stderr] 258 | .unwrap_or("N/A".to_owned()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "N/A".to_owned())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:259:22 [INFO] [stderr] | [INFO] [stderr] 259 | let ips = if self.ips.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.ips.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] error: aborting due to 5 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `pnet_datalink`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "b2ba1426fb798f015716b4dc30b942e0685266775c7a37c702638e5bd2a3749b"` [INFO] running `"docker" "rm" "-f" "b2ba1426fb798f015716b4dc30b942e0685266775c7a37c702638e5bd2a3749b"` [INFO] [stdout] b2ba1426fb798f015716b4dc30b942e0685266775c7a37c702638e5bd2a3749b