[INFO] fetching crate mdarray 0.8.0... [INFO] linting mdarray-0.8.0 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate mdarray 0.8.0 into /workspace/builds/worker-6-tc1/source [INFO] started tweaking crates.io crate mdarray 0.8.0 [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate mdarray 0.8.0 [INFO] tweaked toml for crates.io crate mdarray 0.8.0 written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate mdarray 0.8.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] crate crates.io crate mdarray 0.8.0 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] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] c2b9e39c20f8533fad5e6c33a1618c12ac41e07c3ccd2e10309fb6385dcc78c2 [INFO] running `Command { std: "docker" "start" "-a" "c2b9e39c20f8533fad5e6c33a1618c12ac41e07c3ccd2e10309fb6385dcc78c2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "c2b9e39c20f8533fad5e6c33a1618c12ac41e07c3ccd2e10309fb6385dcc78c2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c2b9e39c20f8533fad5e6c33a1618c12ac41e07c3ccd2e10309fb6385dcc78c2", kill_on_drop: false }` [INFO] [stdout] c2b9e39c20f8533fad5e6c33a1618c12ac41e07c3ccd2e10309fb6385dcc78c2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] 4280cb15884caa4d2b73dc9f981f1c488756d854db81863543615501df32c895 [INFO] running `Command { std: "docker" "start" "-a" "4280cb15884caa4d2b73dc9f981f1c488756d854db81863543615501df32c895", kill_on_drop: false }` [INFO] [stderr] Checking mdarray v0.8.0 (/opt/rustwide/workdir) [INFO] [stderr] Checking serde_test v1.0.177 [INFO] [stdout] warning: called `skip(..).next()` on an iterator [INFO] [stdout] --> tests/test.rs:136:61 [INFO] [stdout] | [INFO] [stdout] 136 | assert_eq!(a.view(2, .., ..), a.axis_expr(0).into_iter().skip(2).next().unwrap()); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: use `nth` instead: `.nth(2)` [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: called `skip(..).next()` on an iterator [INFO] [stdout] --> tests/test.rs:137:67 [INFO] [stdout] | [INFO] [stdout] 137 | assert_eq!(b.array(2, .., ..), b.axis_expr_mut(U0).into_iter().skip(2).next().unwrap()); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: use `nth` instead: `.nth(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `skip(..).next()` on an iterator [INFO] [stdout] --> tests/test.rs:139:62 [INFO] [stdout] | [INFO] [stdout] 139 | assert_eq!(b.view(.., 2, ..), b.axis_expr(U1).into_iter().skip(2).next().unwrap()); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: use `nth` instead: `.nth(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `skip(..).next()` on an iterator [INFO] [stdout] --> tests/test.rs:140:66 [INFO] [stdout] | [INFO] [stdout] 140 | assert_eq!(a.array(.., 2, ..), a.axis_expr_mut(1).into_iter().skip(2).next().unwrap()); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: use `nth` instead: `.nth(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `skip(..).next()` on an iterator [INFO] [stdout] --> tests/test.rs:142:61 [INFO] [stdout] | [INFO] [stdout] 142 | assert_eq!(a.view(.., .., 2), a.axis_expr(2).into_iter().skip(2).next().unwrap()); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: use `nth` instead: `.nth(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `skip(..).next()` on an iterator [INFO] [stdout] --> tests/test.rs:143:67 [INFO] [stdout] | [INFO] [stdout] 143 | assert_eq!(b.array(.., .., 2), b.axis_expr_mut(U2).into_iter().skip(2).next().unwrap()); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: use `nth` instead: `.nth(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `skip(..).next()` on an iterator [INFO] [stdout] --> tests/test.rs:145:61 [INFO] [stdout] | [INFO] [stdout] 145 | assert_eq!(a.view(2, .., ..), a.outer_expr().into_iter().skip(2).next().unwrap()); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: use `nth` instead: `.nth(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `skip(..).next()` on an iterator [INFO] [stdout] --> tests/test.rs:146:66 [INFO] [stdout] | [INFO] [stdout] 146 | assert_eq!(b.array(2, .., ..), b.outer_expr_mut().into_iter().skip(2).next().unwrap()); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: use `nth` instead: `.nth(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> tests/test.rs:148:5 [INFO] [stdout] | [INFO] [stdout] 148 | assert_eq!(a.contains(&1111), 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] 148 - assert_eq!(a.contains(&1111), true); [INFO] [stdout] 148 + assert!(a.contains(&1111)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> tests/test.rs:149:5 [INFO] [stdout] | [INFO] [stdout] 149 | assert_eq!(a.view(1, 1.., 1..).contains(&9999), 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] 149 - assert_eq!(a.view(1, 1.., 1..).contains(&9999), false); [INFO] [stdout] 149 + assert!(!a.view(1, 1.., 1..).contains(&9999)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `mdarray::Array, mdarray::Const<2>)>` [INFO] [stdout] --> tests/test.rs:282:19 [INFO] [stdout] | [INFO] [stdout] 282 | assert_eq!(d, Array::from(array![[1, 2], [5, 6]])); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Array::from()`: `array![[1, 2], [5, 6]]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of right operand [INFO] [stdout] --> tests/test.rs:382:16 [INFO] [stdout] | [INFO] [stdout] 382 | assert_eq!((&a + &view![1, 2, 3]).eval()[..], [2, 4, 6, 5, 7, 9]); [INFO] [stdout] | ^^^^^^---------------^ [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `view![1, 2, 3]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] = note: `#[warn(clippy::op_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of left operand [INFO] [stdout] --> tests/test.rs:383:16 [INFO] [stdout] | [INFO] [stdout] 383 | assert_eq!((&view![1, 2, 3] + &a).eval()[..], [2, 4, 6, 5, 7, 9]); [INFO] [stdout] | ^---------------^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: use the left value directly: `view![1, 2, 3]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> tests/test.rs:582:5 [INFO] [stdout] | [INFO] [stdout] 582 | assert_eq!(d.is_contiguous(), 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] 582 - assert_eq!(d.is_contiguous(), true); [INFO] [stdout] 582 + assert!(d.is_contiguous()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> tests/test.rs:583:5 [INFO] [stdout] | [INFO] [stdout] 583 | assert_eq!(s.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] 583 - assert_eq!(s.is_empty(), false); [INFO] [stdout] 583 + assert!(!s.is_empty()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> tests/test.rs:655:13 [INFO] [stdout] | [INFO] [stdout] 655 | assert!(a == a && *a == a && a == *a && *a == *a); [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] 655 - assert!(a == a && *a == a && a == *a && *a == *a); [INFO] [stdout] 655 + assert!(!(a != a || *a != a || *a != *a)); [INFO] [stdout] | [INFO] [stdout] 655 - assert!(a == a && *a == a && a == *a && *a == *a); [INFO] [stdout] 655 + assert!(a == a && *a == a && *a == *a); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> tests/test.rs:655:13 [INFO] [stdout] | [INFO] [stdout] 655 | assert!(a == a && *a == a && a == *a && *a == *a); [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] help: try [INFO] [stdout] | [INFO] [stdout] 655 - assert!(a == a && *a == a && a == *a && *a == *a); [INFO] [stdout] 655 + assert!(!(a != a || *a != a) && *a == *a); [INFO] [stdout] | [INFO] [stdout] 655 - assert!(a == a && *a == a && a == *a && *a == *a); [INFO] [stdout] 655 + assert!(a == a && *a == a && *a == *a); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> tests/test.rs:622:5 [INFO] [stdout] | [INFO] [stdout] 622 | a = a - expr::fill(1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `a -= expr::fill(1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> tests/test.rs:623:5 [INFO] [stdout] | [INFO] [stdout] 623 | a = a - &b; [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `a -= &b` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> tests/test.rs:624:5 [INFO] [stdout] | [INFO] [stdout] 624 | a = a - b.expr(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `a -= b.expr()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> tests/test.rs:455:16 [INFO] [stdout] | [INFO] [stdout] 455 | let dims = vec![80usize]; [INFO] [stdout] | ^^^^^^^^^^^^^ help: you can use an array directly: `[80usize]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.36s [INFO] running `Command { std: "docker" "inspect" "4280cb15884caa4d2b73dc9f981f1c488756d854db81863543615501df32c895", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4280cb15884caa4d2b73dc9f981f1c488756d854db81863543615501df32c895", kill_on_drop: false }` [INFO] [stdout] 4280cb15884caa4d2b73dc9f981f1c488756d854db81863543615501df32c895