[INFO] updating cached repository aliencode-github/alienchat [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/aliencode-github/alienchat [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/aliencode-github/alienchat" "work/ex/clippy-test-run/sources/stable/gh/aliencode-github/alienchat"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/aliencode-github/alienchat'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/aliencode-github/alienchat" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/aliencode-github/alienchat"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/aliencode-github/alienchat'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 80045f1f2b8ae19f9d41ae069d24a738cebbb849 [INFO] sha for GitHub repo aliencode-github/alienchat: 80045f1f2b8ae19f9d41ae069d24a738cebbb849 [INFO] validating manifest of aliencode-github/alienchat 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 aliencode-github/alienchat 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 aliencode-github/alienchat [INFO] finished frobbing aliencode-github/alienchat [INFO] frobbed toml for aliencode-github/alienchat written to work/ex/clippy-test-run/sources/stable/gh/aliencode-github/alienchat/Cargo.toml [INFO] started frobbing aliencode-github/alienchat [INFO] finished frobbing aliencode-github/alienchat [INFO] frobbed toml for aliencode-github/alienchat written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/aliencode-github/alienchat/Cargo.toml [INFO] crate aliencode-github/alienchat 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 aliencode-github/alienchat against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-7/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/aliencode-github/alienchat:/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] ed13ced1d8acfa216d97b2c63103a56998187379e08a6df48c7f701c0b6bc08d [INFO] running `"docker" "start" "-a" "ed13ced1d8acfa216d97b2c63103a56998187379e08a6df48c7f701c0b6bc08d"` [INFO] [stderr] Compiling openssl v0.10.7 [INFO] [stderr] Checking num-traits v0.2.3 [INFO] [stderr] Compiling actix-web v0.6.3 [INFO] [stderr] Compiling semver v0.8.0 [INFO] [stderr] Checking uuid v0.6.3 [INFO] [stderr] Checking crossbeam-epoch v0.2.0 [INFO] [stderr] Compiling crossbeam-epoch v0.3.1 [INFO] [stderr] Checking mio-uds v0.6.6 [INFO] [stderr] Compiling backtrace-sys v0.1.16 [INFO] [stderr] Checking brotli-sys v0.3.2 [INFO] [stderr] Checking h2 v0.1.6 [INFO] [stderr] Checking flate2 v1.0.1 [INFO] [stderr] Compiling serde_derive v1.0.53 [INFO] [stderr] Checking serde_urlencoded v0.5.1 [INFO] [stderr] Compiling backtrace v0.3.7 [INFO] [stderr] Checking tokio-fs v0.1.0 [INFO] [stderr] Compiling crossbeam-deque v0.2.0 [INFO] [stderr] Checking brotli2 v0.3.2 [INFO] [stderr] Checking failure v0.1.1 [INFO] [stderr] Checking num-integer v0.1.37 [INFO] [stderr] Checking crossbeam-channel v0.1.2 [INFO] [stderr] Compiling error-chain v0.11.0 [INFO] [stderr] Checking tokio v0.1.6 [INFO] [stderr] Compiling rayon-core v1.4.0 [INFO] [stderr] Checking chrono v0.4.2 [INFO] [stderr] Checking tokio-core v0.1.17 [INFO] [stderr] Compiling rayon v0.8.2 [INFO] [stderr] Checking trust-dns-proto v0.3.3 [INFO] [stderr] Checking tokio-signal v0.1.5 [INFO] [stderr] Checking tokio-openssl v0.2.0 [INFO] [stderr] Compiling cargo_metadata v0.3.3 [INFO] [stderr] Compiling ring v0.12.1 [INFO] [stderr] Compiling skeptic v0.13.2 [INFO] [stderr] Checking trust-dns-resolver v0.8.2 [INFO] [stderr] Checking cookie v0.10.1 [INFO] [stderr] Compiling actix v0.5.6 [INFO] [stderr] Checking alienchat v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/actors/chatserver.rs:54:13 [INFO] [stderr] | [INFO] [stderr] 54 | rooms: rooms, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `rooms` [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/actors/websocket.rs:103:21 [INFO] [stderr] | [INFO] [stderr] 103 | msg: msg, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `msg` [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/actors/chatserver.rs:54:13 [INFO] [stderr] | [INFO] [stderr] 54 | rooms: rooms, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `rooms` [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/actors/websocket.rs:103:21 [INFO] [stderr] | [INFO] [stderr] 103 | msg: msg, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `msg` [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: cannot find type `SessionMessage` in this scope [INFO] [stderr] --> src/actors/chatserver.rs:11:10 [INFO] [stderr] | [INFO] [stderr] 11 | #[derive(Message)] [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = note: #[warn(proc_macro_derive_resolution_fallback)] on by default [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `Connect` in this scope [INFO] [stderr] --> src/actors/chatserver.rs:15:10 [INFO] [stderr] | [INFO] [stderr] 15 | #[derive(Message)] [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `Disconnect` in this scope [INFO] [stderr] --> src/actors/chatserver.rs:22:10 [INFO] [stderr] | [INFO] [stderr] 22 | #[derive(Message)] [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `Message` in this scope [INFO] [stderr] --> src/actors/chatserver.rs:28:10 [INFO] [stderr] | [INFO] [stderr] 28 | #[derive(Message)] [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt::Error` [INFO] [stderr] --> src/controller.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use std::fmt::Error; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt::Formatter` [INFO] [stderr] --> src/controller.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::fmt::Formatter; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/controller.rs:179:36 [INFO] [stderr] | [INFO] [stderr] 179 | Some(t) => return t.remove_member(user_id), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `t.remove_member(user_id)` [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/controller.rs:183:21 [INFO] [stderr] | [INFO] [stderr] 183 | / return match self.private_rooms.get_mut(counter) { [INFO] [stderr] 184 | | Some(t) => t.remove_member(user_id), [INFO] [stderr] 185 | | None => false, [INFO] [stderr] 186 | | }; [INFO] [stderr] | |______________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 183 | match self.private_rooms.get_mut(counter) { [INFO] [stderr] 184 | Some(t) => t.remove_member(user_id), [INFO] [stderr] 185 | None => false, [INFO] [stderr] 186 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/controller.rs:273:36 [INFO] [stderr] | [INFO] [stderr] 273 | Some(t) => return t.unbann_member(user_id), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `t.unbann_member(user_id)` [INFO] [stderr] | [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/controller.rs:277:21 [INFO] [stderr] | [INFO] [stderr] 277 | / return match self.private_rooms.get_mut(counter) { [INFO] [stderr] 278 | | Some(t) => t.unbann_member(user_id), [INFO] [stderr] 279 | | None => false, [INFO] [stderr] 280 | | }; [INFO] [stderr] | |______________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 277 | match self.private_rooms.get_mut(counter) { [INFO] [stderr] 278 | Some(t) => t.unbann_member(user_id), [INFO] [stderr] 279 | None => false, [INFO] [stderr] 280 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/controller.rs:311:36 [INFO] [stderr] | [INFO] [stderr] 311 | Some(t) => return t.unmute_member(user_id), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `t.unmute_member(user_id)` [INFO] [stderr] | [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/controller.rs:315:21 [INFO] [stderr] | [INFO] [stderr] 315 | / return match self.private_rooms.get_mut(counter) { [INFO] [stderr] 316 | | Some(t) => t.unmute_member(user_id), [INFO] [stderr] 317 | | None => false, [INFO] [stderr] 318 | | }; [INFO] [stderr] | |______________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 315 | match self.private_rooms.get_mut(counter) { [INFO] [stderr] 316 | Some(t) => t.unmute_member(user_id), [INFO] [stderr] 317 | None => false, [INFO] [stderr] 318 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/controller.rs:329:21 [INFO] [stderr] | [INFO] [stderr] 329 | return self.public_rooms.get(counter); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.public_rooms.get(counter)` [INFO] [stderr] | [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/controller.rs:331:21 [INFO] [stderr] | [INFO] [stderr] 331 | return self.private_rooms.get(counter); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.private_rooms.get(counter)` [INFO] [stderr] | [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 import: `serde_json` [INFO] [stderr] --> src/user.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use serde_json; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: cannot find type `SessionMessage` in this scope [INFO] [stderr] --> src/actors/chatserver.rs:11:10 [INFO] [stderr] | [INFO] [stderr] 11 | #[derive(Message)] [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = note: #[warn(proc_macro_derive_resolution_fallback)] on by default [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `Connect` in this scope [INFO] [stderr] --> src/actors/chatserver.rs:15:10 [INFO] [stderr] | [INFO] [stderr] 15 | #[derive(Message)] [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `Disconnect` in this scope [INFO] [stderr] --> src/actors/chatserver.rs:22:10 [INFO] [stderr] | [INFO] [stderr] 22 | #[derive(Message)] [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `Message` in this scope [INFO] [stderr] --> src/actors/chatserver.rs:28:10 [INFO] [stderr] | [INFO] [stderr] 28 | #[derive(Message)] [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt::Error` [INFO] [stderr] --> src/controller.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use std::fmt::Error; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt::Formatter` [INFO] [stderr] --> src/controller.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::fmt::Formatter; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/controller.rs:179:36 [INFO] [stderr] | [INFO] [stderr] 179 | Some(t) => return t.remove_member(user_id), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `t.remove_member(user_id)` [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/controller.rs:183:21 [INFO] [stderr] | [INFO] [stderr] 183 | / return match self.private_rooms.get_mut(counter) { [INFO] [stderr] 184 | | Some(t) => t.remove_member(user_id), [INFO] [stderr] 185 | | None => false, [INFO] [stderr] 186 | | }; [INFO] [stderr] | |______________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 183 | match self.private_rooms.get_mut(counter) { [INFO] [stderr] 184 | Some(t) => t.remove_member(user_id), [INFO] [stderr] 185 | None => false, [INFO] [stderr] 186 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/controller.rs:273:36 [INFO] [stderr] | [INFO] [stderr] 273 | Some(t) => return t.unbann_member(user_id), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `t.unbann_member(user_id)` [INFO] [stderr] | [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/controller.rs:277:21 [INFO] [stderr] | [INFO] [stderr] 277 | / return match self.private_rooms.get_mut(counter) { [INFO] [stderr] 278 | | Some(t) => t.unbann_member(user_id), [INFO] [stderr] 279 | | None => false, [INFO] [stderr] 280 | | }; [INFO] [stderr] | |______________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 277 | match self.private_rooms.get_mut(counter) { [INFO] [stderr] 278 | Some(t) => t.unbann_member(user_id), [INFO] [stderr] 279 | None => false, [INFO] [stderr] 280 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/controller.rs:311:36 [INFO] [stderr] | [INFO] [stderr] 311 | Some(t) => return t.unmute_member(user_id), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `t.unmute_member(user_id)` [INFO] [stderr] | [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/controller.rs:315:21 [INFO] [stderr] | [INFO] [stderr] 315 | / return match self.private_rooms.get_mut(counter) { [INFO] [stderr] 316 | | Some(t) => t.unmute_member(user_id), [INFO] [stderr] 317 | | None => false, [INFO] [stderr] 318 | | }; [INFO] [stderr] | |______________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 315 | match self.private_rooms.get_mut(counter) { [INFO] [stderr] 316 | Some(t) => t.unmute_member(user_id), [INFO] [stderr] 317 | None => false, [INFO] [stderr] 318 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/controller.rs:329:21 [INFO] [stderr] | [INFO] [stderr] 329 | return self.public_rooms.get(counter); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.public_rooms.get(counter)` [INFO] [stderr] | [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/controller.rs:331:21 [INFO] [stderr] | [INFO] [stderr] 331 | return self.private_rooms.get(counter); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.private_rooms.get(counter)` [INFO] [stderr] | [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: `role` [INFO] [stderr] --> src/user.rs:55:35 [INFO] [stderr] | [INFO] [stderr] 55 | pub fn revoke_role(&mut self, role: &Role) { [INFO] [stderr] | ^^^^ help: consider using `_role` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/controller.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | let mut room_data = self.room_data_interface.provide_room_data(); [INFO] [stderr] | ----^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/controller.rs:116:13 [INFO] [stderr] | [INFO] [stderr] 116 | let mut room = Room::new(name, owner); [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `role` [INFO] [stderr] --> src/user.rs:55:35 [INFO] [stderr] | [INFO] [stderr] 55 | pub fn revoke_role(&mut self, role: &Role) { [INFO] [stderr] | ^^^^ help: consider using `_role` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/controller.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | let mut room_data = self.room_data_interface.provide_room_data(); [INFO] [stderr] | ----^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/controller.rs:116:13 [INFO] [stderr] | [INFO] [stderr] 116 | let mut room = Room::new(name, owner); [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/controller.rs:392:9 [INFO] [stderr] | [INFO] [stderr] 392 | let mut room_data_interface = MockRoomDataImpl::new(&user_data); [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/controller.rs:420:9 [INFO] [stderr] | [INFO] [stderr] 420 | let mut room_data_interface = MockRoomDataImpl::new(&user_data); [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/controller.rs:454:9 [INFO] [stderr] | [INFO] [stderr] 454 | let mut room_data_interface = MockRoomDataImpl::new(&user_data); [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/controller.rs:486:9 [INFO] [stderr] | [INFO] [stderr] 486 | let mut room_data_interface = MockRoomDataImpl::new(&user_data); [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/controller.rs:526:9 [INFO] [stderr] | [INFO] [stderr] 526 | let mut room_data_interface = MockRoomDataImpl::new(&user_data); [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/controller.rs:567:9 [INFO] [stderr] | [INFO] [stderr] 567 | let mut room_data_interface = MockRoomDataImpl::new(&user_data); [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `MockUserDataImpl` [INFO] [stderr] --> src/mock_data.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | pub struct MockUserDataImpl { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/mock_data.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | pub fn new() -> MockUserDataImpl { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `MockRoomDataImpl` [INFO] [stderr] --> src/mock_data.rs:83:1 [INFO] [stderr] | [INFO] [stderr] 83 | pub struct MockRoomDataImpl { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/mock_data.rs:88:5 [INFO] [stderr] | [INFO] [stderr] 88 | pub fn new(user_list: &Vec) -> Self { [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/controller.rs:92:9 [INFO] [stderr] | [INFO] [stderr] 92 | / match self.find_user(user_id) { [INFO] [stderr] 93 | | Some(mut user) => user.grant_role(role), [INFO] [stderr] 94 | | None => (), [INFO] [stderr] 95 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(mut user) = self.find_user(user_id) { user.grant_role(role) }` [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/controller.rs:99:9 [INFO] [stderr] | [INFO] [stderr] 99 | / match self.find_user(user_id) { [INFO] [stderr] 100 | | Some(mut user) => user.revoke_role(role), [INFO] [stderr] 101 | | None => (), [INFO] [stderr] 102 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(mut user) = self.find_user(user_id) { user.revoke_role(role) }` [INFO] [stderr] | [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/controller.rs:107:9 [INFO] [stderr] | [INFO] [stderr] 107 | / match self.find_user(user_id) { [INFO] [stderr] 108 | | Some(mut user) => user.update_state(state), [INFO] [stderr] 109 | | None => (), [INFO] [stderr] 110 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(mut user) = self.find_user(user_id) { user.update_state(state) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/room.rs:160:9 [INFO] [stderr] | [INFO] [stderr] 160 | let mut room = Room::new("Testroom".to_string(), user.copy_id()); [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [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/controller.rs:156:9 [INFO] [stderr] | [INFO] [stderr] 156 | / match self.find_room_match(room_id) { [INFO] [stderr] 157 | | Some((counter, room_public)) => { [INFO] [stderr] 158 | | if room_public { [INFO] [stderr] 159 | | match self.public_rooms.get_mut(counter) { [INFO] [stderr] ... | [INFO] [stderr] 170 | | None => (), [INFO] [stderr] 171 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 156 | if let Some((counter, room_public)) = self.find_room_match(room_id) { [INFO] [stderr] 157 | if room_public { [INFO] [stderr] 158 | match self.public_rooms.get_mut(counter) { [INFO] [stderr] 159 | Some(t) => t.add_member(user_id), [INFO] [stderr] 160 | None => (), [INFO] [stderr] 161 | } [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/controller.rs:159:21 [INFO] [stderr] | [INFO] [stderr] 159 | / match self.public_rooms.get_mut(counter) { [INFO] [stderr] 160 | | Some(t) => t.add_member(user_id), [INFO] [stderr] 161 | | None => (), [INFO] [stderr] 162 | | } [INFO] [stderr] | |_____________________^ help: try this: `if let Some(t) = self.public_rooms.get_mut(counter) { t.add_member(user_id) }` [INFO] [stderr] | [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/controller.rs:164:21 [INFO] [stderr] | [INFO] [stderr] 164 | / match self.private_rooms.get_mut(counter) { [INFO] [stderr] 165 | | Some(t) => t.add_member(user_id), [INFO] [stderr] 166 | | None => (), [INFO] [stderr] 167 | | } [INFO] [stderr] | |_____________________^ help: try this: `if let Some(t) = self.private_rooms.get_mut(counter) { t.add_member(user_id) }` [INFO] [stderr] | [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/controller.rs:194:9 [INFO] [stderr] | [INFO] [stderr] 194 | / match self.find_room_match(room_id) { [INFO] [stderr] 195 | | Some((counter, room_public)) => { [INFO] [stderr] 196 | | if room_public { [INFO] [stderr] 197 | | match self.public_rooms.get_mut(counter) { [INFO] [stderr] ... | [INFO] [stderr] 218 | | None => (), [INFO] [stderr] 219 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 194 | if let Some((counter, room_public)) = self.find_room_match(room_id) { [INFO] [stderr] 195 | if room_public { [INFO] [stderr] 196 | match self.public_rooms.get_mut(counter) { [INFO] [stderr] 197 | Some(t) => { [INFO] [stderr] 198 | t.add_moderator(user_id); [INFO] [stderr] 199 | if !t.has_member(&user_id) { [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/controller.rs:197:21 [INFO] [stderr] | [INFO] [stderr] 197 | / match self.public_rooms.get_mut(counter) { [INFO] [stderr] 198 | | Some(t) => { [INFO] [stderr] 199 | | t.add_moderator(user_id); [INFO] [stderr] 200 | | if !t.has_member(&user_id) { [INFO] [stderr] ... | [INFO] [stderr] 204 | | None => (), [INFO] [stderr] 205 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 197 | if let Some(t) = self.public_rooms.get_mut(counter) { [INFO] [stderr] 198 | t.add_moderator(user_id); [INFO] [stderr] 199 | if !t.has_member(&user_id) { [INFO] [stderr] 200 | t.add_member(user_id); [INFO] [stderr] 201 | } [INFO] [stderr] 202 | } [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/controller.rs:207:21 [INFO] [stderr] | [INFO] [stderr] 207 | / match self.private_rooms.get_mut(counter) { [INFO] [stderr] 208 | | Some(t) => { [INFO] [stderr] 209 | | t.add_moderator(user_id); [INFO] [stderr] 210 | | if !t.has_member(&user_id) { [INFO] [stderr] ... | [INFO] [stderr] 214 | | None => (), [INFO] [stderr] 215 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 207 | if let Some(t) = self.private_rooms.get_mut(counter) { [INFO] [stderr] 208 | t.add_moderator(user_id); [INFO] [stderr] 209 | if !t.has_member(&user_id) { [INFO] [stderr] 210 | t.add_member(user_id); [INFO] [stderr] 211 | } [INFO] [stderr] 212 | } [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/controller.rs:242:9 [INFO] [stderr] | [INFO] [stderr] 242 | / match self.find_room_match(room_id) { [INFO] [stderr] 243 | | Some((counter, room_public)) => { [INFO] [stderr] 244 | | if room_public { [INFO] [stderr] 245 | | match self.public_rooms.get_mut(counter) { [INFO] [stderr] ... | [INFO] [stderr] 264 | | None => (), [INFO] [stderr] 265 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 242 | if let Some((counter, room_public)) = self.find_room_match(room_id) { [INFO] [stderr] 243 | if room_public { [INFO] [stderr] 244 | match self.public_rooms.get_mut(counter) { [INFO] [stderr] 245 | Some(t) => { [INFO] [stderr] 246 | t.bann_member(user_id); [INFO] [stderr] 247 | t.remove_member(&user_id); [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/controller.rs:245:21 [INFO] [stderr] | [INFO] [stderr] 245 | / match self.public_rooms.get_mut(counter) { [INFO] [stderr] 246 | | Some(t) => { [INFO] [stderr] 247 | | t.bann_member(user_id); [INFO] [stderr] 248 | | t.remove_member(&user_id); [INFO] [stderr] ... | [INFO] [stderr] 251 | | None => (), [INFO] [stderr] 252 | | }; [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 245 | if let Some(t) = self.public_rooms.get_mut(counter) { [INFO] [stderr] 246 | t.bann_member(user_id); [INFO] [stderr] 247 | t.remove_member(&user_id); [INFO] [stderr] 248 | t.remove_moderator(&user_id); [INFO] [stderr] 249 | }; [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/controller.rs:254:21 [INFO] [stderr] | [INFO] [stderr] 254 | / match self.private_rooms.get_mut(counter) { [INFO] [stderr] 255 | | Some(t) => { [INFO] [stderr] 256 | | t.bann_member(user_id); [INFO] [stderr] 257 | | t.remove_member(&user_id); [INFO] [stderr] ... | [INFO] [stderr] 260 | | None => (), [INFO] [stderr] 261 | | }; [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 254 | if let Some(t) = self.private_rooms.get_mut(counter) { [INFO] [stderr] 255 | t.bann_member(user_id); [INFO] [stderr] 256 | t.remove_member(&user_id); [INFO] [stderr] 257 | t.remove_moderator(&user_id); [INFO] [stderr] 258 | }; [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/controller.rs:288:9 [INFO] [stderr] | [INFO] [stderr] 288 | / match self.find_room_match(room_id) { [INFO] [stderr] 289 | | Some((counter, room_public)) => { [INFO] [stderr] 290 | | if room_public { [INFO] [stderr] 291 | | match self.public_rooms.get_mut(counter) { [INFO] [stderr] ... | [INFO] [stderr] 302 | | None => (), [INFO] [stderr] 303 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 288 | if let Some((counter, room_public)) = self.find_room_match(room_id) { [INFO] [stderr] 289 | if room_public { [INFO] [stderr] 290 | match self.public_rooms.get_mut(counter) { [INFO] [stderr] 291 | Some(t) => t.mute_member(user_id), [INFO] [stderr] 292 | None => (), [INFO] [stderr] 293 | } [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/controller.rs:291:21 [INFO] [stderr] | [INFO] [stderr] 291 | / match self.public_rooms.get_mut(counter) { [INFO] [stderr] 292 | | Some(t) => t.mute_member(user_id), [INFO] [stderr] 293 | | None => (), [INFO] [stderr] 294 | | } [INFO] [stderr] | |_____________________^ help: try this: `if let Some(t) = self.public_rooms.get_mut(counter) { t.mute_member(user_id) }` [INFO] [stderr] | [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/controller.rs:296:21 [INFO] [stderr] | [INFO] [stderr] 296 | / match self.private_rooms.get_mut(counter) { [INFO] [stderr] 297 | | Some(t) => t.mute_member(user_id), [INFO] [stderr] 298 | | None => (), [INFO] [stderr] 299 | | } [INFO] [stderr] | |_____________________^ help: try this: `if let Some(t) = self.private_rooms.get_mut(counter) { t.mute_member(user_id) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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/mock_data.rs:88:27 [INFO] [stderr] | [INFO] [stderr] 88 | pub fn new(user_list: &Vec) -> Self { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[User]` [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: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/mock_data.rs:93:21 [INFO] [stderr] | [INFO] [stderr] 93 | user_list.get(0).unwrap().copy_id(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&user_list[0]` [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: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/mock_data.rs:97:21 [INFO] [stderr] | [INFO] [stderr] 97 | user_list.get(1).unwrap().copy_id(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&user_list[1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/user.rs:96:9 [INFO] [stderr] | [INFO] [stderr] 96 | let mut user = User::new( [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [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/controller.rs:92:9 [INFO] [stderr] | [INFO] [stderr] 92 | / match self.find_user(user_id) { [INFO] [stderr] 93 | | Some(mut user) => user.grant_role(role), [INFO] [stderr] 94 | | None => (), [INFO] [stderr] 95 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(mut user) = self.find_user(user_id) { user.grant_role(role) }` [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/controller.rs:99:9 [INFO] [stderr] | [INFO] [stderr] 99 | / match self.find_user(user_id) { [INFO] [stderr] 100 | | Some(mut user) => user.revoke_role(role), [INFO] [stderr] 101 | | None => (), [INFO] [stderr] 102 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(mut user) = self.find_user(user_id) { user.revoke_role(role) }` [INFO] [stderr] | [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/controller.rs:107:9 [INFO] [stderr] | [INFO] [stderr] 107 | / match self.find_user(user_id) { [INFO] [stderr] 108 | | Some(mut user) => user.update_state(state), [INFO] [stderr] 109 | | None => (), [INFO] [stderr] 110 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(mut user) = self.find_user(user_id) { user.update_state(state) }` [INFO] [stderr] | [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/controller.rs:156:9 [INFO] [stderr] | [INFO] [stderr] 156 | / match self.find_room_match(room_id) { [INFO] [stderr] 157 | | Some((counter, room_public)) => { [INFO] [stderr] 158 | | if room_public { [INFO] [stderr] 159 | | match self.public_rooms.get_mut(counter) { [INFO] [stderr] ... | [INFO] [stderr] 170 | | None => (), [INFO] [stderr] 171 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 156 | if let Some((counter, room_public)) = self.find_room_match(room_id) { [INFO] [stderr] 157 | if room_public { [INFO] [stderr] 158 | match self.public_rooms.get_mut(counter) { [INFO] [stderr] 159 | Some(t) => t.add_member(user_id), [INFO] [stderr] 160 | None => (), [INFO] [stderr] 161 | } [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/controller.rs:159:21 [INFO] [stderr] | [INFO] [stderr] 159 | / match self.public_rooms.get_mut(counter) { [INFO] [stderr] 160 | | Some(t) => t.add_member(user_id), [INFO] [stderr] 161 | | None => (), [INFO] [stderr] 162 | | } [INFO] [stderr] | |_____________________^ help: try this: `if let Some(t) = self.public_rooms.get_mut(counter) { t.add_member(user_id) }` [INFO] [stderr] | [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/controller.rs:164:21 [INFO] [stderr] | [INFO] [stderr] 164 | / match self.private_rooms.get_mut(counter) { [INFO] [stderr] 165 | | Some(t) => t.add_member(user_id), [INFO] [stderr] 166 | | None => (), [INFO] [stderr] 167 | | } [INFO] [stderr] | |_____________________^ help: try this: `if let Some(t) = self.private_rooms.get_mut(counter) { t.add_member(user_id) }` [INFO] [stderr] | [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/controller.rs:194:9 [INFO] [stderr] | [INFO] [stderr] 194 | / match self.find_room_match(room_id) { [INFO] [stderr] 195 | | Some((counter, room_public)) => { [INFO] [stderr] 196 | | if room_public { [INFO] [stderr] 197 | | match self.public_rooms.get_mut(counter) { [INFO] [stderr] ... | [INFO] [stderr] 218 | | None => (), [INFO] [stderr] 219 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 194 | if let Some((counter, room_public)) = self.find_room_match(room_id) { [INFO] [stderr] 195 | if room_public { [INFO] [stderr] 196 | match self.public_rooms.get_mut(counter) { [INFO] [stderr] 197 | Some(t) => { [INFO] [stderr] 198 | t.add_moderator(user_id); [INFO] [stderr] 199 | if !t.has_member(&user_id) { [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/controller.rs:197:21 [INFO] [stderr] | [INFO] [stderr] 197 | / match self.public_rooms.get_mut(counter) { [INFO] [stderr] 198 | | Some(t) => { [INFO] [stderr] 199 | | t.add_moderator(user_id); [INFO] [stderr] 200 | | if !t.has_member(&user_id) { [INFO] [stderr] ... | [INFO] [stderr] 204 | | None => (), [INFO] [stderr] 205 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 197 | if let Some(t) = self.public_rooms.get_mut(counter) { [INFO] [stderr] 198 | t.add_moderator(user_id); [INFO] [stderr] 199 | if !t.has_member(&user_id) { [INFO] [stderr] 200 | t.add_member(user_id); [INFO] [stderr] 201 | } [INFO] [stderr] 202 | } [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/controller.rs:207:21 [INFO] [stderr] | [INFO] [stderr] 207 | / match self.private_rooms.get_mut(counter) { [INFO] [stderr] 208 | | Some(t) => { [INFO] [stderr] 209 | | t.add_moderator(user_id); [INFO] [stderr] 210 | | if !t.has_member(&user_id) { [INFO] [stderr] ... | [INFO] [stderr] 214 | | None => (), [INFO] [stderr] 215 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 207 | if let Some(t) = self.private_rooms.get_mut(counter) { [INFO] [stderr] 208 | t.add_moderator(user_id); [INFO] [stderr] 209 | if !t.has_member(&user_id) { [INFO] [stderr] 210 | t.add_member(user_id); [INFO] [stderr] 211 | } [INFO] [stderr] 212 | } [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/controller.rs:242:9 [INFO] [stderr] | [INFO] [stderr] 242 | / match self.find_room_match(room_id) { [INFO] [stderr] 243 | | Some((counter, room_public)) => { [INFO] [stderr] 244 | | if room_public { [INFO] [stderr] 245 | | match self.public_rooms.get_mut(counter) { [INFO] [stderr] ... | [INFO] [stderr] 264 | | None => (), [INFO] [stderr] 265 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 242 | if let Some((counter, room_public)) = self.find_room_match(room_id) { [INFO] [stderr] 243 | if room_public { [INFO] [stderr] 244 | match self.public_rooms.get_mut(counter) { [INFO] [stderr] 245 | Some(t) => { [INFO] [stderr] 246 | t.bann_member(user_id); [INFO] [stderr] 247 | t.remove_member(&user_id); [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/controller.rs:245:21 [INFO] [stderr] | [INFO] [stderr] 245 | / match self.public_rooms.get_mut(counter) { [INFO] [stderr] 246 | | Some(t) => { [INFO] [stderr] 247 | | t.bann_member(user_id); [INFO] [stderr] 248 | | t.remove_member(&user_id); [INFO] [stderr] ... | [INFO] [stderr] 251 | | None => (), [INFO] [stderr] 252 | | }; [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 245 | if let Some(t) = self.public_rooms.get_mut(counter) { [INFO] [stderr] 246 | t.bann_member(user_id); [INFO] [stderr] 247 | t.remove_member(&user_id); [INFO] [stderr] 248 | t.remove_moderator(&user_id); [INFO] [stderr] 249 | }; [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/controller.rs:254:21 [INFO] [stderr] | [INFO] [stderr] 254 | / match self.private_rooms.get_mut(counter) { [INFO] [stderr] 255 | | Some(t) => { [INFO] [stderr] 256 | | t.bann_member(user_id); [INFO] [stderr] 257 | | t.remove_member(&user_id); [INFO] [stderr] ... | [INFO] [stderr] 260 | | None => (), [INFO] [stderr] 261 | | }; [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 254 | if let Some(t) = self.private_rooms.get_mut(counter) { [INFO] [stderr] 255 | t.bann_member(user_id); [INFO] [stderr] 256 | t.remove_member(&user_id); [INFO] [stderr] 257 | t.remove_moderator(&user_id); [INFO] [stderr] 258 | }; [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/controller.rs:288:9 [INFO] [stderr] | [INFO] [stderr] 288 | / match self.find_room_match(room_id) { [INFO] [stderr] 289 | | Some((counter, room_public)) => { [INFO] [stderr] 290 | | if room_public { [INFO] [stderr] 291 | | match self.public_rooms.get_mut(counter) { [INFO] [stderr] ... | [INFO] [stderr] 302 | | None => (), [INFO] [stderr] 303 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 288 | if let Some((counter, room_public)) = self.find_room_match(room_id) { [INFO] [stderr] 289 | if room_public { [INFO] [stderr] 290 | match self.public_rooms.get_mut(counter) { [INFO] [stderr] 291 | Some(t) => t.mute_member(user_id), [INFO] [stderr] 292 | None => (), [INFO] [stderr] 293 | } [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/controller.rs:291:21 [INFO] [stderr] | [INFO] [stderr] 291 | / match self.public_rooms.get_mut(counter) { [INFO] [stderr] 292 | | Some(t) => t.mute_member(user_id), [INFO] [stderr] 293 | | None => (), [INFO] [stderr] 294 | | } [INFO] [stderr] | |_____________________^ help: try this: `if let Some(t) = self.public_rooms.get_mut(counter) { t.mute_member(user_id) }` [INFO] [stderr] | [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/controller.rs:296:21 [INFO] [stderr] | [INFO] [stderr] 296 | / match self.private_rooms.get_mut(counter) { [INFO] [stderr] 297 | | Some(t) => t.mute_member(user_id), [INFO] [stderr] 298 | | None => (), [INFO] [stderr] 299 | | } [INFO] [stderr] | |_____________________^ help: try this: `if let Some(t) = self.private_rooms.get_mut(counter) { t.mute_member(user_id) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/controller.rs:396:10 [INFO] [stderr] | [INFO] [stderr] 396 | *user_data.get(0).unwrap(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&user_data[0]` [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: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/controller.rs:398:24 [INFO] [stderr] | [INFO] [stderr] 398 | .find_user(user_data.get(0).unwrap().get_id()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&user_data[0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/room.rs:129:9 [INFO] [stderr] | [INFO] [stderr] 129 | self.id.clone() [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.id` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/mock_data.rs:88:27 [INFO] [stderr] | [INFO] [stderr] 88 | pub fn new(user_list: &Vec) -> Self { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[User]` [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: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/mock_data.rs:93:21 [INFO] [stderr] | [INFO] [stderr] 93 | user_list.get(0).unwrap().copy_id(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&user_list[0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/mock_data.rs:97:21 [INFO] [stderr] | [INFO] [stderr] 97 | user_list.get(1).unwrap().copy_id(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&user_list[1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/user.rs:71:9 [INFO] [stderr] | [INFO] [stderr] 71 | self.id.clone() [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.id` [INFO] [stderr] | [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/room.rs:129:9 [INFO] [stderr] | [INFO] [stderr] 129 | self.id.clone() [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.id` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/user.rs:71:9 [INFO] [stderr] | [INFO] [stderr] 71 | self.id.clone() [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 1m 05s [INFO] running `"docker" "inspect" "ed13ced1d8acfa216d97b2c63103a56998187379e08a6df48c7f701c0b6bc08d"` [INFO] running `"docker" "rm" "-f" "ed13ced1d8acfa216d97b2c63103a56998187379e08a6df48c7f701c0b6bc08d"` [INFO] [stdout] ed13ced1d8acfa216d97b2c63103a56998187379e08a6df48c7f701c0b6bc08d