[INFO] cloning repository https://github.com/jkarneges/rust-async-bench [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/jkarneges/rust-async-bench" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjkarneges%2Frust-async-bench", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjkarneges%2Frust-async-bench'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] d3cb88aa1e32dbd084775f8b408f1f1f2c383848 [INFO] linting jkarneges/rust-async-bench against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjkarneges%2Frust-async-bench" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/jkarneges/rust-async-bench [INFO] finished tweaking git repo https://github.com/jkarneges/rust-async-bench [INFO] tweaked toml for git repo https://github.com/jkarneges/rust-async-bench written to /workspace/builds/worker-7-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/jkarneges/rust-async-bench 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] crate git repo https://github.com/jkarneges/rust-async-bench already has a lockfile, it will not be regenerated [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] Downloading crates ... [INFO] [stderr] Downloaded plotters-svg v0.3.3 [INFO] [stderr] Downloaded crossbeam-utils v0.8.11 [INFO] [stderr] Downloaded crossbeam-epoch v0.9.10 [INFO] [stderr] Downloaded plotters-backend v0.3.4 [INFO] [stderr] Downloaded rayon-core v1.9.3 [INFO] [stderr] Downloaded serde_derive v1.0.144 [INFO] [stderr] Downloaded serde v1.0.144 [INFO] [stderr] Downloaded rayon v1.5.3 [INFO] [stderr] Downloaded plotters v0.3.3 [INFO] [stderr] Downloaded serde_json v1.0.85 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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] c50439bb28c7ac602968050b88a2f281586b0a142f2ad64e98def5eb83edc253 [INFO] running `Command { std: "docker" "start" "-a" "c50439bb28c7ac602968050b88a2f281586b0a142f2ad64e98def5eb83edc253", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "c50439bb28c7ac602968050b88a2f281586b0a142f2ad64e98def5eb83edc253", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c50439bb28c7ac602968050b88a2f281586b0a142f2ad64e98def5eb83edc253", kill_on_drop: false }` [INFO] [stdout] c50439bb28c7ac602968050b88a2f281586b0a142f2ad64e98def5eb83edc253 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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] 31134de5f8950847f1d99d496e60ebb2790f988128f37c160a8e9b44680ad3e5 [INFO] running `Command { std: "docker" "start" "-a" "31134de5f8950847f1d99d496e60ebb2790f988128f37c160a8e9b44680ad3e5", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.132 [INFO] [stderr] Compiling serde v1.0.144 [INFO] [stderr] Compiling crossbeam-utils v0.8.11 [INFO] [stderr] Checking once_cell v1.13.1 [INFO] [stderr] Compiling crossbeam-epoch v0.9.10 [INFO] [stderr] Compiling proc-macro2 v1.0.43 [INFO] [stderr] Compiling memchr v2.5.0 [INFO] [stderr] Compiling rayon-core v1.9.3 [INFO] [stderr] Compiling unicode-ident v1.0.3 [INFO] [stderr] Compiling num-traits v0.2.15 [INFO] [stderr] Compiling serde_json v1.0.85 [INFO] [stderr] Checking either v1.8.0 [INFO] [stderr] Checking ryu v1.0.11 [INFO] [stderr] Compiling syn v1.0.99 [INFO] [stderr] Compiling rayon v1.5.3 [INFO] [stderr] Checking plotters-backend v0.3.4 [INFO] [stderr] Compiling quote v1.0.21 [INFO] [stderr] Checking num_cpus v1.13.1 [INFO] [stderr] Checking crossbeam-channel v0.5.6 [INFO] [stderr] Compiling serde_derive v1.0.144 [INFO] [stderr] Checking itoa v1.0.3 [INFO] [stderr] Checking unicode-width v0.1.9 [INFO] [stderr] Checking regex-automata v0.1.10 [INFO] [stderr] Checking textwrap v0.11.0 [INFO] [stderr] Checking csv-core v0.1.10 [INFO] [stderr] Checking plotters-svg v0.3.3 [INFO] [stderr] Checking itertools v0.10.3 [INFO] [stderr] Checking regex-syntax v0.6.27 [INFO] [stderr] Checking crossbeam-deque v0.8.2 [INFO] [stderr] Checking half v1.8.2 [INFO] [stderr] Checking itoa v0.4.8 [INFO] [stderr] Checking clap v2.34.0 [INFO] [stderr] Checking walkdir v2.3.2 [INFO] [stderr] Checking atty v0.2.14 [INFO] [stderr] Checking oorandom v11.1.3 [INFO] [stderr] Checking rust-async-bench v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/list.rs:30:13 [INFO] [stdout] | [INFO] [stdout] 30 | value: value, [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `value` [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] [stderr] Checking plotters v0.3.3 [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/list.rs:43:9 [INFO] [stdout] | [INFO] [stdout] 43 | !self.head.is_some() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `self.head.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: deref which would be done by auto-deref [INFO] [stdout] --> src/run.rs:141:9 [INFO] [stdout] | [INFO] [stdout] 141 | *self [INFO] [stdout] | ^^^^^ help: try: `self` [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: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/run.rs:188:24 [INFO] [stdout] | [INFO] [stdout] 188 | if (&self.buf[..self.buf_len]).contains(&b'\n') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.buf[..self.buf_len]` [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: length comparison to zero [INFO] [stdout] --> src/run.rs:291:36 [INFO] [stdout] | [INFO] [stdout] 291 | if accept_left == 0 && conns.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `conns.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: the following explicit lifetimes could be elided: 'r [INFO] [stdout] --> src/run.rs:401:21 [INFO] [stdout] | [INFO] [stdout] 401 | async fn connection<'r, 's, const N: usize>( [INFO] [stdout] | ^^ [INFO] [stdout] 402 | mut stream: AsyncFakeStream<&'s Stats, &'r FakeReactor<&'s Stats>>, [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] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/run.rs:407:12 [INFO] [stdout] | [INFO] [stdout] 407 | while !(&buf[..buf_len]).contains(&b'\n') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `buf[..buf_len]` [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: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/run.rs:428:12 [INFO] [stdout] | [INFO] [stdout] 428 | while !(&buf[..buf_len]).contains(&b'\n') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `buf[..buf_len]` [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: redundant pattern matching, consider using `is_ready()` [INFO] [stdout] --> src/executor.rs:136:21 [INFO] [stdout] | [INFO] [stdout] 136 | / match fut.as_mut().poll(&mut cx) { [INFO] [stdout] 137 | | Poll::Ready(_) => true, [INFO] [stdout] 138 | | Poll::Pending => false, [INFO] [stdout] 139 | | } [INFO] [stdout] | |_____________________^ help: try: `fut.as_mut().poll(&mut cx).is_ready()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ready()` [INFO] [stdout] --> src/executor.rs:375:21 [INFO] [stdout] | [INFO] [stdout] 375 | / match fut.as_mut().poll(&mut cx) { [INFO] [stdout] 376 | | Poll::Ready(_) => true, [INFO] [stdout] 377 | | Poll::Pending => false, [INFO] [stdout] 378 | | } [INFO] [stdout] | |_____________________^ help: try: `fut.as_mut().poll(&mut cx).is_ready()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/executor.rs:403:19 [INFO] [stdout] | [INFO] [stdout] 403 | spawn_fn: unsafe fn(*const (), Pin + 'a>>) -> Result<(), ()>, [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: returning the result of a `let` binding from a block [INFO] [stdout] --> src/executor.rs:618:13 [INFO] [stdout] | [INFO] [stdout] 584 | / let tasks = { [INFO] [stdout] 585 | | let tasks = Rc::new(Self { [INFO] [stdout] 586 | | data: RefCell::new(data), [INFO] [stdout] 587 | | wakers: Vec::new(), [INFO] [stdout] ... | [INFO] [stdout] 616 | | }; [INFO] [stdout] | |______________- unnecessary `let` binding [INFO] [stdout] 617 | [INFO] [stdout] 618 | tasks [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 584 ~ [INFO] [stdout] 585 | [INFO] [stdout] 586 ~ { [INFO] [stdout] 587 + let tasks = Rc::new(Self { [INFO] [stdout] 588 + data: RefCell::new(data), [INFO] [stdout] 589 + wakers: Vec::new(), [INFO] [stdout] 590 + waker_strong_counts: Vec::new(), [INFO] [stdout] 591 + }); [INFO] [stdout] 592 + [INFO] [stdout] 593 + let mut wakers = Vec::with_capacity(tasks_max); [INFO] [stdout] 594 + let mut strong_counts = Vec::with_capacity(tasks_max); [INFO] [stdout] 595 + [INFO] [stdout] 596 + for task_id in 0..wakers.capacity() { [INFO] [stdout] 597 + let (waker, c) = waker_factory.new_waker(TaskWaker { [INFO] [stdout] 598 + tasks: Rc::downgrade(&tasks), [INFO] [stdout] 599 + task_id, [INFO] [stdout] 600 + thread_id: thread::current().id(), [INFO] [stdout] 601 + }); [INFO] [stdout] 602 + [INFO] [stdout] 603 + wakers.push(waker); [INFO] [stdout] 604 + strong_counts.push(c); [INFO] [stdout] 605 + } [INFO] [stdout] 606 + [INFO] [stdout] 607 + // SAFETY: we can modify the content of the Rc here because [INFO] [stdout] 608 + // nothing is accessing it yet. we only just constructed the Rc [INFO] [stdout] 609 + // above, and the TaskWakers take refs but they don't access [INFO] [stdout] 610 + // the Rc content at rest [INFO] [stdout] 611 + unsafe { [INFO] [stdout] 612 + let tasks = Rc::into_raw(tasks) as *mut Tasks; [INFO] [stdout] 613 + (*tasks).wakers = wakers; [INFO] [stdout] 614 + (*tasks).waker_strong_counts = strong_counts; [INFO] [stdout] 615 + [INFO] [stdout] 616 + Rc::from_raw(tasks) [INFO] [stdout] 617 + } [INFO] [stdout] 618 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/executor.rs:660:25 [INFO] [stdout] | [INFO] [stdout] 660 | fn process_next<'a>(&'a self) { [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] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 660 - fn process_next<'a>(&'a self) { [INFO] [stdout] 660 + fn process_next(&self) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ready()` [INFO] [stdout] --> src/executor.rs:691:21 [INFO] [stdout] | [INFO] [stdout] 691 | / match fut.as_mut().poll(&mut cx) { [INFO] [stdout] 692 | | Poll::Ready(_) => true, [INFO] [stdout] 693 | | Poll::Pending => false, [INFO] [stdout] 694 | | } [INFO] [stdout] | |_____________________^ help: try: `fut.as_mut().poll(&mut cx).is_ready()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/fakeio.rs:61:47 [INFO] [stdout] | [INFO] [stdout] 61 | buf[..data.len()].copy_from_slice(&data); [INFO] [stdout] | ^^^^^ help: change this to: `data` [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: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/future.rs:18:17 [INFO] [stdout] | [INFO] [stdout] 18 | fn register<'a, E: Evented>( [INFO] [stdout] | ^^ [INFO] [stdout] 19 | &'a self, [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] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 18 ~ fn register( [INFO] [stdout] 19 ~ &self, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: initializer for `thread_local` value can be made `const` [INFO] [stdout] --> src/waker.rs:99:60 [INFO] [stdout] | [INFO] [stdout] 99 | static CURRENT_THREAD: RefCell> = RefCell::new(None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace with: `const { RefCell::new(None) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_const_for_thread_local [INFO] [stdout] = note: `#[warn(clippy::missing_const_for_thread_local)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting raw pointers to the same type and constness is unnecessary (`*const ()` -> `*const ()`) [INFO] [stdout] --> src/waker.rs:133:13 [INFO] [stdout] | [INFO] [stdout] 133 | waker as *const (), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `waker` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking regex v1.6.0 [INFO] [stderr] Checking criterion-plot v0.4.5 [INFO] [stderr] Checking bstr v0.2.17 [INFO] [stderr] Checking serde_cbor v0.11.2 [INFO] [stderr] Checking csv v1.1.6 [INFO] [stderr] Checking tinytemplate v1.2.1 [INFO] [stderr] Checking criterion v0.3.6 [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/list.rs:30:13 [INFO] [stdout] | [INFO] [stdout] 30 | value: value, [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `value` [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 closure [INFO] [stdout] --> benches/run.rs:6:47 [INFO] [stdout] | [INFO] [stdout] 6 | c.bench_function("manual", |b| b.iter(|| r())); [INFO] [stdout] | ^^^^^^ help: replace the closure with the function itself: `&mut r` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> benches/run.rs:10:47 [INFO] [stdout] | [INFO] [stdout] 10 | c.bench_function("nonbox", |b| b.iter(|| r())); [INFO] [stdout] | ^^^^^^ help: replace the closure with the function itself: `&mut r` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> benches/run.rs:14:50 [INFO] [stdout] | [INFO] [stdout] 14 | c.bench_function("callerbox", |b| b.iter(|| r())); [INFO] [stdout] | ^^^^^^ help: replace the closure with the function itself: `&mut r` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> benches/run.rs:18:53 [INFO] [stdout] | [INFO] [stdout] 18 | c.bench_function("large+nonbox", |b| b.iter(|| r())); [INFO] [stdout] | ^^^^^^ help: replace the closure with the function itself: `&mut r` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> benches/run.rs:22:44 [INFO] [stdout] | [INFO] [stdout] 22 | c.bench_function("box", |b| b.iter(|| r())); [INFO] [stdout] | ^^^^^^ help: replace the closure with the function itself: `&mut r` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> benches/run.rs:26:54 [INFO] [stdout] | [INFO] [stdout] 26 | c.bench_function("box+callerbox", |b| b.iter(|| r())); [INFO] [stdout] | ^^^^^^ help: replace the closure with the function itself: `&mut r` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> benches/run.rs:30:50 [INFO] [stdout] | [INFO] [stdout] 30 | c.bench_function("large+box", |b| b.iter(|| r())); [INFO] [stdout] | ^^^^^^ help: replace the closure with the function itself: `&mut r` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> benches/run.rs:34:47 [INFO] [stdout] | [INFO] [stdout] 34 | c.bench_function("box+rc", |b| b.iter(|| r())); [INFO] [stdout] | ^^^^^^ help: replace the closure with the function itself: `&mut r` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> benches/run.rs:38:50 [INFO] [stdout] | [INFO] [stdout] 38 | c.bench_function("box+chkrc", |b| b.iter(|| r())); [INFO] [stdout] | ^^^^^^ help: replace the closure with the function itself: `&mut r` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> benches/run.rs:42:48 [INFO] [stdout] | [INFO] [stdout] 42 | c.bench_function("box+arc", |b| b.iter(|| r())); [INFO] [stdout] | ^^^^^^ help: replace the closure with the function itself: `&mut r` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> benches/run.rs:46:56 [INFO] [stdout] | [INFO] [stdout] 46 | c.bench_function("manual+syscalls", |b| b.iter(|| r())); [INFO] [stdout] | ^^^^^^ help: replace the closure with the function itself: `&mut r` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> benches/run.rs:50:56 [INFO] [stdout] | [INFO] [stdout] 50 | c.bench_function("nonbox+syscalls", |b| b.iter(|| r())); [INFO] [stdout] | ^^^^^^ help: replace the closure with the function itself: `&mut r` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> benches/run.rs:54:53 [INFO] [stdout] | [INFO] [stdout] 54 | c.bench_function("box+syscalls", |b| b.iter(|| r())); [INFO] [stdout] | ^^^^^^ help: replace the closure with the function itself: `&mut r` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> benches/run.rs:58:56 [INFO] [stdout] | [INFO] [stdout] 58 | c.bench_function("box+rc+syscalls", |b| b.iter(|| r())); [INFO] [stdout] | ^^^^^^ help: replace the closure with the function itself: `&mut r` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> benches/run.rs:62:59 [INFO] [stdout] | [INFO] [stdout] 62 | c.bench_function("box+chkrc+syscalls", |b| b.iter(|| r())); [INFO] [stdout] | ^^^^^^ help: replace the closure with the function itself: `&mut r` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> benches/run.rs:66:57 [INFO] [stdout] | [INFO] [stdout] 66 | c.bench_function("box+arc+syscalls", |b| b.iter(|| r())); [INFO] [stdout] | ^^^^^^ help: replace the closure with the function itself: `&mut r` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/list.rs:43:9 [INFO] [stdout] | [INFO] [stdout] 43 | !self.head.is_some() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `self.head.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: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/list.rs:185:9 [INFO] [stdout] | [INFO] [stdout] 185 | assert_eq!(l.is_empty(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_assert_comparison)]` on by default [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 185 - assert_eq!(l.is_empty(), true); [INFO] [stdout] 185 + assert!(l.is_empty()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/list.rs:191:9 [INFO] [stdout] | [INFO] [stdout] 191 | assert_eq!(l.is_empty(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 191 - assert_eq!(l.is_empty(), false); [INFO] [stdout] 191 + assert!(!l.is_empty()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/list.rs:198:9 [INFO] [stdout] | [INFO] [stdout] 198 | assert_eq!(l.is_empty(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 198 - assert_eq!(l.is_empty(), false); [INFO] [stdout] 198 + assert!(!l.is_empty()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/list.rs:207:9 [INFO] [stdout] | [INFO] [stdout] 207 | assert_eq!(l.is_empty(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 207 - assert_eq!(l.is_empty(), false); [INFO] [stdout] 207 + assert!(!l.is_empty()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/list.rs:219:9 [INFO] [stdout] | [INFO] [stdout] 219 | assert_eq!(l.is_empty(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 219 - assert_eq!(l.is_empty(), false); [INFO] [stdout] 219 + assert!(!l.is_empty()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/list.rs:229:9 [INFO] [stdout] | [INFO] [stdout] 229 | assert_eq!(l.is_empty(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 229 - assert_eq!(l.is_empty(), false); [INFO] [stdout] 229 + assert!(!l.is_empty()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/list.rs:237:9 [INFO] [stdout] | [INFO] [stdout] 237 | assert_eq!(l.is_empty(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 237 - assert_eq!(l.is_empty(), true); [INFO] [stdout] 237 + assert!(l.is_empty()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/list.rs:253:9 [INFO] [stdout] | [INFO] [stdout] 253 | assert_eq!(l.is_empty(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 253 - assert_eq!(l.is_empty(), true); [INFO] [stdout] 253 + assert!(l.is_empty()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/list.rs:258:9 [INFO] [stdout] | [INFO] [stdout] 258 | assert_eq!(l.is_empty(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 258 - assert_eq!(l.is_empty(), false); [INFO] [stdout] 258 + assert!(!l.is_empty()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/list.rs:265:9 [INFO] [stdout] | [INFO] [stdout] 265 | assert_eq!(l.is_empty(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 265 - assert_eq!(l.is_empty(), true); [INFO] [stdout] 265 + assert!(l.is_empty()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/list.rs:273:9 [INFO] [stdout] | [INFO] [stdout] 273 | assert_eq!(l.is_empty(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 273 - assert_eq!(l.is_empty(), true); [INFO] [stdout] 273 + assert!(l.is_empty()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/list.rs:290:9 [INFO] [stdout] | [INFO] [stdout] 290 | assert_eq!(a.is_empty(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 290 - assert_eq!(a.is_empty(), true); [INFO] [stdout] 290 + assert!(a.is_empty()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/list.rs:293:9 [INFO] [stdout] | [INFO] [stdout] 293 | assert_eq!(b.is_empty(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 293 - assert_eq!(b.is_empty(), true); [INFO] [stdout] 293 + assert!(b.is_empty()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/list.rs:301:9 [INFO] [stdout] | [INFO] [stdout] 301 | assert_eq!(a.is_empty(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 301 - assert_eq!(a.is_empty(), false); [INFO] [stdout] 301 + assert!(!a.is_empty()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/list.rs:304:9 [INFO] [stdout] | [INFO] [stdout] 304 | assert_eq!(b.is_empty(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 304 - assert_eq!(b.is_empty(), true); [INFO] [stdout] 304 + assert!(b.is_empty()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/run.rs:141:9 [INFO] [stdout] | [INFO] [stdout] 141 | *self [INFO] [stdout] | ^^^^^ help: try: `self` [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: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/run.rs:188:24 [INFO] [stdout] | [INFO] [stdout] 188 | if (&self.buf[..self.buf_len]).contains(&b'\n') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.buf[..self.buf_len]` [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: length comparison to zero [INFO] [stdout] --> src/run.rs:291:36 [INFO] [stdout] | [INFO] [stdout] 291 | if accept_left == 0 && conns.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `conns.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: the following explicit lifetimes could be elided: 'r [INFO] [stdout] --> src/run.rs:401:21 [INFO] [stdout] | [INFO] [stdout] 401 | async fn connection<'r, 's, const N: usize>( [INFO] [stdout] | ^^ [INFO] [stdout] 402 | mut stream: AsyncFakeStream<&'s Stats, &'r FakeReactor<&'s Stats>>, [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] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/run.rs:407:12 [INFO] [stdout] | [INFO] [stdout] 407 | while !(&buf[..buf_len]).contains(&b'\n') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `buf[..buf_len]` [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: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/run.rs:428:12 [INFO] [stdout] | [INFO] [stdout] 428 | while !(&buf[..buf_len]).contains(&b'\n') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `buf[..buf_len]` [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: redundant pattern matching, consider using `is_ready()` [INFO] [stdout] --> src/executor.rs:136:21 [INFO] [stdout] | [INFO] [stdout] 136 | / match fut.as_mut().poll(&mut cx) { [INFO] [stdout] 137 | | Poll::Ready(_) => true, [INFO] [stdout] 138 | | Poll::Pending => false, [INFO] [stdout] 139 | | } [INFO] [stdout] | |_____________________^ help: try: `fut.as_mut().poll(&mut cx).is_ready()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ready()` [INFO] [stdout] --> src/executor.rs:375:21 [INFO] [stdout] | [INFO] [stdout] 375 | / match fut.as_mut().poll(&mut cx) { [INFO] [stdout] 376 | | Poll::Ready(_) => true, [INFO] [stdout] 377 | | Poll::Pending => false, [INFO] [stdout] 378 | | } [INFO] [stdout] | |_____________________^ help: try: `fut.as_mut().poll(&mut cx).is_ready()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/executor.rs:403:19 [INFO] [stdout] | [INFO] [stdout] 403 | spawn_fn: unsafe fn(*const (), Pin + 'a>>) -> Result<(), ()>, [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: returning the result of a `let` binding from a block [INFO] [stdout] --> src/executor.rs:618:13 [INFO] [stdout] | [INFO] [stdout] 584 | / let tasks = { [INFO] [stdout] 585 | | let tasks = Rc::new(Self { [INFO] [stdout] 586 | | data: RefCell::new(data), [INFO] [stdout] 587 | | wakers: Vec::new(), [INFO] [stdout] ... | [INFO] [stdout] 616 | | }; [INFO] [stdout] | |______________- unnecessary `let` binding [INFO] [stdout] 617 | [INFO] [stdout] 618 | tasks [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 584 ~ [INFO] [stdout] 585 | [INFO] [stdout] 586 ~ { [INFO] [stdout] 587 + let tasks = Rc::new(Self { [INFO] [stdout] 588 + data: RefCell::new(data), [INFO] [stdout] 589 + wakers: Vec::new(), [INFO] [stdout] 590 + waker_strong_counts: Vec::new(), [INFO] [stdout] 591 + }); [INFO] [stdout] 592 + [INFO] [stdout] 593 + let mut wakers = Vec::with_capacity(tasks_max); [INFO] [stdout] 594 + let mut strong_counts = Vec::with_capacity(tasks_max); [INFO] [stdout] 595 + [INFO] [stdout] 596 + for task_id in 0..wakers.capacity() { [INFO] [stdout] 597 + let (waker, c) = waker_factory.new_waker(TaskWaker { [INFO] [stdout] 598 + tasks: Rc::downgrade(&tasks), [INFO] [stdout] 599 + task_id, [INFO] [stdout] 600 + thread_id: thread::current().id(), [INFO] [stdout] 601 + }); [INFO] [stdout] 602 + [INFO] [stdout] 603 + wakers.push(waker); [INFO] [stdout] 604 + strong_counts.push(c); [INFO] [stdout] 605 + } [INFO] [stdout] 606 + [INFO] [stdout] 607 + // SAFETY: we can modify the content of the Rc here because [INFO] [stdout] 608 + // nothing is accessing it yet. we only just constructed the Rc [INFO] [stdout] 609 + // above, and the TaskWakers take refs but they don't access [INFO] [stdout] 610 + // the Rc content at rest [INFO] [stdout] 611 + unsafe { [INFO] [stdout] 612 + let tasks = Rc::into_raw(tasks) as *mut Tasks; [INFO] [stdout] 613 + (*tasks).wakers = wakers; [INFO] [stdout] 614 + (*tasks).waker_strong_counts = strong_counts; [INFO] [stdout] 615 + [INFO] [stdout] 616 + Rc::from_raw(tasks) [INFO] [stdout] 617 + } [INFO] [stdout] 618 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/executor.rs:660:25 [INFO] [stdout] | [INFO] [stdout] 660 | fn process_next<'a>(&'a self) { [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] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 660 - fn process_next<'a>(&'a self) { [INFO] [stdout] 660 + fn process_next(&self) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ready()` [INFO] [stdout] --> src/executor.rs:691:21 [INFO] [stdout] | [INFO] [stdout] 691 | / match fut.as_mut().poll(&mut cx) { [INFO] [stdout] 692 | | Poll::Ready(_) => true, [INFO] [stdout] 693 | | Poll::Pending => false, [INFO] [stdout] 694 | | } [INFO] [stdout] | |_____________________^ help: try: `fut.as_mut().poll(&mut cx).is_ready()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/fakeio.rs:61:47 [INFO] [stdout] | [INFO] [stdout] 61 | buf[..data.len()].copy_from_slice(&data); [INFO] [stdout] | ^^^^^ help: change this to: `data` [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: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/future.rs:18:17 [INFO] [stdout] | [INFO] [stdout] 18 | fn register<'a, E: Evented>( [INFO] [stdout] | ^^ [INFO] [stdout] 19 | &'a self, [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] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 18 ~ fn register( [INFO] [stdout] 19 ~ &self, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: initializer for `thread_local` value can be made `const` [INFO] [stdout] --> src/waker.rs:99:60 [INFO] [stdout] | [INFO] [stdout] 99 | static CURRENT_THREAD: RefCell> = RefCell::new(None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace with: `const { RefCell::new(None) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_const_for_thread_local [INFO] [stdout] = note: `#[warn(clippy::missing_const_for_thread_local)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting raw pointers to the same type and constness is unnecessary (`*const ()` -> `*const ()`) [INFO] [stdout] --> src/waker.rs:133:13 [INFO] [stdout] | [INFO] [stdout] 133 | waker as *const (), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `waker` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 27.10s [INFO] running `Command { std: "docker" "inspect" "31134de5f8950847f1d99d496e60ebb2790f988128f37c160a8e9b44680ad3e5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "31134de5f8950847f1d99d496e60ebb2790f988128f37c160a8e9b44680ad3e5", kill_on_drop: false }` [INFO] [stdout] 31134de5f8950847f1d99d496e60ebb2790f988128f37c160a8e9b44680ad3e5