[INFO] crate interfaces 0.0.4 is already in cache [INFO] extracting crate interfaces 0.0.4 into work/ex/clippy-test-run/sources/stable/reg/interfaces/0.0.4 [INFO] extracting crate interfaces 0.0.4 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/interfaces/0.0.4 [INFO] validating manifest of interfaces-0.0.4 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of interfaces-0.0.4 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing interfaces-0.0.4 [INFO] finished frobbing interfaces-0.0.4 [INFO] frobbed toml for interfaces-0.0.4 written to work/ex/clippy-test-run/sources/stable/reg/interfaces/0.0.4/Cargo.toml [INFO] started frobbing interfaces-0.0.4 [INFO] finished frobbing interfaces-0.0.4 [INFO] frobbed toml for interfaces-0.0.4 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/interfaces/0.0.4/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting interfaces-0.0.4 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/interfaces/0.0.4:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 3f6b418321c5bd5879647206454f9375944ea5b42d00471a84b5c42ce747d574 [INFO] running `"docker" "start" "-a" "3f6b418321c5bd5879647206454f9375944ea5b42d00471a84b5c42ce747d574"` [INFO] [stderr] Compiling pest v0.3.3 [INFO] [stderr] Compiling handlebars v0.29.1 [INFO] [stderr] Compiling interfaces v0.0.4 (/opt/crater/workdir) [INFO] [stderr] warning: use of deprecated item 'gcc::Build': crate has been renamed to `cc`, the `gcc` name is not maintained [INFO] [stderr] --> build.rs:26:19 [INFO] [stderr] | [INFO] [stderr] 26 | let mut cfg = gcc::Build::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'gcc::Build::new': crate has been renamed to `cc`, the `gcc` name is not maintained [INFO] [stderr] --> build.rs:26:19 [INFO] [stderr] | [INFO] [stderr] 26 | let mut cfg = gcc::Build::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:200:13 [INFO] [stderr] | [INFO] [stderr] 200 | ifap: ifap, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `ifap` [INFO] [stderr] --> src/lib.rs:200:13 [INFO] [stderr] | [INFO] [stderr] 200 | ifap: ifap, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `ifap` [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/lib.rs:348:13 [INFO] [stderr] | [INFO] [stderr] 348 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [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/lib.rs:350:13 [INFO] [stderr] | [INFO] [stderr] 350 | flags: flags, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `flags` [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/lib.rs:351:13 [INFO] [stderr] | [INFO] [stderr] 351 | sock: sock, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `sock` [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/lib.rs:592:9 [INFO] [stderr] | [INFO] [stderr] 592 | kind: kind, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `kind` [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] | [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/lib.rs:593:9 [INFO] [stderr] | [INFO] [stderr] 593 | addr: addr, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `addr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:594:9 [INFO] [stderr] | [INFO] [stderr] 594 | mask: mask, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `mask` [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/lib.rs:595:9 [INFO] [stderr] | [INFO] [stderr] 595 | hop: hop, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `hop` [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/lib.rs:348:13 [INFO] [stderr] | [INFO] [stderr] 348 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [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/lib.rs:350:13 [INFO] [stderr] | [INFO] [stderr] 350 | flags: flags, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `flags` [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/lib.rs:351:13 [INFO] [stderr] | [INFO] [stderr] 351 | sock: sock, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `sock` [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/lib.rs:592:9 [INFO] [stderr] | [INFO] [stderr] 592 | kind: kind, [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/lib.rs:593:9 [INFO] [stderr] | [INFO] [stderr] 593 | addr: addr, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `addr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:594:9 [INFO] [stderr] | [INFO] [stderr] 594 | mask: mask, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `mask` [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/lib.rs:595:9 [INFO] [stderr] | [INFO] [stderr] 595 | hop: hop, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `hop` [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/constants.rs:63:9 [INFO] [stderr] | [INFO] [stderr] 63 | ret [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/constants.rs:53:19 [INFO] [stderr] | [INFO] [stderr] 53 | let ret = cvals [INFO] [stderr] | ___________________^ [INFO] [stderr] 54 | | .into_iter() [INFO] [stderr] 55 | | .map(|v| { [INFO] [stderr] 56 | | // HashMap has a from_iter method that accepts (key, value) tuples. [INFO] [stderr] ... | [INFO] [stderr] 61 | | }) [INFO] [stderr] 62 | | .collect::>(); [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/error.rs:24:9 [INFO] [stderr] | [INFO] [stderr] 24 | return InterfacesError::Errno(nix::errno::Errno::last()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `InterfacesError::Errno(nix::errno::Errno::last())` [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/ffi.rs:73:58 [INFO] [stderr] | [INFO] [stderr] 73 | (net::IpAddr::V4(net::Ipv4Addr::new(((addr & 0x000000FF) >> 0) as u8, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_00FF` [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/ffi.rs:74:58 [INFO] [stderr] | [INFO] [stderr] 74 | ((addr & 0x0000FF00) >> 8) as u8, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_FF00` [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/ffi.rs:75:58 [INFO] [stderr] | [INFO] [stderr] 75 | ((addr & 0x00FF0000) >> 16) as u8, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x00FF_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/ffi.rs:76:58 [INFO] [stderr] | [INFO] [stderr] 76 | ((addr & 0xFF000000) >> 24) as u8)), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xFF00_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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/constants.rs:63:9 [INFO] [stderr] | [INFO] [stderr] 63 | ret [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/constants.rs:53:19 [INFO] [stderr] | [INFO] [stderr] 53 | let ret = cvals [INFO] [stderr] | ___________________^ [INFO] [stderr] 54 | | .into_iter() [INFO] [stderr] 55 | | .map(|v| { [INFO] [stderr] 56 | | // HashMap has a from_iter method that accepts (key, value) tuples. [INFO] [stderr] ... | [INFO] [stderr] 61 | | }) [INFO] [stderr] 62 | | .collect::>(); [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/error.rs:24:9 [INFO] [stderr] | [INFO] [stderr] 24 | return InterfacesError::Errno(nix::errno::Errno::last()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `InterfacesError::Errno(nix::errno::Errno::last())` [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/ffi.rs:73:58 [INFO] [stderr] | [INFO] [stderr] 73 | (net::IpAddr::V4(net::Ipv4Addr::new(((addr & 0x000000FF) >> 0) as u8, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_00FF` [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/ffi.rs:74:58 [INFO] [stderr] | [INFO] [stderr] 74 | ((addr & 0x0000FF00) >> 8) as u8, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_FF00` [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/ffi.rs:75:58 [INFO] [stderr] | [INFO] [stderr] 75 | ((addr & 0x00FF0000) >> 16) as u8, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x00FF_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/ffi.rs:76:58 [INFO] [stderr] | [INFO] [stderr] 76 | ((addr & 0xFF000000) >> 24) as u8)), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xFF00_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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/constants.rs:69:5 [INFO] [stderr] | [INFO] [stderr] 69 | CONSTANTS.get(name.as_ref()).map(|v| *v) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `CONSTANTS.get(name.as_ref()).cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/ffi.rs:60:5 [INFO] [stderr] | [INFO] [stderr] 60 | (lo as u16) | ((hi as u16) << 8) [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u16::from(lo)` [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 u16 may become silently lossy if types change [INFO] [stderr] --> src/ffi.rs:60:20 [INFO] [stderr] | [INFO] [stderr] 60 | (lo as u16) | ((hi as u16) << 8) [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u16::from(hi)` [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: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/ffi.rs:64:8 [INFO] [stderr] | [INFO] [stderr] 64 | if sa == ptr::null_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_null)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/ffi.rs:68:50 [INFO] [stderr] | [INFO] [stderr] 68 | let (addr, port, flowinfo, scope_id) = match unsafe { *sa }.sa_family as i32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(unsafe { *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/ffi.rs:70:59 [INFO] [stderr] | [INFO] [stderr] 70 | let sa: *const socket::sockaddr_in = unsafe { mem::transmute(sa) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `sa as *const libc::sockaddr_in` [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: the operation is ineffective. Consider reducing it to `(addr & 0x000000FF)` [INFO] [stderr] --> src/ffi.rs:73:49 [INFO] [stderr] | [INFO] [stderr] 73 | (net::IpAddr::V4(net::Ipv4Addr::new(((addr & 0x000000FF) >> 0) 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: transmute from a pointer to a pointer [INFO] [stderr] --> src/ffi.rs:80:60 [INFO] [stderr] | [INFO] [stderr] 80 | let sa: *const socket::sockaddr_in6 = unsafe { mem::transmute(sa) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `sa as *const libc::sockaddr_in6` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib.rs:131:22 [INFO] [stderr] | [INFO] [stderr] 131 | pub fn as_string(&self) -> String { [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/lib.rs:152:27 [INFO] [stderr] | [INFO] [stderr] 152 | pub fn as_bare_string(&self) -> String { [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 loop variable `i` is used to index `addr` [INFO] [stderr] --> src/lib.rs:395:18 [INFO] [stderr] | [INFO] [stderr] 395 | for i 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] 395 | for (i, ) in addr.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/lib.rs:395:18 [INFO] [stderr] | [INFO] [stderr] 395 | for i in 0..6 { [INFO] [stderr] | ^^^^ help: try replacing the loop by: `addr[..6].clone_from_slice(&req.ifr_hwaddr.sa_data[..6])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_memcpy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:500:57 [INFO] [stderr] | [INFO] [stderr] 500 | self.flags = InterfaceFlags::from_bits_truncate(req.ifr_flags as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(req.ifr_flags)` [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: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/lib.rs:567:19 [INFO] [stderr] | [INFO] [stderr] 567 | let kind = if ifa.ifa_addr != ptr::null_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:568:19 [INFO] [stderr] | [INFO] [stderr] 568 | let fam = unsafe { *ifa.ifa_addr }.sa_family as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(unsafe { *ifa.ifa_addr }.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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/constants.rs:69:5 [INFO] [stderr] | [INFO] [stderr] 69 | CONSTANTS.get(name.as_ref()).map(|v| *v) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `CONSTANTS.get(name.as_ref()).cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/ffi.rs:60:5 [INFO] [stderr] | [INFO] [stderr] 60 | (lo as u16) | ((hi as u16) << 8) [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u16::from(lo)` [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 u16 may become silently lossy if types change [INFO] [stderr] --> src/ffi.rs:60:20 [INFO] [stderr] | [INFO] [stderr] 60 | (lo as u16) | ((hi as u16) << 8) [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u16::from(hi)` [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: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/ffi.rs:64:8 [INFO] [stderr] | [INFO] [stderr] 64 | if sa == ptr::null_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_null)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/ffi.rs:68:50 [INFO] [stderr] | [INFO] [stderr] 68 | let (addr, port, flowinfo, scope_id) = match unsafe { *sa }.sa_family as i32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(unsafe { *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/ffi.rs:70:59 [INFO] [stderr] | [INFO] [stderr] 70 | let sa: *const socket::sockaddr_in = unsafe { mem::transmute(sa) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `sa as *const libc::sockaddr_in` [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: the operation is ineffective. Consider reducing it to `(addr & 0x000000FF)` [INFO] [stderr] --> src/ffi.rs:73:49 [INFO] [stderr] | [INFO] [stderr] 73 | (net::IpAddr::V4(net::Ipv4Addr::new(((addr & 0x000000FF) >> 0) 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: transmute from a pointer to a pointer [INFO] [stderr] --> src/ffi.rs:80:60 [INFO] [stderr] | [INFO] [stderr] 80 | let sa: *const socket::sockaddr_in6 = unsafe { mem::transmute(sa) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `sa as *const libc::sockaddr_in6` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib.rs:131:22 [INFO] [stderr] | [INFO] [stderr] 131 | pub fn as_string(&self) -> String { [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/lib.rs:152:27 [INFO] [stderr] | [INFO] [stderr] 152 | pub fn as_bare_string(&self) -> String { [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 loop variable `i` is used to index `addr` [INFO] [stderr] --> src/lib.rs:395:18 [INFO] [stderr] | [INFO] [stderr] 395 | for i 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] 395 | for (i, ) in addr.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/lib.rs:395:18 [INFO] [stderr] | [INFO] [stderr] 395 | for i in 0..6 { [INFO] [stderr] | ^^^^ help: try replacing the loop by: `addr[..6].clone_from_slice(&req.ifr_hwaddr.sa_data[..6])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_memcpy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:500:57 [INFO] [stderr] | [INFO] [stderr] 500 | self.flags = InterfaceFlags::from_bits_truncate(req.ifr_flags as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(req.ifr_flags)` [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: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/lib.rs:567:19 [INFO] [stderr] | [INFO] [stderr] 567 | let kind = if ifa.ifa_addr != ptr::null_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:568:19 [INFO] [stderr] | [INFO] [stderr] 568 | let fam = unsafe { *ifa.ifa_addr }.sa_family as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(unsafe { *ifa.ifa_addr }.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] error: equal expressions as operands to `==` [INFO] [stderr] --> src/lib.rs:636:17 [INFO] [stderr] | [INFO] [stderr] 636 | assert!(ifs[0] == ifs[0]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::eq_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eq_op [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `interfaces`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> examples/ifconfig-simple.rs:10:23 [INFO] [stderr] | [INFO] [stderr] 10 | const NAME_MAPPINGS: &'static [(flags::InterfaceFlags, &'static str)] = &[ [INFO] [stderr] | -^^^^^^^---------------------------------------- help: consider removing `'static`: `&[(flags::InterfaceFlags, &'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: Constants have by default a `'static` lifetime [INFO] [stderr] --> examples/ifconfig-simple.rs:10:57 [INFO] [stderr] | [INFO] [stderr] 10 | const NAME_MAPPINGS: &'static [(flags::InterfaceFlags, &'static str)] = &[ [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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] --> examples/ifconfig-simple.rs:68:16 [INFO] [stderr] | [INFO] [stderr] 68 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 69 | | if let Ok(addr) = i.hardware_addr() { [INFO] [stderr] 70 | | println!("{}ether {}", full_align, addr); [INFO] [stderr] 71 | | } [INFO] [stderr] 72 | | } [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] 68 | } else if let Ok(addr) = i.hardware_addr() { [INFO] [stderr] 69 | println!("{}ether {}", full_align, addr); [INFO] [stderr] 70 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> examples/ifconfig-simple.rs:92:5 [INFO] [stderr] | [INFO] [stderr] 92 | / match addr { [INFO] [stderr] 93 | | &net::SocketAddr::V4(ref a) => { [INFO] [stderr] 94 | | format!("{}", a.ip()) [INFO] [stderr] 95 | | }, [INFO] [stderr] ... | [INFO] [stderr] 98 | | }, [INFO] [stderr] 99 | | } [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] 92 | match *addr { [INFO] [stderr] 93 | net::SocketAddr::V4(ref a) => { [INFO] [stderr] 94 | format!("{}", a.ip()) [INFO] [stderr] 95 | }, [INFO] [stderr] 96 | net::SocketAddr::V6(ref a) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: build failed [INFO] running `"docker" "inspect" "3f6b418321c5bd5879647206454f9375944ea5b42d00471a84b5c42ce747d574"` [INFO] running `"docker" "rm" "-f" "3f6b418321c5bd5879647206454f9375944ea5b42d00471a84b5c42ce747d574"` [INFO] [stdout] 3f6b418321c5bd5879647206454f9375944ea5b42d00471a84b5c42ce747d574