[INFO] cloning repository https://github.com/quigley-c/traveling_salesman [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/quigley-c/traveling_salesman" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fquigley-c%2Ftraveling_salesman", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fquigley-c%2Ftraveling_salesman'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] ec493756df4b83b37bd58711eb1d3e7607cb87cd [INFO] linting quigley-c/traveling_salesman against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fquigley-c%2Ftraveling_salesman" "/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/quigley-c/traveling_salesman [INFO] finished tweaking git repo https://github.com/quigley-c/traveling_salesman [INFO] tweaked toml for git repo https://github.com/quigley-c/traveling_salesman written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/quigley-c/traveling_salesman 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/quigley-c/traveling_salesman 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] 8108d86ad198497f630520173aeaf3aca69473f8089d813d5dd3db39d29d1536 [INFO] running `Command { std: "docker" "start" "-a" "8108d86ad198497f630520173aeaf3aca69473f8089d813d5dd3db39d29d1536", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "8108d86ad198497f630520173aeaf3aca69473f8089d813d5dd3db39d29d1536", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "8108d86ad198497f630520173aeaf3aca69473f8089d813d5dd3db39d29d1536", kill_on_drop: false }` [INFO] [stdout] 8108d86ad198497f630520173aeaf3aca69473f8089d813d5dd3db39d29d1536 [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] bd2b4c4a1ac48c8f8f508e9d27047566a58611c260f915fbffce1e7e3db2a592 [INFO] running `Command { std: "docker" "start" "-a" "bd2b4c4a1ac48c8f8f508e9d27047566a58611c260f915fbffce1e7e3db2a592", kill_on_drop: false }` [INFO] [stderr] Checking traveling_sales v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/binary_heap.rs:57:5 [INFO] [stdout] | [INFO] [stdout] 57 | return (heap, edges); [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] 57 - return (heap, edges); [INFO] [stdout] 57 + (heap, edges) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `edge_index` is used as a loop counter [INFO] [stdout] --> src/binary_heap.rs:45:5 [INFO] [stdout] | [INFO] [stdout] 45 | for l in list { [INFO] [stdout] | ^^^^^^^^^^^^^ help: consider using: `for (edge_index, l) in list.into_iter().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/binary_heap.rs:63:17 [INFO] [stdout] | [INFO] [stdout] 63 | let index = heap.indicies[key].clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `heap.indicies[key]` [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: unneeded `return` statement [INFO] [stdout] --> src/binary_heap.rs:82:5 [INFO] [stdout] | [INFO] [stdout] 82 | return Ok(v); [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] 82 - return Ok(v); [INFO] [stdout] 82 + Ok(v) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/binary_heap.rs:74:8 [INFO] [stdout] | [INFO] [stdout] 74 | if heap.data.len() == 0 { return Err("Err: attempt to pop from an empty heap"); }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `heap.data.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: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/binary_heap.rs:123:15 [INFO] [stdout] | [INFO] [stdout] 123 | let tmp = heap.indicies[heap.data[vi].name].clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `heap.indicies[heap.data[vi].name]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/prim.rs:36:5 [INFO] [stdout] | [INFO] [stdout] 36 | return path; [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] 36 - return path; [INFO] [stdout] 36 + path [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/prim.rs:11:11 [INFO] [stdout] | [INFO] [stdout] 11 | while heap.data.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!heap.data.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: casting to the same type is unnecessary (`f32` -> `f32`) [INFO] [stdout] --> src/prim.rs:27:28 [INFO] [stdout] | [INFO] [stdout] 27 | let new_dist = edges[*e].val as f32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `edges[*e].val` [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] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:8:28 [INFO] [stdout] | [INFO] [stdout] 8 | fn square(x: f32) -> f32 { return x*x; } [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] 8 - fn square(x: f32) -> f32 { return x*x; } [INFO] [stdout] 8 + fn square(x: f32) -> f32 { x*x} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f32` -> `f32`) [INFO] [stdout] --> src/main.rs:39:21 [INFO] [stdout] | [INFO] [stdout] 39 | let d = ( [INFO] [stdout] | _____________________^ [INFO] [stdout] 40 | | ( [INFO] [stdout] 41 | | square(nums[n][0] - nums[to][0]) + [INFO] [stdout] 42 | | square(nums[n][1] - nums[to][1])) [INFO] [stdout] 43 | | as f32) [INFO] [stdout] | |___________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 39 ~ let d = (( [INFO] [stdout] 40 + square(nums[n][0] - nums[to][0]) + [INFO] [stdout] 41 + square(nums[n][1] - nums[to][1]))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/main.rs:60:53 [INFO] [stdout] | [INFO] [stdout] 60 | fn print_path(list: &Vec, edges: &Vec) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 60 - fn print_path(list: &Vec, edges: &Vec) { [INFO] [stdout] 60 + fn print_path(list: &Vec, edges: &[binary_heap::Edge]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/main.rs:65:9 [INFO] [stdout] | [INFO] [stdout] 65 | dist = dist + i.label; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `dist += i.label` [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] --> src/main.rs:67:9 [INFO] [stdout] | [INFO] [stdout] 67 | c = c + 1; [INFO] [stdout] | ^^^^^^^^^ help: replace it with: `c += 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] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/main.rs:73:13 [INFO] [stdout] | [INFO] [stdout] 73 | dist = dist + edges[e].val; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `dist += edges[e].val` [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: unneeded `return` statement [INFO] [stdout] --> src/main.rs:96:5 [INFO] [stdout] | [INFO] [stdout] 96 | return out.clone(); [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] 96 - return out.clone(); [INFO] [stdout] 96 + out.clone() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:118:16 [INFO] [stdout] | [INFO] [stdout] 118 | if !list[heap.indicies[edge.to]].is_some() { continue; } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `list[heap.indicies[edge.to]].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: unneeded `return` statement [INFO] [stdout] --> src/main.rs:147:5 [INFO] [stdout] | [INFO] [stdout] 147 | return path; [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] 147 - return path; [INFO] [stdout] 147 + path [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/main.rs:100:49 [INFO] [stdout] | [INFO] [stdout] 100 | fn _search(heap: &mut binary_heap::Heap, edges: &Vec, start_v: usize, min_cost: f32) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 100 - fn _search(heap: &mut binary_heap::Heap, edges: &Vec, start_v: usize, min_cost: f32) -> Vec { [INFO] [stdout] 100 + fn _search(heap: &mut binary_heap::Heap, edges: &[binary_heap::Edge], start_v: usize, min_cost: f32) -> Vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/main.rs:110:29 [INFO] [stdout] | [INFO] [stdout] 110 | heap.data[heap.indicies[q[0] as usize]].label = 0.0; [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `q[0]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/main.rs:112:29 [INFO] [stdout] | [INFO] [stdout] 112 | let cur = heap.data[q.pop_front().expect("") as usize].clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `{ q.pop_front().expect("") }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f32` -> `f32`) [INFO] [stdout] --> src/main.rs:120:40 [INFO] [stdout] | [INFO] [stdout] 120 | next_v.label = cur.label + edge.val as f32; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `edge.val` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/binary_heap.rs:57:5 [INFO] [stdout] | [INFO] [stdout] 57 | return (heap, edges); [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] 57 - return (heap, edges); [INFO] [stdout] 57 + (heap, edges) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.37s [INFO] [stdout] warning: the variable `edge_index` is used as a loop counter [INFO] [stdout] --> src/binary_heap.rs:45:5 [INFO] [stdout] | [INFO] [stdout] 45 | for l in list { [INFO] [stdout] | ^^^^^^^^^^^^^ help: consider using: `for (edge_index, l) in list.into_iter().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/binary_heap.rs:63:17 [INFO] [stdout] | [INFO] [stdout] 63 | let index = heap.indicies[key].clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `heap.indicies[key]` [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: unneeded `return` statement [INFO] [stdout] --> src/binary_heap.rs:82:5 [INFO] [stdout] | [INFO] [stdout] 82 | return Ok(v); [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] 82 - return Ok(v); [INFO] [stdout] 82 + Ok(v) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/binary_heap.rs:74:8 [INFO] [stdout] | [INFO] [stdout] 74 | if heap.data.len() == 0 { return Err("Err: attempt to pop from an empty heap"); }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `heap.data.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: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/binary_heap.rs:123:15 [INFO] [stdout] | [INFO] [stdout] 123 | let tmp = heap.indicies[heap.data[vi].name].clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `heap.indicies[heap.data[vi].name]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/prim.rs:36:5 [INFO] [stdout] | [INFO] [stdout] 36 | return path; [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] 36 - return path; [INFO] [stdout] 36 + path [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/prim.rs:11:11 [INFO] [stdout] | [INFO] [stdout] 11 | while heap.data.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!heap.data.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: casting to the same type is unnecessary (`f32` -> `f32`) [INFO] [stdout] --> src/prim.rs:27:28 [INFO] [stdout] | [INFO] [stdout] 27 | let new_dist = edges[*e].val as f32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `edges[*e].val` [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] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:8:28 [INFO] [stdout] | [INFO] [stdout] 8 | fn square(x: f32) -> f32 { return x*x; } [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] 8 - fn square(x: f32) -> f32 { return x*x; } [INFO] [stdout] 8 + fn square(x: f32) -> f32 { x*x} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f32` -> `f32`) [INFO] [stdout] --> src/main.rs:39:21 [INFO] [stdout] | [INFO] [stdout] 39 | let d = ( [INFO] [stdout] | _____________________^ [INFO] [stdout] 40 | | ( [INFO] [stdout] 41 | | square(nums[n][0] - nums[to][0]) + [INFO] [stdout] 42 | | square(nums[n][1] - nums[to][1])) [INFO] [stdout] 43 | | as f32) [INFO] [stdout] | |___________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 39 ~ let d = (( [INFO] [stdout] 40 + square(nums[n][0] - nums[to][0]) + [INFO] [stdout] 41 + square(nums[n][1] - nums[to][1]))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/main.rs:60:53 [INFO] [stdout] | [INFO] [stdout] 60 | fn print_path(list: &Vec, edges: &Vec) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 60 - fn print_path(list: &Vec, edges: &Vec) { [INFO] [stdout] 60 + fn print_path(list: &Vec, edges: &[binary_heap::Edge]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/main.rs:65:9 [INFO] [stdout] | [INFO] [stdout] 65 | dist = dist + i.label; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `dist += i.label` [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] --> src/main.rs:67:9 [INFO] [stdout] | [INFO] [stdout] 67 | c = c + 1; [INFO] [stdout] | ^^^^^^^^^ help: replace it with: `c += 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] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/main.rs:73:13 [INFO] [stdout] | [INFO] [stdout] 73 | dist = dist + edges[e].val; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `dist += edges[e].val` [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: unneeded `return` statement [INFO] [stdout] --> src/main.rs:96:5 [INFO] [stdout] | [INFO] [stdout] 96 | return out.clone(); [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] 96 - return out.clone(); [INFO] [stdout] 96 + out.clone() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:118:16 [INFO] [stdout] | [INFO] [stdout] 118 | if !list[heap.indicies[edge.to]].is_some() { continue; } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `list[heap.indicies[edge.to]].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: unneeded `return` statement [INFO] [stdout] --> src/main.rs:147:5 [INFO] [stdout] | [INFO] [stdout] 147 | return path; [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] 147 - return path; [INFO] [stdout] 147 + path [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/main.rs:100:49 [INFO] [stdout] | [INFO] [stdout] 100 | fn _search(heap: &mut binary_heap::Heap, edges: &Vec, start_v: usize, min_cost: f32) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 100 - fn _search(heap: &mut binary_heap::Heap, edges: &Vec, start_v: usize, min_cost: f32) -> Vec { [INFO] [stdout] 100 + fn _search(heap: &mut binary_heap::Heap, edges: &[binary_heap::Edge], start_v: usize, min_cost: f32) -> Vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/main.rs:110:29 [INFO] [stdout] | [INFO] [stdout] 110 | heap.data[heap.indicies[q[0] as usize]].label = 0.0; [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `q[0]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/main.rs:112:29 [INFO] [stdout] | [INFO] [stdout] 112 | let cur = heap.data[q.pop_front().expect("") as usize].clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `{ q.pop_front().expect("") }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f32` -> `f32`) [INFO] [stdout] --> src/main.rs:120:40 [INFO] [stdout] | [INFO] [stdout] 120 | next_v.label = cur.label + edge.val as f32; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `edge.val` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "bd2b4c4a1ac48c8f8f508e9d27047566a58611c260f915fbffce1e7e3db2a592", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "bd2b4c4a1ac48c8f8f508e9d27047566a58611c260f915fbffce1e7e3db2a592", kill_on_drop: false }` [INFO] [stdout] bd2b4c4a1ac48c8f8f508e9d27047566a58611c260f915fbffce1e7e3db2a592