[INFO] updating cached repository solowt/viewshed-rs [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/solowt/viewshed-rs [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/solowt/viewshed-rs" "work/ex/clippy-test-run/sources/stable/gh/solowt/viewshed-rs"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/solowt/viewshed-rs'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/solowt/viewshed-rs" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/solowt/viewshed-rs"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/solowt/viewshed-rs'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] ca5f28700f26cde4d49c61bc7b36465f36247650 [INFO] sha for GitHub repo solowt/viewshed-rs: ca5f28700f26cde4d49c61bc7b36465f36247650 [INFO] validating manifest of solowt/viewshed-rs on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of solowt/viewshed-rs on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing solowt/viewshed-rs [INFO] finished frobbing solowt/viewshed-rs [INFO] frobbed toml for solowt/viewshed-rs written to work/ex/clippy-test-run/sources/stable/gh/solowt/viewshed-rs/Cargo.toml [INFO] started frobbing solowt/viewshed-rs [INFO] finished frobbing solowt/viewshed-rs [INFO] frobbed toml for solowt/viewshed-rs written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/solowt/viewshed-rs/Cargo.toml [INFO] crate solowt/viewshed-rs has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting solowt/viewshed-rs against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/solowt/viewshed-rs:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 51a398abd01f46ca7f7d7f475d1fa095f447cac07f36a25c182972706e2a7354 [INFO] running `"docker" "start" "-a" "51a398abd01f46ca7f7d7f475d1fa095f447cac07f36a25c182972706e2a7354"` [INFO] [stderr] Checking deflate v0.7.1 [INFO] [stderr] Checking deque v0.3.1 [INFO] [stderr] Checking num-bigint v0.1.35 [INFO] [stderr] Checking num v0.1.36 [INFO] [stderr] Checking enum_primitive v0.1.0 [INFO] [stderr] Checking rayon v0.6.0 [INFO] [stderr] Checking num-rational v0.1.35 [INFO] [stderr] Checking png v0.6.0 [INFO] [stderr] Checking jpeg-decoder v0.1.10 [INFO] [stderr] Checking image v0.12.0 [INFO] [stderr] Checking viewshed v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/Raster.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | width: width, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `width` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/Raster.rs:31:13 [INFO] [stderr] | [INFO] [stderr] 31 | x0: x0, [INFO] [stderr] | ^^^^^^ help: replace it with: `x0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/Raster.rs:32:13 [INFO] [stderr] | [INFO] [stderr] 32 | y1: y1, [INFO] [stderr] | ^^^^^^ help: replace it with: `y1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ResultRaster.rs:27:13 [INFO] [stderr] | [INFO] [stderr] 27 | width: width, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `width` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ResultRaster.rs:28:13 [INFO] [stderr] | [INFO] [stderr] 28 | x0: x0, [INFO] [stderr] | ^^^^^^ help: replace it with: `x0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ResultRaster.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | y1: y1, [INFO] [stderr] | ^^^^^^ help: replace it with: `y1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ResultRaster.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | circle: circle [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `circle` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/RasterUtils.rs:224:9 [INFO] [stderr] | [INFO] [stderr] 224 | radius: radius [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `radius` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/RasterUtils.rs:399:36 [INFO] [stderr] | [INFO] [stderr] 399 | ret_vec.push(Point::Point{ x: x, y: y }); [INFO] [stderr] | ^^^^ help: replace it with: `x` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/RasterUtils.rs:399:42 [INFO] [stderr] | [INFO] [stderr] 399 | ret_vec.push(Point::Point{ x: x, y: y }); [INFO] [stderr] | ^^^^ help: replace it with: `y` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/RasterUtils.rs:440:9 [INFO] [stderr] | [INFO] [stderr] 440 | area: area, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `area` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/RasterUtils.rs:442:9 [INFO] [stderr] | [INFO] [stderr] 442 | min_x: min_x, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `min_x` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/RasterUtils.rs:443:9 [INFO] [stderr] | [INFO] [stderr] 443 | min_y: min_y, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `min_y` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/RasterUtils.rs:444:9 [INFO] [stderr] | [INFO] [stderr] 444 | max_x: max_x, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `max_x` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/RasterUtils.rs:445:9 [INFO] [stderr] | [INFO] [stderr] 445 | max_y: max_y [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `max_y` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:92:55 [INFO] [stderr] | [INFO] [stderr] 92 | let result = raster.do_viewshed(&Point::Point{x: x, y: y}, dist); [INFO] [stderr] | ^^^^ help: replace it with: `x` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:92:61 [INFO] [stderr] | [INFO] [stderr] 92 | let result = raster.do_viewshed(&Point::Point{x: x, y: y}, dist); [INFO] [stderr] | ^^^^ help: replace it with: `y` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:135:55 [INFO] [stderr] | [INFO] [stderr] 135 | let result = raster.do_viewshed(&Point::Point{x: x, y: y}, dist); [INFO] [stderr] | ^^^^ help: replace it with: `x` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:135:61 [INFO] [stderr] | [INFO] [stderr] 135 | let result = raster.do_viewshed(&Point::Point{x: x, y: y}, dist); [INFO] [stderr] | ^^^^ help: replace it with: `y` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/Raster.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | width: width, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `width` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/Raster.rs:31:13 [INFO] [stderr] | [INFO] [stderr] 31 | x0: x0, [INFO] [stderr] | ^^^^^^ help: replace it with: `x0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/Raster.rs:32:13 [INFO] [stderr] | [INFO] [stderr] 32 | y1: y1, [INFO] [stderr] | ^^^^^^ help: replace it with: `y1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ResultRaster.rs:27:13 [INFO] [stderr] | [INFO] [stderr] 27 | width: width, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `width` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ResultRaster.rs:28:13 [INFO] [stderr] | [INFO] [stderr] 28 | x0: x0, [INFO] [stderr] | ^^^^^^ help: replace it with: `x0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ResultRaster.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | y1: y1, [INFO] [stderr] | ^^^^^^ help: replace it with: `y1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ResultRaster.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | circle: circle [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `circle` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/RasterUtils.rs:224:9 [INFO] [stderr] | [INFO] [stderr] 224 | radius: radius [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `radius` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/RasterUtils.rs:399:36 [INFO] [stderr] | [INFO] [stderr] 399 | ret_vec.push(Point::Point{ x: x, y: y }); [INFO] [stderr] | ^^^^ help: replace it with: `x` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/RasterUtils.rs:399:42 [INFO] [stderr] | [INFO] [stderr] 399 | ret_vec.push(Point::Point{ x: x, y: y }); [INFO] [stderr] | ^^^^ help: replace it with: `y` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/RasterUtils.rs:440:9 [INFO] [stderr] | [INFO] [stderr] 440 | area: area, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `area` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/RasterUtils.rs:442:9 [INFO] [stderr] | [INFO] [stderr] 442 | min_x: min_x, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `min_x` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/RasterUtils.rs:443:9 [INFO] [stderr] | [INFO] [stderr] 443 | min_y: min_y, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `min_y` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/RasterUtils.rs:444:9 [INFO] [stderr] | [INFO] [stderr] 444 | max_x: max_x, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `max_x` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/RasterUtils.rs:445:9 [INFO] [stderr] | [INFO] [stderr] 445 | max_y: max_y [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `max_y` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:92:55 [INFO] [stderr] | [INFO] [stderr] 92 | let result = raster.do_viewshed(&Point::Point{x: x, y: y}, dist); [INFO] [stderr] | ^^^^ help: replace it with: `x` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:92:61 [INFO] [stderr] | [INFO] [stderr] 92 | let result = raster.do_viewshed(&Point::Point{x: x, y: y}, dist); [INFO] [stderr] | ^^^^ help: replace it with: `y` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:135:55 [INFO] [stderr] | [INFO] [stderr] 135 | let result = raster.do_viewshed(&Point::Point{x: x, y: y}, dist); [INFO] [stderr] | ^^^^ help: replace it with: `x` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:135:61 [INFO] [stderr] | [INFO] [stderr] 135 | let result = raster.do_viewshed(&Point::Point{x: x, y: y}, dist); [INFO] [stderr] | ^^^^ help: replace it with: `y` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/Raster.rs:259:32 [INFO] [stderr] | [INFO] [stderr] 259 | } else { [INFO] [stderr] | ________________________________^ [INFO] [stderr] 260 | | if x >= highest_slope { [INFO] [stderr] 261 | | highest_slope = x; [INFO] [stderr] 262 | | last_was_true = true; [INFO] [stderr] ... | [INFO] [stderr] 267 | | } [INFO] [stderr] 268 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 259 | } else if x >= highest_slope { [INFO] [stderr] 260 | highest_slope = x; [INFO] [stderr] 261 | last_was_true = true; [INFO] [stderr] 262 | true [INFO] [stderr] 263 | } else { [INFO] [stderr] 264 | last_was_true = false; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/RasterUtils.rs:203:16 [INFO] [stderr] | [INFO] [stderr] 203 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 204 | | if b.y > 0 { [INFO] [stderr] 205 | | Ordering::Greater [INFO] [stderr] 206 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 216 | | } [INFO] [stderr] 217 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 203 | } else if b.y > 0 { [INFO] [stderr] 204 | Ordering::Greater [INFO] [stderr] 205 | } else { [INFO] [stderr] 206 | if a.x != b.x { [INFO] [stderr] 207 | a.x.cmp(&b.x) [INFO] [stderr] 208 | } else { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/RasterUtils.rs:192:20 [INFO] [stderr] | [INFO] [stderr] 192 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 193 | | if a.x != b.x { [INFO] [stderr] 194 | | b.x.cmp(&a.x) [INFO] [stderr] 195 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 201 | | } [INFO] [stderr] 202 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 192 | } else if a.x != b.x { [INFO] [stderr] 193 | b.x.cmp(&a.x) [INFO] [stderr] 194 | } else { [INFO] [stderr] 195 | if a.x > 0 { [INFO] [stderr] 196 | a.y.cmp(&b.y) [INFO] [stderr] 197 | } else { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/RasterUtils.rs:195:24 [INFO] [stderr] | [INFO] [stderr] 195 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 196 | | if a.x > 0 { [INFO] [stderr] 197 | | a.y.cmp(&b.y) [INFO] [stderr] 198 | | } else { [INFO] [stderr] 199 | | b.y.cmp(&a.y) [INFO] [stderr] 200 | | } [INFO] [stderr] 201 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 195 | } else if a.x > 0 { [INFO] [stderr] 196 | a.y.cmp(&b.y) [INFO] [stderr] 197 | } else { [INFO] [stderr] 198 | b.y.cmp(&a.y) [INFO] [stderr] 199 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/RasterUtils.rs:206:20 [INFO] [stderr] | [INFO] [stderr] 206 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 207 | | if a.x != b.x { [INFO] [stderr] 208 | | a.x.cmp(&b.x) [INFO] [stderr] 209 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 215 | | } [INFO] [stderr] 216 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 206 | } else if a.x != b.x { [INFO] [stderr] 207 | a.x.cmp(&b.x) [INFO] [stderr] 208 | } else { [INFO] [stderr] 209 | if a.x < 0 { [INFO] [stderr] 210 | b.y.cmp(&a.y) [INFO] [stderr] 211 | } else { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/RasterUtils.rs:209:24 [INFO] [stderr] | [INFO] [stderr] 209 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 210 | | if a.x < 0 { [INFO] [stderr] 211 | | b.y.cmp(&a.y) [INFO] [stderr] 212 | | } else { [INFO] [stderr] 213 | | a.y.cmp(&b.y) [INFO] [stderr] 214 | | } [INFO] [stderr] 215 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 209 | } else if a.x < 0 { [INFO] [stderr] 210 | b.y.cmp(&a.y) [INFO] [stderr] 211 | } else { [INFO] [stderr] 212 | a.y.cmp(&b.y) [INFO] [stderr] 213 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/main.rs:165:5 [INFO] [stderr] | [INFO] [stderr] 165 | raster [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/main.rs:163:18 [INFO] [stderr] | [INFO] [stderr] 163 | let raster = Raster::Raster::new(read_vec_from_file(input.trim()), 257 as u32, rand::random::(), rand::random::()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/Raster.rs:259:32 [INFO] [stderr] | [INFO] [stderr] 259 | } else { [INFO] [stderr] | ________________________________^ [INFO] [stderr] 260 | | if x >= highest_slope { [INFO] [stderr] 261 | | highest_slope = x; [INFO] [stderr] 262 | | last_was_true = true; [INFO] [stderr] ... | [INFO] [stderr] 267 | | } [INFO] [stderr] 268 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 259 | } else if x >= highest_slope { [INFO] [stderr] 260 | highest_slope = x; [INFO] [stderr] 261 | last_was_true = true; [INFO] [stderr] 262 | true [INFO] [stderr] 263 | } else { [INFO] [stderr] 264 | last_was_true = false; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/RasterUtils.rs:203:16 [INFO] [stderr] | [INFO] [stderr] 203 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 204 | | if b.y > 0 { [INFO] [stderr] 205 | | Ordering::Greater [INFO] [stderr] 206 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 216 | | } [INFO] [stderr] 217 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 203 | } else if b.y > 0 { [INFO] [stderr] 204 | Ordering::Greater [INFO] [stderr] 205 | } else { [INFO] [stderr] 206 | if a.x != b.x { [INFO] [stderr] 207 | a.x.cmp(&b.x) [INFO] [stderr] 208 | } else { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/RasterUtils.rs:192:20 [INFO] [stderr] | [INFO] [stderr] 192 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 193 | | if a.x != b.x { [INFO] [stderr] 194 | | b.x.cmp(&a.x) [INFO] [stderr] 195 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 201 | | } [INFO] [stderr] 202 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 192 | } else if a.x != b.x { [INFO] [stderr] 193 | b.x.cmp(&a.x) [INFO] [stderr] 194 | } else { [INFO] [stderr] 195 | if a.x > 0 { [INFO] [stderr] 196 | a.y.cmp(&b.y) [INFO] [stderr] 197 | } else { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/RasterUtils.rs:195:24 [INFO] [stderr] | [INFO] [stderr] 195 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 196 | | if a.x > 0 { [INFO] [stderr] 197 | | a.y.cmp(&b.y) [INFO] [stderr] 198 | | } else { [INFO] [stderr] 199 | | b.y.cmp(&a.y) [INFO] [stderr] 200 | | } [INFO] [stderr] 201 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 195 | } else if a.x > 0 { [INFO] [stderr] 196 | a.y.cmp(&b.y) [INFO] [stderr] 197 | } else { [INFO] [stderr] 198 | b.y.cmp(&a.y) [INFO] [stderr] 199 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/RasterUtils.rs:206:20 [INFO] [stderr] | [INFO] [stderr] 206 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 207 | | if a.x != b.x { [INFO] [stderr] 208 | | a.x.cmp(&b.x) [INFO] [stderr] 209 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 215 | | } [INFO] [stderr] 216 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 206 | } else if a.x != b.x { [INFO] [stderr] 207 | a.x.cmp(&b.x) [INFO] [stderr] 208 | } else { [INFO] [stderr] 209 | if a.x < 0 { [INFO] [stderr] 210 | b.y.cmp(&a.y) [INFO] [stderr] 211 | } else { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/RasterUtils.rs:209:24 [INFO] [stderr] | [INFO] [stderr] 209 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 210 | | if a.x < 0 { [INFO] [stderr] 211 | | b.y.cmp(&a.y) [INFO] [stderr] 212 | | } else { [INFO] [stderr] 213 | | a.y.cmp(&b.y) [INFO] [stderr] 214 | | } [INFO] [stderr] 215 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 209 | } else if a.x < 0 { [INFO] [stderr] 210 | b.y.cmp(&a.y) [INFO] [stderr] 211 | } else { [INFO] [stderr] 212 | a.y.cmp(&b.y) [INFO] [stderr] 213 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/main.rs:165:5 [INFO] [stderr] | [INFO] [stderr] 165 | raster [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/main.rs:163:18 [INFO] [stderr] | [INFO] [stderr] 163 | let raster = Raster::Raster::new(read_vec_from_file(input.trim()), 257 as u32, rand::random::(), rand::random::()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: module `Raster` should have a snake case name such as `raster` [INFO] [stderr] --> src/main.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | mod Raster; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/Raster.rs:101:13 [INFO] [stderr] | [INFO] [stderr] 101 | let ref mut fout = File::create(&Path::new(file_path)).unwrap(); [INFO] [stderr] | ----^^^^^^^^^^^^------------------------------------------------ help: try: `let fout = &mut File::create(&Path::new(file_path)).unwrap();` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/Raster.rs:107:13 [INFO] [stderr] | [INFO] [stderr] 107 | let ref mut fout = File::create(&Path::new(file_path)).unwrap(); [INFO] [stderr] | ----^^^^^^^^^^^^------------------------------------------------ help: try: `let fout = &mut File::create(&Path::new(file_path)).unwrap();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/Raster.rs:116:32 [INFO] [stderr] | [INFO] [stderr] 116 | pub fn get_dist(&self, p1: &Point::Point, p2: &Point::Point) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Point::Point` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/Raster.rs:116:51 [INFO] [stderr] | [INFO] [stderr] 116 | pub fn get_dist(&self, p1: &Point::Point, p2: &Point::Point) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Point::Point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/Raster.rs:121:33 [INFO] [stderr] | [INFO] [stderr] 121 | pub fn get_slope(&self, p1: &Point::Point, p2: &Point::Point) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Point::Point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/Raster.rs:121:52 [INFO] [stderr] | [INFO] [stderr] 121 | pub fn get_slope(&self, p1: &Point::Point, p2: &Point::Point) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Point::Point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/Raster.rs:151:38 [INFO] [stderr] | [INFO] [stderr] 151 | pub fn get_height_recur(&self,p: &Point::Point) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Point::Point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/Raster.rs:183:35 [INFO] [stderr] | [INFO] [stderr] 183 | pub fn value_at(&self, point: &Point::Point) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Point::Point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/Raster.rs:213:39 [INFO] [stderr] | [INFO] [stderr] 213 | pub fn do_viewshed(&self, origin: &Point::Point, radius: u32) -> ResultRaster::ResultRaster { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Point::Point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/Raster.rs:219:64 [INFO] [stderr] | [INFO] [stderr] 219 | pub fn check_raster(&self, circle: Circle::Circle, origin: &Point::Point) -> ResultRaster::ResultRaster { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Point::Point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/Raster.rs:237:36 [INFO] [stderr] | [INFO] [stderr] 237 | pub fn check_line(&self, line: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: change this to: `&[Point::Point]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: module `ResultRaster` should have a snake case name such as `result_raster` [INFO] [stderr] --> src/main.rs:5:1 [INFO] [stderr] | [INFO] [stderr] 5 | mod ResultRaster; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/ResultRaster.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | let ref mut fout = File::create(&Path::new(file_path)).unwrap(); [INFO] [stderr] | ----^^^^^^^^^^^^------------------------------------------------ help: try: `let fout = &mut File::create(&Path::new(file_path)).unwrap();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/ResultRaster.rs:51:39 [INFO] [stderr] | [INFO] [stderr] 51 | Some(result) => if result == true { 255 } else { 0 }, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try simplifying it as shown: `result` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/ResultRaster.rs:67:28 [INFO] [stderr] | [INFO] [stderr] 67 | if pixel.unwrap() == true { num_true+=1; } else { num_false+=1; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `pixel.unwrap()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ResultRaster.rs:75:35 [INFO] [stderr] | [INFO] [stderr] 75 | pub fn value_at(&self, point: &Point::Point) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Point::Point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: module `Point` should have a snake case name such as `point` [INFO] [stderr] --> src/main.rs:6:1 [INFO] [stderr] | [INFO] [stderr] 6 | mod Point; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: module `Circle` should have a snake case name such as `circle` [INFO] [stderr] --> src/main.rs:7:1 [INFO] [stderr] | [INFO] [stderr] 7 | mod Circle; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: module `RasterUtils` should have a snake case name such as `raster_utils` [INFO] [stderr] --> src/main.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | mod RasterUtils; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/RasterUtils.rs:11:28 [INFO] [stderr] | [INFO] [stderr] 11 | pub fn point_to_idx(point: &Point::Point, size: usize, width: u32) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Point::Point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/RasterUtils.rs:53:65 [INFO] [stderr] | [INFO] [stderr] 53 | pub fn bilinear_interp_mid_point(raster: &[Option], point: &Point::Point, width: u32) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Point::Point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/RasterUtils.rs:121:8 [INFO] [stderr] | [INFO] [stderr] 121 | if !(longest>shortest){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `longest <= shortest` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/RasterUtils.rs:136:12 [INFO] [stderr] | [INFO] [stderr] 136 | if !(numerator < longest){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `numerator >= longest` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/RasterUtils.rs:107:22 [INFO] [stderr] | [INFO] [stderr] 107 | pub fn draw_line(p1: &Point::Point, p2: &Point::Point) -> Vec{ [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Point::Point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/RasterUtils.rs:107:41 [INFO] [stderr] | [INFO] [stderr] 107 | pub fn draw_line(p1: &Point::Point, p2: &Point::Point) -> Vec{ [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Point::Point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/RasterUtils.rs:133:14 [INFO] [stderr] | [INFO] [stderr] 133 | for _ in 0..longest+1 { [INFO] [stderr] | ^^^^^^^^^^^^ help: use: `0..=longest` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/RasterUtils.rs:148:31 [INFO] [stderr] | [INFO] [stderr] 148 | pub fn draw_circle(mid_point: &Point::Point, radius: u32) -> Circle::Circle{ [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Point::Point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/RasterUtils.rs:248:28 [INFO] [stderr] | [INFO] [stderr] 248 | if t == true { [INFO] [stderr] | ^^^^^^^^^ help: try simplifying it as shown: `t` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/RasterUtils.rs:249:29 [INFO] [stderr] | [INFO] [stderr] 249 | / match bordering_on(raster,idx_tuple.0,width,search_value) { [INFO] [stderr] 250 | | true => Some(idx_tuple.0), [INFO] [stderr] 251 | | false => None [INFO] [stderr] 252 | | } [INFO] [stderr] | |_____________________________^ help: consider using an if/else expression: `if bordering_on(raster,idx_tuple.0,width,search_value) { Some(idx_tuple.0) } else { None }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/RasterUtils.rs:358:48 [INFO] [stderr] | [INFO] [stderr] 358 | else if valid_slope.unwrap() > acc.unwrap() { valid_slope } [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/RasterUtils.rs:357:21 [INFO] [stderr] | [INFO] [stderr] 357 | if acc.is_none() { valid_slope } [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/RasterUtils.rs:372:29 [INFO] [stderr] | [INFO] [stderr] 372 | pub fn point_to_bool(point: &Point::Point, raster: &[Option], width: u32) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Point::Point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/RasterUtils.rs:425:12 [INFO] [stderr] | [INFO] [stderr] 425 | if r == true && l == false { [INFO] [stderr] | ^^^^^^^^^ help: try simplifying it as shown: `r` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/RasterUtils.rs:425:25 [INFO] [stderr] | [INFO] [stderr] 425 | if r == true && l == false { [INFO] [stderr] | ^^^^^^^^^^ help: try simplifying it as shown: `!l` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/RasterUtils.rs:429:19 [INFO] [stderr] | [INFO] [stderr] 429 | } else if r == true { [INFO] [stderr] | ^^^^^^^^^ help: try simplifying it as shown: `r` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/RasterUtils.rs:433:19 [INFO] [stderr] | [INFO] [stderr] 433 | } else if l == false { [INFO] [stderr] | ^^^^^^^^^^ help: try simplifying it as shown: `!l` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/RasterUtils.rs:484:21 [INFO] [stderr] | [INFO] [stderr] 484 | fn find_next(point: &Point::Point, width: u32, raster: &[Option]) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Point::Point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: module `Path` should have a snake case name such as `path` [INFO] [stderr] --> src/main.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | mod Path; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/main.rs:29:12 [INFO] [stderr] | [INFO] [stderr] 29 | if height == NO_VALUE { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(height - NO_VALUE).abs() < error` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/main.rs:29:12 [INFO] [stderr] | [INFO] [stderr] 29 | if height == NO_VALUE { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/main.rs:153:5 [INFO] [stderr] | [INFO] [stderr] 153 | / std::io::stdin().read_line(&mut input) [INFO] [stderr] 154 | | .ok() [INFO] [stderr] 155 | | .expect("Couldn't read line"); [INFO] [stderr] | |_________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ok_expect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `viewshed`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: module `Raster` should have a snake case name such as `raster` [INFO] [stderr] --> src/main.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | mod Raster; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/Raster.rs:101:13 [INFO] [stderr] | [INFO] [stderr] 101 | let ref mut fout = File::create(&Path::new(file_path)).unwrap(); [INFO] [stderr] | ----^^^^^^^^^^^^------------------------------------------------ help: try: `let fout = &mut File::create(&Path::new(file_path)).unwrap();` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/Raster.rs:107:13 [INFO] [stderr] | [INFO] [stderr] 107 | let ref mut fout = File::create(&Path::new(file_path)).unwrap(); [INFO] [stderr] | ----^^^^^^^^^^^^------------------------------------------------ help: try: `let fout = &mut File::create(&Path::new(file_path)).unwrap();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/Raster.rs:116:32 [INFO] [stderr] | [INFO] [stderr] 116 | pub fn get_dist(&self, p1: &Point::Point, p2: &Point::Point) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Point::Point` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/Raster.rs:116:51 [INFO] [stderr] | [INFO] [stderr] 116 | pub fn get_dist(&self, p1: &Point::Point, p2: &Point::Point) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Point::Point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/Raster.rs:121:33 [INFO] [stderr] | [INFO] [stderr] 121 | pub fn get_slope(&self, p1: &Point::Point, p2: &Point::Point) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Point::Point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/Raster.rs:121:52 [INFO] [stderr] | [INFO] [stderr] 121 | pub fn get_slope(&self, p1: &Point::Point, p2: &Point::Point) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Point::Point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/Raster.rs:151:38 [INFO] [stderr] | [INFO] [stderr] 151 | pub fn get_height_recur(&self,p: &Point::Point) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Point::Point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/Raster.rs:183:35 [INFO] [stderr] | [INFO] [stderr] 183 | pub fn value_at(&self, point: &Point::Point) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Point::Point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/Raster.rs:213:39 [INFO] [stderr] | [INFO] [stderr] 213 | pub fn do_viewshed(&self, origin: &Point::Point, radius: u32) -> ResultRaster::ResultRaster { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Point::Point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/Raster.rs:219:64 [INFO] [stderr] | [INFO] [stderr] 219 | pub fn check_raster(&self, circle: Circle::Circle, origin: &Point::Point) -> ResultRaster::ResultRaster { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Point::Point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/Raster.rs:237:36 [INFO] [stderr] | [INFO] [stderr] 237 | pub fn check_line(&self, line: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: change this to: `&[Point::Point]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: module `ResultRaster` should have a snake case name such as `result_raster` [INFO] [stderr] --> src/main.rs:5:1 [INFO] [stderr] | [INFO] [stderr] 5 | mod ResultRaster; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/ResultRaster.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | let ref mut fout = File::create(&Path::new(file_path)).unwrap(); [INFO] [stderr] | ----^^^^^^^^^^^^------------------------------------------------ help: try: `let fout = &mut File::create(&Path::new(file_path)).unwrap();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/ResultRaster.rs:51:39 [INFO] [stderr] | [INFO] [stderr] 51 | Some(result) => if result == true { 255 } else { 0 }, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try simplifying it as shown: `result` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/ResultRaster.rs:67:28 [INFO] [stderr] | [INFO] [stderr] 67 | if pixel.unwrap() == true { num_true+=1; } else { num_false+=1; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `pixel.unwrap()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ResultRaster.rs:75:35 [INFO] [stderr] | [INFO] [stderr] 75 | pub fn value_at(&self, point: &Point::Point) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Point::Point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: module `Point` should have a snake case name such as `point` [INFO] [stderr] --> src/main.rs:6:1 [INFO] [stderr] | [INFO] [stderr] 6 | mod Point; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: module `Circle` should have a snake case name such as `circle` [INFO] [stderr] --> src/main.rs:7:1 [INFO] [stderr] | [INFO] [stderr] 7 | mod Circle; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: module `RasterUtils` should have a snake case name such as `raster_utils` [INFO] [stderr] --> src/main.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | mod RasterUtils; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/RasterUtils.rs:11:28 [INFO] [stderr] | [INFO] [stderr] 11 | pub fn point_to_idx(point: &Point::Point, size: usize, width: u32) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Point::Point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/RasterUtils.rs:53:65 [INFO] [stderr] | [INFO] [stderr] 53 | pub fn bilinear_interp_mid_point(raster: &[Option], point: &Point::Point, width: u32) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Point::Point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/RasterUtils.rs:121:8 [INFO] [stderr] | [INFO] [stderr] 121 | if !(longest>shortest){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `longest <= shortest` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/RasterUtils.rs:136:12 [INFO] [stderr] | [INFO] [stderr] 136 | if !(numerator < longest){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `numerator >= longest` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/RasterUtils.rs:107:22 [INFO] [stderr] | [INFO] [stderr] 107 | pub fn draw_line(p1: &Point::Point, p2: &Point::Point) -> Vec{ [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Point::Point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/RasterUtils.rs:107:41 [INFO] [stderr] | [INFO] [stderr] 107 | pub fn draw_line(p1: &Point::Point, p2: &Point::Point) -> Vec{ [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Point::Point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/RasterUtils.rs:133:14 [INFO] [stderr] | [INFO] [stderr] 133 | for _ in 0..longest+1 { [INFO] [stderr] | ^^^^^^^^^^^^ help: use: `0..=longest` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/RasterUtils.rs:148:31 [INFO] [stderr] | [INFO] [stderr] 148 | pub fn draw_circle(mid_point: &Point::Point, radius: u32) -> Circle::Circle{ [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Point::Point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/RasterUtils.rs:248:28 [INFO] [stderr] | [INFO] [stderr] 248 | if t == true { [INFO] [stderr] | ^^^^^^^^^ help: try simplifying it as shown: `t` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/RasterUtils.rs:249:29 [INFO] [stderr] | [INFO] [stderr] 249 | / match bordering_on(raster,idx_tuple.0,width,search_value) { [INFO] [stderr] 250 | | true => Some(idx_tuple.0), [INFO] [stderr] 251 | | false => None [INFO] [stderr] 252 | | } [INFO] [stderr] | |_____________________________^ help: consider using an if/else expression: `if bordering_on(raster,idx_tuple.0,width,search_value) { Some(idx_tuple.0) } else { None }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/RasterUtils.rs:358:48 [INFO] [stderr] | [INFO] [stderr] 358 | else if valid_slope.unwrap() > acc.unwrap() { valid_slope } [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/RasterUtils.rs:357:21 [INFO] [stderr] | [INFO] [stderr] 357 | if acc.is_none() { valid_slope } [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/RasterUtils.rs:372:29 [INFO] [stderr] | [INFO] [stderr] 372 | pub fn point_to_bool(point: &Point::Point, raster: &[Option], width: u32) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Point::Point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/RasterUtils.rs:425:12 [INFO] [stderr] | [INFO] [stderr] 425 | if r == true && l == false { [INFO] [stderr] | ^^^^^^^^^ help: try simplifying it as shown: `r` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/RasterUtils.rs:425:25 [INFO] [stderr] | [INFO] [stderr] 425 | if r == true && l == false { [INFO] [stderr] | ^^^^^^^^^^ help: try simplifying it as shown: `!l` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/RasterUtils.rs:429:19 [INFO] [stderr] | [INFO] [stderr] 429 | } else if r == true { [INFO] [stderr] | ^^^^^^^^^ help: try simplifying it as shown: `r` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/RasterUtils.rs:433:19 [INFO] [stderr] | [INFO] [stderr] 433 | } else if l == false { [INFO] [stderr] | ^^^^^^^^^^ help: try simplifying it as shown: `!l` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/RasterUtils.rs:484:21 [INFO] [stderr] | [INFO] [stderr] 484 | fn find_next(point: &Point::Point, width: u32, raster: &[Option]) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Point::Point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: module `Path` should have a snake case name such as `path` [INFO] [stderr] --> src/main.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | mod Path; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/main.rs:29:12 [INFO] [stderr] | [INFO] [stderr] 29 | if height == NO_VALUE { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(height - NO_VALUE).abs() < error` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/main.rs:29:12 [INFO] [stderr] | [INFO] [stderr] 29 | if height == NO_VALUE { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/main.rs:153:5 [INFO] [stderr] | [INFO] [stderr] 153 | / std::io::stdin().read_line(&mut input) [INFO] [stderr] 154 | | .ok() [INFO] [stderr] 155 | | .expect("Couldn't read line"); [INFO] [stderr] | |_________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ok_expect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `viewshed`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "51a398abd01f46ca7f7d7f475d1fa095f447cac07f36a25c182972706e2a7354"` [INFO] running `"docker" "rm" "-f" "51a398abd01f46ca7f7d7f475d1fa095f447cac07f36a25c182972706e2a7354"` [INFO] [stdout] 51a398abd01f46ca7f7d7f475d1fa095f447cac07f36a25c182972706e2a7354