[INFO] fetching crate abstract-ns 0.4.3... [INFO] linting abstract-ns-0.4.3 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate abstract-ns 0.4.3 into /workspace/builds/worker-2-tc1/source [INFO] started tweaking crates.io crate abstract-ns 0.4.3 [INFO] finished tweaking crates.io crate abstract-ns 0.4.3 [INFO] tweaked toml for crates.io crate abstract-ns 0.4.3 written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate abstract-ns 0.4.3 on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Updating crates.io index [INFO] [stderr] Locking 68 packages to latest compatible versions [INFO] [stderr] Adding domain v0.2.4 (available: v0.11.1) [INFO] [stderr] Adding futures v0.1.31 (available: v0.3.32) [INFO] [stderr] Adding quick-error v1.2.3 (available: v2.0.1) [INFO] [stderr] Adding rand v0.4.6 (available: v0.10.0) [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] warning: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded crossbeam-queue v0.2.3 [INFO] [stderr] Downloaded maybe-uninit v2.0.0 [INFO] [stderr] Downloaded crossbeam-utils v0.7.2 [INFO] [stderr] Downloaded tokio-uds v0.2.7 [INFO] [stderr] Downloaded tokio-tcp v0.1.4 [INFO] [stderr] Downloaded tokio-udp v0.1.6 [INFO] [stderr] Downloaded tokio-fs v0.1.7 [INFO] [stderr] Downloaded tokio-reactor v0.1.12 [INFO] [stderr] Downloaded parking_lot_core v0.6.3 [INFO] [stderr] Downloaded tokio-codec v0.1.2 [INFO] [stderr] Downloaded futures-cpupool v0.1.8 [INFO] [stderr] Downloaded argparse v0.2.2 [INFO] [stderr] Downloaded crossbeam-epoch v0.8.2 [INFO] [stderr] Downloaded tokio-core v0.1.18 [INFO] [stderr] Downloaded crossbeam-deque v0.7.4 [INFO] [stderr] Downloaded tokio-threadpool v0.1.18 [INFO] [stderr] Downloaded tokio v0.1.22 [INFO] [stderr] Downloaded net2 v0.2.39 [INFO] [stderr] Downloaded domain v0.2.4 [INFO] [stderr] Downloaded futures v0.1.31 [INFO] [stderr] Downloaded tokio-current-thread v0.1.7 [INFO] [stderr] Downloaded smallvec v0.6.14 [INFO] [stderr] Downloaded tokio-io v0.1.13 [INFO] [stderr] Downloaded tokio-sync v0.1.8 [INFO] [stderr] Downloaded tokio-timer v0.2.13 [INFO] [stderr] Downloaded scoped-tls v0.1.2 [INFO] [stderr] Downloaded memoffset v0.5.6 [INFO] [stderr] Downloaded tokio-executor v0.1.10 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 4531dff84399d8a293da28c3b330c990ad5fc1c7a820f5f3588dc26bc7f98b07 [INFO] running `Command { std: "docker" "start" "-a" "4531dff84399d8a293da28c3b330c990ad5fc1c7a820f5f3588dc26bc7f98b07", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "4531dff84399d8a293da28c3b330c990ad5fc1c7a820f5f3588dc26bc7f98b07", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4531dff84399d8a293da28c3b330c990ad5fc1c7a820f5f3588dc26bc7f98b07", kill_on_drop: false }` [INFO] [stdout] 4531dff84399d8a293da28c3b330c990ad5fc1c7a820f5f3588dc26bc7f98b07 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 410a729d6dcc2f73966b1520787e7acd36f0461ecd66d845e15f2ac8d65a8e73 [INFO] running `Command { std: "docker" "start" "-a" "410a729d6dcc2f73966b1520787e7acd36f0461ecd66d845e15f2ac8d65a8e73", kill_on_drop: false }` [INFO] [stderr] warning: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024` [INFO] [stderr] Compiling libc v0.2.183 [INFO] [stderr] Compiling maybe-uninit v2.0.0 [INFO] [stderr] Checking futures v0.1.31 [INFO] [stderr] Compiling semver-parser v0.7.0 [INFO] [stderr] Compiling crossbeam-utils v0.7.2 [INFO] [stderr] Checking slab v0.4.12 [INFO] [stderr] Compiling memoffset v0.5.6 [INFO] [stderr] Checking lock_api v0.3.4 [INFO] [stderr] Compiling crossbeam-epoch v0.8.2 [INFO] [stderr] Checking smallvec v0.6.14 [INFO] [stderr] Checking scoped-tls v0.1.2 [INFO] [stderr] Compiling semver v0.9.0 [INFO] [stderr] Checking quick-error v1.2.3 [INFO] [stderr] Checking void v1.0.2 [INFO] [stderr] Checking argparse v0.2.2 [INFO] [stderr] Compiling rustc_version v0.2.3 [INFO] [stderr] Checking crossbeam-queue v0.2.3 [INFO] [stderr] Checking crossbeam-deque v0.7.4 [INFO] [stderr] Compiling parking_lot_core v0.6.3 [INFO] [stderr] Compiling parking_lot v0.9.0 [INFO] [stderr] Checking tokio-executor v0.1.10 [INFO] [stderr] Checking tokio-sync v0.1.8 [INFO] [stderr] Checking tokio-current-thread v0.1.7 [INFO] [stderr] Checking tokio-timer v0.2.13 [INFO] [stderr] Checking iovec v0.1.4 [INFO] [stderr] Checking num_cpus v1.17.0 [INFO] [stderr] Checking net2 v0.2.39 [INFO] [stderr] Checking rand v0.4.6 [INFO] [stderr] Checking bytes v0.4.12 [INFO] [stderr] Checking tokio-threadpool v0.1.18 [INFO] [stderr] Checking futures-cpupool v0.1.8 [INFO] [stderr] Checking mio v0.6.23 [INFO] [stderr] Checking tokio-io v0.1.13 [INFO] [stderr] Checking abstract-ns v0.4.3 (/opt/rustwide/workdir) [INFO] [stderr] Checking tokio-codec v0.1.2 [INFO] [stderr] Checking tokio-fs v0.1.7 [INFO] [stdout] warning: use of deprecated trait `std::ascii::AsciiExt`: use inherent methods instead [INFO] [stdout] --> src/name.rs:4:17 [INFO] [stdout] | [INFO] [stdout] 4 | use std::ascii::AsciiExt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/error.rs:29:33 [INFO] [stdout] | [INFO] [stdout] 29 | TemporaryError(err: Box) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 29 | TemporaryError(err: Box) { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ascii::AsciiExt` [INFO] [stdout] --> src/name.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::ascii::AsciiExt; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `AssertTraits` is never used [INFO] [stdout] --> src/lib.rs:117:7 [INFO] [stdout] | [INFO] [stdout] 117 | trait AssertTraits: Send + Sync {} [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/lib.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | //! this is used as a result of hostname resolution and it should be converted [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] = note: `#[warn(clippy::doc_lazy_continuation)]` on by default [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 24 | //! this is used as a result of hostname resolution and it should be converted [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/lib.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 25 | //! into an `Address` struct. [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 25 | //! into an `Address` struct. [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/lib.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 27 | //! prioritized list of addresses, this is what all user code should accept [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 27 | //! prioritized list of addresses, this is what all user code should accept [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/lib.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 28 | //! for maximum flexibility. [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 28 | //! for maximum flexibility. [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/error.rs:55:17 [INFO] [stdout] | [INFO] [stdout] 55 | IoError::new(IoErrorKind::Other, self), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] = note: `#[warn(clippy::io_other_error)]` on by default [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 55 - IoError::new(IoErrorKind::Other, self), [INFO] [stdout] 55 + IoError::other(self), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/addr.rs:78:24 [INFO] [stdout] | [INFO] [stdout] 78 | addresses: &vec, [INFO] [stdout] | ^^^^ help: change this to: `vec` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the impl [INFO] [stdout] --> src/addr.rs:83:6 [INFO] [stdout] | [INFO] [stdout] 83 | impl<'a> Iterator for OwnedAddressIter { [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] = note: `#[warn(clippy::extra_unused_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/addr.rs:117:6 [INFO] [stdout] | [INFO] [stdout] 117 | impl<'a> From<&'a [SocketAddr]> for Address { [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 117 - impl<'a> From<&'a [SocketAddr]> for Address { [INFO] [stdout] 117 + impl From<&[SocketAddr]> for Address { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Builder` [INFO] [stdout] --> src/addr.rs:145:5 [INFO] [stdout] | [INFO] [stdout] 145 | / pub fn new() -> Builder { [INFO] [stdout] 146 | | return Builder { [INFO] [stdout] 147 | | addresses: vec![Vec::new()], [INFO] [stdout] 148 | | } [INFO] [stdout] 149 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 143 + impl Default for Builder { [INFO] [stdout] 144 + fn default() -> Self { [INFO] [stdout] 145 + Self::new() [INFO] [stdout] 146 + } [INFO] [stdout] 147 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/addr.rs:146:9 [INFO] [stdout] | [INFO] [stdout] 146 | / return Builder { [INFO] [stdout] 147 | | addresses: vec![Vec::new()], [INFO] [stdout] 148 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 146 ~ Builder { [INFO] [stdout] 147 + addresses: vec![Vec::new()], [INFO] [stdout] 148 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/addr.rs:168:31 [INFO] [stdout] | [INFO] [stdout] 168 | .filter(|vec| vec.len() > 0) [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!vec.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/addr.rs:254:12 [INFO] [stdout] | [INFO] [stdout] 254 | if self.addresses.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.addresses.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/addr.rs:292:16 [INFO] [stdout] | [INFO] [stdout] 292 | if !other.addresses.iter().find(|&&(_, a1)| a == a1).is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `other.addresses.iter().find(|&&(_, a1)| a == a1).is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/addr.rs:297:16 [INFO] [stdout] | [INFO] [stdout] 297 | if !self.addresses.iter().find(|&&(_, a1)| a == a1).is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.addresses.iter().find(|&&(_, a1)| a == a1).is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/addr.rs:301:9 [INFO] [stdout] | [INFO] [stdout] 301 | return (old, new); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 301 - return (old, new); [INFO] [stdout] 301 + (old, new) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `WeightedSet` has a public `len` method, but no `is_empty` method [INFO] [stdout] --> src/addr.rs:305:5 [INFO] [stdout] | [INFO] [stdout] 305 | pub fn len(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stdout] = note: `#[warn(clippy::len_without_is_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/addr.rs:320:16 [INFO] [stdout] | [INFO] [stdout] 320 | if !other.addresses.iter().find(|&&pair1| pair == pair1).is_some() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `other.addresses.iter().find(|&&pair1| pair == pair1).is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/addr.rs:326:16 [INFO] [stdout] | [INFO] [stdout] 326 | if !self.addresses.iter().find(|&&pair1| pair == pair1).is_some() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.addresses.iter().find(|&&pair1| pair == pair1).is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/addr.rs:331:9 [INFO] [stdout] | [INFO] [stdout] 331 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 331 - return true; [INFO] [stdout] 331 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/addr.rs:348:5 [INFO] [stdout] | [INFO] [stdout] 348 | return set.into_iter().collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 348 - return set.into_iter().collect(); [INFO] [stdout] 348 + set.into_iter().collect() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/name.rs:78:12 [INFO] [stdout] | [INFO] [stdout] 78 | if piece.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `piece.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ip_list.rs:30:12 [INFO] [stdout] | [INFO] [stdout] 30 | if self.0.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.0.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/ip_list.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 33 | thread_rng().choose(&self.0[..]).map(|&x| x) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `thread_rng().choose(&self.0[..]).copied()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/combinators.rs:63:9 [INFO] [stdout] | [INFO] [stdout] 63 | return Ok(Async::Ready(Some(result))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 63 - return Ok(Async::Ready(Some(result))); [INFO] [stdout] 63 + Ok(Async::Ready(Some(result))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/addr.rs:206:15 [INFO] [stdout] | [INFO] [stdout] 206 | pub fn at(&self, priority: usize) -> WeightedSet { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 206 | pub fn at(&self, priority: usize) -> WeightedSet<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/addr.rs:213:17 [INFO] [stdout] | [INFO] [stdout] 213 | pub fn iter(&self) -> PriorityIter { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 213 | pub fn iter(&self) -> PriorityIter<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/addr.rs:277:22 [INFO] [stdout] | [INFO] [stdout] 277 | pub fn addresses(&self) -> AddressIter { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 277 | pub fn addresses(&self) -> AddressIter<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ip_list.rs:37:17 [INFO] [stdout] | [INFO] [stdout] 37 | pub fn iter(&self) -> IpIterator { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 37 | pub fn iter(&self) -> IpIterator<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking tokio-reactor v0.1.12 [INFO] [stderr] Checking mio-uds v0.6.8 [INFO] [stderr] Checking tokio-uds v0.2.7 [INFO] [stderr] Checking tokio-tcp v0.1.4 [INFO] [stderr] Checking tokio-udp v0.1.6 [INFO] [stderr] Checking tokio v0.1.22 [INFO] [stderr] Checking tokio-core v0.1.18 [INFO] [stderr] Checking domain v0.2.4 [INFO] [stdout] warning: use of deprecated trait `std::ascii::AsciiExt`: use inherent methods instead [INFO] [stdout] --> src/name.rs:4:17 [INFO] [stdout] | [INFO] [stdout] 4 | use std::ascii::AsciiExt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/error.rs:29:33 [INFO] [stdout] | [INFO] [stdout] 29 | TemporaryError(err: Box) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 29 | TemporaryError(err: Box) { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ascii::AsciiExt` [INFO] [stdout] --> src/name.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::ascii::AsciiExt; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `AssertTraits` is never used [INFO] [stdout] --> src/lib.rs:117:7 [INFO] [stdout] | [INFO] [stdout] 117 | trait AssertTraits: Send + Sync {} [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/lib.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | //! this is used as a result of hostname resolution and it should be converted [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] = note: `#[warn(clippy::doc_lazy_continuation)]` on by default [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 24 | //! this is used as a result of hostname resolution and it should be converted [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/lib.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 25 | //! into an `Address` struct. [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 25 | //! into an `Address` struct. [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/lib.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 27 | //! prioritized list of addresses, this is what all user code should accept [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 27 | //! prioritized list of addresses, this is what all user code should accept [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/lib.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 28 | //! for maximum flexibility. [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 28 | //! for maximum flexibility. [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/error.rs:55:17 [INFO] [stdout] | [INFO] [stdout] 55 | IoError::new(IoErrorKind::Other, self), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] = note: `#[warn(clippy::io_other_error)]` on by default [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 55 - IoError::new(IoErrorKind::Other, self), [INFO] [stdout] 55 + IoError::other(self), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/error.rs:80:47 [INFO] [stdout] | [INFO] [stdout] 80 | assert_eq!(Error::TemporaryError(Box::new(IoError::new(IoErrorKind::Other, "oh no!"))).into_io().kind(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 80 - assert_eq!(Error::TemporaryError(Box::new(IoError::new(IoErrorKind::Other, "oh no!"))).into_io().kind(), [INFO] [stdout] 80 + assert_eq!(Error::TemporaryError(Box::new(IoError::other("oh no!"))).into_io().kind(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/addr.rs:78:24 [INFO] [stdout] | [INFO] [stdout] 78 | addresses: &vec, [INFO] [stdout] | ^^^^ help: change this to: `vec` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the impl [INFO] [stdout] --> src/addr.rs:83:6 [INFO] [stdout] | [INFO] [stdout] 83 | impl<'a> Iterator for OwnedAddressIter { [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] = note: `#[warn(clippy::extra_unused_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/addr.rs:117:6 [INFO] [stdout] | [INFO] [stdout] 117 | impl<'a> From<&'a [SocketAddr]> for Address { [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 117 - impl<'a> From<&'a [SocketAddr]> for Address { [INFO] [stdout] 117 + impl From<&[SocketAddr]> for Address { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Builder` [INFO] [stdout] --> src/addr.rs:145:5 [INFO] [stdout] | [INFO] [stdout] 145 | / pub fn new() -> Builder { [INFO] [stdout] 146 | | return Builder { [INFO] [stdout] 147 | | addresses: vec![Vec::new()], [INFO] [stdout] 148 | | } [INFO] [stdout] 149 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 143 + impl Default for Builder { [INFO] [stdout] 144 + fn default() -> Self { [INFO] [stdout] 145 + Self::new() [INFO] [stdout] 146 + } [INFO] [stdout] 147 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/addr.rs:146:9 [INFO] [stdout] | [INFO] [stdout] 146 | / return Builder { [INFO] [stdout] 147 | | addresses: vec![Vec::new()], [INFO] [stdout] 148 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 146 ~ Builder { [INFO] [stdout] 147 + addresses: vec![Vec::new()], [INFO] [stdout] 148 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/addr.rs:168:31 [INFO] [stdout] | [INFO] [stdout] 168 | .filter(|vec| vec.len() > 0) [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!vec.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/addr.rs:254:12 [INFO] [stdout] | [INFO] [stdout] 254 | if self.addresses.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.addresses.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/addr.rs:292:16 [INFO] [stdout] | [INFO] [stdout] 292 | if !other.addresses.iter().find(|&&(_, a1)| a == a1).is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `other.addresses.iter().find(|&&(_, a1)| a == a1).is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/addr.rs:297:16 [INFO] [stdout] | [INFO] [stdout] 297 | if !self.addresses.iter().find(|&&(_, a1)| a == a1).is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.addresses.iter().find(|&&(_, a1)| a == a1).is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/addr.rs:301:9 [INFO] [stdout] | [INFO] [stdout] 301 | return (old, new); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 301 - return (old, new); [INFO] [stdout] 301 + (old, new) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `WeightedSet` has a public `len` method, but no `is_empty` method [INFO] [stdout] --> src/addr.rs:305:5 [INFO] [stdout] | [INFO] [stdout] 305 | pub fn len(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stdout] = note: `#[warn(clippy::len_without_is_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/addr.rs:320:16 [INFO] [stdout] | [INFO] [stdout] 320 | if !other.addresses.iter().find(|&&pair1| pair == pair1).is_some() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `other.addresses.iter().find(|&&pair1| pair == pair1).is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/addr.rs:326:16 [INFO] [stdout] | [INFO] [stdout] 326 | if !self.addresses.iter().find(|&&pair1| pair == pair1).is_some() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.addresses.iter().find(|&&pair1| pair == pair1).is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/addr.rs:331:9 [INFO] [stdout] | [INFO] [stdout] 331 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 331 - return true; [INFO] [stdout] 331 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/addr.rs:348:5 [INFO] [stdout] | [INFO] [stdout] 348 | return set.into_iter().collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 348 - return set.into_iter().collect(); [INFO] [stdout] 348 + set.into_iter().collect() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/name.rs:78:12 [INFO] [stdout] | [INFO] [stdout] 78 | if piece.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `piece.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ip_list.rs:30:12 [INFO] [stdout] | [INFO] [stdout] 30 | if self.0.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.0.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/ip_list.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 33 | thread_rng().choose(&self.0[..]).map(|&x| x) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `thread_rng().choose(&self.0[..]).copied()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/combinators.rs:63:9 [INFO] [stdout] | [INFO] [stdout] 63 | return Ok(Async::Ready(Some(result))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 63 - return Ok(Async::Ready(Some(result))); [INFO] [stdout] 63 + Ok(Async::Ready(Some(result))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/addr.rs:206:15 [INFO] [stdout] | [INFO] [stdout] 206 | pub fn at(&self, priority: usize) -> WeightedSet { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 206 | pub fn at(&self, priority: usize) -> WeightedSet<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/addr.rs:213:17 [INFO] [stdout] | [INFO] [stdout] 213 | pub fn iter(&self) -> PriorityIter { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 213 | pub fn iter(&self) -> PriorityIter<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/addr.rs:277:22 [INFO] [stdout] | [INFO] [stdout] 277 | pub fn addresses(&self) -> AddressIter { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 277 | pub fn addresses(&self) -> AddressIter<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused return value of `std::convert::From::from` that must be used [INFO] [stdout] --> src/addr.rs:381:9 [INFO] [stdout] | [INFO] [stdout] 381 | Address::from(SocketAddr::from_str("127.0.0.1:1234").unwrap()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 381 | let _ = Address::from(SocketAddr::from_str("127.0.0.1:1234").unwrap()); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused return value of `std::convert::From::from` that must be used [INFO] [stdout] --> src/addr.rs:386:9 [INFO] [stdout] | [INFO] [stdout] 386 | Address::from((IpAddr::from_str("127.0.0.1").unwrap(), 1234)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 386 | let _ = Address::from((IpAddr::from_str("127.0.0.1").unwrap(), 1234)); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused return value of `std::convert::From::from` that must be used [INFO] [stdout] --> src/addr.rs:391:9 [INFO] [stdout] | [INFO] [stdout] 391 | Address::from(&[SocketAddr::from_str("127.0.0.1:1234").unwrap()][..]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 391 | let _ = Address::from(&[SocketAddr::from_str("127.0.0.1:1234").unwrap()][..]); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ip_list.rs:37:17 [INFO] [stdout] | [INFO] [stdout] 37 | pub fn iter(&self) -> IpIterator { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 37 | pub fn iter(&self) -> IpIterator<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 13.30s [INFO] running `Command { std: "docker" "inspect" "410a729d6dcc2f73966b1520787e7acd36f0461ecd66d845e15f2ac8d65a8e73", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "410a729d6dcc2f73966b1520787e7acd36f0461ecd66d845e15f2ac8d65a8e73", kill_on_drop: false }` [INFO] [stdout] 410a729d6dcc2f73966b1520787e7acd36f0461ecd66d845e15f2ac8d65a8e73