[INFO] crate interfaces2 0.0.5 is already in cache [INFO] extracting crate interfaces2 0.0.5 into work/ex/clippy-test-run/sources/stable/reg/interfaces2/0.0.5 [INFO] extracting crate interfaces2 0.0.5 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/interfaces2/0.0.5 [INFO] validating manifest of interfaces2-0.0.5 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 interfaces2-0.0.5 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 interfaces2-0.0.5 [INFO] finished frobbing interfaces2-0.0.5 [INFO] frobbed toml for interfaces2-0.0.5 written to work/ex/clippy-test-run/sources/stable/reg/interfaces2/0.0.5/Cargo.toml [INFO] started frobbing interfaces2-0.0.5 [INFO] finished frobbing interfaces2-0.0.5 [INFO] frobbed toml for interfaces2-0.0.5 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/interfaces2/0.0.5/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 interfaces2-0.0.5 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/interfaces2/0.0.5:/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] 260bfd52c2bfed789afd28bc2e1430f526d94f6f0686c89d889da0b0174784ac [INFO] running `"docker" "start" "-a" "260bfd52c2bfed789afd28bc2e1430f526d94f6f0686c89d889da0b0174784ac"` [INFO] [stderr] Compiling handlebars v0.29.1 [INFO] [stderr] Compiling interfaces2 v0.0.5 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:190:13 [INFO] [stderr] | [INFO] [stderr] 190 | 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:338:13 [INFO] [stderr] | [INFO] [stderr] 338 | 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:340:13 [INFO] [stderr] | [INFO] [stderr] 340 | 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:341:13 [INFO] [stderr] | [INFO] [stderr] 341 | 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:582:9 [INFO] [stderr] | [INFO] [stderr] 582 | 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:583:9 [INFO] [stderr] | [INFO] [stderr] 583 | 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:584:9 [INFO] [stderr] | [INFO] [stderr] 584 | 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:585:9 [INFO] [stderr] | [INFO] [stderr] 585 | 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] --> src/lib.rs:190:13 [INFO] [stderr] | [INFO] [stderr] 190 | 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:338:13 [INFO] [stderr] | [INFO] [stderr] 338 | 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:340:13 [INFO] [stderr] | [INFO] [stderr] 340 | 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:341:13 [INFO] [stderr] | [INFO] [stderr] 341 | 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:582:9 [INFO] [stderr] | [INFO] [stderr] 582 | 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:583:9 [INFO] [stderr] | [INFO] [stderr] 583 | 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:584:9 [INFO] [stderr] | [INFO] [stderr] 584 | 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:585:9 [INFO] [stderr] | [INFO] [stderr] 585 | 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:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | 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:54:19 [INFO] [stderr] | [INFO] [stderr] 54 | let ret = cvals [INFO] [stderr] | ___________________^ [INFO] [stderr] 55 | | .into_iter() [INFO] [stderr] 56 | | .map(|v| { [INFO] [stderr] 57 | | // HashMap has a from_iter method that accepts (key, value) tuples. [INFO] [stderr] ... | [INFO] [stderr] 62 | | }) [INFO] [stderr] 63 | | .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:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | 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:54:19 [INFO] [stderr] | [INFO] [stderr] 54 | let ret = cvals [INFO] [stderr] | ___________________^ [INFO] [stderr] 55 | | .into_iter() [INFO] [stderr] 56 | | .map(|v| { [INFO] [stderr] 57 | | // HashMap has a from_iter method that accepts (key, value) tuples. [INFO] [stderr] ... | [INFO] [stderr] 62 | | }) [INFO] [stderr] 63 | | .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:70:5 [INFO] [stderr] | [INFO] [stderr] 70 | 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:129:22 [INFO] [stderr] | [INFO] [stderr] 129 | 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:146:27 [INFO] [stderr] | [INFO] [stderr] 146 | 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:385:18 [INFO] [stderr] | [INFO] [stderr] 385 | 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] 385 | 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:385:18 [INFO] [stderr] | [INFO] [stderr] 385 | 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:490:57 [INFO] [stderr] | [INFO] [stderr] 490 | 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:557:19 [INFO] [stderr] | [INFO] [stderr] 557 | 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:558:19 [INFO] [stderr] | [INFO] [stderr] 558 | 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:70:5 [INFO] [stderr] | [INFO] [stderr] 70 | 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:129:22 [INFO] [stderr] | [INFO] [stderr] 129 | 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:146:27 [INFO] [stderr] | [INFO] [stderr] 146 | 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:385:18 [INFO] [stderr] | [INFO] [stderr] 385 | 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] 385 | 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:385:18 [INFO] [stderr] | [INFO] [stderr] 385 | 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:490:57 [INFO] [stderr] | [INFO] [stderr] 490 | 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:557:19 [INFO] [stderr] | [INFO] [stderr] 557 | 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:558:19 [INFO] [stderr] | [INFO] [stderr] 558 | 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:625:17 [INFO] [stderr] | [INFO] [stderr] 625 | 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 `interfaces2`. [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:9:23 [INFO] [stderr] | [INFO] [stderr] 9 | 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:9:57 [INFO] [stderr] | [INFO] [stderr] 9 | 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:55:16 [INFO] [stderr] | [INFO] [stderr] 55 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 56 | | if let Ok(addr) = i.hardware_addr() { [INFO] [stderr] 57 | | println!("{}ether {}", full_align, addr); [INFO] [stderr] 58 | | } [INFO] [stderr] 59 | | } [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] 55 | } else if let Ok(addr) = i.hardware_addr() { [INFO] [stderr] 56 | println!("{}ether {}", full_align, addr); [INFO] [stderr] 57 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> examples/ifconfig-simple.rs:79:5 [INFO] [stderr] | [INFO] [stderr] 79 | / match addr { [INFO] [stderr] 80 | | &net::SocketAddr::V4(ref a) => format!("{}", a.ip()), [INFO] [stderr] 81 | | &net::SocketAddr::V6(ref a) => format!("{}", a.ip()), [INFO] [stderr] 82 | | } [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] 79 | match *addr { [INFO] [stderr] 80 | net::SocketAddr::V4(ref a) => format!("{}", a.ip()), [INFO] [stderr] 81 | net::SocketAddr::V6(ref a) => format!("{}", a.ip()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: build failed [INFO] running `"docker" "inspect" "260bfd52c2bfed789afd28bc2e1430f526d94f6f0686c89d889da0b0174784ac"` [INFO] running `"docker" "rm" "-f" "260bfd52c2bfed789afd28bc2e1430f526d94f6f0686c89d889da0b0174784ac"` [INFO] [stdout] 260bfd52c2bfed789afd28bc2e1430f526d94f6f0686c89d889da0b0174784ac