[INFO] crate tic_tac_toe 0.1.3 is already in cache [INFO] extracting crate tic_tac_toe 0.1.3 into work/ex/clippy-test-run/sources/stable/reg/tic_tac_toe/0.1.3 [INFO] extracting crate tic_tac_toe 0.1.3 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/tic_tac_toe/0.1.3 [INFO] validating manifest of tic_tac_toe-0.1.3 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 tic_tac_toe-0.1.3 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 tic_tac_toe-0.1.3 [INFO] finished frobbing tic_tac_toe-0.1.3 [INFO] frobbed toml for tic_tac_toe-0.1.3 written to work/ex/clippy-test-run/sources/stable/reg/tic_tac_toe/0.1.3/Cargo.toml [INFO] started frobbing tic_tac_toe-0.1.3 [INFO] finished frobbing tic_tac_toe-0.1.3 [INFO] frobbed toml for tic_tac_toe-0.1.3 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/tic_tac_toe/0.1.3/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [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 tic_tac_toe-0.1.3 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/tic_tac_toe/0.1.3:/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] 394e14e93db465ff39940422269a3fc72c23ad8f21b38ed953b8c0d365c7c0d6 [INFO] running `"docker" "start" "-a" "394e14e93db465ff39940422269a3fc72c23ad8f21b38ed953b8c0d365c7c0d6"` [INFO] [stderr] Checking petgraph v0.2.10 [INFO] [stderr] Checking pistoncore-input v0.17.1 [INFO] [stderr] Checking pistoncore-input v0.16.0 [INFO] [stderr] Checking piston2d-graphics v0.20.1 [INFO] [stderr] Checking crossbeam-epoch v0.3.1 [INFO] [stderr] Checking gfx_core v0.6.1 [INFO] [stderr] Compiling gl_generator v0.5.5 [INFO] [stderr] Compiling gl_generator v0.6.1 [INFO] [stderr] Checking osmesa-sys v0.1.2 [INFO] [stderr] Checking num-bigint v0.1.44 [INFO] [stderr] Checking fs2 v0.2.5 [INFO] [stderr] Checking crossbeam-deque v0.2.0 [INFO] [stderr] Checking rusttype v0.2.3 [INFO] [stderr] Checking daggy v0.4.1 [INFO] [stderr] Checking png v0.6.2 [INFO] [stderr] Checking memmap v0.4.0 [INFO] [stderr] Checking pistoncore-window v0.26.2 [INFO] [stderr] Checking pistoncore-window v0.25.0 [INFO] [stderr] Checking rayon-core v1.4.1 [INFO] [stderr] Compiling gfx_gl v0.3.1 [INFO] [stderr] Compiling glutin v0.7.4 [INFO] [stderr] Compiling glium v0.16.0 [INFO] [stderr] Compiling gl v0.6.5 [INFO] [stderr] Checking num-rational v0.1.42 [INFO] [stderr] Checking pistoncore-event_loop v0.31.4 [INFO] [stderr] Checking pistoncore-event_loop v0.28.0 [INFO] [stderr] Checking rayon v1.0.3 [INFO] [stderr] Checking num v0.1.42 [INFO] [stderr] Checking piston v0.31.4 [INFO] [stderr] Checking wayland-sys v0.7.8 [INFO] [stderr] Checking wayland-client v0.7.8 [INFO] [stderr] Checking wayland-kbd v0.6.3 [INFO] [stderr] Checking wayland-window v0.4.4 [INFO] [stderr] Checking jpeg-decoder v0.1.15 [INFO] [stderr] Checking winit v0.5.11 [INFO] [stderr] Checking image v0.12.4 [INFO] [stderr] Checking pistoncore-glutin_window v0.34.1 [INFO] [stderr] Checking pistoncore-glutin_window v0.35.1 [INFO] [stderr] Checking gfx v0.14.1 [INFO] [stderr] Checking gfx_device_gl v0.13.1 [INFO] [stderr] Checking piston-gfx_texture v0.22.1 [INFO] [stderr] Checking piston-gfx_texture v0.21.1 [INFO] [stderr] Checking piston2d-gfx_graphics v0.36.0 [INFO] [stderr] Checking piston2d-gfx_graphics v0.38.0 [INFO] [stderr] Checking piston_window v0.64.0 [INFO] [stderr] Checking conrod v0.49.0 [INFO] [stderr] Checking tic_tac_toe v0.1.3 (/opt/crater/workdir) [INFO] [stderr] warning: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/input.rs:13:2 [INFO] [stderr] | [INFO] [stderr] 13 | print!("{}\n", msg); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::print_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/basic.rs:51:2 [INFO] [stderr] | [INFO] [stderr] 51 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ai.rs:121:20 [INFO] [stderr] | [INFO] [stderr] 121 | let mut n = Node {terrain : terrain, child : v, player : *player, win : ' ', play : (0,0)}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `terrain` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/graphics/solo.rs:43:6 [INFO] [stderr] | [INFO] [stderr] 43 | let h = (size.height as f64 - q - p) / 6.0; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/graphics/solo.rs:68:10 [INFO] [stderr] | [INFO] [stderr] 68 | let u = ai::update(x,2-y, &ai::get_node(actual_node, &played_node)); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/graphics/multiplayer.rs:31:6 [INFO] [stderr] | [INFO] [stderr] 31 | let h = (size.height as f64 - q - p) / 6.0; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/input.rs:13:2 [INFO] [stderr] | [INFO] [stderr] 13 | print!("{}\n", msg); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::print_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/basic.rs:51:2 [INFO] [stderr] | [INFO] [stderr] 51 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ai.rs:121:20 [INFO] [stderr] | [INFO] [stderr] 121 | let mut n = Node {terrain : terrain, child : v, player : *player, win : ' ', play : (0,0)}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `terrain` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/graphics/solo.rs:43:6 [INFO] [stderr] | [INFO] [stderr] 43 | let h = (size.height as f64 - q - p) / 6.0; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/graphics/solo.rs:68:10 [INFO] [stderr] | [INFO] [stderr] 68 | let u = ai::update(x,2-y, &ai::get_node(actual_node, &played_node)); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/graphics/multiplayer.rs:31:6 [INFO] [stderr] | [INFO] [stderr] 31 | let h = (size.height as f64 - q - p) / 6.0; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/text/mod.rs:19:10 [INFO] [stderr] | [INFO] [stderr] 19 | _ => return choose_mod(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `choose_mod()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/text/mod.rs:19:10 [INFO] [stderr] | [INFO] [stderr] 19 | _ => return choose_mod(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `choose_mod()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused variable: `q` [INFO] [stderr] --> src/ai.rs:132:6 [INFO] [stderr] | [INFO] [stderr] 132 | for q in 0..9 { [INFO] [stderr] | ^ help: consider using `_q` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `windows` [INFO] [stderr] --> src/graphics/main_menu.rs:7:16 [INFO] [stderr] | [INFO] [stderr] 7 | pub fn update( windows : &conrod::backend::piston::Window, [INFO] [stderr] | ^^^^^^^ help: consider using `_windows` instead [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/input.rs:17:14 [INFO] [stderr] | [INFO] [stderr] 17 | Ok(num) => match num > 3 { [INFO] [stderr] | _______________________^ [INFO] [stderr] 18 | | true => return read_case(msg), [INFO] [stderr] 19 | | false => num, [INFO] [stderr] 20 | | }, [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if num > 3 { return read_case(msg) } else { num }` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/basic.rs:32:29 [INFO] [stderr] | [INFO] [stderr] 32 | pub fn swap_player(player : &char) -> char{ [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ai.rs:72:39 [INFO] [stderr] | [INFO] [stderr] 72 | pub fn is_safe(node : &Node, player : &char) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [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/ai.rs:118:23 [INFO] [stderr] | [INFO] [stderr] 118 | pub fn begin(player : &char) -> Node { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [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/ai.rs:168:57 [INFO] [stderr] | [INFO] [stderr] 168 | pub fn calculate_node(terrain : &[[char;3];3], player : &char, u : u8) -> Node { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/ai.rs:188:1 [INFO] [stderr] | [INFO] [stderr] 188 | / pub fn update<'a>(x : usize, y : usize, n : &'a Node) -> usize { [INFO] [stderr] 189 | | let mut played_case = 0; [INFO] [stderr] 190 | | for i in 0..n.child.len(){ [INFO] [stderr] 191 | | if n.child[i].play == (x,y){ [INFO] [stderr] ... | [INFO] [stderr] 195 | | played_case [INFO] [stderr] 196 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [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/ai.rs:201:47 [INFO] [stderr] | [INFO] [stderr] 201 | pub fn get_node<'a>(parent : &'a Node, path : &Vec) -> &'a Node { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[usize]` [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: length comparison to zero [INFO] [stderr] --> src/ai.rs:202:5 [INFO] [stderr] | [INFO] [stderr] 202 | if path.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `path.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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/graphics/solo.rs:31:6 [INFO] [stderr] | [INFO] [stderr] 31 | .y(size.height as f64 * 1.0 / 4.0) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(size.height)` [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 u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/graphics/solo.rs:32:39 [INFO] [stderr] | [INFO] [stderr] 32 | .mid_top_with_margin_on(ids.canvas, (size.height / 10) as f64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(size.height / 10)` [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/graphics/solo.rs:39:11 [INFO] [stderr] | [INFO] [stderr] 39 | let w = (size.width as f64 - 2.0 * o) / 6.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(size.width)` [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/graphics/solo.rs:41:17 [INFO] [stderr] | [INFO] [stderr] 41 | let p = 0.01 * size.height as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(size.height)` [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/graphics/solo.rs:42:17 [INFO] [stderr] | [INFO] [stderr] 42 | let q = 0.02 * size.height as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(size.height)` [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/graphics/solo.rs:43:11 [INFO] [stderr] | [INFO] [stderr] 43 | let h = (size.height as f64 - q - p) / 6.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(size.height)` [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/graphics/solo.rs:54:31 [INFO] [stderr] | [INFO] [stderr] 54 | .y(p + h * y as f64 - h * 2 as f64) [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(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/graphics/multiplayer.rs:19:6 [INFO] [stderr] | [INFO] [stderr] 19 | .y(size.height as f64 * 1.0 / 4.0) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(size.height)` [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/graphics/multiplayer.rs:20:39 [INFO] [stderr] | [INFO] [stderr] 20 | .mid_top_with_margin_on(ids.canvas, (size.height / 10) as f64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(size.height / 10)` [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/graphics/multiplayer.rs:27:11 [INFO] [stderr] | [INFO] [stderr] 27 | let w = (size.width as f64 - 2.0 * o) / 6.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(size.width)` [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/graphics/multiplayer.rs:29:17 [INFO] [stderr] | [INFO] [stderr] 29 | let p = 0.01 * size.height as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(size.height)` [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/graphics/multiplayer.rs:30:17 [INFO] [stderr] | [INFO] [stderr] 30 | let q = 0.02 * size.height as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(size.height)` [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/graphics/multiplayer.rs:31:11 [INFO] [stderr] | [INFO] [stderr] 31 | let h = (size.height as f64 - q - p) / 6.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(size.height)` [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/graphics/multiplayer.rs:42:31 [INFO] [stderr] | [INFO] [stderr] 42 | .y(p + h * y as f64 - h * 2 as f64) [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(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/graphics/end.rs:25:6 [INFO] [stderr] | [INFO] [stderr] 25 | .y(size.height as f64 * 1.0 / 4.0) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(size.height)` [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/graphics/end.rs:26:39 [INFO] [stderr] | [INFO] [stderr] 26 | .mid_top_with_margin_on(ids.canvas, (size.height / 4) as f64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(size.height / 4)` [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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/text/mod.rs:41:2 [INFO] [stderr] | [INFO] [stderr] 41 | let mut ai_data = ai::NodeBuilder::new().player(player).terrain(terrain).finalize(); [INFO] [stderr] | _____^ [INFO] [stderr] 42 | | if play_mode { [INFO] [stderr] 43 | | ai_data = ai::begin(&player); [INFO] [stderr] 44 | | } [INFO] [stderr] | |_____^ help: it is more idiomatic to write: `let ai_data = if play_mode { ai::begin(&player) } else { ai::NodeBuilder::new().player(player).terrain(terrain).finalize() };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: unused variable: `q` [INFO] [stderr] --> src/ai.rs:132:6 [INFO] [stderr] | [INFO] [stderr] 132 | for q in 0..9 { [INFO] [stderr] | ^ help: consider using `_q` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `windows` [INFO] [stderr] --> src/graphics/main_menu.rs:7:16 [INFO] [stderr] | [INFO] [stderr] 7 | pub fn update( windows : &conrod::backend::piston::Window, [INFO] [stderr] | ^^^^^^^ help: consider using `_windows` instead [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/input.rs:17:14 [INFO] [stderr] | [INFO] [stderr] 17 | Ok(num) => match num > 3 { [INFO] [stderr] | _______________________^ [INFO] [stderr] 18 | | true => return read_case(msg), [INFO] [stderr] 19 | | false => num, [INFO] [stderr] 20 | | }, [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if num > 3 { return read_case(msg) } else { num }` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/basic.rs:32:29 [INFO] [stderr] | [INFO] [stderr] 32 | pub fn swap_player(player : &char) -> char{ [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ai.rs:72:39 [INFO] [stderr] | [INFO] [stderr] 72 | pub fn is_safe(node : &Node, player : &char) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [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/ai.rs:118:23 [INFO] [stderr] | [INFO] [stderr] 118 | pub fn begin(player : &char) -> Node { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [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/ai.rs:168:57 [INFO] [stderr] | [INFO] [stderr] 168 | pub fn calculate_node(terrain : &[[char;3];3], player : &char, u : u8) -> Node { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/ai.rs:188:1 [INFO] [stderr] | [INFO] [stderr] 188 | / pub fn update<'a>(x : usize, y : usize, n : &'a Node) -> usize { [INFO] [stderr] 189 | | let mut played_case = 0; [INFO] [stderr] 190 | | for i in 0..n.child.len(){ [INFO] [stderr] 191 | | if n.child[i].play == (x,y){ [INFO] [stderr] ... | [INFO] [stderr] 195 | | played_case [INFO] [stderr] 196 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [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/ai.rs:201:47 [INFO] [stderr] | [INFO] [stderr] 201 | pub fn get_node<'a>(parent : &'a Node, path : &Vec) -> &'a Node { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[usize]` [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: length comparison to zero [INFO] [stderr] --> src/ai.rs:202:5 [INFO] [stderr] | [INFO] [stderr] 202 | if path.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `path.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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/graphics/solo.rs:31:6 [INFO] [stderr] | [INFO] [stderr] 31 | .y(size.height as f64 * 1.0 / 4.0) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(size.height)` [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 u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/graphics/solo.rs:32:39 [INFO] [stderr] | [INFO] [stderr] 32 | .mid_top_with_margin_on(ids.canvas, (size.height / 10) as f64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(size.height / 10)` [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/graphics/solo.rs:39:11 [INFO] [stderr] | [INFO] [stderr] 39 | let w = (size.width as f64 - 2.0 * o) / 6.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(size.width)` [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/graphics/solo.rs:41:17 [INFO] [stderr] | [INFO] [stderr] 41 | let p = 0.01 * size.height as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(size.height)` [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/graphics/solo.rs:42:17 [INFO] [stderr] | [INFO] [stderr] 42 | let q = 0.02 * size.height as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(size.height)` [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/graphics/solo.rs:43:11 [INFO] [stderr] | [INFO] [stderr] 43 | let h = (size.height as f64 - q - p) / 6.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(size.height)` [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/graphics/solo.rs:54:31 [INFO] [stderr] | [INFO] [stderr] 54 | .y(p + h * y as f64 - h * 2 as f64) [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(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/graphics/multiplayer.rs:19:6 [INFO] [stderr] | [INFO] [stderr] 19 | .y(size.height as f64 * 1.0 / 4.0) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(size.height)` [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/graphics/multiplayer.rs:20:39 [INFO] [stderr] | [INFO] [stderr] 20 | .mid_top_with_margin_on(ids.canvas, (size.height / 10) as f64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(size.height / 10)` [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/graphics/multiplayer.rs:27:11 [INFO] [stderr] | [INFO] [stderr] 27 | let w = (size.width as f64 - 2.0 * o) / 6.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(size.width)` [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/graphics/multiplayer.rs:29:17 [INFO] [stderr] | [INFO] [stderr] 29 | let p = 0.01 * size.height as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(size.height)` [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/graphics/multiplayer.rs:30:17 [INFO] [stderr] | [INFO] [stderr] 30 | let q = 0.02 * size.height as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(size.height)` [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/graphics/multiplayer.rs:31:11 [INFO] [stderr] | [INFO] [stderr] 31 | let h = (size.height as f64 - q - p) / 6.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(size.height)` [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/graphics/multiplayer.rs:42:31 [INFO] [stderr] | [INFO] [stderr] 42 | .y(p + h * y as f64 - h * 2 as f64) [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(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/graphics/end.rs:25:6 [INFO] [stderr] | [INFO] [stderr] 25 | .y(size.height as f64 * 1.0 / 4.0) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(size.height)` [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/graphics/end.rs:26:39 [INFO] [stderr] | [INFO] [stderr] 26 | .mid_top_with_margin_on(ids.canvas, (size.height / 4) as f64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(size.height / 4)` [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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/text/mod.rs:41:2 [INFO] [stderr] | [INFO] [stderr] 41 | let mut ai_data = ai::NodeBuilder::new().player(player).terrain(terrain).finalize(); [INFO] [stderr] | _____^ [INFO] [stderr] 42 | | if play_mode { [INFO] [stderr] 43 | | ai_data = ai::begin(&player); [INFO] [stderr] 44 | | } [INFO] [stderr] | |_____^ help: it is more idiomatic to write: `let ai_data = if play_mode { ai::begin(&player) } else { ai::NodeBuilder::new().player(player).terrain(terrain).finalize() };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 1m 30s [INFO] running `"docker" "inspect" "394e14e93db465ff39940422269a3fc72c23ad8f21b38ed953b8c0d365c7c0d6"` [INFO] running `"docker" "rm" "-f" "394e14e93db465ff39940422269a3fc72c23ad8f21b38ed953b8c0d365c7c0d6"` [INFO] [stdout] 394e14e93db465ff39940422269a3fc72c23ad8f21b38ed953b8c0d365c7c0d6