[INFO] updating cached repository coredump-ch/rpsrtsrs [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/coredump-ch/rpsrtsrs [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/coredump-ch/rpsrtsrs" "work/ex/clippy-test-run/sources/stable/gh/coredump-ch/rpsrtsrs"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/coredump-ch/rpsrtsrs'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/coredump-ch/rpsrtsrs" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/coredump-ch/rpsrtsrs"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/coredump-ch/rpsrtsrs'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 906a08edd88bce0e6ab8f81e20d8b1e887b1cf4b [INFO] sha for GitHub repo coredump-ch/rpsrtsrs: 906a08edd88bce0e6ab8f81e20d8b1e887b1cf4b [INFO] validating manifest of coredump-ch/rpsrtsrs 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 coredump-ch/rpsrtsrs 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 coredump-ch/rpsrtsrs [INFO] finished frobbing coredump-ch/rpsrtsrs [INFO] frobbed toml for coredump-ch/rpsrtsrs written to work/ex/clippy-test-run/sources/stable/gh/coredump-ch/rpsrtsrs/Cargo.toml [INFO] started frobbing coredump-ch/rpsrtsrs [INFO] finished frobbing coredump-ch/rpsrtsrs [INFO] frobbed toml for coredump-ch/rpsrtsrs written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/coredump-ch/rpsrtsrs/Cargo.toml [INFO] crate coredump-ch/rpsrtsrs 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 coredump-ch/rpsrtsrs against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-6/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/coredump-ch/rpsrtsrs:/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] 84cae5b9958d5dc3a4dec0cd567c7d960b5ff75e8adcb117e9e294208587d550 [INFO] running `"docker" "start" "-a" "84cae5b9958d5dc3a4dec0cd567c7d960b5ff75e8adcb117e9e294208587d550"` [INFO] [stderr] Compiling log v0.4.0 [INFO] [stderr] Compiling cmake v0.1.29 [INFO] [stderr] Checking semver v0.2.3 [INFO] [stderr] Checking num-bigint v0.1.41 [INFO] [stderr] Checking png v0.10.0 [INFO] [stderr] Checking rayon v0.8.2 [INFO] [stderr] Checking piston2d-graphics v0.22.0 [INFO] [stderr] Compiling serde_derive v1.0.25 [INFO] [stderr] Checking log v0.3.9 [INFO] [stderr] Compiling glfw-sys v3.2.2 [INFO] [stderr] Compiling gl_generator v0.6.1 [INFO] [stderr] Checking num-rational v0.1.40 [INFO] [stderr] Checking jpeg-decoder v0.1.13 [INFO] [stderr] Checking num v0.1.41 [INFO] [stderr] Compiling gl v0.6.5 [INFO] [stderr] Checking image v0.16.0 [INFO] [stderr] Checking serde v1.0.25 [INFO] [stderr] Checking glfw v0.18.0 [INFO] [stderr] Checking piston2d-opengl_graphics v0.47.0 [INFO] [stderr] Checking pistoncore-input v0.19.0 [INFO] [stderr] Checking cgmath v0.15.0 [INFO] [stderr] Checking bincode v0.8.0 [INFO] [stderr] Checking docopt v0.8.1 [INFO] [stderr] Checking pistoncore-window v0.29.0 [INFO] [stderr] Checking pistoncore-event_loop v0.34.0 [INFO] [stderr] Checking pistoncore-glfw_window v0.37.0 [INFO] [stderr] Checking piston v0.34.0 [INFO] [stderr] Checking rpsrtsrs v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/state.rs:72:13 [INFO] [stderr] | [INFO] [stderr] 72 | position: position, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `position` [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/state.rs:105:13 [INFO] [stderr] | [INFO] [stderr] 105 | position: position, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `position` [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/state.rs:72:13 [INFO] [stderr] | [INFO] [stderr] 72 | position: position, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `position` [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/state.rs:105:13 [INFO] [stderr] | [INFO] [stderr] 105 | position: position, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `position` [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/state.rs:267:13 [INFO] [stderr] | [INFO] [stderr] 267 | x: x, [INFO] [stderr] | ^^^^ help: replace it with: `x` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/state.rs:268:13 [INFO] [stderr] | [INFO] [stderr] 268 | y: y, [INFO] [stderr] | ^^^^ help: replace it with: `y` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/server/mod.rs:46:13 [INFO] [stderr] | [INFO] [stderr] 46 | world: world, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `world` [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/server/mod.rs:47:13 [INFO] [stderr] | [INFO] [stderr] 47 | game: game, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `game` [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/client/error.rs:15:19 [INFO] [stderr] | [INFO] [stderr] 15 | Message { message: message } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `message` [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/client/mod.rs:39:13 [INFO] [stderr] | [INFO] [stderr] 39 | game_state: game_state, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `game_state` [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/client/mod.rs:40:13 [INFO] [stderr] | [INFO] [stderr] 40 | server_addr: server_addr, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `server_addr` [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/state.rs:267:13 [INFO] [stderr] | [INFO] [stderr] 267 | x: x, [INFO] [stderr] | ^^^^ help: replace it with: `x` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/state.rs:268:13 [INFO] [stderr] | [INFO] [stderr] 268 | y: y, [INFO] [stderr] | ^^^^ help: replace it with: `y` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/client/mod.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | commands: commands, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `commands` [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/server/mod.rs:46:13 [INFO] [stderr] | [INFO] [stderr] 46 | world: world, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `world` [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/server/mod.rs:47:13 [INFO] [stderr] | [INFO] [stderr] 47 | game: game, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `game` [INFO] [stderr] | [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/client/mod.rs:133:13 [INFO] [stderr] | [INFO] [stderr] 133 | gl: gl, [INFO] [stderr] | ^^^^^^ help: replace it with: `gl` [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] = 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/client/error.rs:15:19 [INFO] [stderr] | [INFO] [stderr] 15 | Message { message: message } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `message` [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/client/mod.rs:39:13 [INFO] [stderr] | [INFO] [stderr] 39 | game_state: game_state, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `game_state` [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/client/mod.rs:40:13 [INFO] [stderr] | [INFO] [stderr] 40 | server_addr: server_addr, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `server_addr` [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/client/mod.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | commands: commands, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `commands` [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/client/mod.rs:133:13 [INFO] [stderr] | [INFO] [stderr] 133 | gl: gl, [INFO] [stderr] | ^^^^^^ help: replace it with: `gl` [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: unneeded return statement [INFO] [stderr] --> src/shapes.rs:82:9 [INFO] [stderr] | [INFO] [stderr] 82 | return (ys.into(), yo.into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(ys.into(), yo.into())` [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/client/mod.rs:283:16 [INFO] [stderr] | [INFO] [stderr] 283 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 284 | | if let Some(ref world) = self.world_state { [INFO] [stderr] 285 | | self.game_state.update(world, args.dt*1000.0); [INFO] [stderr] 286 | | } [INFO] [stderr] 287 | | } [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] 283 | } else if let Some(ref world) = self.world_state { [INFO] [stderr] 284 | self.game_state.update(world, args.dt*1000.0); [INFO] [stderr] 285 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/shapes.rs:82:9 [INFO] [stderr] | [INFO] [stderr] 82 | return (ys.into(), yo.into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(ys.into(), yo.into())` [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/client/mod.rs:283:16 [INFO] [stderr] | [INFO] [stderr] 283 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 284 | | if let Some(ref world) = self.world_state { [INFO] [stderr] 285 | | self.game_state.update(world, args.dt*1000.0); [INFO] [stderr] 286 | | } [INFO] [stderr] 287 | | } [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] 283 | } else if let Some(ref world) = self.world_state { [INFO] [stderr] 284 | self.game_state.update(world, args.dt*1000.0); [INFO] [stderr] 285 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of a blacklisted/placeholder name `foo` [INFO] [stderr] --> src/shapes.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | let foo = (xs[0] * d[0] + xs[1] * d[1]) / (d[0]*d[0] + d[1]*d[1]); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::blacklisted_name)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blacklisted_name [INFO] [stderr] [INFO] [stderr] warning: use of a blacklisted/placeholder name `foo` [INFO] [stderr] --> src/shapes.rs:74:13 [INFO] [stderr] | [INFO] [stderr] 74 | let foo = (xo[0] * d[0] + xo[1] * d[1]) / (d[0]*d[0] + d[1]*d[1]); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blacklisted_name [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `state::GameState` [INFO] [stderr] --> src/state.rs:144:5 [INFO] [stderr] | [INFO] [stderr] 144 | / pub fn new() -> GameState { [INFO] [stderr] 145 | | GameState{ [INFO] [stderr] 146 | | players: vec![], [INFO] [stderr] 147 | | bullets: vec![], [INFO] [stderr] 148 | | } [INFO] [stderr] 149 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 137 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of a blacklisted/placeholder name `foo` [INFO] [stderr] --> src/shapes.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | let foo = (xs[0] * d[0] + xs[1] * d[1]) / (d[0]*d[0] + d[1]*d[1]); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::blacklisted_name)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blacklisted_name [INFO] [stderr] [INFO] [stderr] warning: use of a blacklisted/placeholder name `foo` [INFO] [stderr] --> src/shapes.rs:74:13 [INFO] [stderr] | [INFO] [stderr] 74 | let foo = (xo[0] * d[0] + xo[1] * d[1]) / (d[0]*d[0] + d[1]*d[1]); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blacklisted_name [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/server/mod.rs:151:21 [INFO] [stderr] | [INFO] [stderr] 151 | stream.write(&encoded).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/server/mod.rs:167:29 [INFO] [stderr] | [INFO] [stderr] 167 | stream.write(&encoded).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/server/mod.rs:176:29 [INFO] [stderr] | [INFO] [stderr] 176 | stream.write(&encoded).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/server/mod.rs:184:21 [INFO] [stderr] | [INFO] [stderr] 184 | stream.write(&encoded).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/server/mod.rs:214:29 [INFO] [stderr] | [INFO] [stderr] 214 | command_stream.write(&encoded).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: parameter of type `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/server/mod.rs:245:42 [INFO] [stderr] | [INFO] [stderr] 245 | unit_targets: &mut HashMap, command: &Command) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::implicit_hasher)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 243 | pub fn handle_command(world: &WorldState, [INFO] [stderr] 244 | game: &mut GameState, [INFO] [stderr] 245 | unit_targets: &mut HashMap, command: &Command) { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/server/mod.rs:247:5 [INFO] [stderr] | [INFO] [stderr] 247 | / match command { [INFO] [stderr] 248 | | &Command::Move(id, move_target) => { [INFO] [stderr] 249 | | for player in game.players.iter_mut() { [INFO] [stderr] 250 | | for unit in player.units.iter_mut() { [INFO] [stderr] ... | [INFO] [stderr] 271 | | } [INFO] [stderr] 272 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 247 | match *command { [INFO] [stderr] 248 | Command::Move(id, move_target) => { [INFO] [stderr] 249 | for player in game.players.iter_mut() { [INFO] [stderr] 250 | for unit in player.units.iter_mut() { [INFO] [stderr] 251 | if unit.id == id { [INFO] [stderr] 252 | println!("Found it :)"); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/server/mod.rs:263:49 [INFO] [stderr] | [INFO] [stderr] 263 | unit_targets.insert(id, target.into()); [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider removing `.into()`: `target` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `client::menu::Menu` [INFO] [stderr] --> src/client/menu.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 29 | / pub fn new() -> Menu { [INFO] [stderr] 30 | | Menu { selected_entry: Entries::Start } [INFO] [stderr] 31 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 28 | impl Default for client::menu::Menu { [INFO] [stderr] 29 | fn default() -> Self { [INFO] [stderr] 30 | Self::new() [INFO] [stderr] 31 | } [INFO] [stderr] 32 | } [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/client/menu.rs:33:19 [INFO] [stderr] | [INFO] [stderr] 33 | pub fn render(&self, args: &RenderArgs, gl: &mut GlGraphics, cache: &mut GlyphCache) { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client/menu.rs:45:21 [INFO] [stderr] | [INFO] [stderr] 45 | text_selected.draw(&format!("{:?}", entry), cache, &c.draw_state, transform, gl); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client/menu.rs:47:21 [INFO] [stderr] | [INFO] [stderr] 47 | text.draw(&format!("{:?}", entry), cache, &c.draw_state, transform, gl); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/client/menu.rs:53:31 [INFO] [stderr] | [INFO] [stderr] 53 | pub fn get_selected_entry(&self) -> Entries { [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client/error.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | text.draw(&self.message, cache, &c.draw_state, transform, gl); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/client/mod.rs:71:17 [INFO] [stderr] | [INFO] [stderr] 71 | command.map(|cmd| { [INFO] [stderr] | _________________^ [INFO] [stderr] | |_________________| [INFO] [stderr] | || [INFO] [stderr] 72 | || println!("Got command: {:?}", cmd); [INFO] [stderr] 73 | || //let cmd = Message::Command(Command::Move(0.into(), [100f64, 100f64])); [INFO] [stderr] 74 | || serialize_into(&mut command_stream, &Message::Command(cmd), Infinite) [INFO] [stderr] 75 | || .unwrap_or_else(|e|println!("Sending command failed: {}", e)); [INFO] [stderr] 76 | || }); [INFO] [stderr] | ||__________________^- help: try this: `if let Some(cmd) = command { ... }` [INFO] [stderr] | |___________________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_unit_fn)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/client/mod.rs:167:13 [INFO] [stderr] | [INFO] [stderr] 167 | self.game_state.players.get(index).map(|v| v.clone()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.game_state.players.get(index).cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/client/mod.rs:216:21 [INFO] [stderr] | [INFO] [stderr] 216 | let ref player = game_state.players[i]; [INFO] [stderr] | ----^^^^^^^^^^------------------------- help: try: `let player = &game_state.players[i];` [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/client/mod.rs:275:36 [INFO] [stderr] | [INFO] [stderr] 275 | pub fn update(&mut self, args: &UpdateArgs) { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [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 don't need to add `&` to all patterns [INFO] [stderr] --> src/client/mod.rs:293:17 [INFO] [stderr] | [INFO] [stderr] 293 | / match button { [INFO] [stderr] 294 | | &Button::Keyboard(Key::Up) => { [INFO] [stderr] 295 | | self.menu.previous(); [INFO] [stderr] 296 | | } [INFO] [stderr] ... | [INFO] [stderr] 317 | | _ => { } [INFO] [stderr] 318 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 293 | match *button { [INFO] [stderr] 294 | Button::Keyboard(Key::Up) => { [INFO] [stderr] 295 | self.menu.previous(); [INFO] [stderr] 296 | } [INFO] [stderr] 297 | Button::Keyboard(Key::Down) => { [INFO] [stderr] 298 | self.menu.next(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/client/mod.rs:321:17 [INFO] [stderr] | [INFO] [stderr] 321 | / match button { [INFO] [stderr] 322 | | &Button::Keyboard(Key::Up) => { [INFO] [stderr] 323 | | self.scroll.y += 10.0; [INFO] [stderr] 324 | | } [INFO] [stderr] ... | [INFO] [stderr] 344 | | &Button::Controller(_) => { } [INFO] [stderr] 345 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 321 | match *button { [INFO] [stderr] 322 | Button::Keyboard(Key::Up) => { [INFO] [stderr] 323 | self.scroll.y += 10.0; [INFO] [stderr] 324 | } [INFO] [stderr] 325 | Button::Keyboard(Key::Down) => { [INFO] [stderr] 326 | self.scroll.y -= 10.0; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/client/mod.rs:348:17 [INFO] [stderr] | [INFO] [stderr] 348 | / match button { [INFO] [stderr] 349 | | &Button::Keyboard(_) => { self.state = State::Menu; } [INFO] [stderr] 350 | | _ => { } [INFO] [stderr] 351 | | } [INFO] [stderr] | |_________________^ help: try this: `if let &Button::Keyboard(_) = button { self.state = State::Menu; }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/client/mod.rs:348:17 [INFO] [stderr] | [INFO] [stderr] 348 | / match button { [INFO] [stderr] 349 | | &Button::Keyboard(_) => { self.state = State::Menu; } [INFO] [stderr] 350 | | _ => { } [INFO] [stderr] 351 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 348 | match *button { [INFO] [stderr] 349 | Button::Keyboard(_) => { self.state = State::Menu; } [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/client/mod.rs:357:46 [INFO] [stderr] | [INFO] [stderr] 357 | pub fn on_mouse_click(&mut self, button: &MouseButton) { [INFO] [stderr] | ^^^^^^^^^^^^ help: consider passing by value instead: `MouseButton` [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 should consider deriving a `Default` implementation for `state::GameState` [INFO] [stderr] --> src/state.rs:144:5 [INFO] [stderr] | [INFO] [stderr] 144 | / pub fn new() -> GameState { [INFO] [stderr] 145 | | GameState{ [INFO] [stderr] 146 | | players: vec![], [INFO] [stderr] 147 | | bullets: vec![], [INFO] [stderr] 148 | | } [INFO] [stderr] 149 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 137 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: aborting due to 5 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `rpsrtsrs`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/server/mod.rs:151:21 [INFO] [stderr] | [INFO] [stderr] 151 | stream.write(&encoded).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/server/mod.rs:167:29 [INFO] [stderr] | [INFO] [stderr] 167 | stream.write(&encoded).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/server/mod.rs:176:29 [INFO] [stderr] | [INFO] [stderr] 176 | stream.write(&encoded).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/server/mod.rs:184:21 [INFO] [stderr] | [INFO] [stderr] 184 | stream.write(&encoded).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/server/mod.rs:214:29 [INFO] [stderr] | [INFO] [stderr] 214 | command_stream.write(&encoded).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: parameter of type `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/server/mod.rs:245:42 [INFO] [stderr] | [INFO] [stderr] 245 | unit_targets: &mut HashMap, command: &Command) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::implicit_hasher)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 243 | pub fn handle_command(world: &WorldState, [INFO] [stderr] 244 | game: &mut GameState, [INFO] [stderr] 245 | unit_targets: &mut HashMap, command: &Command) { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/server/mod.rs:247:5 [INFO] [stderr] | [INFO] [stderr] 247 | / match command { [INFO] [stderr] 248 | | &Command::Move(id, move_target) => { [INFO] [stderr] 249 | | for player in game.players.iter_mut() { [INFO] [stderr] 250 | | for unit in player.units.iter_mut() { [INFO] [stderr] ... | [INFO] [stderr] 271 | | } [INFO] [stderr] 272 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 247 | match *command { [INFO] [stderr] 248 | Command::Move(id, move_target) => { [INFO] [stderr] 249 | for player in game.players.iter_mut() { [INFO] [stderr] 250 | for unit in player.units.iter_mut() { [INFO] [stderr] 251 | if unit.id == id { [INFO] [stderr] 252 | println!("Found it :)"); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/server/mod.rs:263:49 [INFO] [stderr] | [INFO] [stderr] 263 | unit_targets.insert(id, target.into()); [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider removing `.into()`: `target` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `client::menu::Menu` [INFO] [stderr] --> src/client/menu.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 29 | / pub fn new() -> Menu { [INFO] [stderr] 30 | | Menu { selected_entry: Entries::Start } [INFO] [stderr] 31 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 28 | impl Default for client::menu::Menu { [INFO] [stderr] 29 | fn default() -> Self { [INFO] [stderr] 30 | Self::new() [INFO] [stderr] 31 | } [INFO] [stderr] 32 | } [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/client/menu.rs:33:19 [INFO] [stderr] | [INFO] [stderr] 33 | pub fn render(&self, args: &RenderArgs, gl: &mut GlGraphics, cache: &mut GlyphCache) { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client/menu.rs:45:21 [INFO] [stderr] | [INFO] [stderr] 45 | text_selected.draw(&format!("{:?}", entry), cache, &c.draw_state, transform, gl); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client/menu.rs:47:21 [INFO] [stderr] | [INFO] [stderr] 47 | text.draw(&format!("{:?}", entry), cache, &c.draw_state, transform, gl); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/client/menu.rs:53:31 [INFO] [stderr] | [INFO] [stderr] 53 | pub fn get_selected_entry(&self) -> Entries { [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/client/error.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | text.draw(&self.message, cache, &c.draw_state, transform, gl); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/client/mod.rs:71:17 [INFO] [stderr] | [INFO] [stderr] 71 | command.map(|cmd| { [INFO] [stderr] | _________________^ [INFO] [stderr] | |_________________| [INFO] [stderr] | || [INFO] [stderr] 72 | || println!("Got command: {:?}", cmd); [INFO] [stderr] 73 | || //let cmd = Message::Command(Command::Move(0.into(), [100f64, 100f64])); [INFO] [stderr] 74 | || serialize_into(&mut command_stream, &Message::Command(cmd), Infinite) [INFO] [stderr] 75 | || .unwrap_or_else(|e|println!("Sending command failed: {}", e)); [INFO] [stderr] 76 | || }); [INFO] [stderr] | ||__________________^- help: try this: `if let Some(cmd) = command { ... }` [INFO] [stderr] | |___________________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_unit_fn)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/client/mod.rs:167:13 [INFO] [stderr] | [INFO] [stderr] 167 | self.game_state.players.get(index).map(|v| v.clone()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.game_state.players.get(index).cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/client/mod.rs:216:21 [INFO] [stderr] | [INFO] [stderr] 216 | let ref player = game_state.players[i]; [INFO] [stderr] | ----^^^^^^^^^^------------------------- help: try: `let player = &game_state.players[i];` [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/client/mod.rs:275:36 [INFO] [stderr] | [INFO] [stderr] 275 | pub fn update(&mut self, args: &UpdateArgs) { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [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 don't need to add `&` to all patterns [INFO] [stderr] --> src/client/mod.rs:293:17 [INFO] [stderr] | [INFO] [stderr] 293 | / match button { [INFO] [stderr] 294 | | &Button::Keyboard(Key::Up) => { [INFO] [stderr] 295 | | self.menu.previous(); [INFO] [stderr] 296 | | } [INFO] [stderr] ... | [INFO] [stderr] 317 | | _ => { } [INFO] [stderr] 318 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 293 | match *button { [INFO] [stderr] 294 | Button::Keyboard(Key::Up) => { [INFO] [stderr] 295 | self.menu.previous(); [INFO] [stderr] 296 | } [INFO] [stderr] 297 | Button::Keyboard(Key::Down) => { [INFO] [stderr] 298 | self.menu.next(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/client/mod.rs:321:17 [INFO] [stderr] | [INFO] [stderr] 321 | / match button { [INFO] [stderr] 322 | | &Button::Keyboard(Key::Up) => { [INFO] [stderr] 323 | | self.scroll.y += 10.0; [INFO] [stderr] 324 | | } [INFO] [stderr] ... | [INFO] [stderr] 344 | | &Button::Controller(_) => { } [INFO] [stderr] 345 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 321 | match *button { [INFO] [stderr] 322 | Button::Keyboard(Key::Up) => { [INFO] [stderr] 323 | self.scroll.y += 10.0; [INFO] [stderr] 324 | } [INFO] [stderr] 325 | Button::Keyboard(Key::Down) => { [INFO] [stderr] 326 | self.scroll.y -= 10.0; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/client/mod.rs:348:17 [INFO] [stderr] | [INFO] [stderr] 348 | / match button { [INFO] [stderr] 349 | | &Button::Keyboard(_) => { self.state = State::Menu; } [INFO] [stderr] 350 | | _ => { } [INFO] [stderr] 351 | | } [INFO] [stderr] | |_________________^ help: try this: `if let &Button::Keyboard(_) = button { self.state = State::Menu; }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/client/mod.rs:348:17 [INFO] [stderr] | [INFO] [stderr] 348 | / match button { [INFO] [stderr] 349 | | &Button::Keyboard(_) => { self.state = State::Menu; } [INFO] [stderr] 350 | | _ => { } [INFO] [stderr] 351 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 348 | match *button { [INFO] [stderr] 349 | Button::Keyboard(_) => { self.state = State::Menu; } [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/client/mod.rs:357:46 [INFO] [stderr] | [INFO] [stderr] 357 | pub fn on_mouse_click(&mut self, button: &MouseButton) { [INFO] [stderr] | ^^^^^^^^^^^^ help: consider passing by value instead: `MouseButton` [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] error: aborting due to 5 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `rpsrtsrs`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "84cae5b9958d5dc3a4dec0cd567c7d960b5ff75e8adcb117e9e294208587d550"` [INFO] running `"docker" "rm" "-f" "84cae5b9958d5dc3a4dec0cd567c7d960b5ff75e8adcb117e9e294208587d550"` [INFO] [stdout] 84cae5b9958d5dc3a4dec0cd567c7d960b5ff75e8adcb117e9e294208587d550