[INFO] updating cached repository archion/eHosts [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/archion/eHosts [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/archion/eHosts" "work/ex/clippy-test-run/sources/stable/gh/archion/eHosts"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/archion/eHosts'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/archion/eHosts" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/archion/eHosts"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/archion/eHosts'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] a2b12a40857bce3f33923ec39c6bfe77280b39aa [INFO] sha for GitHub repo archion/eHosts: a2b12a40857bce3f33923ec39c6bfe77280b39aa [INFO] validating manifest of archion/eHosts 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 archion/eHosts 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 archion/eHosts [INFO] finished frobbing archion/eHosts [INFO] frobbed toml for archion/eHosts written to work/ex/clippy-test-run/sources/stable/gh/archion/eHosts/Cargo.toml [INFO] started frobbing archion/eHosts [INFO] finished frobbing archion/eHosts [INFO] frobbed toml for archion/eHosts written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/archion/eHosts/Cargo.toml [INFO] crate archion/eHosts 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 archion/eHosts against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/archion/eHosts:/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 -Dclippy::into_iter_on_array" "-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] d016ad92e13845837639a73056728992f40e61bc4bdf4993a6604ed96530ed4c [INFO] running `"docker" "start" "-a" "d016ad92e13845837639a73056728992f40e61bc4bdf4993a6604ed96530ed4c"` [INFO] [stderr] Checking clap v2.20.1 [INFO] [stderr] Checking eHosts v0.0.1 (/opt/crater/workdir) [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:67:10 [INFO] [stderr] | [INFO] [stderr] 67 | ((buf[0] as u16) << 8) + (buf[1] as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(buf[0])` [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/lib.rs:67:34 [INFO] [stderr] | [INFO] [stderr] 67 | ((buf[0] as u16) << 8) + (buf[1] as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(buf[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:73:10 [INFO] [stderr] | [INFO] [stderr] 73 | ((buf[0] as i32) << 24) + ((buf[1] as i32) << 16) + ((buf[2] as i32) << 8) + (buf[3] as i32) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(buf[0])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:73:36 [INFO] [stderr] | [INFO] [stderr] 73 | ((buf[0] as i32) << 24) + ((buf[1] as i32) << 16) + ((buf[2] as i32) << 8) + (buf[3] as i32) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(buf[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:73:62 [INFO] [stderr] | [INFO] [stderr] 73 | ((buf[0] as i32) << 24) + ((buf[1] as i32) << 16) + ((buf[2] as i32) << 8) + (buf[3] as i32) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(buf[2])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:73:86 [INFO] [stderr] | [INFO] [stderr] 73 | ((buf[0] as i32) << 24) + ((buf[1] as i32) << 16) + ((buf[2] as i32) << 8) + (buf[3] as i32) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(buf[3])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:205:54 [INFO] [stderr] | [INFO] [stderr] 205 | let i = (((j ^ 0xC0) as u16) << 8) + (reader.read_u8() as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(reader.read_u8())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:207:37 [INFO] [stderr] | [INFO] [stderr] 207 | reader.set_position(i as u64); [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(i)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lib.rs:250:9 [INFO] [stderr] | [INFO] [stderr] 250 | len = len+2 [INFO] [stderr] | ^^^^^^^^^^^ help: replace it with: `len += 2` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/lib.rs:266:5 [INFO] [stderr] | [INFO] [stderr] 266 | / match &r.rdata { [INFO] [stderr] 267 | | &Rdata::IpAddr(ip) => { [INFO] [stderr] 268 | | match ip { [INFO] [stderr] 269 | | IpAddr::V4(ip) => { [INFO] [stderr] ... | [INFO] [stderr] 288 | | //} [INFO] [stderr] 289 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 266 | match r.rdata { [INFO] [stderr] 267 | Rdata::IpAddr(ip) => { [INFO] [stderr] 268 | match ip { [INFO] [stderr] 269 | IpAddr::V4(ip) => { [INFO] [stderr] 270 | writer.write(&ip.octets()[..]); [INFO] [stderr] 271 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/lib.rs:273:41 [INFO] [stderr] | [INFO] [stderr] 273 | writer.write(unsafe{std::mem::transmute(&ip.segments()[..])}); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&*(&ip.segments()[..] as *const [u16] as *const [u8])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_ptr_to_ptr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:67:10 [INFO] [stderr] | [INFO] [stderr] 67 | ((buf[0] as u16) << 8) + (buf[1] as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(buf[0])` [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/lib.rs:67:34 [INFO] [stderr] | [INFO] [stderr] 67 | ((buf[0] as u16) << 8) + (buf[1] as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(buf[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:73:10 [INFO] [stderr] | [INFO] [stderr] 73 | ((buf[0] as i32) << 24) + ((buf[1] as i32) << 16) + ((buf[2] as i32) << 8) + (buf[3] as i32) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(buf[0])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:73:36 [INFO] [stderr] | [INFO] [stderr] 73 | ((buf[0] as i32) << 24) + ((buf[1] as i32) << 16) + ((buf[2] as i32) << 8) + (buf[3] as i32) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(buf[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:73:62 [INFO] [stderr] | [INFO] [stderr] 73 | ((buf[0] as i32) << 24) + ((buf[1] as i32) << 16) + ((buf[2] as i32) << 8) + (buf[3] as i32) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(buf[2])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:73:86 [INFO] [stderr] | [INFO] [stderr] 73 | ((buf[0] as i32) << 24) + ((buf[1] as i32) << 16) + ((buf[2] as i32) << 8) + (buf[3] as i32) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(buf[3])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:205:54 [INFO] [stderr] | [INFO] [stderr] 205 | let i = (((j ^ 0xC0) as u16) << 8) + (reader.read_u8() as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(reader.read_u8())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:207:37 [INFO] [stderr] | [INFO] [stderr] 207 | reader.set_position(i as u64); [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(i)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lib.rs:250:9 [INFO] [stderr] | [INFO] [stderr] 250 | len = len+2 [INFO] [stderr] | ^^^^^^^^^^^ help: replace it with: `len += 2` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/lib.rs:266:5 [INFO] [stderr] | [INFO] [stderr] 266 | / match &r.rdata { [INFO] [stderr] 267 | | &Rdata::IpAddr(ip) => { [INFO] [stderr] 268 | | match ip { [INFO] [stderr] 269 | | IpAddr::V4(ip) => { [INFO] [stderr] ... | [INFO] [stderr] 288 | | //} [INFO] [stderr] 289 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 266 | match r.rdata { [INFO] [stderr] 267 | Rdata::IpAddr(ip) => { [INFO] [stderr] 268 | match ip { [INFO] [stderr] 269 | IpAddr::V4(ip) => { [INFO] [stderr] 270 | writer.write(&ip.octets()[..]); [INFO] [stderr] 271 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/lib.rs:273:41 [INFO] [stderr] | [INFO] [stderr] 273 | writer.write(unsafe{std::mem::transmute(&ip.segments()[..])}); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&*(&ip.segments()[..] as *const [u16] as *const [u8])` [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: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:284:33 [INFO] [stderr] | [INFO] [stderr] 284 | rules.push(Rule{ip: ip, patt: Regex::new(i).unwrap()}); [INFO] [stderr] | ^^^^^^ help: replace it with: `ip` [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/main.rs:284:33 [INFO] [stderr] | [INFO] [stderr] 284 | rules.push(Rule{ip: ip, patt: Regex::new(i).unwrap()}); [INFO] [stderr] | ^^^^^^ help: replace it with: `ip` [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: unnecessary parentheses around function argument [INFO] [stderr] --> src/main.rs:347:50 [INFO] [stderr] | [INFO] [stderr] 347 | let socket_addr = SocketAddrV4::new(ip, ((rand::random::() % 16382) + 49152)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/main.rs:347:50 [INFO] [stderr] | [INFO] [stderr] 347 | let socket_addr = SocketAddrV4::new(ip, ((rand::random::() % 16382) + 49152)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: crate `eHosts` should have a snake case name such as `e_hosts` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:52:27 [INFO] [stderr] | [INFO] [stderr] 52 | if a.contains(":") { [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: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/main.rs:255:24 [INFO] [stderr] | [INFO] [stderr] 255 | if let None = line.find("127.0.0.1") { [INFO] [stderr] | _________________- ^^^^ [INFO] [stderr] 256 | | writer.write_fmt(format_args!("{}\n", "nameserver 127.0.0.1")); [INFO] [stderr] 257 | | } [INFO] [stderr] | |_________________- help: try this: `if line.find("127.0.0.1").is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/main.rs:302:9 [INFO] [stderr] | [INFO] [stderr] 302 | Err(_) => { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_wild_err_arm)] on by default [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:309:12 [INFO] [stderr] | [INFO] [stderr] 309 | if rules.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `rules.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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/main.rs:316:49 [INFO] [stderr] | [INFO] [stderr] 316 | fn match_rule(dns_msg: &mut dns::DnsMsg, rules: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[Rule]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [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/main.rs:348:9 [INFO] [stderr] | [INFO] [stderr] 348 | / match UdpSocket::bind(socket_addr){ [INFO] [stderr] 349 | | Ok(s) => { [INFO] [stderr] 350 | | return s [INFO] [stderr] 351 | | } [INFO] [stderr] 352 | | _ => { [INFO] [stderr] 353 | | } [INFO] [stderr] 354 | | }; [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] 348 | if let Ok(s) = UdpSocket::bind(socket_addr) { [INFO] [stderr] 349 | return s [INFO] [stderr] 350 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: crate `eHosts` should have a snake case name such as `e_hosts` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:52:27 [INFO] [stderr] | [INFO] [stderr] 52 | if a.contains(":") { [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: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/main.rs:255:24 [INFO] [stderr] | [INFO] [stderr] 255 | if let None = line.find("127.0.0.1") { [INFO] [stderr] | _________________- ^^^^ [INFO] [stderr] 256 | | writer.write_fmt(format_args!("{}\n", "nameserver 127.0.0.1")); [INFO] [stderr] 257 | | } [INFO] [stderr] | |_________________- help: try this: `if line.find("127.0.0.1").is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/main.rs:302:9 [INFO] [stderr] | [INFO] [stderr] 302 | Err(_) => { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_wild_err_arm)] on by default [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:309:12 [INFO] [stderr] | [INFO] [stderr] 309 | if rules.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `rules.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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/main.rs:316:49 [INFO] [stderr] | [INFO] [stderr] 316 | fn match_rule(dns_msg: &mut dns::DnsMsg, rules: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[Rule]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [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/main.rs:348:9 [INFO] [stderr] | [INFO] [stderr] 348 | / match UdpSocket::bind(socket_addr){ [INFO] [stderr] 349 | | Ok(s) => { [INFO] [stderr] 350 | | return s [INFO] [stderr] 351 | | } [INFO] [stderr] 352 | | _ => { [INFO] [stderr] 353 | | } [INFO] [stderr] 354 | | }; [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] 348 | if let Ok(s) = UdpSocket::bind(socket_addr) { [INFO] [stderr] 349 | return s [INFO] [stderr] 350 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 9.58s [INFO] running `"docker" "inspect" "d016ad92e13845837639a73056728992f40e61bc4bdf4993a6604ed96530ed4c"` [INFO] running `"docker" "rm" "-f" "d016ad92e13845837639a73056728992f40e61bc4bdf4993a6604ed96530ed4c"` [INFO] [stdout] d016ad92e13845837639a73056728992f40e61bc4bdf4993a6604ed96530ed4c