[INFO] crate rotor-dns 0.4.0 is already in cache [INFO] extracting crate rotor-dns 0.4.0 into work/ex/clippy-test-run/sources/stable/reg/rotor-dns/0.4.0 [INFO] extracting crate rotor-dns 0.4.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/rotor-dns/0.4.0 [INFO] validating manifest of rotor-dns-0.4.0 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of rotor-dns-0.4.0 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing rotor-dns-0.4.0 [INFO] finished frobbing rotor-dns-0.4.0 [INFO] frobbed toml for rotor-dns-0.4.0 written to work/ex/clippy-test-run/sources/stable/reg/rotor-dns/0.4.0/Cargo.toml [INFO] started frobbing rotor-dns-0.4.0 [INFO] finished frobbing rotor-dns-0.4.0 [INFO] frobbed toml for rotor-dns-0.4.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/rotor-dns/0.4.0/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting rotor-dns-0.4.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-1/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/rotor-dns/0.4.0:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 20b0f33ecce967c39b564543555ef1a9e131bcbdf3a3995e9376da55a508668b [INFO] running `"docker" "start" "-a" "20b0f33ecce967c39b564543555ef1a9e131bcbdf3a3995e9376da55a508668b"` [INFO] [stderr] Checking resolv-conf v0.4.0 [INFO] [stderr] Checking dns-parser v0.3.5 [INFO] [stderr] Checking rotor-tools v0.3.2 [INFO] [stderr] Checking rotor-dns v0.4.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/fsm.rs:156:37 [INFO] [stderr] | [INFO] [stderr] 156 | preference: preference, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `preference` [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/fsm.rs:174:37 [INFO] [stderr] | [INFO] [stderr] 174 | priority: priority, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `priority` [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/fsm.rs:175:37 [INFO] [stderr] | [INFO] [stderr] 175 | weight: weight, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `weight` [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/fsm.rs:176:37 [INFO] [stderr] | [INFO] [stderr] 176 | port: port, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `port` [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/resolver.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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/resolver.rs:54:13 [INFO] [stderr] | [INFO] [stderr] 54 | query: query, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `query` [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/resolver.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | deadline: deadline, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `deadline` [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:97:9 [INFO] [stderr] | [INFO] [stderr] 97 | config: config, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `config` [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/fsm.rs:156:37 [INFO] [stderr] | [INFO] [stderr] 156 | preference: preference, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `preference` [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/fsm.rs:174:37 [INFO] [stderr] | [INFO] [stderr] 174 | priority: priority, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `priority` [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/fsm.rs:175:37 [INFO] [stderr] | [INFO] [stderr] 175 | weight: weight, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `weight` [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/fsm.rs:176:37 [INFO] [stderr] | [INFO] [stderr] 176 | port: port, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `port` [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/resolver.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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/resolver.rs:54:13 [INFO] [stderr] | [INFO] [stderr] 54 | query: query, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `query` [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/resolver.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | deadline: deadline, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `deadline` [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:97:9 [INFO] [stderr] | [INFO] [stderr] 97 | config: config, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `config` [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: unneeded return statement [INFO] [stderr] --> src/fsm.rs:50:9 [INFO] [stderr] | [INFO] [stderr] 50 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [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: unneeded return statement [INFO] [stderr] --> src/fsm.rs:96:9 [INFO] [stderr] | [INFO] [stderr] 96 | return self.timeouts.peek().map(|x| x.0) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.timeouts.peek().map(|x| x.0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/config.rs:47:23 [INFO] [stderr] | [INFO] [stderr] 47 | attempts: cfg.attempts.into(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `cfg.attempts` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/fsm.rs:20:13 [INFO] [stderr] | [INFO] [stderr] 20 | let ref q = pack.questions[0]; [INFO] [stderr] | ----^^^^^--------------------- help: try: `let q = &pack.questions[0];` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_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/fsm.rs:138:25 [INFO] [stderr] | [INFO] [stderr] 138 | / match ans.data { [INFO] [stderr] 139 | | RRData::A(ip) => { [INFO] [stderr] 140 | | ips.push(ip); [INFO] [stderr] 141 | | } [INFO] [stderr] ... | [INFO] [stderr] 144 | | } [INFO] [stderr] 145 | | } [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] 138 | if let RRData::A(ip) = ans.data { [INFO] [stderr] 139 | ips.push(ip); [INFO] [stderr] 140 | } [INFO] [stderr] | [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/fsm.rs:153:25 [INFO] [stderr] | [INFO] [stderr] 153 | / match ans.data { [INFO] [stderr] 154 | | RRData::MX { preference, exchange } => { [INFO] [stderr] 155 | | rows.push(MxRecord { [INFO] [stderr] 156 | | preference: preference, [INFO] [stderr] ... | [INFO] [stderr] 162 | | } [INFO] [stderr] 163 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [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] 153 | if let RRData::MX { preference, exchange } = ans.data { [INFO] [stderr] 154 | rows.push(MxRecord { [INFO] [stderr] 155 | preference: preference, [INFO] [stderr] 156 | exchange: exchange.to_string(), [INFO] [stderr] 157 | }); [INFO] [stderr] 158 | } [INFO] [stderr] | [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/fsm.rs:171:25 [INFO] [stderr] | [INFO] [stderr] 171 | / match ans.data { [INFO] [stderr] 172 | | RRData::SRV { priority, weight, port, target } => { [INFO] [stderr] 173 | | rows.push(SrvRecord { [INFO] [stderr] 174 | | priority: priority, [INFO] [stderr] ... | [INFO] [stderr] 182 | | } [INFO] [stderr] 183 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [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] 171 | if let RRData::SRV { priority, weight, port, target } = ans.data { [INFO] [stderr] 172 | rows.push(SrvRecord { [INFO] [stderr] 173 | priority: priority, [INFO] [stderr] 174 | weight: weight, [INFO] [stderr] 175 | port: port, [INFO] [stderr] 176 | target: target.to_string(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/fsm.rs:212:9 [INFO] [stderr] | [INFO] [stderr] 212 | / match query { [INFO] [stderr] 213 | | &Query::LookupIpv4(ref q) => { [INFO] [stderr] 214 | | builder.add_question(q, QueryType::A, QueryClass::IN); [INFO] [stderr] 215 | | } [INFO] [stderr] ... | [INFO] [stderr] 221 | | } [INFO] [stderr] 222 | | } [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] 212 | match *query { [INFO] [stderr] 213 | Query::LookupIpv4(ref q) => { [INFO] [stderr] 214 | builder.add_question(q, QueryType::A, QueryClass::IN); [INFO] [stderr] 215 | } [INFO] [stderr] 216 | Query::LookupMx(ref q) => { [INFO] [stderr] 217 | builder.add_question(q, QueryType::MX, QueryClass::IN); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/resolver.rs:35:13 [INFO] [stderr] | [INFO] [stderr] 35 | let ref mut res = *self.0.lock().unwrap(); [INFO] [stderr] | ----^^^^^^^^^^^--------------------------- help: try: `let res = &mut (*self.0.lock().unwrap());` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/resolver.rs:36:31 [INFO] [stderr] | [INFO] [stderr] 36 | if let Some(cache) = res.cache.get(&query).map(|x| x.clone()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `res.cache.get(&query).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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/lib.rs:72:16 [INFO] [stderr] | [INFO] [stderr] 72 | notifiers: Vec<(Arc>>>, Notifier)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/fsm.rs:50:9 [INFO] [stderr] | [INFO] [stderr] 50 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [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: unneeded return statement [INFO] [stderr] --> src/fsm.rs:96:9 [INFO] [stderr] | [INFO] [stderr] 96 | return self.timeouts.peek().map(|x| x.0) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.timeouts.peek().map(|x| x.0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/config.rs:47:23 [INFO] [stderr] | [INFO] [stderr] 47 | attempts: cfg.attempts.into(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `cfg.attempts` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/fsm.rs:20:13 [INFO] [stderr] | [INFO] [stderr] 20 | let ref q = pack.questions[0]; [INFO] [stderr] | ----^^^^^--------------------- help: try: `let q = &pack.questions[0];` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_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/fsm.rs:138:25 [INFO] [stderr] | [INFO] [stderr] 138 | / match ans.data { [INFO] [stderr] 139 | | RRData::A(ip) => { [INFO] [stderr] 140 | | ips.push(ip); [INFO] [stderr] 141 | | } [INFO] [stderr] ... | [INFO] [stderr] 144 | | } [INFO] [stderr] 145 | | } [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] 138 | if let RRData::A(ip) = ans.data { [INFO] [stderr] 139 | ips.push(ip); [INFO] [stderr] 140 | } [INFO] [stderr] | [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/fsm.rs:153:25 [INFO] [stderr] | [INFO] [stderr] 153 | / match ans.data { [INFO] [stderr] 154 | | RRData::MX { preference, exchange } => { [INFO] [stderr] 155 | | rows.push(MxRecord { [INFO] [stderr] 156 | | preference: preference, [INFO] [stderr] ... | [INFO] [stderr] 162 | | } [INFO] [stderr] 163 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [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] 153 | if let RRData::MX { preference, exchange } = ans.data { [INFO] [stderr] 154 | rows.push(MxRecord { [INFO] [stderr] 155 | preference: preference, [INFO] [stderr] 156 | exchange: exchange.to_string(), [INFO] [stderr] 157 | }); [INFO] [stderr] 158 | } [INFO] [stderr] | [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/fsm.rs:171:25 [INFO] [stderr] | [INFO] [stderr] 171 | / match ans.data { [INFO] [stderr] 172 | | RRData::SRV { priority, weight, port, target } => { [INFO] [stderr] 173 | | rows.push(SrvRecord { [INFO] [stderr] 174 | | priority: priority, [INFO] [stderr] ... | [INFO] [stderr] 182 | | } [INFO] [stderr] 183 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [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] 171 | if let RRData::SRV { priority, weight, port, target } = ans.data { [INFO] [stderr] 172 | rows.push(SrvRecord { [INFO] [stderr] 173 | priority: priority, [INFO] [stderr] 174 | weight: weight, [INFO] [stderr] 175 | port: port, [INFO] [stderr] 176 | target: target.to_string(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/fsm.rs:212:9 [INFO] [stderr] | [INFO] [stderr] 212 | / match query { [INFO] [stderr] 213 | | &Query::LookupIpv4(ref q) => { [INFO] [stderr] 214 | | builder.add_question(q, QueryType::A, QueryClass::IN); [INFO] [stderr] 215 | | } [INFO] [stderr] ... | [INFO] [stderr] 221 | | } [INFO] [stderr] 222 | | } [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] 212 | match *query { [INFO] [stderr] 213 | Query::LookupIpv4(ref q) => { [INFO] [stderr] 214 | builder.add_question(q, QueryType::A, QueryClass::IN); [INFO] [stderr] 215 | } [INFO] [stderr] 216 | Query::LookupMx(ref q) => { [INFO] [stderr] 217 | builder.add_question(q, QueryType::MX, QueryClass::IN); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/resolver.rs:35:13 [INFO] [stderr] | [INFO] [stderr] 35 | let ref mut res = *self.0.lock().unwrap(); [INFO] [stderr] | ----^^^^^^^^^^^--------------------------- help: try: `let res = &mut (*self.0.lock().unwrap());` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/resolver.rs:36:31 [INFO] [stderr] | [INFO] [stderr] 36 | if let Some(cache) = res.cache.get(&query).map(|x| x.clone()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `res.cache.get(&query).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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/lib.rs:72:16 [INFO] [stderr] | [INFO] [stderr] 72 | notifiers: Vec<(Arc>>>, Notifier)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> examples/host.rs:71:8 [INFO] [stderr] | [INFO] [stderr] 71 | if servers.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!servers.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: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> examples/host.rs:74:5 [INFO] [stderr] | [INFO] [stderr] 74 | attempts.map(|x| cfg.attempts = x); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- [INFO] [stderr] | | [INFO] [stderr] | help: try this: `if let Some(x) = attempts { ... }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_unit_fn)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> examples/host.rs:75:5 [INFO] [stderr] | [INFO] [stderr] 75 | timeout.map(|x| cfg.timeout = Duration::from_millis(x)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- [INFO] [stderr] | | [INFO] [stderr] | help: try this: `if let Some(x) = timeout { ... }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 10.15s [INFO] running `"docker" "inspect" "20b0f33ecce967c39b564543555ef1a9e131bcbdf3a3995e9376da55a508668b"` [INFO] running `"docker" "rm" "-f" "20b0f33ecce967c39b564543555ef1a9e131bcbdf3a3995e9376da55a508668b"` [INFO] [stdout] 20b0f33ecce967c39b564543555ef1a9e131bcbdf3a3995e9376da55a508668b