[INFO] updating cached repository whostolemyhat/dungeon-procgen-1 [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/whostolemyhat/dungeon-procgen-1 [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/whostolemyhat/dungeon-procgen-1" "work/ex/clippy-test-run/sources/stable/gh/whostolemyhat/dungeon-procgen-1"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/whostolemyhat/dungeon-procgen-1'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/whostolemyhat/dungeon-procgen-1" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/whostolemyhat/dungeon-procgen-1"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/whostolemyhat/dungeon-procgen-1'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] fc58fbc637e7fc02c650513ac74a643d71267ff7 [INFO] sha for GitHub repo whostolemyhat/dungeon-procgen-1: fc58fbc637e7fc02c650513ac74a643d71267ff7 [INFO] validating manifest of whostolemyhat/dungeon-procgen-1 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 whostolemyhat/dungeon-procgen-1 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 whostolemyhat/dungeon-procgen-1 [INFO] finished frobbing whostolemyhat/dungeon-procgen-1 [INFO] frobbed toml for whostolemyhat/dungeon-procgen-1 written to work/ex/clippy-test-run/sources/stable/gh/whostolemyhat/dungeon-procgen-1/Cargo.toml [INFO] started frobbing whostolemyhat/dungeon-procgen-1 [INFO] finished frobbing whostolemyhat/dungeon-procgen-1 [INFO] frobbed toml for whostolemyhat/dungeon-procgen-1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/whostolemyhat/dungeon-procgen-1/Cargo.toml [INFO] crate whostolemyhat/dungeon-procgen-1 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 whostolemyhat/dungeon-procgen-1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/whostolemyhat/dungeon-procgen-1:/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] 9da4593ec347fa0a029392b44a900510752da702a94014741f0ee59b5c7b3cc6 [INFO] running `"docker" "start" "-a" "9da4593ec347fa0a029392b44a900510752da702a94014741f0ee59b5c7b3cc6"` [INFO] [stderr] Compiling serde v1.0.68 [INFO] [stderr] Compiling cairo-rs v0.3.0 [INFO] [stderr] Checking c_vec v1.2.1 [INFO] [stderr] Compiling glib-sys v0.5.0 [INFO] [stderr] Compiling gobject-sys v0.5.0 [INFO] [stderr] Compiling cairo-sys-rs v0.5.0 [INFO] [stderr] Checking clap v2.32.0 [INFO] [stderr] Checking digest v0.7.4 [INFO] [stderr] Compiling serde_derive v1.0.68 [INFO] [stderr] Checking sha2 v0.7.1 [INFO] [stderr] Checking glib v0.4.1 [INFO] [stderr] Checking serde_json v1.0.22 [INFO] [stderr] Checking dungeon-example v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/level.rs:81:13 [INFO] [stderr] | [INFO] [stderr] 81 | write!(f, "\n")? [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/level.rs:81:13 [INFO] [stderr] | [INFO] [stderr] 81 | write!(f, "\n")? [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/bsp.rs:79:9 [INFO] [stderr] | [INFO] [stderr] 79 | / if self.is_leaf() { [INFO] [stderr] 80 | | if self.split(rng) { [INFO] [stderr] 81 | | self.left_child.as_mut().unwrap().generate(rng); [INFO] [stderr] 82 | | self.right_child.as_mut().unwrap().generate(rng); [INFO] [stderr] 83 | | } [INFO] [stderr] 84 | | } [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] 79 | if self.is_leaf() && self.split(rng) { [INFO] [stderr] 80 | self.left_child.as_mut().unwrap().generate(rng); [INFO] [stderr] 81 | self.right_child.as_mut().unwrap().generate(rng); [INFO] [stderr] 82 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/bsp.rs:79:9 [INFO] [stderr] | [INFO] [stderr] 79 | / if self.is_leaf() { [INFO] [stderr] 80 | | if self.split(rng) { [INFO] [stderr] 81 | | self.left_child.as_mut().unwrap().generate(rng); [INFO] [stderr] 82 | | self.right_child.as_mut().unwrap().generate(rng); [INFO] [stderr] 83 | | } [INFO] [stderr] 84 | | } [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] 79 | if self.is_leaf() && self.split(rng) { [INFO] [stderr] 80 | self.left_child.as_mut().unwrap().generate(rng); [INFO] [stderr] 81 | self.right_child.as_mut().unwrap().generate(rng); [INFO] [stderr] 82 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/level.rs:42:47 [INFO] [stderr] | [INFO] [stderr] 42 | pub fn new(width: i32, height: i32, hash: &String) -> Self { [INFO] [stderr] | ^^^^^^^ [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] help: change this to [INFO] [stderr] | [INFO] [stderr] 42 | pub fn new(width: i32, height: i32, hash: &str) -> Self { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `hash.clone()` to [INFO] [stderr] | [INFO] [stderr] 55 | hash: hash.to_string() [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [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/draw.rs:20:41 [INFO] [stderr] | [INFO] [stderr] 20 | fn draw_tiles(context: &Context, board: &Vec>, scale: f64) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Vec]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/draw.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | / match tile { [INFO] [stderr] 25 | | Tile::Walkable => draw_tile(context, col as f64 * scale, row as f64 * scale, col as f64 * scale + scale, row as f64 * scale + scale), [INFO] [stderr] 26 | | _ => () [INFO] [stderr] 27 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Tile::Walkable = tile { draw_tile(context, col as f64 * scale, row as f64 * scale, col as f64 * scale + scale, row as f64 * scale + scale) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/draw.rs:25:74 [INFO] [stderr] | [INFO] [stderr] 25 | Tile::Walkable => draw_tile(context, col as f64 * scale, row as f64 * scale, col as f64 * scale + scale, row as f64 * scale + scale), [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(row)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/draw.rs:25:122 [INFO] [stderr] | [INFO] [stderr] 25 | Tile::Walkable => draw_tile(context, col as f64 * scale, row as f64 * scale, col as f64 * scale + scale, row as f64 * scale + scale), [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(row)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/draw.rs:30:9 [INFO] [stderr] | [INFO] [stderr] 30 | row = row + 1; [INFO] [stderr] | ^^^^^^^^^^^^^ help: replace it with: `row += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/draw.rs:39:36 [INFO] [stderr] | [INFO] [stderr] 39 | draw_tiles(&ctx, &level.board, level.tile_size as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(level.tile_size)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/roomscorridors.rs:11:47 [INFO] [stderr] | [INFO] [stderr] 11 | pub fn new(width: i32, height: i32, hash: &String, rng: &mut StdRng) -> Level { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/roomscorridors.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | / pub fn new(width: i32, height: i32, hash: &String, rng: &mut StdRng) -> Level { [INFO] [stderr] 12 | | let level = Level::new(width, height, hash); [INFO] [stderr] 13 | | [INFO] [stderr] 14 | | let mut map = RoomsCorridors { [INFO] [stderr] ... | [INFO] [stderr] 21 | | map.level [INFO] [stderr] 22 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_ret_no_self)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/roomscorridors.rs:70:21 [INFO] [stderr] | [INFO] [stderr] 70 | / match room.centre.x <= other.centre.x { [INFO] [stderr] 71 | | true => self.horz_corridor(room.centre.x, other.centre.x, room.centre.y), [INFO] [stderr] 72 | | false => self.horz_corridor(other.centre.x, room.centre.x, room.centre.y) [INFO] [stderr] 73 | | } [INFO] [stderr] | |_____________________^ help: consider using an if/else expression: `if room.centre.x <= other.centre.x { self.horz_corridor(room.centre.x, other.centre.x, room.centre.y) } else { self.horz_corridor(other.centre.x, room.centre.x, room.centre.y) }` [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] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/roomscorridors.rs:74:21 [INFO] [stderr] | [INFO] [stderr] 74 | / match room.centre.y <= other.centre.y { [INFO] [stderr] 75 | | true => self.vert_corridor(room.centre.y, other.centre.y, other.centre.x), [INFO] [stderr] 76 | | false => self.vert_corridor(other.centre.y, room.centre.y, other.centre.x) [INFO] [stderr] 77 | | } [INFO] [stderr] | |_____________________^ help: consider using an if/else expression: `if room.centre.y <= other.centre.y { self.vert_corridor(room.centre.y, other.centre.y, other.centre.x) } else { self.vert_corridor(other.centre.y, room.centre.y, other.centre.x) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/roomscorridors.rs:80:21 [INFO] [stderr] | [INFO] [stderr] 80 | / match room.centre.y <= other.centre.y { [INFO] [stderr] 81 | | true => self.vert_corridor(room.centre.y, other.centre.y, other.centre.x), [INFO] [stderr] 82 | | false => self.vert_corridor(other.centre.y, room.centre.y, other.centre.x) [INFO] [stderr] 83 | | } [INFO] [stderr] | |_____________________^ help: consider using an if/else expression: `if room.centre.y <= other.centre.y { self.vert_corridor(room.centre.y, other.centre.y, other.centre.x) } else { self.vert_corridor(other.centre.y, room.centre.y, other.centre.x) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/roomscorridors.rs:84:21 [INFO] [stderr] | [INFO] [stderr] 84 | / match room.centre.x <= other.centre.x { [INFO] [stderr] 85 | | true => self.horz_corridor(room.centre.x, other.centre.x, room.centre.y), [INFO] [stderr] 86 | | false => self.horz_corridor(other.centre.x, room.centre.x, room.centre.y) [INFO] [stderr] 87 | | } [INFO] [stderr] | |_____________________^ help: consider using an if/else expression: `if room.centre.x <= other.centre.x { self.horz_corridor(room.centre.x, other.centre.x, room.centre.y) } else { self.horz_corridor(other.centre.x, room.centre.x, room.centre.y) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/roomscorridors.rs:94:20 [INFO] [stderr] | [INFO] [stderr] 94 | for col in start_x..end_x + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: use: `start_x..=end_x` [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: an inclusive range would be more readable [INFO] [stderr] --> src/roomscorridors.rs:100:20 [INFO] [stderr] | [INFO] [stderr] 100 | for row in start_y..end_y + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: use: `start_y..=end_y` [INFO] [stderr] | [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/bsp.rs:10:47 [INFO] [stderr] | [INFO] [stderr] 10 | pub fn new(width: i32, height: i32, hash: &String, rng: &mut StdRng) -> Level { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/bsp.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | / pub fn new(width: i32, height: i32, hash: &String, rng: &mut StdRng) -> Level { [INFO] [stderr] 11 | | let level = Level::new(width, height, hash); [INFO] [stderr] 12 | | let mut map = BspLevel { [INFO] [stderr] 13 | | level [INFO] [stderr] ... | [INFO] [stderr] 18 | | map.level [INFO] [stderr] 19 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/bsp.rs:70:21 [INFO] [stderr] | [INFO] [stderr] 70 | None => match self.right_child { [INFO] [stderr] | _____________________^ [INFO] [stderr] 71 | | None => true, [INFO] [stderr] 72 | | Some(_) => false, [INFO] [stderr] 73 | | }, [INFO] [stderr] | |_____________^ help: try this: `self.right_child.is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/bsp.rs:105:19 [INFO] [stderr] | [INFO] [stderr] 105 | let max = match split_horz { [INFO] [stderr] | ___________________^ [INFO] [stderr] 106 | | true => self.height - self.min_size, [INFO] [stderr] 107 | | false => self.width - self.min_size [INFO] [stderr] 108 | | }; [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if split_horz { self.height - self.min_size } else { self.width - self.min_size }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/bsp.rs:183:45 [INFO] [stderr] | [INFO] [stderr] 183 | fn create_corridors(rng: &mut StdRng, left: &mut Box, right: &mut Box) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `&mut Leaf` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::borrowed_box)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/bsp.rs:183:68 [INFO] [stderr] | [INFO] [stderr] 183 | fn create_corridors(rng: &mut StdRng, left: &mut Box, right: &mut Box) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `&mut Leaf` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/bsp.rs:191:17 [INFO] [stderr] | [INFO] [stderr] 191 | / match left_point.0 <= right_point.0 { [INFO] [stderr] 192 | | true => left.corridors.push(horz_corridor(left_point.0, left_point.1, right_point.0)), [INFO] [stderr] 193 | | false => left.corridors.push(horz_corridor(right_point.0, left_point.1, left_point.0)) [INFO] [stderr] 194 | | } [INFO] [stderr] | |_________________^ help: consider using an if/else expression: `if left_point.0 <= right_point.0 { left.corridors.push(horz_corridor(left_point.0, left_point.1, right_point.0)) } else { left.corridors.push(horz_corridor(right_point.0, left_point.1, left_point.0)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/bsp.rs:195:17 [INFO] [stderr] | [INFO] [stderr] 195 | / match left_point.1 <= right_point.1 { [INFO] [stderr] 196 | | true => left.corridors.push(vert_corridor(right_point.0, left_point.1, right_point.1)), [INFO] [stderr] 197 | | false => left.corridors.push(vert_corridor(right_point.0, right_point.1, left_point.1)) [INFO] [stderr] 198 | | } [INFO] [stderr] | |_________________^ help: consider using an if/else expression: `if left_point.1 <= right_point.1 { left.corridors.push(vert_corridor(right_point.0, left_point.1, right_point.1)) } else { left.corridors.push(vert_corridor(right_point.0, right_point.1, left_point.1)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/bsp.rs:201:17 [INFO] [stderr] | [INFO] [stderr] 201 | / match left_point.1 <= right_point.1 { [INFO] [stderr] 202 | | true => left.corridors.push(vert_corridor(left_point.0, left_point.1, right_point.1)), [INFO] [stderr] 203 | | false => left.corridors.push(vert_corridor(left_point.0, right_point.1, left_point.1)) [INFO] [stderr] 204 | | } [INFO] [stderr] | |_________________^ help: consider using an if/else expression: `if left_point.1 <= right_point.1 { left.corridors.push(vert_corridor(left_point.0, left_point.1, right_point.1)) } else { left.corridors.push(vert_corridor(left_point.0, right_point.1, left_point.1)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/bsp.rs:205:17 [INFO] [stderr] | [INFO] [stderr] 205 | / match left_point.0 <= right_point.0 { [INFO] [stderr] 206 | | true => left.corridors.push(horz_corridor(left_point.0, right_point.1, right_point.0)), [INFO] [stderr] 207 | | false => left.corridors.push(horz_corridor(right_point.0, right_point.1, left_point.0)) [INFO] [stderr] 208 | | } [INFO] [stderr] | |_________________^ help: consider using an if/else expression: `if left_point.0 <= right_point.0 { left.corridors.push(horz_corridor(left_point.0, right_point.1, right_point.0)) } else { left.corridors.push(horz_corridor(right_point.0, right_point.1, left_point.0)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/level.rs:42:47 [INFO] [stderr] | [INFO] [stderr] 42 | pub fn new(width: i32, height: i32, hash: &String) -> Self { [INFO] [stderr] | ^^^^^^^ [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] help: change this to [INFO] [stderr] | [INFO] [stderr] 42 | pub fn new(width: i32, height: i32, hash: &str) -> Self { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `hash.clone()` to [INFO] [stderr] | [INFO] [stderr] 55 | hash: hash.to_string() [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [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/draw.rs:20:41 [INFO] [stderr] | [INFO] [stderr] 20 | fn draw_tiles(context: &Context, board: &Vec>, scale: f64) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Vec]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/draw.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | / match tile { [INFO] [stderr] 25 | | Tile::Walkable => draw_tile(context, col as f64 * scale, row as f64 * scale, col as f64 * scale + scale, row as f64 * scale + scale), [INFO] [stderr] 26 | | _ => () [INFO] [stderr] 27 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Tile::Walkable = tile { draw_tile(context, col as f64 * scale, row as f64 * scale, col as f64 * scale + scale, row as f64 * scale + scale) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/draw.rs:25:74 [INFO] [stderr] | [INFO] [stderr] 25 | Tile::Walkable => draw_tile(context, col as f64 * scale, row as f64 * scale, col as f64 * scale + scale, row as f64 * scale + scale), [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(row)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/draw.rs:25:122 [INFO] [stderr] | [INFO] [stderr] 25 | Tile::Walkable => draw_tile(context, col as f64 * scale, row as f64 * scale, col as f64 * scale + scale, row as f64 * scale + scale), [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(row)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/draw.rs:30:9 [INFO] [stderr] | [INFO] [stderr] 30 | row = row + 1; [INFO] [stderr] | ^^^^^^^^^^^^^ help: replace it with: `row += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/draw.rs:39:36 [INFO] [stderr] | [INFO] [stderr] 39 | draw_tiles(&ctx, &level.board, level.tile_size as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(level.tile_size)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/roomscorridors.rs:11:47 [INFO] [stderr] | [INFO] [stderr] 11 | pub fn new(width: i32, height: i32, hash: &String, rng: &mut StdRng) -> Level { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/roomscorridors.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | / pub fn new(width: i32, height: i32, hash: &String, rng: &mut StdRng) -> Level { [INFO] [stderr] 12 | | let level = Level::new(width, height, hash); [INFO] [stderr] 13 | | [INFO] [stderr] 14 | | let mut map = RoomsCorridors { [INFO] [stderr] ... | [INFO] [stderr] 21 | | map.level [INFO] [stderr] 22 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_ret_no_self)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/roomscorridors.rs:70:21 [INFO] [stderr] | [INFO] [stderr] 70 | / match room.centre.x <= other.centre.x { [INFO] [stderr] 71 | | true => self.horz_corridor(room.centre.x, other.centre.x, room.centre.y), [INFO] [stderr] 72 | | false => self.horz_corridor(other.centre.x, room.centre.x, room.centre.y) [INFO] [stderr] 73 | | } [INFO] [stderr] | |_____________________^ help: consider using an if/else expression: `if room.centre.x <= other.centre.x { self.horz_corridor(room.centre.x, other.centre.x, room.centre.y) } else { self.horz_corridor(other.centre.x, room.centre.x, room.centre.y) }` [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] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/roomscorridors.rs:74:21 [INFO] [stderr] | [INFO] [stderr] 74 | / match room.centre.y <= other.centre.y { [INFO] [stderr] 75 | | true => self.vert_corridor(room.centre.y, other.centre.y, other.centre.x), [INFO] [stderr] 76 | | false => self.vert_corridor(other.centre.y, room.centre.y, other.centre.x) [INFO] [stderr] 77 | | } [INFO] [stderr] | |_____________________^ help: consider using an if/else expression: `if room.centre.y <= other.centre.y { self.vert_corridor(room.centre.y, other.centre.y, other.centre.x) } else { self.vert_corridor(other.centre.y, room.centre.y, other.centre.x) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/roomscorridors.rs:80:21 [INFO] [stderr] | [INFO] [stderr] 80 | / match room.centre.y <= other.centre.y { [INFO] [stderr] 81 | | true => self.vert_corridor(room.centre.y, other.centre.y, other.centre.x), [INFO] [stderr] 82 | | false => self.vert_corridor(other.centre.y, room.centre.y, other.centre.x) [INFO] [stderr] 83 | | } [INFO] [stderr] | |_____________________^ help: consider using an if/else expression: `if room.centre.y <= other.centre.y { self.vert_corridor(room.centre.y, other.centre.y, other.centre.x) } else { self.vert_corridor(other.centre.y, room.centre.y, other.centre.x) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/roomscorridors.rs:84:21 [INFO] [stderr] | [INFO] [stderr] 84 | / match room.centre.x <= other.centre.x { [INFO] [stderr] 85 | | true => self.horz_corridor(room.centre.x, other.centre.x, room.centre.y), [INFO] [stderr] 86 | | false => self.horz_corridor(other.centre.x, room.centre.x, room.centre.y) [INFO] [stderr] 87 | | } [INFO] [stderr] | |_____________________^ help: consider using an if/else expression: `if room.centre.x <= other.centre.x { self.horz_corridor(room.centre.x, other.centre.x, room.centre.y) } else { self.horz_corridor(other.centre.x, room.centre.x, room.centre.y) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/roomscorridors.rs:94:20 [INFO] [stderr] | [INFO] [stderr] 94 | for col in start_x..end_x + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: use: `start_x..=end_x` [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: an inclusive range would be more readable [INFO] [stderr] --> src/roomscorridors.rs:100:20 [INFO] [stderr] | [INFO] [stderr] 100 | for row in start_y..end_y + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: use: `start_y..=end_y` [INFO] [stderr] | [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/bsp.rs:10:47 [INFO] [stderr] | [INFO] [stderr] 10 | pub fn new(width: i32, height: i32, hash: &String, rng: &mut StdRng) -> Level { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/bsp.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | / pub fn new(width: i32, height: i32, hash: &String, rng: &mut StdRng) -> Level { [INFO] [stderr] 11 | | let level = Level::new(width, height, hash); [INFO] [stderr] 12 | | let mut map = BspLevel { [INFO] [stderr] 13 | | level [INFO] [stderr] ... | [INFO] [stderr] 18 | | map.level [INFO] [stderr] 19 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/bsp.rs:70:21 [INFO] [stderr] | [INFO] [stderr] 70 | None => match self.right_child { [INFO] [stderr] | _____________________^ [INFO] [stderr] 71 | | None => true, [INFO] [stderr] 72 | | Some(_) => false, [INFO] [stderr] 73 | | }, [INFO] [stderr] | |_____________^ help: try this: `self.right_child.is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/bsp.rs:105:19 [INFO] [stderr] | [INFO] [stderr] 105 | let max = match split_horz { [INFO] [stderr] | ___________________^ [INFO] [stderr] 106 | | true => self.height - self.min_size, [INFO] [stderr] 107 | | false => self.width - self.min_size [INFO] [stderr] 108 | | }; [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if split_horz { self.height - self.min_size } else { self.width - self.min_size }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/bsp.rs:183:45 [INFO] [stderr] | [INFO] [stderr] 183 | fn create_corridors(rng: &mut StdRng, left: &mut Box, right: &mut Box) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `&mut Leaf` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::borrowed_box)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/bsp.rs:183:68 [INFO] [stderr] | [INFO] [stderr] 183 | fn create_corridors(rng: &mut StdRng, left: &mut Box, right: &mut Box) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `&mut Leaf` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/bsp.rs:191:17 [INFO] [stderr] | [INFO] [stderr] 191 | / match left_point.0 <= right_point.0 { [INFO] [stderr] 192 | | true => left.corridors.push(horz_corridor(left_point.0, left_point.1, right_point.0)), [INFO] [stderr] 193 | | false => left.corridors.push(horz_corridor(right_point.0, left_point.1, left_point.0)) [INFO] [stderr] 194 | | } [INFO] [stderr] | |_________________^ help: consider using an if/else expression: `if left_point.0 <= right_point.0 { left.corridors.push(horz_corridor(left_point.0, left_point.1, right_point.0)) } else { left.corridors.push(horz_corridor(right_point.0, left_point.1, left_point.0)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/bsp.rs:195:17 [INFO] [stderr] | [INFO] [stderr] 195 | / match left_point.1 <= right_point.1 { [INFO] [stderr] 196 | | true => left.corridors.push(vert_corridor(right_point.0, left_point.1, right_point.1)), [INFO] [stderr] 197 | | false => left.corridors.push(vert_corridor(right_point.0, right_point.1, left_point.1)) [INFO] [stderr] 198 | | } [INFO] [stderr] | |_________________^ help: consider using an if/else expression: `if left_point.1 <= right_point.1 { left.corridors.push(vert_corridor(right_point.0, left_point.1, right_point.1)) } else { left.corridors.push(vert_corridor(right_point.0, right_point.1, left_point.1)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/bsp.rs:201:17 [INFO] [stderr] | [INFO] [stderr] 201 | / match left_point.1 <= right_point.1 { [INFO] [stderr] 202 | | true => left.corridors.push(vert_corridor(left_point.0, left_point.1, right_point.1)), [INFO] [stderr] 203 | | false => left.corridors.push(vert_corridor(left_point.0, right_point.1, left_point.1)) [INFO] [stderr] 204 | | } [INFO] [stderr] | |_________________^ help: consider using an if/else expression: `if left_point.1 <= right_point.1 { left.corridors.push(vert_corridor(left_point.0, left_point.1, right_point.1)) } else { left.corridors.push(vert_corridor(left_point.0, right_point.1, left_point.1)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/bsp.rs:205:17 [INFO] [stderr] | [INFO] [stderr] 205 | / match left_point.0 <= right_point.0 { [INFO] [stderr] 206 | | true => left.corridors.push(horz_corridor(left_point.0, right_point.1, right_point.0)), [INFO] [stderr] 207 | | false => left.corridors.push(horz_corridor(right_point.0, right_point.1, left_point.0)) [INFO] [stderr] 208 | | } [INFO] [stderr] | |_________________^ help: consider using an if/else expression: `if left_point.0 <= right_point.0 { left.corridors.push(horz_corridor(left_point.0, right_point.1, right_point.0)) } else { left.corridors.push(horz_corridor(right_point.0, right_point.1, left_point.0)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 34.58s [INFO] running `"docker" "inspect" "9da4593ec347fa0a029392b44a900510752da702a94014741f0ee59b5c7b3cc6"` [INFO] running `"docker" "rm" "-f" "9da4593ec347fa0a029392b44a900510752da702a94014741f0ee59b5c7b3cc6"` [INFO] [stdout] 9da4593ec347fa0a029392b44a900510752da702a94014741f0ee59b5c7b3cc6