[INFO] cloning repository https://github.com/giwan-dev/leetcode-rs [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/giwan-dev/leetcode-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgiwan-dev%2Fleetcode-rs", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgiwan-dev%2Fleetcode-rs'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 96dbaca150a4e85a799e331b1448585e3faf40a8 [INFO] linting giwan-dev/leetcode-rs against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgiwan-dev%2Fleetcode-rs" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/giwan-dev/leetcode-rs [INFO] finished tweaking git repo https://github.com/giwan-dev/leetcode-rs [INFO] tweaked toml for git repo https://github.com/giwan-dev/leetcode-rs written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/giwan-dev/leetcode-rs 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/giwan-dev/leetcode-rs 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] ef3520416257a3557e1f356cba24379c7ccef43472f2e3902697af67f0a4ec44 [INFO] running `Command { std: "docker" "start" "-a" "ef3520416257a3557e1f356cba24379c7ccef43472f2e3902697af67f0a4ec44", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "ef3520416257a3557e1f356cba24379c7ccef43472f2e3902697af67f0a4ec44", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ef3520416257a3557e1f356cba24379c7ccef43472f2e3902697af67f0a4ec44", kill_on_drop: false }` [INFO] [stdout] ef3520416257a3557e1f356cba24379c7ccef43472f2e3902697af67f0a4ec44 [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] eb09272bad77dbedb9cdc5a5b649149036424a4633827cf44620ec308ef61a75 [INFO] running `Command { std: "docker" "start" "-a" "eb09272bad77dbedb9cdc5a5b649149036424a4633827cf44620ec308ef61a75", kill_on_drop: false }` [INFO] [stderr] Checking leetcode-rs v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: associated items `from_number` and `to_number` are never used [INFO] [stdout] --> src/add_two_numbers.rs:14:8 [INFO] [stdout] | [INFO] [stdout] 8 | impl ListNode { [INFO] [stdout] | ------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 14 | fn from_number(num: i32) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 30 | fn to_number(self) -> i32 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods with the following characteristics: (`to_*` and `self` type is not `Copy`) usually take `self` by reference [INFO] [stdout] --> src/add_two_numbers.rs:30:18 [INFO] [stdout] | [INFO] [stdout] 30 | fn to_number(self) -> i32 { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] = note: `#[warn(clippy::wrong_self_convention)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/add_two_numbers.rs:55:11 [INFO] [stdout] | [INFO] [stdout] 55 | while !l1.is_none() || !l2.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `l1.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/add_two_numbers.rs:55:28 [INFO] [stdout] | [INFO] [stdout] 55 | while !l1.is_none() || !l2.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `l2.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map_or(None, ..)` on an `Option` value [INFO] [stdout] --> src/add_two_numbers.rs:64:14 [INFO] [stdout] | [INFO] [stdout] 64 | l1 = l1.map_or(None, |node| node.next); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `and_then`: `l1.and_then(|node| node.next)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_or_none [INFO] [stdout] = note: `#[warn(clippy::option_map_or_none)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map_or(None, ..)` on an `Option` value [INFO] [stdout] --> src/add_two_numbers.rs:65:14 [INFO] [stdout] | [INFO] [stdout] 65 | l2 = l2.map_or(None, |node| node.next); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `and_then`: `l2.and_then(|node| node.next)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_or_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to pop elements from a `Vec` in a loop [INFO] [stdout] --> src/add_two_numbers.rs:74:9 [INFO] [stdout] | [INFO] [stdout] 74 | let digit = result.pop().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_while_let_some [INFO] [stdout] = note: `#[warn(clippy::manual_while_let_some)]` on by default [INFO] [stdout] help: consider using a `while..let` loop [INFO] [stdout] | [INFO] [stdout] 73 ~ while let Some(digit) = result.pop() { [INFO] [stdout] 74 ~ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/median_of_two_sorted_arrays.rs:53:8 [INFO] [stdout] | [INFO] [stdout] 53 | if length % 2 == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: replace with: `length.is_multiple_of(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i32` which implements the `Copy` trait [INFO] [stdout] --> src/two_sum.rs:15:26 [INFO] [stdout] | [INFO] [stdout] 15 | table.insert(num.clone(), indices); [INFO] [stdout] | ^^^^^^^^^^^ help: try dereferencing it: `*num` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/two_sum.rs:33:12 [INFO] [stdout] | [INFO] [stdout] 33 | if indices.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!indices.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: methods with the following characteristics: (`to_*` and `self` type is not `Copy`) usually take `self` by reference [INFO] [stdout] --> src/add_two_numbers.rs:30:18 [INFO] [stdout] | [INFO] [stdout] 30 | fn to_number(self) -> i32 { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] = note: `#[warn(clippy::wrong_self_convention)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/add_two_numbers.rs:55:11 [INFO] [stdout] | [INFO] [stdout] 55 | while !l1.is_none() || !l2.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `l1.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/add_two_numbers.rs:55:28 [INFO] [stdout] | [INFO] [stdout] 55 | while !l1.is_none() || !l2.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `l2.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map_or(None, ..)` on an `Option` value [INFO] [stdout] --> src/add_two_numbers.rs:64:14 [INFO] [stdout] | [INFO] [stdout] 64 | l1 = l1.map_or(None, |node| node.next); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `and_then`: `l1.and_then(|node| node.next)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_or_none [INFO] [stdout] = note: `#[warn(clippy::option_map_or_none)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map_or(None, ..)` on an `Option` value [INFO] [stdout] --> src/add_two_numbers.rs:65:14 [INFO] [stdout] | [INFO] [stdout] 65 | l2 = l2.map_or(None, |node| node.next); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `and_then`: `l2.and_then(|node| node.next)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_or_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to pop elements from a `Vec` in a loop [INFO] [stdout] --> src/add_two_numbers.rs:74:9 [INFO] [stdout] | [INFO] [stdout] 74 | let digit = result.pop().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_while_let_some [INFO] [stdout] = note: `#[warn(clippy::manual_while_let_some)]` on by default [INFO] [stdout] help: consider using a `while..let` loop [INFO] [stdout] | [INFO] [stdout] 73 ~ while let Some(digit) = result.pop() { [INFO] [stdout] 74 ~ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/median_of_two_sorted_arrays.rs:53:8 [INFO] [stdout] | [INFO] [stdout] 53 | if length % 2 == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: replace with: `length.is_multiple_of(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/search_in_rotated_sorted_array_ii.rs:47:5 [INFO] [stdout] | [INFO] [stdout] 47 | assert_eq!(search(vec![2, 5, 6, 0, 0, 1, 2], 0), 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] 47 - assert_eq!(search(vec![2, 5, 6, 0, 0, 1, 2], 0), true); [INFO] [stdout] 47 + assert!(search(vec![2, 5, 6, 0, 0, 1, 2], 0)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/search_in_rotated_sorted_array_ii.rs:48:5 [INFO] [stdout] | [INFO] [stdout] 48 | assert_eq!(search(vec![2, 5, 6, 0, 0, 1, 2], 3), 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] 48 - assert_eq!(search(vec![2, 5, 6, 0, 0, 1, 2], 3), false); [INFO] [stdout] 48 + assert!(!search(vec![2, 5, 6, 0, 0, 1, 2], 3)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/search_in_rotated_sorted_array_ii.rs:49:5 [INFO] [stdout] | [INFO] [stdout] 49 | assert_eq!(search(vec![1], 0), 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] 49 - assert_eq!(search(vec![1], 0), false); [INFO] [stdout] 49 + assert!(!search(vec![1], 0)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/search_in_rotated_sorted_array_ii.rs:50:5 [INFO] [stdout] | [INFO] [stdout] 50 | assert_eq!(search(vec![1], 2), 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] 50 - assert_eq!(search(vec![1], 2), false); [INFO] [stdout] 50 + assert!(!search(vec![1], 2)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/search_in_rotated_sorted_array_ii.rs:51:5 [INFO] [stdout] | [INFO] [stdout] 51 | assert_eq!(search(vec![1, 1], 0), 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] 51 - assert_eq!(search(vec![1, 1], 0), false); [INFO] [stdout] 51 + assert!(!search(vec![1, 1], 0)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i32` which implements the `Copy` trait [INFO] [stdout] --> src/two_sum.rs:15:26 [INFO] [stdout] | [INFO] [stdout] 15 | table.insert(num.clone(), indices); [INFO] [stdout] | ^^^^^^^^^^^ help: try dereferencing it: `*num` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/two_sum.rs:33:12 [INFO] [stdout] | [INFO] [stdout] 33 | if indices.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!indices.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] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.26s [INFO] running `Command { std: "docker" "inspect" "eb09272bad77dbedb9cdc5a5b649149036424a4633827cf44620ec308ef61a75", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "eb09272bad77dbedb9cdc5a5b649149036424a4633827cf44620ec308ef61a75", kill_on_drop: false }` [INFO] [stdout] eb09272bad77dbedb9cdc5a5b649149036424a4633827cf44620ec308ef61a75