[INFO] fetching crate tk-carbon 0.2.0... [INFO] linting tk-carbon-0.2.0 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate tk-carbon 0.2.0 into /workspace/builds/worker-0-tc1/source [INFO] started tweaking crates.io crate tk-carbon 0.2.0 [INFO] finished tweaking crates.io crate tk-carbon 0.2.0 [INFO] tweaked toml for crates.io crate tk-carbon 0.2.0 written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate tk-carbon 0.2.0 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] Updating crates.io index [INFO] [stderr] Locking 85 packages to latest compatible versions [INFO] [stderr] Adding env_logger v0.4.3 (available: v0.11.9) [INFO] [stderr] Adding futures v0.1.31 (available: v0.3.32) [INFO] [stderr] Adding log v0.3.9 (available: v0.4.29) [INFO] [stderr] Adding num-traits v0.1.43 (available: v0.2.19) [INFO] [stderr] Adding rand v0.3.23 (available: v0.10.0) [INFO] [stderr] Adding regex v0.2.11 (available: v1.12.3) [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 tk-easyloop v0.1.1 [INFO] [stderr] Downloaded num-traits v0.1.43 [INFO] [stderr] Downloaded rand v0.4.6 [INFO] [stderr] Downloaded log v0.3.9 [INFO] [stderr] Downloaded futures-cpupool v0.1.8 [INFO] [stderr] Downloaded netbuf v0.4.1 [INFO] [stderr] Downloaded scoped-tls v0.1.2 [INFO] [stderr] Downloaded rand v0.3.23 [INFO] [stderr] Downloaded env_logger v0.4.3 [INFO] [stderr] Downloaded async-slot v0.1.0 [INFO] [stderr] Downloaded tokio-core v0.1.18 [INFO] [stderr] Downloaded ns-std-threaded v0.3.0 [INFO] [stderr] Downloaded ns-router v0.1.6 [INFO] [stderr] Downloaded abstract-ns v0.4.3 [INFO] [stderr] Downloaded tk-bufstream v0.3.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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] 3fc1a8d463193c9b2c525dad59bacea038aca61c9f62ef18f8aa819e9a4af0bf [INFO] running `Command { std: "docker" "start" "-a" "3fc1a8d463193c9b2c525dad59bacea038aca61c9f62ef18f8aa819e9a4af0bf", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "3fc1a8d463193c9b2c525dad59bacea038aca61c9f62ef18f8aa819e9a4af0bf", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3fc1a8d463193c9b2c525dad59bacea038aca61c9f62ef18f8aa819e9a4af0bf", kill_on_drop: false }` [INFO] [stdout] 3fc1a8d463193c9b2c525dad59bacea038aca61c9f62ef18f8aa819e9a4af0bf [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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] 51544460a57f143363ad7d91c7774341170cb94db82a08908890685cd6a755a1 [INFO] running `Command { std: "docker" "start" "-a" "51544460a57f143363ad7d91c7774341170cb94db82a08908890685cd6a755a1", kill_on_drop: false }` [INFO] [stderr] warning: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024` [INFO] [stderr] Checking cfg-if v0.1.10 [INFO] [stderr] Checking futures v0.1.31 [INFO] [stderr] Checking lazy_static v1.5.0 [INFO] [stderr] Compiling maybe-uninit v2.0.0 [INFO] [stderr] Checking log v0.4.29 [INFO] [stderr] Compiling semver-parser v0.7.0 [INFO] [stderr] Checking byteorder v1.5.0 [INFO] [stderr] Checking slab v0.4.12 [INFO] [stderr] Checking void v1.0.2 [INFO] [stderr] Checking scoped-tls v0.1.2 [INFO] [stderr] Compiling crossbeam-utils v0.7.2 [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 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 ucd-util v0.1.10 [INFO] [stderr] Compiling regex v0.2.11 [INFO] [stderr] Checking log v0.3.9 [INFO] [stderr] Checking thread_local v0.3.6 [INFO] [stderr] Checking aho-corasick v0.6.10 [INFO] [stderr] Checking netbuf v0.4.1 [INFO] [stderr] Checking regex-syntax v0.5.6 [INFO] [stderr] Compiling semver v0.9.0 [INFO] [stderr] Checking smallvec v0.6.14 [INFO] [stderr] Checking utf8-ranges v1.0.5 [INFO] [stderr] Checking num-traits v0.1.43 [INFO] [stderr] Checking mio v0.6.23 [INFO] [stderr] Compiling rustc_version v0.2.3 [INFO] [stderr] Checking bytes v0.4.12 [INFO] [stderr] Checking crossbeam-queue v0.2.3 [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-io v0.1.13 [INFO] [stderr] Checking tokio-sync v0.1.8 [INFO] [stderr] Checking async-slot v0.1.0 [INFO] [stderr] Checking futures-cpupool v0.1.8 [INFO] [stderr] Checking abstract-ns v0.4.3 [INFO] [stderr] Checking rand v0.3.23 [INFO] [stderr] Checking tokio-timer v0.2.13 [INFO] [stderr] Checking tokio-current-thread v0.1.7 [INFO] [stderr] Checking crossbeam-deque v0.7.4 [INFO] [stderr] Checking tokio-codec v0.1.2 [INFO] [stderr] Checking tk-bufstream v0.3.0 [INFO] [stderr] Checking tokio-threadpool v0.1.18 [INFO] [stderr] Checking ns-std-threaded v0.3.0 [INFO] [stderr] Checking mio-uds v0.6.8 [INFO] [stderr] Checking tokio-reactor v0.1.12 [INFO] [stderr] Checking tokio-fs v0.1.7 [INFO] [stderr] Checking tokio-tcp v0.1.4 [INFO] [stderr] Checking tokio-udp v0.1.6 [INFO] [stderr] Checking tokio-uds v0.2.7 [INFO] [stderr] Checking tokio v0.1.22 [INFO] [stderr] Checking tokio-core v0.1.18 [INFO] [stderr] Checking ns-router v0.1.6 [INFO] [stderr] Checking tk-easyloop v0.1.1 [INFO] [stderr] Checking tk-carbon v0.2.0 (/opt/rustwide/workdir) [INFO] [stderr] Checking env_logger v0.4.3 [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/pool.rs:53:13 [INFO] [stdout] | [INFO] [stdout] 53 | address_stream: address_stream, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `address_stream` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/channel.rs:31:9 [INFO] [stdout] | [INFO] [stdout] 31 | max_metrics_buffered: max_metrics_buffered, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `max_metrics_buffered` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/pool.rs:32:28 [INFO] [stdout] | [INFO] [stdout] 32 | Box, Error=io::Error>>)>, [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] 32 | Box, Error=io::Error>>)>, [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/public.rs:26:9 [INFO] [stdout] | [INFO] [stdout] 26 | / return ( [INFO] [stdout] 27 | | Carbon { [INFO] [stdout] 28 | | chan: tx, [INFO] [stdout] 29 | | }, [INFO] [stdout] ... | [INFO] [stdout] 34 | | ) [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] 26 ~ ( [INFO] [stdout] 27 + Carbon { [INFO] [stdout] 28 + chan: tx, [INFO] [stdout] 29 + }, [INFO] [stdout] 30 + Init { [INFO] [stdout] 31 + chan: rx, [INFO] [stdout] 32 + config: config.clone(), [INFO] [stdout] 33 + } [INFO] [stdout] 34 + ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/public.rs:83:27 [INFO] [stdout] | [INFO] [stdout] 83 | .filter(|&&x| x == b' ' || x == b'\n' || x == b'\n') [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 83 - .filter(|&&x| x == b' ' || x == b'\n' || x == b'\n') [INFO] [stdout] 83 + .filter(|&&x| !(x != b' ' && x != b'\n')) [INFO] [stdout] | [INFO] [stdout] 83 - .filter(|&&x| x == b' ' || x == b'\n' || x == b'\n') [INFO] [stdout] 83 + .filter(|&&x| x == b' ' || x == b'\n') [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/proto.rs:30:60 [INFO] [stdout] | [INFO] [stdout] 30 | timeo: Timeout::new(self.config.write_timeout, &handle) [INFO] [stdout] | ^^^^^^^ help: change this to: `handle` [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: unneeded `return` statement [INFO] [stdout] --> src/proto.rs:67:9 [INFO] [stdout] | [INFO] [stdout] 67 | return Ok(Async::NotReady); [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] 67 - return Ok(Async::NotReady); [INFO] [stdout] 67 + Ok(Async::NotReady) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/proto.rs:43:12 [INFO] [stdout] | [INFO] [stdout] 43 | if self.io.in_buf.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!self.io.in_buf.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/proto.rs:64:38 [INFO] [stdout] | [INFO] [stdout] 64 | if self.channel.is_done() && self.io.out_buf.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.io.out_buf.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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/pool.rs:31:14 [INFO] [stdout] | [INFO] [stdout] 31 | pending: VecDeque<(SocketAddr, [INFO] [stdout] | ______________^ [INFO] [stdout] 32 | | Box, Error=io::Error>>)>, [INFO] [stdout] | |___________________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pool.rs:57:60 [INFO] [stdout] | [INFO] [stdout] 57 | timeo: Timeout::new(self.config.write_timeout, &handle) [INFO] [stdout] | ^^^^^^^ help: change this to: `handle` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/pool.rs:209:23 [INFO] [stdout] | [INFO] [stdout] 209 | } else if c.io.in_buf.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!c.io.in_buf.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/pool.rs:225:23 [INFO] [stdout] | [INFO] [stdout] 225 | } else if c.io.in_buf.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!c.io.in_buf.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: deref which would be done by auto-deref [INFO] [stdout] --> src/pool.rs:248:37 [INFO] [stdout] | [INFO] [stdout] 248 | if let Err(e) = c.flush(&*self.config) { [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `&self.config` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/pool.rs:259:12 [INFO] [stdout] | [INFO] [stdout] 259 | if self.normal.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.normal.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: deref which would be done by auto-deref [INFO] [stdout] --> src/pool.rs:276:37 [INFO] [stdout] | [INFO] [stdout] 276 | if let Err(e) = c.flush(&*self.config) { [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `&self.config` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/pool.rs:315:40 [INFO] [stdout] | [INFO] [stdout] 315 | .chain(self.normal.iter().map(|&(_, ref c)| c.deadline)) [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] = note: `#[warn(clippy::needless_borrowed_reference)]` on by default [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 315 - .chain(self.normal.iter().map(|&(_, ref c)| c.deadline)) [INFO] [stdout] 315 + .chain(self.normal.iter().map(|(_, c)| c.deadline)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/pool.rs:316:41 [INFO] [stdout] | [INFO] [stdout] 316 | .chain(self.crowded.iter().map(|&(_, ref c)| c.deadline)) [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 316 - .chain(self.crowded.iter().map(|&(_, ref c)| c.deadline)) [INFO] [stdout] 316 + .chain(self.crowded.iter().map(|(_, c)| c.deadline)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/config.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | return dur.as_secs() + (dur.subsec_nanos() / 1000000) as u64; [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] 7 - return dur.as_secs() + (dur.subsec_nanos() / 1000000) as u64; [INFO] [stdout] 7 + dur.as_secs() + (dur.subsec_nanos() / 1000000) as u64 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `subsec_millis()` is more concise than this calculation [INFO] [stdout] --> src/config.rs:7:28 [INFO] [stdout] | [INFO] [stdout] 7 | return dur.as_secs() + (dur.subsec_nanos() / 1000000) as u64; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `dur.subsec_millis()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duration_subsec [INFO] [stdout] = note: `#[warn(clippy::duration_subsec)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Config` [INFO] [stdout] --> src/config.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | / pub fn new() -> Config { [INFO] [stdout] 13 | | Config { [INFO] [stdout] 14 | | write_timeout: Duration::new(10, 0), [INFO] [stdout] 15 | | watermarks: (60_000, 1_048_576), [INFO] [stdout] ... | [INFO] [stdout] 20 | | } [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] 10 + impl Default for Config { [INFO] [stdout] 11 + fn default() -> Self { [INFO] [stdout] 12 + Self::new() [INFO] [stdout] 13 + } [INFO] [stdout] 14 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/channel.rs:55:9 [INFO] [stdout] | [INFO] [stdout] 55 | / return ( [INFO] [stdout] 56 | | self.buffered.load(Ordering::Relaxed), [INFO] [stdout] 57 | | self.max_metrics_buffered, [INFO] [stdout] 58 | | ) [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] 55 ~ ( [INFO] [stdout] 56 + self.buffered.load(Ordering::Relaxed), [INFO] [stdout] 57 + self.max_metrics_buffered, [INFO] [stdout] 58 + ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/pool.rs:53:13 [INFO] [stdout] | [INFO] [stdout] 53 | address_stream: address_stream, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `address_stream` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/channel.rs:31:9 [INFO] [stdout] | [INFO] [stdout] 31 | max_metrics_buffered: max_metrics_buffered, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `max_metrics_buffered` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `skip(..).next()` on an iterator [INFO] [stdout] --> examples/pool.rs:26:22 [INFO] [stdout] | [INFO] [stdout] 26 | let name = args().skip(1).next().unwrap_or("localhost:2003".to_string()); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: use `nth` instead: `.nth(1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stdout] = note: `#[warn(clippy::iter_skip_next)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/pool.rs:32:28 [INFO] [stdout] | [INFO] [stdout] 32 | Box, Error=io::Error>>)>, [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] 32 | Box, Error=io::Error>>)>, [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/public.rs:26:9 [INFO] [stdout] | [INFO] [stdout] 26 | / return ( [INFO] [stdout] 27 | | Carbon { [INFO] [stdout] 28 | | chan: tx, [INFO] [stdout] 29 | | }, [INFO] [stdout] ... | [INFO] [stdout] 34 | | ) [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] 26 ~ ( [INFO] [stdout] 27 + Carbon { [INFO] [stdout] 28 + chan: tx, [INFO] [stdout] 29 + }, [INFO] [stdout] 30 + Init { [INFO] [stdout] 31 + chan: rx, [INFO] [stdout] 32 + config: config.clone(), [INFO] [stdout] 33 + } [INFO] [stdout] 34 + ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/public.rs:83:27 [INFO] [stdout] | [INFO] [stdout] 83 | .filter(|&&x| x == b' ' || x == b'\n' || x == b'\n') [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 83 - .filter(|&&x| x == b' ' || x == b'\n' || x == b'\n') [INFO] [stdout] 83 + .filter(|&&x| !(x != b' ' && x != b'\n')) [INFO] [stdout] | [INFO] [stdout] 83 - .filter(|&&x| x == b' ' || x == b'\n' || x == b'\n') [INFO] [stdout] 83 + .filter(|&&x| x == b' ' || x == b'\n') [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/proto.rs:30:60 [INFO] [stdout] | [INFO] [stdout] 30 | timeo: Timeout::new(self.config.write_timeout, &handle) [INFO] [stdout] | ^^^^^^^ help: change this to: `handle` [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: unneeded `return` statement [INFO] [stdout] --> src/proto.rs:67:9 [INFO] [stdout] | [INFO] [stdout] 67 | return Ok(Async::NotReady); [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] 67 - return Ok(Async::NotReady); [INFO] [stdout] 67 + Ok(Async::NotReady) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/proto.rs:43:12 [INFO] [stdout] | [INFO] [stdout] 43 | if self.io.in_buf.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!self.io.in_buf.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/proto.rs:64:38 [INFO] [stdout] | [INFO] [stdout] 64 | if self.channel.is_done() && self.io.out_buf.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.io.out_buf.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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/pool.rs:31:14 [INFO] [stdout] | [INFO] [stdout] 31 | pending: VecDeque<(SocketAddr, [INFO] [stdout] | ______________^ [INFO] [stdout] 32 | | Box, Error=io::Error>>)>, [INFO] [stdout] | |___________________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pool.rs:57:60 [INFO] [stdout] | [INFO] [stdout] 57 | timeo: Timeout::new(self.config.write_timeout, &handle) [INFO] [stdout] | ^^^^^^^ help: change this to: `handle` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/pool.rs:209:23 [INFO] [stdout] | [INFO] [stdout] 209 | } else if c.io.in_buf.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!c.io.in_buf.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/pool.rs:225:23 [INFO] [stdout] | [INFO] [stdout] 225 | } else if c.io.in_buf.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!c.io.in_buf.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: deref which would be done by auto-deref [INFO] [stdout] --> src/pool.rs:248:37 [INFO] [stdout] | [INFO] [stdout] 248 | if let Err(e) = c.flush(&*self.config) { [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `&self.config` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/pool.rs:259:12 [INFO] [stdout] | [INFO] [stdout] 259 | if self.normal.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.normal.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: deref which would be done by auto-deref [INFO] [stdout] --> src/pool.rs:276:37 [INFO] [stdout] | [INFO] [stdout] 276 | if let Err(e) = c.flush(&*self.config) { [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `&self.config` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/pool.rs:315:40 [INFO] [stdout] | [INFO] [stdout] 315 | .chain(self.normal.iter().map(|&(_, ref c)| c.deadline)) [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] = note: `#[warn(clippy::needless_borrowed_reference)]` on by default [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 315 - .chain(self.normal.iter().map(|&(_, ref c)| c.deadline)) [INFO] [stdout] 315 + .chain(self.normal.iter().map(|(_, c)| c.deadline)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/pool.rs:316:41 [INFO] [stdout] | [INFO] [stdout] 316 | .chain(self.crowded.iter().map(|&(_, ref c)| c.deadline)) [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 316 - .chain(self.crowded.iter().map(|&(_, ref c)| c.deadline)) [INFO] [stdout] 316 + .chain(self.crowded.iter().map(|(_, c)| c.deadline)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/config.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | return dur.as_secs() + (dur.subsec_nanos() / 1000000) as u64; [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] 7 - return dur.as_secs() + (dur.subsec_nanos() / 1000000) as u64; [INFO] [stdout] 7 + dur.as_secs() + (dur.subsec_nanos() / 1000000) as u64 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `subsec_millis()` is more concise than this calculation [INFO] [stdout] --> src/config.rs:7:28 [INFO] [stdout] | [INFO] [stdout] 7 | return dur.as_secs() + (dur.subsec_nanos() / 1000000) as u64; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `dur.subsec_millis()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duration_subsec [INFO] [stdout] = note: `#[warn(clippy::duration_subsec)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Config` [INFO] [stdout] --> src/config.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | / pub fn new() -> Config { [INFO] [stdout] 13 | | Config { [INFO] [stdout] 14 | | write_timeout: Duration::new(10, 0), [INFO] [stdout] 15 | | watermarks: (60_000, 1_048_576), [INFO] [stdout] ... | [INFO] [stdout] 20 | | } [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] 10 + impl Default for Config { [INFO] [stdout] 11 + fn default() -> Self { [INFO] [stdout] 12 + Self::new() [INFO] [stdout] 13 + } [INFO] [stdout] 14 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/channel.rs:55:9 [INFO] [stdout] | [INFO] [stdout] 55 | / return ( [INFO] [stdout] 56 | | self.buffered.load(Ordering::Relaxed), [INFO] [stdout] 57 | | self.max_metrics_buffered, [INFO] [stdout] 58 | | ) [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] 55 ~ ( [INFO] [stdout] 56 + self.buffered.load(Ordering::Relaxed), [INFO] [stdout] 57 + self.max_metrics_buffered, [INFO] [stdout] 58 + ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.58s [INFO] running `Command { std: "docker" "inspect" "51544460a57f143363ad7d91c7774341170cb94db82a08908890685cd6a755a1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "51544460a57f143363ad7d91c7774341170cb94db82a08908890685cd6a755a1", kill_on_drop: false }` [INFO] [stdout] 51544460a57f143363ad7d91c7774341170cb94db82a08908890685cd6a755a1