[INFO] updating cached repository andreimaximov/usrnet [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/andreimaximov/usrnet [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/andreimaximov/usrnet" "work/ex/clippy-test-run/sources/stable/gh/andreimaximov/usrnet"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/andreimaximov/usrnet'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/andreimaximov/usrnet" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/andreimaximov/usrnet"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/andreimaximov/usrnet'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 246febe5837f6953e53a8852cdda25e0f501780c [INFO] sha for GitHub repo andreimaximov/usrnet: 246febe5837f6953e53a8852cdda25e0f501780c [INFO] validating manifest of andreimaximov/usrnet 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 andreimaximov/usrnet 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 andreimaximov/usrnet [INFO] removed 8 missing examples [INFO] finished frobbing andreimaximov/usrnet [INFO] frobbed toml for andreimaximov/usrnet written to work/ex/clippy-test-run/sources/stable/gh/andreimaximov/usrnet/Cargo.toml [INFO] started frobbing andreimaximov/usrnet [INFO] removed 8 missing examples [INFO] finished frobbing andreimaximov/usrnet [INFO] frobbed toml for andreimaximov/usrnet written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/andreimaximov/usrnet/Cargo.toml [INFO] crate andreimaximov/usrnet has a lockfile. skipping [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 andreimaximov/usrnet against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/andreimaximov/usrnet:/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] 788a3b0f5856dcd85deb72d25b9566e43a0ad4ba88dab7a1ea7dcff34f310e3a [INFO] running `"docker" "start" "-a" "788a3b0f5856dcd85deb72d25b9566e43a0ad4ba88dab7a1ea7dcff34f310e3a"` [INFO] [stderr] warning: An explicit [[example]] section is specified in Cargo.toml which currently [INFO] [stderr] disables Cargo from automatically inferring other example targets. [INFO] [stderr] This inference behavior will change in the Rust 2018 edition and the following [INFO] [stderr] files will be included as a example target: [INFO] [stderr] [INFO] [stderr] * /opt/crater/workdir/examples/arping.rs [INFO] [stderr] * /opt/crater/workdir/examples/traceroute.rs [INFO] [stderr] * /opt/crater/workdir/examples/tcpecho.rs [INFO] [stderr] * /opt/crater/workdir/examples/dev_up.rs [INFO] [stderr] * /opt/crater/workdir/examples/udpcat.rs [INFO] [stderr] * /opt/crater/workdir/examples/udpecho.rs [INFO] [stderr] * /opt/crater/workdir/examples/ping.rs [INFO] [stderr] * /opt/crater/workdir/examples/tcpcat.rs [INFO] [stderr] [INFO] [stderr] This is likely to break cargo build or cargo test as these files may not be [INFO] [stderr] ready to be compiled as a example target today. You can future-proof yourself [INFO] [stderr] and disable this warning by adding `autoexamples = false` to your [package] [INFO] [stderr] section. You may also move the files to a location where Cargo would not [INFO] [stderr] automatically infer them to be a target, such as in subfolders. [INFO] [stderr] [INFO] [stderr] For more information on this warning you can consult [INFO] [stderr] https://github.com/rust-lang/cargo/issues/5330 [INFO] [stderr] Compiling serde v1.0.68 [INFO] [stderr] Checking c_linked_list v1.1.0 [INFO] [stderr] Checking enum-set v0.0.7 [INFO] [stderr] Checking assert_matches v1.1.0 [INFO] [stderr] Compiling bzip2-sys v0.1.6 [INFO] [stderr] Compiling filetime v0.2.1 [INFO] [stderr] Compiling xattr v0.2.1 [INFO] [stderr] Checking time v0.1.39 [INFO] [stderr] Checking get_if_addrs v0.5.1 [INFO] [stderr] Checking clap v2.30.0 [INFO] [stderr] Checking backtrace-sys v0.1.23 [INFO] [stderr] Checking regex v0.2.5 [INFO] [stderr] Compiling tar v0.4.15 [INFO] [stderr] Checking backtrace v0.3.9 [INFO] [stderr] Checking usrnet v0.1.0 (/opt/crater/workdir) [INFO] [stderr] Checking chrono v0.4.0 [INFO] [stderr] Checking failure v0.1.1 [INFO] [stderr] Compiling bzip2 v0.3.3 [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/core/repr/ethernet.rs:57:22 [INFO] [stderr] | [INFO] [stderr] 57 | (self.0[0] & 0b00000001) > 0 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0001` [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/core/repr/ethernet.rs:67:22 [INFO] [stderr] | [INFO] [stderr] 67 | (self.0[0] & 0b00000010) > 0 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0010` [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/core/repr/ipv4.rs:65:22 [INFO] [stderr] | [INFO] [stderr] 65 | (self.0[0] & 0b11100000) == 0b11100000 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1110_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/core/repr/ipv4.rs:65:37 [INFO] [stderr] | [INFO] [stderr] 65 | (self.0[0] & 0b11100000) == 0b11100000 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1110_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/core/repr/ipv4.rs:70:22 [INFO] [stderr] | [INFO] [stderr] 70 | (self.0[0] & 0b11110000) == 0b11110000 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1111_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/core/repr/ipv4.rs:70:37 [INFO] [stderr] | [INFO] [stderr] 70 | (self.0[0] & 0b11110000) == 0b11110000 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1111_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/core/repr/ipv4.rs:153:22 [INFO] [stderr] | [INFO] [stderr] 153 | let mask = !(0xFFFFFFFF >> self.subnet_len); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xFFFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/core/repr/ipv4.rs:164:22 [INFO] [stderr] | [INFO] [stderr] 164 | let mask = !(0xFFFFFFFF >> self.subnet_len); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xFFFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/core/repr/ipv4.rs:282:35 [INFO] [stderr] | [INFO] [stderr] 282 | pub const DONT_FRAGMENT: u8 = 0b00000010; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0010` [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/core/repr/ipv4.rs:284:30 [INFO] [stderr] | [INFO] [stderr] 284 | pub const NOT_LAST: u8 = 0b00000001; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0001` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/examples/mod.rs:38:38 [INFO] [stderr] | [INFO] [stderr] 38 | const RAW_SOCKET_BUFFER_LEN: usize = 262144; [INFO] [stderr] | ^^^^^^ help: consider: `262_144` [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/examples/mod.rs:44:38 [INFO] [stderr] | [INFO] [stderr] 44 | const UDP_SOCKET_BUFFER_LEN: usize = 262144; [INFO] [stderr] | ^^^^^^ help: consider: `262_144` [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/examples/mod.rs:50:36 [INFO] [stderr] | [INFO] [stderr] 50 | const LOOPBACK_BUFFER_LEN: usize = 262144; [INFO] [stderr] | ^^^^^^ help: consider: `262_144` [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/linux/libc.rs:10:38 [INFO] [stderr] | [INFO] [stderr] 10 | pub const TUNSETIFF: libc::c_ulong = 0x400454CA; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x4004_54CA` [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] Compiling libpcre-sys v0.2.2 [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/core/arp_cache.rs:56:12 [INFO] [stderr] | [INFO] [stderr] 56 | if self.entries.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.entries.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] Checking env_logger v0.5.3 [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/core/check.rs:42:26 [INFO] [stderr] | [INFO] [stderr] 42 | Some((x as u16) << 8) [INFO] [stderr] | ^^^^^^^^^^ help: try: `u16::from(x)` [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: this loop could be written as a `for` loop [INFO] [stderr] --> src/core/check.rs:58:25 [INFO] [stderr] | [INFO] [stderr] 58 | while let Some(i) = iter.next() { [INFO] [stderr] | ^^^^^^^^^^^ help: try: `for i in iter { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_on_iterator)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/core/check.rs:59:16 [INFO] [stderr] | [INFO] [stderr] 59 | acc += 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: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/core/repr/arp.rs:95:9 [INFO] [stderr] | [INFO] [stderr] 95 | writer.write(self.source_hw_addr.as_bytes()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/core/repr/arp.rs:96:9 [INFO] [stderr] | [INFO] [stderr] 96 | writer.write(self.source_proto_addr.as_bytes()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/core/repr/arp.rs:97:9 [INFO] [stderr] | [INFO] [stderr] 97 | writer.write(self.target_hw_addr.as_bytes()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/core/repr/arp.rs:98:9 [INFO] [stderr] | [INFO] [stderr] 98 | writer.write(self.target_proto_addr.as_bytes()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/core/repr/ethernet.rs:51:23 [INFO] [stderr] | [INFO] [stderr] 51 | pub fn is_unicast(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/core/repr/ethernet.rs:56:25 [INFO] [stderr] | [INFO] [stderr] 56 | pub fn is_multicast(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/core/repr/ethernet.rs:61:25 [INFO] [stderr] | [INFO] [stderr] 61 | pub fn is_broadcast(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/core/repr/ethernet.rs:66:21 [INFO] [stderr] | [INFO] [stderr] 66 | pub fn is_local(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/core/repr/ethernet.rs:93:20 [INFO] [stderr] | [INFO] [stderr] 93 | .split(":") [INFO] [stderr] | ^^^ help: try using a char instead: `':'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/core/repr/ethernet.rs:97:32 [INFO] [stderr] | [INFO] [stderr] 97 | if bytes.len() != 6 || unknown.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!unknown.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/core/repr/ethernet.rs:190:9 [INFO] [stderr] | [INFO] [stderr] 190 | / (&mut self.buffer.as_mut()[fields::DST_ADDR]) [INFO] [stderr] 191 | | .write(addr.as_bytes()) [INFO] [stderr] 192 | | .unwrap(); [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/core/repr/ethernet.rs:196:9 [INFO] [stderr] | [INFO] [stderr] 196 | / (&mut self.buffer.as_mut()[fields::SRC_ADDR]) [INFO] [stderr] 197 | | .write(addr.as_bytes()) [INFO] [stderr] 198 | | .unwrap(); [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/core/repr/ipv4.rs:54:19 [INFO] [stderr] | [INFO] [stderr] 54 | pub fn as_int(&self) -> u32 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/core/repr/ipv4.rs:59:23 [INFO] [stderr] | [INFO] [stderr] 59 | pub fn is_unicast(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/core/repr/ipv4.rs:64:25 [INFO] [stderr] | [INFO] [stderr] 64 | pub fn is_multicast(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/core/repr/ipv4.rs:69:24 [INFO] [stderr] | [INFO] [stderr] 69 | pub fn is_reserved(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/core/repr/ipv4.rs:113:38 [INFO] [stderr] | [INFO] [stderr] 113 | for (i, token) in addr.split(".").enumerate() { [INFO] [stderr] | ^^^ help: try using a char instead: `'.'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/core/repr/ipv4.rs:152:22 [INFO] [stderr] | [INFO] [stderr] 152 | pub fn is_member(&self, address: Address) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/core/repr/ipv4.rs:158:25 [INFO] [stderr] | [INFO] [stderr] 158 | pub fn is_broadcast(&self, address: Address) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/core/repr/ipv4.rs:163:22 [INFO] [stderr] | [INFO] [stderr] 163 | pub fn broadcast(&self) -> Address { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this call to `as_ref` does nothing [INFO] [stderr] --> src/core/repr/ipv4.rs:265:20 [INFO] [stderr] | [INFO] [stderr] 265 | .chain(buffer.as_ref().iter()) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try this: `buffer` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_asref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/core/repr/ipv4.rs:504:9 [INFO] [stderr] | [INFO] [stderr] 504 | / (&mut self.buffer.as_mut()[fields::SRC_ADDR]) [INFO] [stderr] 505 | | .write(addr.as_bytes()) [INFO] [stderr] 506 | | .unwrap(); [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/core/repr/ipv4.rs:510:9 [INFO] [stderr] | [INFO] [stderr] 510 | / (&mut self.buffer.as_mut()[fields::DST_ADDR]) [INFO] [stderr] 511 | | .write(addr.as_bytes()) [INFO] [stderr] 512 | | .unwrap(); [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core/repr/tcp.rs:209:9 [INFO] [stderr] | [INFO] [stderr] 209 | / match self.max_segment_size { [INFO] [stderr] 210 | | Some(mss) => { [INFO] [stderr] 211 | | let options = packet.options_mut(); [INFO] [stderr] 212 | | options[0] = 2; [INFO] [stderr] ... | [INFO] [stderr] 216 | | _ => {} [INFO] [stderr] 217 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 209 | if let Some(mss) = self.max_segment_size { [INFO] [stderr] 210 | let options = packet.options_mut(); [INFO] [stderr] 211 | options[0] = 2; [INFO] [stderr] 212 | options[1] = 4; [INFO] [stderr] 213 | NetworkEndian::write_u16(&mut options[2 .. 4], mss); [INFO] [stderr] 214 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/core/repr/udp.rs:24:23 [INFO] [stderr] | [INFO] [stderr] 24 | pub fn buffer_len(&self) -> usize { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/core/repr/udp.rs:41:25 [INFO] [stderr] | [INFO] [stderr] 41 | pub fn serialize(&self, packet: &mut Packet, ipv4: &Ipv4Repr) [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core/service/socket.rs:32:9 [INFO] [stderr] | [INFO] [stderr] 32 | / match ok_or_err { [INFO] [stderr] 33 | | Err(Error::DevExhausted) => break, [INFO] [stderr] 34 | | _ => {} [INFO] [stderr] 35 | | } [INFO] [stderr] | |_________^ help: try this: `if let Err(Error::DevExhausted) = ok_or_err { break }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/core/service/udp.rs:27:59 [INFO] [stderr] | [INFO] [stderr] 27 | pub fn send(ifr: &mut Interface, ipv4: &Ipv4Repr, udp: &UdpRepr, f: F) -> Result<()> [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `UdpRepr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `core::socket::bindings::Bindings` [INFO] [stderr] --> src/core/socket/bindings.rs:126:5 [INFO] [stderr] | [INFO] [stderr] 126 | / pub fn new() -> Bindings { [INFO] [stderr] 127 | | Bindings { [INFO] [stderr] 128 | | socket_addrs: Rc::new(RefCell::new(HashSet::new())), [INFO] [stderr] 129 | | } [INFO] [stderr] 130 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 120 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `filter(p).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(p)` instead. [INFO] [stderr] --> src/core/socket/set.rs:31:13 [INFO] [stderr] | [INFO] [stderr] 31 | / (0 .. self.sockets.len()) [INFO] [stderr] 32 | | .filter(|i| self.sockets[*i].is_none()) [INFO] [stderr] 33 | | .next() [INFO] [stderr] | |_______________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::filter_next)] on by default [INFO] [stderr] = note: replace `filter(|i| self.sockets[*i].is_none()).next()` with `find(|i| self.sockets[*i].is_none())` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core/socket/set.rs:36:9 [INFO] [stderr] | [INFO] [stderr] 36 | / match socket { [INFO] [stderr] 37 | | TaggedSocket::JaH(ref mut handle_) => *handle_ = handle, [INFO] [stderr] 38 | | _ => {} [INFO] [stderr] 39 | | } [INFO] [stderr] | |_________^ help: try this: `if let TaggedSocket::JaH(ref mut handle_) = socket { *handle_ = handle }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/core/socket/tagged.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | Tcp(TcpSocket), [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 12 | Tcp(Box), [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `payload` [INFO] [stderr] --> src/core/socket/tcp/assembler.rs:53:18 [INFO] [stderr] | [INFO] [stderr] 53 | for i in 0 .. copy_len { [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] 53 | for (i, ) in payload.iter().enumerate().take(copy_len) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `dst` [INFO] [stderr] --> src/core/socket/tcp/assembler.rs:81:18 [INFO] [stderr] | [INFO] [stderr] 81 | for i in 0 .. copy_len { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 81 | for (i, ) in dst.iter_mut().enumerate().take(copy_len) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: item `core::socket::tcp::window::TcpWindow` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/core/socket/tcp/window.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | / impl TcpWindow { [INFO] [stderr] 10 | | /// Checks if the window contains a sequence number. [INFO] [stderr] 11 | | pub fn contains(&self, seq_num: TcpSeqNum) -> bool { [INFO] [stderr] 12 | | if self.begin.0 < self.end.0 { [INFO] [stderr] ... | [INFO] [stderr] 28 | | } [INFO] [stderr] 29 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/core/socket/udp.rs:88:23 [INFO] [stderr] | [INFO] [stderr] 88 | let binding = self.binding.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.binding` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/core/socket/udp.rs:110:53 [INFO] [stderr] | [INFO] [stderr] 110 | pub fn enqueue(&mut self, ipv4: &Ipv4Repr, udp: &UdpRepr, payload: &[u8]) -> Result<()> { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `UdpRepr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/core/socket/udp.rs:121:49 [INFO] [stderr] | [INFO] [stderr] 121 | pub fn accepts(&self, ipv4: &Ipv4Repr, udp: &UdpRepr) -> bool { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `UdpRepr` [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: item `core::storage::ring::Ring` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/core/storage/ring.rs:24:1 [INFO] [stderr] | [INFO] [stderr] 24 | / impl Ring { [INFO] [stderr] 25 | | /// Returns a reference to the head of the ring if one exists. [INFO] [stderr] 26 | | pub fn peek(&self) -> Option<&T> { [INFO] [stderr] 27 | | if self.len > 0 { [INFO] [stderr] ... | [INFO] [stderr] 120 | | } [INFO] [stderr] 121 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/core/storage/slice_buf.rs:138:14 [INFO] [stderr] | [INFO] [stderr] 138 | .unwrap_or(self.buffer.len()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| self.buffer.len())` [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: you should consider deriving a `Default` implementation for `core::time::SystemEnv` [INFO] [stderr] --> src/core/time.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | / pub fn new() -> SystemEnv { [INFO] [stderr] 27 | | SystemEnv {} [INFO] [stderr] 28 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 23 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/linux/tap.rs:41:30 [INFO] [stderr] | [INFO] [stderr] 41 | let mut _ifreq = ifreq.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `ifreq` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/linux/tap.rs:54:30 [INFO] [stderr] | [INFO] [stderr] 54 | let mut _ifreq = ifreq.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `ifreq` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] error: aborting due to 8 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `usrnet`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: build failed [INFO] running `"docker" "inspect" "788a3b0f5856dcd85deb72d25b9566e43a0ad4ba88dab7a1ea7dcff34f310e3a"` [INFO] running `"docker" "rm" "-f" "788a3b0f5856dcd85deb72d25b9566e43a0ad4ba88dab7a1ea7dcff34f310e3a"` [INFO] [stdout] 788a3b0f5856dcd85deb72d25b9566e43a0ad4ba88dab7a1ea7dcff34f310e3a