[INFO] updating cached repository ttempleton/rust-battleship [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/ttempleton/rust-battleship [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/ttempleton/rust-battleship" "work/ex/clippy-test-run/sources/stable/gh/ttempleton/rust-battleship"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/ttempleton/rust-battleship'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/ttempleton/rust-battleship" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/ttempleton/rust-battleship"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/ttempleton/rust-battleship'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] d18471b78abaeaae7fce1cabecb44d0137e6cae4 [INFO] sha for GitHub repo ttempleton/rust-battleship: d18471b78abaeaae7fce1cabecb44d0137e6cae4 [INFO] validating manifest of ttempleton/rust-battleship 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 ttempleton/rust-battleship 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 ttempleton/rust-battleship [INFO] finished frobbing ttempleton/rust-battleship [INFO] frobbed toml for ttempleton/rust-battleship written to work/ex/clippy-test-run/sources/stable/gh/ttempleton/rust-battleship/Cargo.toml [INFO] started frobbing ttempleton/rust-battleship [INFO] finished frobbing ttempleton/rust-battleship [INFO] frobbed toml for ttempleton/rust-battleship written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/ttempleton/rust-battleship/Cargo.toml [INFO] crate ttempleton/rust-battleship 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 ttempleton/rust-battleship 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/ttempleton/rust-battleship:/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] b3495ef1364b04bdae362d27e2b1af2880595eb211f310b90e84d1410dc11389 [INFO] running `"docker" "start" "-a" "b3495ef1364b04bdae362d27e2b1af2880595eb211f310b90e84d1410dc11389"` [INFO] [stderr] Compiling siphasher v0.2.1 [INFO] [stderr] Compiling libc v0.2.20 [INFO] [stderr] Compiling itoa v0.1.1 [INFO] [stderr] Compiling dtoa v0.2.2 [INFO] [stderr] Compiling serde v0.8.23 [INFO] [stderr] Compiling num-traits v0.1.36 [INFO] [stderr] Checking piston-float v0.3.0 [INFO] [stderr] Compiling khronos_api v1.0.0 [INFO] [stderr] Compiling log v0.3.6 [INFO] [stderr] Checking adler32 v0.3.0 [INFO] [stderr] Checking bitflags v0.6.0 [INFO] [stderr] Checking inflate v0.1.1 [INFO] [stderr] Checking byteorder v0.4.2 [INFO] [stderr] Checking shader_version v0.2.1 [INFO] [stderr] Checking scoped_threadpool v0.1.7 [INFO] [stderr] Checking linked-hash-map v0.0.10 [INFO] [stderr] Checking interpolation v0.1.0 [INFO] [stderr] Checking read_color v0.1.0 [INFO] [stderr] Checking piston-texture v0.5.0 [INFO] [stderr] Checking piston-shaders_graphics2d v0.2.1 [INFO] [stderr] Compiling xml-rs v0.3.5 [INFO] [stderr] Checking rand v0.3.15 [INFO] [stderr] Checking shared_library v0.1.5 [INFO] [stderr] Compiling x11-dl v2.12.0 [INFO] [stderr] Checking num-integer v0.1.32 [INFO] [stderr] Checking enum_primitive v0.1.1 [INFO] [stderr] Checking piston-viewport v0.3.0 [INFO] [stderr] Checking vecmath v0.3.0 [INFO] [stderr] Compiling phf_shared v0.7.21 [INFO] [stderr] Checking nodrop v0.1.8 [INFO] [stderr] Checking gif v0.9.0 [INFO] [stderr] Checking deflate v0.7.2 [INFO] [stderr] Checking draw_state v0.6.0 [INFO] [stderr] Checking stb_truetype v0.2.0 [INFO] [stderr] Checking osmesa-sys v0.1.2 [INFO] [stderr] Checking num-iter v0.1.32 [INFO] [stderr] Checking num-rational v0.1.35 [INFO] [stderr] Checking pistoncore-input v0.16.0 [INFO] [stderr] Compiling phf v0.7.21 [INFO] [stderr] Checking arrayvec v0.3.20 [INFO] [stderr] Checking piston2d-graphics v0.20.1 [INFO] [stderr] Checking deque v0.3.1 [INFO] [stderr] Checking gfx_core v0.6.0 [INFO] [stderr] Compiling wayland-scanner v0.7.6 [INFO] [stderr] Compiling gl_generator v0.5.2 [INFO] [stderr] Checking png v0.6.2 [INFO] [stderr] Compiling phf_generator v0.7.21 [INFO] [stderr] Checking fs2 v0.2.5 [INFO] [stderr] Checking tempfile v2.1.5 [INFO] [stderr] Checking rayon v0.6.0 [INFO] [stderr] Compiling serde_json v0.8.6 [INFO] [stderr] Checking rusttype v0.2.1 [INFO] [stderr] Compiling phf_codegen v0.7.21 [INFO] [stderr] Checking memmap v0.4.0 [INFO] [stderr] Compiling wayland-client v0.7.6 [INFO] [stderr] Checking pistoncore-window v0.25.0 [INFO] [stderr] Compiling target_build_utils v0.1.2 [INFO] [stderr] Compiling gl v0.6.1 [INFO] [stderr] Compiling glutin v0.7.3 [INFO] [stderr] Compiling gfx_gl v0.3.1 [INFO] [stderr] Checking pistoncore-event_loop v0.28.0 [INFO] [stderr] Checking jpeg-decoder v0.1.11 [INFO] [stderr] Checking piston v0.28.0 [INFO] [stderr] Checking image v0.12.2 [INFO] [stderr] Compiling libloading v0.3.1 [INFO] [stderr] Checking dlib v0.3.1 [INFO] [stderr] Checking wayland-sys v0.7.6 [INFO] [stderr] Checking wayland-kbd v0.6.2 [INFO] [stderr] Checking wayland-window v0.4.3 [INFO] [stderr] Checking winit v0.5.9 [INFO] [stderr] Checking gfx v0.14.0 [INFO] [stderr] Checking gfx_device_gl v0.13.0 [INFO] [stderr] Checking pistoncore-glutin_window v0.34.1 [INFO] [stderr] Checking piston-gfx_texture v0.21.1 [INFO] [stderr] Checking piston2d-gfx_graphics v0.36.0 [INFO] [stderr] Checking piston_window v0.62.0 [INFO] [stderr] Checking rust-battleship v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/app.rs:47:13 [INFO] [stderr] | [INFO] [stderr] 47 | grid_area: grid_area, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `grid_area` [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/app.rs:48:13 [INFO] [stderr] | [INFO] [stderr] 48 | window_size: window_size, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `window_size` [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/player.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | is_cpu: is_cpu, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `is_cpu` [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/player.rs:31:13 [INFO] [stderr] | [INFO] [stderr] 31 | spaces: spaces, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `spaces` [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/app.rs:47:13 [INFO] [stderr] | [INFO] [stderr] 47 | grid_area: grid_area, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `grid_area` [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/app.rs:48:13 [INFO] [stderr] | [INFO] [stderr] 48 | window_size: window_size, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `window_size` [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/player.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | is_cpu: is_cpu, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `is_cpu` [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/player.rs:31:13 [INFO] [stderr] | [INFO] [stderr] 31 | spaces: spaces, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `spaces` [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/app.rs:73:24 [INFO] [stderr] | [INFO] [stderr] 73 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 74 | | if self.state == GameState::Active { [INFO] [stderr] 75 | | self.switch_turn(); [INFO] [stderr] 76 | | } else { [INFO] [stderr] 77 | | self.winner = Some(self.turn); [INFO] [stderr] 78 | | } [INFO] [stderr] 79 | | } [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] 73 | } else if self.state == GameState::Active { [INFO] [stderr] 74 | self.switch_turn(); [INFO] [stderr] 75 | } else { [INFO] [stderr] 76 | self.winner = Some(self.turn); [INFO] [stderr] 77 | } [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/player.rs:261:9 [INFO] [stderr] | [INFO] [stderr] 261 | ship_opt [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/player.rs:244:24 [INFO] [stderr] | [INFO] [stderr] 244 | let ship_opt = if valid { [INFO] [stderr] | ________________________^ [INFO] [stderr] 245 | | let mut ship = vec![head]; [INFO] [stderr] 246 | | for pos in 1..length { [INFO] [stderr] 247 | | let pos_u8 = pos as u8; [INFO] [stderr] ... | [INFO] [stderr] 258 | | None [INFO] [stderr] 259 | | }; [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/app.rs:73:24 [INFO] [stderr] | [INFO] [stderr] 73 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 74 | | if self.state == GameState::Active { [INFO] [stderr] 75 | | self.switch_turn(); [INFO] [stderr] 76 | | } else { [INFO] [stderr] 77 | | self.winner = Some(self.turn); [INFO] [stderr] 78 | | } [INFO] [stderr] 79 | | } [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] 73 | } else if self.state == GameState::Active { [INFO] [stderr] 74 | self.switch_turn(); [INFO] [stderr] 75 | } else { [INFO] [stderr] 76 | self.winner = Some(self.turn); [INFO] [stderr] 77 | } [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/player.rs:261:9 [INFO] [stderr] | [INFO] [stderr] 261 | ship_opt [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/player.rs:244:24 [INFO] [stderr] | [INFO] [stderr] 244 | let ship_opt = if valid { [INFO] [stderr] | ________________________^ [INFO] [stderr] 245 | | let mut ship = vec![head]; [INFO] [stderr] 246 | | for pos in 1..length { [INFO] [stderr] 247 | | let pos_u8 = pos as u8; [INFO] [stderr] ... | [INFO] [stderr] 258 | | None [INFO] [stderr] 259 | | }; [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:26:13 [INFO] [stderr] | [INFO] [stderr] 26 | settings.spaces_x as u32 * settings.space_size, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(settings.spaces_x)` [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 u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:27:13 [INFO] [stderr] | [INFO] [stderr] 27 | settings.spaces_y as u32 * settings.space_size [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(settings.spaces_y)` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/app.rs:53:33 [INFO] [stderr] | [INFO] [stderr] 53 | pub fn update(&mut self, u: &UpdateArgs) { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/app.rs:87:25 [INFO] [stderr] | [INFO] [stderr] 87 | let ref mut opponent = self.players[self.not_turn()]; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^--------------------------------- help: try: `let opponent = &mut self.players[self.not_turn()];` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/app.rs:147:46 [INFO] [stderr] | [INFO] [stderr] 147 | fn select_opponent_space(&mut self, pos: &[u8; 2]) { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `[u8; 2]` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/app.rs:148:13 [INFO] [stderr] | [INFO] [stderr] 148 | let ref mut opponent = self.players[self.not_turn()]; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^--------------------------------- help: try: `let opponent = &mut self.players[self.not_turn()];` [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/app.rs:166:44 [INFO] [stderr] | [INFO] [stderr] 166 | fn primary_action(&mut self, grid_pos: &[u8; 2]) { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `[u8; 2]` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/app.rs:222:17 [INFO] [stderr] | [INFO] [stderr] 222 | let ref mut player = self.players[self.turn as usize]; [INFO] [stderr] | ----^^^^^^^^^^^^^^------------------------------------ help: try: `let player = &mut self.players[self.turn as usize];` [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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/app.rs:242:9 [INFO] [stderr] | [INFO] [stderr] 242 | / let position: Option<[u8; 2]>; [INFO] [stderr] 243 | | if self.mouse_cursor[0] >= self.grid_area[0] as f64 [INFO] [stderr] 244 | | && self.mouse_cursor[1] >= self.grid_area[1] as f64 [INFO] [stderr] 245 | | && self.mouse_cursor[0] < (self.grid_area[0] + self.grid_area[2]) as f64 [INFO] [stderr] ... | [INFO] [stderr] 253 | | position = None; [INFO] [stderr] 254 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] help: it is more idiomatic to write [INFO] [stderr] | [INFO] [stderr] 242 | let position = if self.mouse_cursor[0] >= self.grid_area[0] as f64 [INFO] [stderr] 243 | && self.mouse_cursor[1] >= self.grid_area[1] as f64 [INFO] [stderr] 244 | && self.mouse_cursor[0] < (self.grid_area[0] + self.grid_area[2]) as f64 [INFO] [stderr] 245 | && self.mouse_cursor[1] < (self.grid_area[1] + self.grid_area[3]) as f64 { Some([ [INFO] [stderr] 246 | ((self.mouse_cursor[0] - self.grid_area[0] as f64) / self.settings.space_size as f64) as u8, [INFO] [stderr] 247 | ((self.mouse_cursor[1] - self.grid_area[1] as f64) / self.settings.space_size as f64) as u8, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:243:36 [INFO] [stderr] | [INFO] [stderr] 243 | if self.mouse_cursor[0] >= self.grid_area[0] as f64 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.grid_area[0])` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:244:40 [INFO] [stderr] | [INFO] [stderr] 244 | && self.mouse_cursor[1] >= self.grid_area[1] as f64 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.grid_area[1])` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:245:39 [INFO] [stderr] | [INFO] [stderr] 245 | && self.mouse_cursor[0] < (self.grid_area[0] + self.grid_area[2]) as f64 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.grid_area[0] + self.grid_area[2])` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:246:39 [INFO] [stderr] | [INFO] [stderr] 246 | && self.mouse_cursor[1] < (self.grid_area[1] + self.grid_area[3]) as f64 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.grid_area[1] + self.grid_area[3])` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:249:42 [INFO] [stderr] | [INFO] [stderr] 249 | ((self.mouse_cursor[0] - self.grid_area[0] as f64) / self.settings.space_size as f64) as u8, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.grid_area[0])` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:249:70 [INFO] [stderr] | [INFO] [stderr] 249 | ((self.mouse_cursor[0] - self.grid_area[0] as f64) / self.settings.space_size as f64) as u8, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.settings.space_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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:250:42 [INFO] [stderr] | [INFO] [stderr] 250 | ((self.mouse_cursor[1] - self.grid_area[1] as f64) / self.settings.space_size as f64) as u8, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.grid_area[1])` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:250:70 [INFO] [stderr] | [INFO] [stderr] 250 | ((self.mouse_cursor[1] - self.grid_area[1] as f64) / self.settings.space_size as f64) as u8, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.settings.space_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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/player.rs:40:41 [INFO] [stderr] | [INFO] [stderr] 40 | pub fn select_space(&mut self, pos: &[u8; 2]) -> GameState { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `[u8; 2]` [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: length comparison to zero [INFO] [stderr] --> src/player.rs:101:12 [INFO] [stderr] | [INFO] [stderr] 101 | if hit_spaces.len() > 0 && select.is_empty() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!hit_spaces.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [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/player.rs:268:49 [INFO] [stderr] | [INFO] [stderr] 268 | pub fn valid_ship_position(&self, new_ship: &Vec<[u8; 2]>) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[[u8; 2]]` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/player.rs:280:25 [INFO] [stderr] | [INFO] [stderr] 280 | fn ship(&self, pos: &[u8; 2]) -> Option<&Ship> { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `[u8; 2]` [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/player.rs:285:41 [INFO] [stderr] | [INFO] [stderr] 285 | pub fn ship_is_in_space(&self, pos: &[u8; 2]) -> bool { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `[u8; 2]` [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/player.rs:290:36 [INFO] [stderr] | [INFO] [stderr] 290 | fn ship_is_next_to(&self, pos: &[u8; 2]) -> bool { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `[u8; 2]` [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/player.rs:319:32 [INFO] [stderr] | [INFO] [stderr] 319 | fn valid_space(&self, pos: &[u8; 2]) -> bool { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `[u8; 2]` [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: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/player.rs:325:9 [INFO] [stderr] | [INFO] [stderr] 325 | self.spaces.get(self.space_index(pos)).unwrap() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.spaces[self.space_index(pos)]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/player.rs:329:32 [INFO] [stderr] | [INFO] [stderr] 329 | fn space_index(&self, pos: &[u8; 2]) -> usize { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `[u8; 2]` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/player.rs:335:9 [INFO] [stderr] | [INFO] [stderr] 335 | self.grid_cursor.clone() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.grid_cursor` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/player.rs:340:33 [INFO] [stderr] | [INFO] [stderr] 340 | pub fn movement(&self, pos: &[u8; 2], direction: ShipDirection) -> Option<[u8; 2]> { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `[u8; 2]` [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/player.rs:367:14 [INFO] [stderr] | [INFO] [stderr] 367 | pos: &[u8; 2], [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `[u8; 2]` [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: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/player.rs:375:13 [INFO] [stderr] | [INFO] [stderr] 375 | / match next_space.is_hit() { [INFO] [stderr] 376 | | true => check_pos = self.movement(&next_pos, direction), [INFO] [stderr] 377 | | false => { [INFO] [stderr] 378 | | if !next_space.is_unchecked() { [INFO] [stderr] ... | [INFO] [stderr] 382 | | } [INFO] [stderr] 383 | | }; [INFO] [stderr] | |_____________^ [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] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 375 | if next_space.is_hit() { check_pos = self.movement(&next_pos, direction) } else { [INFO] [stderr] 376 | if !next_space.is_unchecked() { [INFO] [stderr] 377 | check_pos = None; [INFO] [stderr] 378 | } [INFO] [stderr] 379 | break; [INFO] [stderr] 380 | }; [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/player.rs:406:51 [INFO] [stderr] | [INFO] [stderr] 406 | pub fn set_grid_cursor(&mut self, new_cursor: &[u8; 2]) { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `[u8; 2]` [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/ship.rs:36:21 [INFO] [stderr] | [INFO] [stderr] 36 | pub fn opposite(&self) -> ShipDirection { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:154:29 [INFO] [stderr] | [INFO] [stderr] 154 | (settings.space_size as u32 * 2 * i as u32 + app.grid_area[0] * 2) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(settings.space_size as u32 * 2 * i as u32 + app.grid_area[0] * 2)` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:165:25 [INFO] [stderr] | [INFO] [stderr] 165 | (settings.space_size as u32 * space_pos[0] as u32 + app.grid_area[0]) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(settings.space_size as u32 * space_pos[0] as u32 + app.grid_area[0])` [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:165:55 [INFO] [stderr] | [INFO] [stderr] 165 | (settings.space_size as u32 * space_pos[0] as u32 + app.grid_area[0]) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(space_pos[0])` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:166:25 [INFO] [stderr] | [INFO] [stderr] 166 | (settings.space_size as u32 * space_pos[1] as u32 + app.grid_area[1]) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(settings.space_size as u32 * space_pos[1] as u32 + app.grid_area[1])` [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:166:55 [INFO] [stderr] | [INFO] [stderr] 166 | (settings.space_size as u32 * space_pos[1] as u32 + app.grid_area[1]) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(space_pos[1])` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:190:29 [INFO] [stderr] | [INFO] [stderr] 190 | (settings.space_size as u32 * pos[0] as u32 + app.grid_area[0]) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(settings.space_size as u32 * pos[0] as u32 + app.grid_area[0])` [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:190:59 [INFO] [stderr] | [INFO] [stderr] 190 | (settings.space_size as u32 * pos[0] as u32 + app.grid_area[0]) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u32::from(pos[0])` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:191:29 [INFO] [stderr] | [INFO] [stderr] 191 | (settings.space_size as u32 * pos[1] as u32 + app.grid_area[1]) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(settings.space_size as u32 * pos[1] as u32 + app.grid_area[1])` [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:191:59 [INFO] [stderr] | [INFO] [stderr] 191 | (settings.space_size as u32 * pos[1] as u32 + app.grid_area[1]) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u32::from(pos[1])` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:201:25 [INFO] [stderr] | [INFO] [stderr] 201 | (settings.space_size * grid_cursor[0] as u32 + app.grid_area[0]) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(settings.space_size * grid_cursor[0] as u32 + app.grid_area[0])` [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:201:48 [INFO] [stderr] | [INFO] [stderr] 201 | (settings.space_size * grid_cursor[0] as u32 + app.grid_area[0]) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(grid_cursor[0])` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:202:25 [INFO] [stderr] | [INFO] [stderr] 202 | (settings.space_size * grid_cursor[1] as u32 + app.grid_area[1]) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(settings.space_size * grid_cursor[1] as u32 + app.grid_area[1])` [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:202:48 [INFO] [stderr] | [INFO] [stderr] 202 | (settings.space_size * grid_cursor[1] as u32 + app.grid_area[1]) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(grid_cursor[1])` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:212:25 [INFO] [stderr] | [INFO] [stderr] 212 | ((app.window_size[0] - player_text_size.0) / 2) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from((app.window_size[0] - player_text_size.0) / 2)` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:228:36 [INFO] [stderr] | [INFO] [stderr] 228 | [0.0, 0.0, app.window_size[0] as f64, app.window_size[1] as f64], [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(app.window_size[0])` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:228:63 [INFO] [stderr] | [INFO] [stderr] 228 | [0.0, 0.0, app.window_size[0] as f64, app.window_size[1] as f64], [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(app.window_size[1])` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:240:25 [INFO] [stderr] | [INFO] [stderr] 240 | ((app.window_size[0] - game_over_text_size.0) / 2) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from((app.window_size[0] - game_over_text_size.0) / 2)` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:244:25 [INFO] [stderr] | [INFO] [stderr] 244 | ((app.window_size[0] - player_text_size.0 - wins_text_size.0 - 2) / 2) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from((app.window_size[0] - player_text_size.0 - wins_text_size.0 - 2) / 2)` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:248:25 [INFO] [stderr] | [INFO] [stderr] 248 | ((app.window_size[0] + player_text_size.0 - wins_text_size.0 + 2) / 2) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from((app.window_size[0] + player_text_size.0 - wins_text_size.0 + 2) / 2)` [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:26:13 [INFO] [stderr] | [INFO] [stderr] 26 | settings.spaces_x as u32 * settings.space_size, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(settings.spaces_x)` [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 u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:27:13 [INFO] [stderr] | [INFO] [stderr] 27 | settings.spaces_y as u32 * settings.space_size [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(settings.spaces_y)` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/app.rs:53:33 [INFO] [stderr] | [INFO] [stderr] 53 | pub fn update(&mut self, u: &UpdateArgs) { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/app.rs:87:25 [INFO] [stderr] | [INFO] [stderr] 87 | let ref mut opponent = self.players[self.not_turn()]; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^--------------------------------- help: try: `let opponent = &mut self.players[self.not_turn()];` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/app.rs:147:46 [INFO] [stderr] | [INFO] [stderr] 147 | fn select_opponent_space(&mut self, pos: &[u8; 2]) { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `[u8; 2]` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/app.rs:148:13 [INFO] [stderr] | [INFO] [stderr] 148 | let ref mut opponent = self.players[self.not_turn()]; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^--------------------------------- help: try: `let opponent = &mut self.players[self.not_turn()];` [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/app.rs:166:44 [INFO] [stderr] | [INFO] [stderr] 166 | fn primary_action(&mut self, grid_pos: &[u8; 2]) { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `[u8; 2]` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/app.rs:222:17 [INFO] [stderr] | [INFO] [stderr] 222 | let ref mut player = self.players[self.turn as usize]; [INFO] [stderr] | ----^^^^^^^^^^^^^^------------------------------------ help: try: `let player = &mut self.players[self.turn as usize];` [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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/app.rs:242:9 [INFO] [stderr] | [INFO] [stderr] 242 | / let position: Option<[u8; 2]>; [INFO] [stderr] 243 | | if self.mouse_cursor[0] >= self.grid_area[0] as f64 [INFO] [stderr] 244 | | && self.mouse_cursor[1] >= self.grid_area[1] as f64 [INFO] [stderr] 245 | | && self.mouse_cursor[0] < (self.grid_area[0] + self.grid_area[2]) as f64 [INFO] [stderr] ... | [INFO] [stderr] 253 | | position = None; [INFO] [stderr] 254 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] help: it is more idiomatic to write [INFO] [stderr] | [INFO] [stderr] 242 | let position = if self.mouse_cursor[0] >= self.grid_area[0] as f64 [INFO] [stderr] 243 | && self.mouse_cursor[1] >= self.grid_area[1] as f64 [INFO] [stderr] 244 | && self.mouse_cursor[0] < (self.grid_area[0] + self.grid_area[2]) as f64 [INFO] [stderr] 245 | && self.mouse_cursor[1] < (self.grid_area[1] + self.grid_area[3]) as f64 { Some([ [INFO] [stderr] 246 | ((self.mouse_cursor[0] - self.grid_area[0] as f64) / self.settings.space_size as f64) as u8, [INFO] [stderr] 247 | ((self.mouse_cursor[1] - self.grid_area[1] as f64) / self.settings.space_size as f64) as u8, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:243:36 [INFO] [stderr] | [INFO] [stderr] 243 | if self.mouse_cursor[0] >= self.grid_area[0] as f64 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.grid_area[0])` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:244:40 [INFO] [stderr] | [INFO] [stderr] 244 | && self.mouse_cursor[1] >= self.grid_area[1] as f64 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.grid_area[1])` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:245:39 [INFO] [stderr] | [INFO] [stderr] 245 | && self.mouse_cursor[0] < (self.grid_area[0] + self.grid_area[2]) as f64 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.grid_area[0] + self.grid_area[2])` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:246:39 [INFO] [stderr] | [INFO] [stderr] 246 | && self.mouse_cursor[1] < (self.grid_area[1] + self.grid_area[3]) as f64 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.grid_area[1] + self.grid_area[3])` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:249:42 [INFO] [stderr] | [INFO] [stderr] 249 | ((self.mouse_cursor[0] - self.grid_area[0] as f64) / self.settings.space_size as f64) as u8, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.grid_area[0])` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:249:70 [INFO] [stderr] | [INFO] [stderr] 249 | ((self.mouse_cursor[0] - self.grid_area[0] as f64) / self.settings.space_size as f64) as u8, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.settings.space_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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:250:42 [INFO] [stderr] | [INFO] [stderr] 250 | ((self.mouse_cursor[1] - self.grid_area[1] as f64) / self.settings.space_size as f64) as u8, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.grid_area[1])` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:250:70 [INFO] [stderr] | [INFO] [stderr] 250 | ((self.mouse_cursor[1] - self.grid_area[1] as f64) / self.settings.space_size as f64) as u8, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.settings.space_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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/player.rs:40:41 [INFO] [stderr] | [INFO] [stderr] 40 | pub fn select_space(&mut self, pos: &[u8; 2]) -> GameState { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `[u8; 2]` [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: length comparison to zero [INFO] [stderr] --> src/player.rs:101:12 [INFO] [stderr] | [INFO] [stderr] 101 | if hit_spaces.len() > 0 && select.is_empty() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!hit_spaces.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [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/player.rs:268:49 [INFO] [stderr] | [INFO] [stderr] 268 | pub fn valid_ship_position(&self, new_ship: &Vec<[u8; 2]>) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[[u8; 2]]` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/player.rs:280:25 [INFO] [stderr] | [INFO] [stderr] 280 | fn ship(&self, pos: &[u8; 2]) -> Option<&Ship> { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `[u8; 2]` [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/player.rs:285:41 [INFO] [stderr] | [INFO] [stderr] 285 | pub fn ship_is_in_space(&self, pos: &[u8; 2]) -> bool { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `[u8; 2]` [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/player.rs:290:36 [INFO] [stderr] | [INFO] [stderr] 290 | fn ship_is_next_to(&self, pos: &[u8; 2]) -> bool { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `[u8; 2]` [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/player.rs:319:32 [INFO] [stderr] | [INFO] [stderr] 319 | fn valid_space(&self, pos: &[u8; 2]) -> bool { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `[u8; 2]` [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: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/player.rs:325:9 [INFO] [stderr] | [INFO] [stderr] 325 | self.spaces.get(self.space_index(pos)).unwrap() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.spaces[self.space_index(pos)]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/player.rs:329:32 [INFO] [stderr] | [INFO] [stderr] 329 | fn space_index(&self, pos: &[u8; 2]) -> usize { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `[u8; 2]` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/player.rs:335:9 [INFO] [stderr] | [INFO] [stderr] 335 | self.grid_cursor.clone() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.grid_cursor` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/player.rs:340:33 [INFO] [stderr] | [INFO] [stderr] 340 | pub fn movement(&self, pos: &[u8; 2], direction: ShipDirection) -> Option<[u8; 2]> { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `[u8; 2]` [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/player.rs:367:14 [INFO] [stderr] | [INFO] [stderr] 367 | pos: &[u8; 2], [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `[u8; 2]` [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: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/player.rs:375:13 [INFO] [stderr] | [INFO] [stderr] 375 | / match next_space.is_hit() { [INFO] [stderr] 376 | | true => check_pos = self.movement(&next_pos, direction), [INFO] [stderr] 377 | | false => { [INFO] [stderr] 378 | | if !next_space.is_unchecked() { [INFO] [stderr] ... | [INFO] [stderr] 382 | | } [INFO] [stderr] 383 | | }; [INFO] [stderr] | |_____________^ [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] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 375 | if next_space.is_hit() { check_pos = self.movement(&next_pos, direction) } else { [INFO] [stderr] 376 | if !next_space.is_unchecked() { [INFO] [stderr] 377 | check_pos = None; [INFO] [stderr] 378 | } [INFO] [stderr] 379 | break; [INFO] [stderr] 380 | }; [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/player.rs:406:51 [INFO] [stderr] | [INFO] [stderr] 406 | pub fn set_grid_cursor(&mut self, new_cursor: &[u8; 2]) { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `[u8; 2]` [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/ship.rs:36:21 [INFO] [stderr] | [INFO] [stderr] 36 | pub fn opposite(&self) -> ShipDirection { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:154:29 [INFO] [stderr] | [INFO] [stderr] 154 | (settings.space_size as u32 * 2 * i as u32 + app.grid_area[0] * 2) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(settings.space_size as u32 * 2 * i as u32 + app.grid_area[0] * 2)` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:165:25 [INFO] [stderr] | [INFO] [stderr] 165 | (settings.space_size as u32 * space_pos[0] as u32 + app.grid_area[0]) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(settings.space_size as u32 * space_pos[0] as u32 + app.grid_area[0])` [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:165:55 [INFO] [stderr] | [INFO] [stderr] 165 | (settings.space_size as u32 * space_pos[0] as u32 + app.grid_area[0]) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(space_pos[0])` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:166:25 [INFO] [stderr] | [INFO] [stderr] 166 | (settings.space_size as u32 * space_pos[1] as u32 + app.grid_area[1]) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(settings.space_size as u32 * space_pos[1] as u32 + app.grid_area[1])` [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:166:55 [INFO] [stderr] | [INFO] [stderr] 166 | (settings.space_size as u32 * space_pos[1] as u32 + app.grid_area[1]) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(space_pos[1])` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:190:29 [INFO] [stderr] | [INFO] [stderr] 190 | (settings.space_size as u32 * pos[0] as u32 + app.grid_area[0]) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(settings.space_size as u32 * pos[0] as u32 + app.grid_area[0])` [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:190:59 [INFO] [stderr] | [INFO] [stderr] 190 | (settings.space_size as u32 * pos[0] as u32 + app.grid_area[0]) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u32::from(pos[0])` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:191:29 [INFO] [stderr] | [INFO] [stderr] 191 | (settings.space_size as u32 * pos[1] as u32 + app.grid_area[1]) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(settings.space_size as u32 * pos[1] as u32 + app.grid_area[1])` [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:191:59 [INFO] [stderr] | [INFO] [stderr] 191 | (settings.space_size as u32 * pos[1] as u32 + app.grid_area[1]) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u32::from(pos[1])` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:201:25 [INFO] [stderr] | [INFO] [stderr] 201 | (settings.space_size * grid_cursor[0] as u32 + app.grid_area[0]) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(settings.space_size * grid_cursor[0] as u32 + app.grid_area[0])` [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:201:48 [INFO] [stderr] | [INFO] [stderr] 201 | (settings.space_size * grid_cursor[0] as u32 + app.grid_area[0]) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(grid_cursor[0])` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:202:25 [INFO] [stderr] | [INFO] [stderr] 202 | (settings.space_size * grid_cursor[1] as u32 + app.grid_area[1]) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(settings.space_size * grid_cursor[1] as u32 + app.grid_area[1])` [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:202:48 [INFO] [stderr] | [INFO] [stderr] 202 | (settings.space_size * grid_cursor[1] as u32 + app.grid_area[1]) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(grid_cursor[1])` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:212:25 [INFO] [stderr] | [INFO] [stderr] 212 | ((app.window_size[0] - player_text_size.0) / 2) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from((app.window_size[0] - player_text_size.0) / 2)` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:228:36 [INFO] [stderr] | [INFO] [stderr] 228 | [0.0, 0.0, app.window_size[0] as f64, app.window_size[1] as f64], [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(app.window_size[0])` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:228:63 [INFO] [stderr] | [INFO] [stderr] 228 | [0.0, 0.0, app.window_size[0] as f64, app.window_size[1] as f64], [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(app.window_size[1])` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:240:25 [INFO] [stderr] | [INFO] [stderr] 240 | ((app.window_size[0] - game_over_text_size.0) / 2) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from((app.window_size[0] - game_over_text_size.0) / 2)` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:244:25 [INFO] [stderr] | [INFO] [stderr] 244 | ((app.window_size[0] - player_text_size.0 - wins_text_size.0 - 2) / 2) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from((app.window_size[0] - player_text_size.0 - wins_text_size.0 - 2) / 2)` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:248:25 [INFO] [stderr] | [INFO] [stderr] 248 | ((app.window_size[0] + player_text_size.0 - wins_text_size.0 + 2) / 2) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from((app.window_size[0] + player_text_size.0 - wins_text_size.0 + 2) / 2)` [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] Finished dev [unoptimized + debuginfo] target(s) in 1m 31s [INFO] running `"docker" "inspect" "b3495ef1364b04bdae362d27e2b1af2880595eb211f310b90e84d1410dc11389"` [INFO] running `"docker" "rm" "-f" "b3495ef1364b04bdae362d27e2b1af2880595eb211f310b90e84d1410dc11389"` [INFO] [stdout] b3495ef1364b04bdae362d27e2b1af2880595eb211f310b90e84d1410dc11389