[INFO] updating cached repository IHultman/Idea [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/IHultman/Idea [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/IHultman/Idea" "work/ex/clippy-test-run/sources/stable/gh/IHultman/Idea"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/IHultman/Idea'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/IHultman/Idea" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/IHultman/Idea"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/IHultman/Idea'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 0bb6753884a9fa5635b1e049f9300936767f2009 [INFO] sha for GitHub repo IHultman/Idea: 0bb6753884a9fa5635b1e049f9300936767f2009 [INFO] validating manifest of IHultman/Idea 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 IHultman/Idea 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 IHultman/Idea [INFO] finished frobbing IHultman/Idea [INFO] frobbed toml for IHultman/Idea written to work/ex/clippy-test-run/sources/stable/gh/IHultman/Idea/Cargo.toml [INFO] started frobbing IHultman/Idea [INFO] finished frobbing IHultman/Idea [INFO] frobbed toml for IHultman/Idea written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/IHultman/Idea/Cargo.toml [INFO] crate IHultman/Idea 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 IHultman/Idea against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/IHultman/Idea:/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] 090bfa160b9d7c481dccb56a661672b759016dc8566e752e2f5c26c49ec8c6c4 [INFO] running `"docker" "start" "-a" "090bfa160b9d7c481dccb56a661672b759016dc8566e752e2f5c26c49ec8c6c4"` [INFO] [stderr] Checking game v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/resources/food/mod.rs:20:7 [INFO] [stderr] | [INFO] [stderr] 20 | food: food, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `food` [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/resources/water/mod.rs:20:7 [INFO] [stderr] | [INFO] [stderr] 20 | water: water, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `water` [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/worker/mod.rs:46:7 [INFO] [stderr] | [INFO] [stderr] 46 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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/resources/food/mod.rs:20:7 [INFO] [stderr] | [INFO] [stderr] 20 | food: food, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `food` [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/resources/water/mod.rs:20:7 [INFO] [stderr] | [INFO] [stderr] 20 | water: water, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `water` [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/worker/mod.rs:46:7 [INFO] [stderr] | [INFO] [stderr] 46 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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: unused import: `colored::*` [INFO] [stderr] --> src/lib.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use colored::*; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `rand::Rng` [INFO] [stderr] --> src/lib.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use rand::Rng; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Ord`, `PartialEq` [INFO] [stderr] --> src/facility/mod.rs:2:16 [INFO] [stderr] | [INFO] [stderr] 2 | use std::cmp::{Ord, PartialEq}; [INFO] [stderr] | ^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Add`, `Mul`, `Sub` [INFO] [stderr] --> src/facility/mod.rs:4:16 [INFO] [stderr] | [INFO] [stderr] 4 | use std::ops::{Add, Mul, Sub}; [INFO] [stderr] | ^^^ ^^^ ^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::thread` [INFO] [stderr] --> src/facility/mod.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use std::thread; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/facility/farm/mod.rs:46:31 [INFO] [stderr] | [INFO] [stderr] 46 | fn get_produce_args(&self) {()} [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unused import: `Color` [INFO] [stderr] --> src/facility/lab/mod.rs:5:27 [INFO] [stderr] | [INFO] [stderr] 5 | use resources::crystals::{Color, CrystalBatch}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/facility/mine/mod.rs:57:30 [INFO] [stderr] | [INFO] [stderr] 57 | CrystalBatch::new_random(((PRODUCT * (lvl as f64) * energy) as u64), *color) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/facility/waterproc/mod.rs:46:31 [INFO] [stderr] | [INFO] [stderr] 46 | fn get_produce_args(&self) {()} [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Eq`, `Ordering`, `PartialEq`, `PartialOrd` [INFO] [stderr] --> src/resources/mod.rs:1:16 [INFO] [stderr] | [INFO] [stderr] 1 | use std::cmp::{Eq, Ord, Ordering, PartialEq, PartialOrd}; [INFO] [stderr] | ^^ ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Deref` [INFO] [stderr] --> src/resources/mod.rs:2:21 [INFO] [stderr] | [INFO] [stderr] 2 | use std::ops::{Add, Deref, Mul, Sub}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `worker::Worker` [INFO] [stderr] --> src/resources/mod.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use worker::Worker; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `facility::location::Loc` [INFO] [stderr] --> src/resources/crystals/mod.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use facility::location::Loc; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `worker::Worker` [INFO] [stderr] --> src/resources/crystals/mod.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use worker::Worker; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Eq` [INFO] [stderr] --> src/resources/food/mod.rs:1:16 [INFO] [stderr] | [INFO] [stderr] 1 | use std::cmp::{Eq, Ord, Ordering, PartialEq, PartialOrd}; [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `facility::location::Loc` [INFO] [stderr] --> src/resources/food/mod.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use facility::location::Loc; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `worker::Worker` [INFO] [stderr] --> src/resources/food/mod.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use worker::Worker; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Eq` [INFO] [stderr] --> src/resources/water/mod.rs:1:16 [INFO] [stderr] | [INFO] [stderr] 1 | use std::cmp::{Eq, Ord, Ordering, PartialEq, PartialOrd}; [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `facility::location::Loc` [INFO] [stderr] --> src/resources/water/mod.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use facility::location::Loc; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `worker::Worker` [INFO] [stderr] --> src/resources/water/mod.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use worker::Worker; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashMap` [INFO] [stderr] --> src/worksite/mod.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::collections::HashMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `mpsc` [INFO] [stderr] --> src/worksite/mod.rs:2:29 [INFO] [stderr] | [INFO] [stderr] 2 | use std::sync::{Arc, Mutex, mpsc}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/worksite/mod.rs:145:7 [INFO] [stderr] | [INFO] [stderr] 145 | resource [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/worksite/mod.rs:144:22 [INFO] [stderr] | [INFO] [stderr] 144 | let resource = facility.lock().unwrap().harvest(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `PRODUCT` [INFO] [stderr] --> src/resources/crystals/mod.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | const PRODUCT: f64 = 25.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Ptr` [INFO] [stderr] --> src/resources/crystals/mod.rs:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | type Ptr = Arc >; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Ptr` [INFO] [stderr] --> src/resources/food/mod.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | type Ptr = Arc >; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Ptr` [INFO] [stderr] --> src/resources/water/mod.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | type Ptr = Arc >; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Ptr` [INFO] [stderr] --> src/resources/mod.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | type Ptr = Arc >; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `facility::academy::Academy` [INFO] [stderr] --> src/facility/academy/mod.rs:17:3 [INFO] [stderr] | [INFO] [stderr] 17 | / pub fn new() -> Self { [INFO] [stderr] 18 | | Academy { [INFO] [stderr] 19 | | crew: HashMap::new(), [INFO] [stderr] 20 | | } [INFO] [stderr] 21 | | } [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] 12 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `facility::farm::Farm` [INFO] [stderr] --> src/facility/farm/mod.rs:21:3 [INFO] [stderr] | [INFO] [stderr] 21 | / pub fn new() -> Self { [INFO] [stderr] 22 | | Farm { [INFO] [stderr] 23 | | crew: HashMap::new(), [INFO] [stderr] 24 | | } [INFO] [stderr] 25 | | } [INFO] [stderr] | |___^ [INFO] [stderr] | [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] 16 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/facility/farm/mod.rs:53:26 [INFO] [stderr] | [INFO] [stderr] 53 | Food::new((PRODUCT * (lvl as f64) * energy ) as u64) [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(lvl)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `facility::lab::Lab` [INFO] [stderr] --> src/facility/lab/mod.rs:18:3 [INFO] [stderr] | [INFO] [stderr] 18 | / pub fn new() -> Self { [INFO] [stderr] 19 | | Lab { [INFO] [stderr] 20 | | crew: HashMap::new(), [INFO] [stderr] 21 | | crystals: CrystalBatch::new_base(), [INFO] [stderr] 22 | | } [INFO] [stderr] 23 | | } [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] 17 | impl Default for facility::lab::Lab { [INFO] [stderr] 18 | fn default() -> Self { [INFO] [stderr] 19 | Self::new() [INFO] [stderr] 20 | } [INFO] [stderr] 21 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `facility::mine::Mine` [INFO] [stderr] --> src/facility/mine/mod.rs:22:3 [INFO] [stderr] | [INFO] [stderr] 22 | / pub fn new() -> Self { [INFO] [stderr] 23 | | Mine { [INFO] [stderr] 24 | | crew: HashMap::new(), [INFO] [stderr] 25 | | loc_color: Color::Blue, [INFO] [stderr] 26 | | } [INFO] [stderr] 27 | | } [INFO] [stderr] | |___^ [INFO] [stderr] | [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] 21 | impl Default for facility::mine::Mine { [INFO] [stderr] 22 | fn default() -> Self { [INFO] [stderr] 23 | Self::new() [INFO] [stderr] 24 | } [INFO] [stderr] 25 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/facility/mine/mod.rs:57:42 [INFO] [stderr] | [INFO] [stderr] 57 | CrystalBatch::new_random(((PRODUCT * (lvl as f64) * energy) as u64), *color) [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(lvl)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `facility::ship::Ship` [INFO] [stderr] --> src/facility/ship/mod.rs:17:3 [INFO] [stderr] | [INFO] [stderr] 17 | / pub fn new() -> Self { [INFO] [stderr] 18 | | Ship { [INFO] [stderr] 19 | | crew: HashMap::new(), [INFO] [stderr] 20 | | } [INFO] [stderr] 21 | | } [INFO] [stderr] | |___^ [INFO] [stderr] | [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] 12 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `facility::waterproc::WaterProcessor` [INFO] [stderr] --> src/facility/waterproc/mod.rs:21:3 [INFO] [stderr] | [INFO] [stderr] 21 | / pub fn new() -> Self { [INFO] [stderr] 22 | | WaterProcessor { [INFO] [stderr] 23 | | crew: HashMap::new(), [INFO] [stderr] 24 | | } [INFO] [stderr] 25 | | } [INFO] [stderr] | |___^ [INFO] [stderr] | [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] 16 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/facility/waterproc/mod.rs:53:27 [INFO] [stderr] | [INFO] [stderr] 53 | Water::new((PRODUCT * (lvl as f64) * energy ) as u64) [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(lvl)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the HashMap [INFO] [stderr] --> src/facility/mod.rs:34:29 [INFO] [stderr] | [INFO] [stderr] 34 | self.borrow_crew_hash().into_iter().map(|(_, unit)| (*unit).clone() ).collect() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: unused import: `colored::*` [INFO] [stderr] --> src/lib.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use colored::*; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `rand::Rng` [INFO] [stderr] --> src/lib.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use rand::Rng; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Ord`, `PartialEq` [INFO] [stderr] --> src/facility/mod.rs:2:16 [INFO] [stderr] | [INFO] [stderr] 2 | use std::cmp::{Ord, PartialEq}; [INFO] [stderr] | ^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Add`, `Mul`, `Sub` [INFO] [stderr] --> src/facility/mod.rs:4:16 [INFO] [stderr] | [INFO] [stderr] 4 | use std::ops::{Add, Mul, Sub}; [INFO] [stderr] | ^^^ ^^^ ^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::thread` [INFO] [stderr] --> src/facility/mod.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use std::thread; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashMap` [INFO] [stderr] --> src/facility/academy/tests.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::collections::HashMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/facility/farm/mod.rs:46:31 [INFO] [stderr] | [INFO] [stderr] 46 | fn get_produce_args(&self) {()} [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashMap` [INFO] [stderr] --> src/facility/farm/tests.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::collections::HashMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Color` [INFO] [stderr] --> src/facility/lab/mod.rs:5:27 [INFO] [stderr] | [INFO] [stderr] 5 | use resources::crystals::{Color, CrystalBatch}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashMap` [INFO] [stderr] --> src/facility/lab/tests.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::collections::HashMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ResourceAccum` [INFO] [stderr] --> src/facility/lab/tests.rs:3:26 [INFO] [stderr] | [INFO] [stderr] 3 | use facility::{Facility, ResourceAccum, EXP}; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Color`, `CrystalBatch` [INFO] [stderr] --> src/facility/lab/tests.rs:5:27 [INFO] [stderr] | [INFO] [stderr] 5 | use resources::crystals::{Color, CrystalBatch}; [INFO] [stderr] | ^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/facility/mine/mod.rs:57:30 [INFO] [stderr] | [INFO] [stderr] 57 | CrystalBatch::new_random(((PRODUCT * (lvl as f64) * energy) as u64), *color) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashMap` [INFO] [stderr] --> src/facility/mine/tests.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::collections::HashMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Producer` [INFO] [stderr] --> src/facility/mine/tests.rs:3:26 [INFO] [stderr] | [INFO] [stderr] 3 | use facility::{Facility, Producer, EXP}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `resources::crystals::*` [INFO] [stderr] --> src/facility/mine/tests.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use resources::crystals::*; [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/resources/food/mod.rs:24:15 [INFO] [stderr] | [INFO] [stderr] 24 | pub fn food(&self) -> u64 {self.food} [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 import: `std::collections::HashMap` [INFO] [stderr] --> src/facility/ship/tests.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::collections::HashMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/facility/waterproc/mod.rs:46:31 [INFO] [stderr] | [INFO] [stderr] 46 | fn get_produce_args(&self) {()} [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/resources/water/mod.rs:24:16 [INFO] [stderr] | [INFO] [stderr] 24 | pub fn water(&self) -> u64 {self.water} [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] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashMap` [INFO] [stderr] --> src/facility/waterproc/tests.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::collections::HashMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashMap` [INFO] [stderr] --> src/facility/tests.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::collections::HashMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Ord`, `PartialEq` [INFO] [stderr] --> src/facility/tests.rs:2:16 [INFO] [stderr] | [INFO] [stderr] 2 | use std::cmp::{Ord, PartialEq}; [INFO] [stderr] | ^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt::Debug` [INFO] [stderr] --> src/facility/tests.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use std::fmt::Debug; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Add`, `Mul`, `Sub` [INFO] [stderr] --> src/facility/tests.rs:4:16 [INFO] [stderr] | [INFO] [stderr] 4 | use std::ops::{Add, Mul, Sub}; [INFO] [stderr] | ^^^ ^^^ ^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::thread` [INFO] [stderr] --> src/facility/tests.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use std::thread; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `resources::ResourceAccum` [INFO] [stderr] --> src/facility/tests.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use resources::ResourceAccum; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `worker::Worker` [INFO] [stderr] --> src/facility/tests.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use worker::Worker; [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/worker/mod.rs:20:14 [INFO] [stderr] | [INFO] [stderr] 20 | fn get_lvl(&self) -> u8 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/worker/mod.rs:26:19 [INFO] [stderr] | [INFO] [stderr] 26 | self.exp += exp as u32; [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(exp)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Eq`, `Ordering`, `PartialEq`, `PartialOrd` [INFO] [stderr] --> src/resources/mod.rs:1:16 [INFO] [stderr] | [INFO] [stderr] 1 | use std::cmp::{Eq, Ord, Ordering, PartialEq, PartialOrd}; [INFO] [stderr] | ^^ ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Deref` [INFO] [stderr] --> src/resources/mod.rs:2:21 [INFO] [stderr] | [INFO] [stderr] 2 | use std::ops::{Add, Deref, Mul, Sub}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `worker::Worker` [INFO] [stderr] --> src/resources/mod.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use worker::Worker; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `facility::location::Loc` [INFO] [stderr] --> src/resources/crystals/mod.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use facility::location::Loc; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `worker::Worker` [INFO] [stderr] --> src/resources/crystals/mod.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use worker::Worker; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `worksite::WorkSite` [INFO] [stderr] --> src/worksite/mod.rs:37:3 [INFO] [stderr] | [INFO] [stderr] 37 | / pub fn new() -> WorkSite { [INFO] [stderr] 38 | | WorkSite { [INFO] [stderr] 39 | | crew: (0..50).map(|id| Arc::new(Mutex::new(Worker::new(id))) ).collect(), [INFO] [stderr] 40 | | academy: Arc::new(Mutex::new(Academy::new()) ), [INFO] [stderr] ... | [INFO] [stderr] 49 | | } [INFO] [stderr] 50 | | } [INFO] [stderr] | |___^ [INFO] [stderr] | [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] 36 | impl Default for worksite::WorkSite { [INFO] [stderr] 37 | fn default() -> Self { [INFO] [stderr] 38 | Self::new() [INFO] [stderr] 39 | } [INFO] [stderr] 40 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Add`, `IndexMut`, `Index` [INFO] [stderr] --> src/resources/crystals/tests.rs:1:16 [INFO] [stderr] | [INFO] [stderr] 1 | use std::ops::{Add, Index, IndexMut}; [INFO] [stderr] | ^^^ ^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `facility::location::Loc` [INFO] [stderr] --> src/resources/crystals/tests.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use facility::location::Loc; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `resources::ResourceAccum` [INFO] [stderr] --> src/resources/crystals/tests.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use resources::ResourceAccum; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `worker::*` [INFO] [stderr] --> src/resources/crystals/tests.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use worker::*; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Eq` [INFO] [stderr] --> src/resources/food/mod.rs:1:16 [INFO] [stderr] | [INFO] [stderr] 1 | use std::cmp::{Eq, Ord, Ordering, PartialEq, PartialOrd}; [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `facility::location::Loc` [INFO] [stderr] --> src/resources/food/mod.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use facility::location::Loc; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `worker::Worker` [INFO] [stderr] --> src/resources/food/mod.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use worker::Worker; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Eq`, `Ord`, `Ordering`, `PartialEq`, `PartialOrd` [INFO] [stderr] --> src/resources/food/tests.rs:1:16 [INFO] [stderr] | [INFO] [stderr] 1 | use std::cmp::{Eq, Ord, Ordering, PartialEq, PartialOrd}; [INFO] [stderr] | ^^ ^^^ ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Add`, `Deref`, `Mul`, `Sub` [INFO] [stderr] --> src/resources/food/tests.rs:2:16 [INFO] [stderr] | [INFO] [stderr] 2 | use std::ops::{Add, Deref, Mul, Sub}; [INFO] [stderr] | ^^^ ^^^^^ ^^^ ^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `facility::location::Loc` [INFO] [stderr] --> src/resources/food/tests.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use facility::location::Loc; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ResourceUpkeep` [INFO] [stderr] --> src/resources/food/tests.rs:5:32 [INFO] [stderr] | [INFO] [stderr] 5 | use resources::{ResourceAccum, ResourceUpkeep}; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `worker::*` [INFO] [stderr] --> src/resources/food/tests.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use worker::*; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Eq` [INFO] [stderr] --> src/resources/water/mod.rs:1:16 [INFO] [stderr] | [INFO] [stderr] 1 | use std::cmp::{Eq, Ord, Ordering, PartialEq, PartialOrd}; [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `facility::location::Loc` [INFO] [stderr] --> src/resources/water/mod.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use facility::location::Loc; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `worker::Worker` [INFO] [stderr] --> src/resources/water/mod.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use worker::Worker; [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/worksite/mod.rs:67:5 [INFO] [stderr] | [INFO] [stderr] 67 | / match loc { [INFO] [stderr] 68 | | Some(loc) => { [INFO] [stderr] 69 | | match loc { [INFO] [stderr] 70 | | Loc::Academy => self.academy.lock().unwrap().remove_unit(id), [INFO] [stderr] ... | [INFO] [stderr] 78 | | None => {}, [INFO] [stderr] 79 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] warning: unused imports: `Eq`, `Ord`, `Ordering`, `PartialEq`, `PartialOrd` [INFO] [stderr] --> src/resources/water/tests.rs:1:16 [INFO] [stderr] | [INFO] [stderr] 1 | use std::cmp::{Eq, Ord, Ordering, PartialEq, PartialOrd}; [INFO] [stderr] | ^^ ^^^ ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^ [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] warning: unused imports: `Add`, `Deref`, `Mul`, `Sub` [INFO] [stderr] --> src/resources/water/tests.rs:2:16 [INFO] [stderr] | [INFO] [stderr] 2 | use std::ops::{Add, Deref, Mul, Sub}; [INFO] [stderr] | ^^^ ^^^^^ ^^^ ^^^ [INFO] [stderr] [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 67 | if let Some(loc) = loc { [INFO] [stderr] 68 | match loc { [INFO] [stderr] 69 | Loc::Academy => self.academy.lock().unwrap().remove_unit(id), [INFO] [stderr] 70 | Loc::Farm => self.farm.lock().unwrap().remove_unit(id), [INFO] [stderr] 71 | Loc::Lab => self.lab.lock().unwrap().remove_unit(id), [INFO] [stderr] 72 | Loc::Mine => self.mine.lock().unwrap().remove_unit(id), [INFO] [stderr] ... [INFO] [stderr] warning: unused import: `facility::location::Loc` [INFO] [stderr] --> src/resources/water/tests.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use facility::location::Loc; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ResourceUpkeep` [INFO] [stderr] --> src/resources/water/tests.rs:5:32 [INFO] [stderr] | [INFO] [stderr] 5 | use resources::{ResourceAccum, ResourceUpkeep}; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: unused import: `worker::*` [INFO] [stderr] --> src/resources/water/tests.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use worker::*; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashMap` [INFO] [stderr] --> src/worksite/mod.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::collections::HashMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `mpsc` [INFO] [stderr] --> src/worksite/mod.rs:2:29 [INFO] [stderr] | [INFO] [stderr] 2 | use std::sync::{Arc, Mutex, mpsc}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/worksite/mod.rs:145:7 [INFO] [stderr] | [INFO] [stderr] 145 | resource [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/worksite/mod.rs:144:22 [INFO] [stderr] | [INFO] [stderr] 144 | let resource = facility.lock().unwrap().harvest(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `game::worker::Worker` [INFO] [stderr] --> src/main.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use game::worker::Worker; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `game::worksite::WorkSite` [INFO] [stderr] --> src/main.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use game::worksite::WorkSite; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `worker` [INFO] [stderr] --> src/facility/academy/tests.rs:36:7 [INFO] [stderr] | [INFO] [stderr] 36 | let worker = academy.remove_unit(15).unwrap(); [INFO] [stderr] | ^^^^^^ help: consider using `_worker` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `worker` [INFO] [stderr] --> src/facility/farm/tests.rs:37:7 [INFO] [stderr] | [INFO] [stderr] 37 | let worker = farm.remove_unit(15).unwrap(); [INFO] [stderr] | ^^^^^^ help: consider using `_worker` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `worker` [INFO] [stderr] --> src/facility/lab/tests.rs:37:7 [INFO] [stderr] | [INFO] [stderr] 37 | let worker = lab.remove_unit(10).unwrap(); [INFO] [stderr] | ^^^^^^ help: consider using `_worker` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `worker` [INFO] [stderr] --> src/facility/mine/tests.rs:37:7 [INFO] [stderr] | [INFO] [stderr] 37 | let worker = mine.remove_unit(0).unwrap(); [INFO] [stderr] | ^^^^^^ help: consider using `_worker` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `worker` [INFO] [stderr] --> src/facility/ship/tests.rs:36:7 [INFO] [stderr] | [INFO] [stderr] 36 | let worker = ship.remove_unit(15).unwrap(); [INFO] [stderr] | ^^^^^^ help: consider using `_worker` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `worker` [INFO] [stderr] --> src/facility/waterproc/tests.rs:37:7 [INFO] [stderr] | [INFO] [stderr] 37 | let worker = waterproc.remove_unit(15).unwrap(); [INFO] [stderr] | ^^^^^^ help: consider using `_worker` instead [INFO] [stderr] [INFO] [stderr] warning: unused import: `game::worker::Worker` [INFO] [stderr] --> src/main.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use game::worker::Worker; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `game::worksite::WorkSite` [INFO] [stderr] --> src/main.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use game::worksite::WorkSite; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Ptr` [INFO] [stderr] --> src/facility/academy/tests.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | type Ptr = Arc >; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Ptr` [INFO] [stderr] --> src/facility/farm/tests.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | type Ptr = Arc >; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Ptr` [INFO] [stderr] --> src/facility/lab/tests.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | type Ptr = Arc >; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Ptr` [INFO] [stderr] --> src/facility/mine/tests.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | type Ptr = Arc >; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Ptr` [INFO] [stderr] --> src/facility/ship/tests.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | type Ptr = Arc >; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Ptr` [INFO] [stderr] --> src/facility/waterproc/tests.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | type Ptr = Arc >; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Ptr` [INFO] [stderr] --> src/facility/tests.rs:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | type Ptr = Arc >; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `PRODUCT` [INFO] [stderr] --> src/resources/crystals/mod.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | const PRODUCT: f64 = 25.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Ptr` [INFO] [stderr] --> src/resources/crystals/mod.rs:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | type Ptr = Arc >; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Ptr` [INFO] [stderr] --> src/resources/crystals/tests.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | type Ptr = Arc >; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Ptr` [INFO] [stderr] --> src/resources/food/mod.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | type Ptr = Arc >; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Ptr` [INFO] [stderr] --> src/resources/food/tests.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | type Ptr = Arc >; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Ptr` [INFO] [stderr] --> src/resources/water/mod.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | type Ptr = Arc >; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Ptr` [INFO] [stderr] --> src/resources/water/tests.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | type Ptr = Arc >; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Ptr` [INFO] [stderr] --> src/resources/mod.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | type Ptr = Arc >; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `facility::academy::Academy` [INFO] [stderr] --> src/facility/academy/mod.rs:17:3 [INFO] [stderr] | [INFO] [stderr] 17 | / pub fn new() -> Self { [INFO] [stderr] 18 | | Academy { [INFO] [stderr] 19 | | crew: HashMap::new(), [INFO] [stderr] 20 | | } [INFO] [stderr] 21 | | } [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] 12 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/facility/academy/tests.rs:59:23 [INFO] [stderr] | [INFO] [stderr] 59 | let mut nums_left = academy.borrow_crew_hash() [INFO] [stderr] | _______________________^ [INFO] [stderr] 60 | | .keys() [INFO] [stderr] 61 | | .map(|&x| x) [INFO] [stderr] | |_________________________________________^ [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] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 59 | let mut nums_left = academy.borrow_crew_hash() [INFO] [stderr] 60 | .keys().cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to want to iterate on a map's values [INFO] [stderr] --> src/facility/academy/tests.rs:95:22 [INFO] [stderr] | [INFO] [stderr] 95 | for (_, worker) in academy.borrow_crew_hash() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::for_kv_map)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stderr] help: use the corresponding method [INFO] [stderr] | [INFO] [stderr] 95 | for worker in academy.borrow_crew_hash().values() { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `facility::farm::Farm` [INFO] [stderr] --> src/facility/farm/mod.rs:21:3 [INFO] [stderr] | [INFO] [stderr] 21 | / pub fn new() -> Self { [INFO] [stderr] 22 | | Farm { [INFO] [stderr] 23 | | crew: HashMap::new(), [INFO] [stderr] 24 | | } [INFO] [stderr] 25 | | } [INFO] [stderr] | |___^ [INFO] [stderr] | [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] 16 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/facility/farm/mod.rs:53:26 [INFO] [stderr] | [INFO] [stderr] 53 | Food::new((PRODUCT * (lvl as f64) * energy ) as u64) [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(lvl)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/facility/farm/tests.rs:60:23 [INFO] [stderr] | [INFO] [stderr] 60 | let mut nums_left = farm.borrow_crew_hash() [INFO] [stderr] | _______________________^ [INFO] [stderr] 61 | | .keys() [INFO] [stderr] 62 | | .map(|&x| x) [INFO] [stderr] | |______________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 60 | let mut nums_left = farm.borrow_crew_hash() [INFO] [stderr] 61 | .keys().cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to want to iterate on a map's values [INFO] [stderr] --> src/facility/farm/tests.rs:96:22 [INFO] [stderr] | [INFO] [stderr] 96 | for (_, worker) in farm.borrow_crew_hash() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stderr] help: use the corresponding method [INFO] [stderr] | [INFO] [stderr] 96 | for worker in farm.borrow_crew_hash().values() { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused return value of `std::iter::Iterator::collect` that must be used [INFO] [stderr] --> src/facility/farm/tests.rs:117:3 [INFO] [stderr] | [INFO] [stderr] 117 | / farm.borrow_crew_hash() [INFO] [stderr] 118 | | .into_iter() [INFO] [stderr] 119 | | .map(|(_,worker)| [INFO] [stderr] 120 | | worker.lock().unwrap().remove_energy(1.0) [INFO] [stderr] 121 | | ) [INFO] [stderr] 122 | | .collect:: >(); [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: if you really need to exhaust the iterator, consider `.for_each(drop)` instead [INFO] [stderr] [INFO] [stderr] warning: you are collect()ing an iterator and throwing away the result. Consider using an explicit for loop to exhaust the iterator [INFO] [stderr] --> src/facility/farm/tests.rs:117:3 [INFO] [stderr] | [INFO] [stderr] 117 | / farm.borrow_crew_hash() [INFO] [stderr] 118 | | .into_iter() [INFO] [stderr] 119 | | .map(|(_,worker)| [INFO] [stderr] 120 | | worker.lock().unwrap().remove_energy(1.0) [INFO] [stderr] 121 | | ) [INFO] [stderr] 122 | | .collect:: >(); [INFO] [stderr] | |____________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_collect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_collect [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the HashMap [INFO] [stderr] --> src/facility/farm/tests.rs:118:8 [INFO] [stderr] | [INFO] [stderr] 118 | .into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `facility::lab::Lab` [INFO] [stderr] --> src/facility/lab/mod.rs:18:3 [INFO] [stderr] | [INFO] [stderr] 18 | / pub fn new() -> Self { [INFO] [stderr] 19 | | Lab { [INFO] [stderr] 20 | | crew: HashMap::new(), [INFO] [stderr] 21 | | crystals: CrystalBatch::new_base(), [INFO] [stderr] 22 | | } [INFO] [stderr] 23 | | } [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] 17 | impl Default for facility::lab::Lab { [INFO] [stderr] 18 | fn default() -> Self { [INFO] [stderr] 19 | Self::new() [INFO] [stderr] 20 | } [INFO] [stderr] 21 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/facility/lab/tests.rs:63:23 [INFO] [stderr] | [INFO] [stderr] 63 | let mut nums_left = lab.borrow_crew_hash() [INFO] [stderr] | _______________________^ [INFO] [stderr] 64 | | .keys() [INFO] [stderr] 65 | | .map(|&x| x) [INFO] [stderr] | |_____________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 63 | let mut nums_left = lab.borrow_crew_hash() [INFO] [stderr] 64 | .keys().cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to want to iterate on a map's values [INFO] [stderr] --> src/facility/lab/tests.rs:99:22 [INFO] [stderr] | [INFO] [stderr] 99 | for (_, worker) in lab.borrow_crew_hash() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stderr] help: use the corresponding method [INFO] [stderr] | [INFO] [stderr] 99 | for worker in lab.borrow_crew_hash().values() { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `facility::mine::Mine` [INFO] [stderr] --> src/facility/mine/mod.rs:22:3 [INFO] [stderr] | [INFO] [stderr] 22 | / pub fn new() -> Self { [INFO] [stderr] 23 | | Mine { [INFO] [stderr] 24 | | crew: HashMap::new(), [INFO] [stderr] 25 | | loc_color: Color::Blue, [INFO] [stderr] 26 | | } [INFO] [stderr] 27 | | } [INFO] [stderr] | |___^ [INFO] [stderr] | [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] 21 | impl Default for facility::mine::Mine { [INFO] [stderr] 22 | fn default() -> Self { [INFO] [stderr] 23 | Self::new() [INFO] [stderr] 24 | } [INFO] [stderr] 25 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/facility/mine/mod.rs:57:42 [INFO] [stderr] | [INFO] [stderr] 57 | CrystalBatch::new_random(((PRODUCT * (lvl as f64) * energy) as u64), *color) [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(lvl)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/facility/mine/tests.rs:66:23 [INFO] [stderr] | [INFO] [stderr] 66 | let mut nums_left = mine.borrow_crew_hash() [INFO] [stderr] | _______________________^ [INFO] [stderr] 67 | | .keys() [INFO] [stderr] 68 | | .map(|&x| x) [INFO] [stderr] | |______________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 66 | let mut nums_left = mine.borrow_crew_hash() [INFO] [stderr] 67 | .keys().cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to want to iterate on a map's values [INFO] [stderr] --> src/facility/mine/tests.rs:102:22 [INFO] [stderr] | [INFO] [stderr] 102 | for (_, worker) in mine.borrow_crew_hash() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stderr] help: use the corresponding method [INFO] [stderr] | [INFO] [stderr] 102 | for worker in mine.borrow_crew_hash().values() { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `facility::ship::Ship` [INFO] [stderr] --> src/facility/ship/mod.rs:17:3 [INFO] [stderr] | [INFO] [stderr] 17 | / pub fn new() -> Self { [INFO] [stderr] 18 | | Ship { [INFO] [stderr] 19 | | crew: HashMap::new(), [INFO] [stderr] 20 | | } [INFO] [stderr] 21 | | } [INFO] [stderr] | |___^ [INFO] [stderr] | [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] 12 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/facility/ship/tests.rs:68:23 [INFO] [stderr] | [INFO] [stderr] 68 | let mut nums_left = ship.borrow_crew_hash() [INFO] [stderr] | _______________________^ [INFO] [stderr] 69 | | .keys() [INFO] [stderr] 70 | | .map(|&x| x) [INFO] [stderr] | |______________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 68 | let mut nums_left = ship.borrow_crew_hash() [INFO] [stderr] 69 | .keys().cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to want to iterate on a map's values [INFO] [stderr] --> src/facility/ship/tests.rs:105:22 [INFO] [stderr] | [INFO] [stderr] 105 | for (_, worker) in ship.borrow_crew_hash() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stderr] help: use the corresponding method [INFO] [stderr] | [INFO] [stderr] 105 | for worker in ship.borrow_crew_hash().values() { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `facility::waterproc::WaterProcessor` [INFO] [stderr] --> src/facility/waterproc/mod.rs:21:3 [INFO] [stderr] | [INFO] [stderr] 21 | / pub fn new() -> Self { [INFO] [stderr] 22 | | WaterProcessor { [INFO] [stderr] 23 | | crew: HashMap::new(), [INFO] [stderr] 24 | | } [INFO] [stderr] 25 | | } [INFO] [stderr] | |___^ [INFO] [stderr] | [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] 16 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/facility/waterproc/mod.rs:53:27 [INFO] [stderr] | [INFO] [stderr] 53 | Water::new((PRODUCT * (lvl as f64) * energy ) as u64) [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(lvl)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/facility/waterproc/tests.rs:53:23 [INFO] [stderr] | [INFO] [stderr] 53 | let mut nums_left = waterproc.borrow_crew_hash() [INFO] [stderr] | _______________________^ [INFO] [stderr] 54 | | .keys() [INFO] [stderr] 55 | | .map(|&x| x) [INFO] [stderr] | |___________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 53 | let mut nums_left = waterproc.borrow_crew_hash() [INFO] [stderr] 54 | .keys().cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to want to iterate on a map's values [INFO] [stderr] --> src/facility/waterproc/tests.rs:90:22 [INFO] [stderr] | [INFO] [stderr] 90 | for (_, worker) in waterproc.borrow_crew_hash() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stderr] help: use the corresponding method [INFO] [stderr] | [INFO] [stderr] 90 | for worker in waterproc.borrow_crew_hash().values() { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused return value of `std::iter::Iterator::collect` that must be used [INFO] [stderr] --> src/facility/waterproc/tests.rs:111:3 [INFO] [stderr] | [INFO] [stderr] 111 | / waterproc.borrow_crew_hash() [INFO] [stderr] 112 | | .into_iter() [INFO] [stderr] 113 | | .map(|(_,worker)| [INFO] [stderr] 114 | | worker.lock().unwrap().remove_energy(1.0) [INFO] [stderr] 115 | | ) [INFO] [stderr] 116 | | .collect:: >(); [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = note: if you really need to exhaust the iterator, consider `.for_each(drop)` instead [INFO] [stderr] [INFO] [stderr] warning: you are collect()ing an iterator and throwing away the result. Consider using an explicit for loop to exhaust the iterator [INFO] [stderr] --> src/facility/waterproc/tests.rs:111:3 [INFO] [stderr] | [INFO] [stderr] 111 | / waterproc.borrow_crew_hash() [INFO] [stderr] 112 | | .into_iter() [INFO] [stderr] 113 | | .map(|(_,worker)| [INFO] [stderr] 114 | | worker.lock().unwrap().remove_energy(1.0) [INFO] [stderr] 115 | | ) [INFO] [stderr] 116 | | .collect:: >(); [INFO] [stderr] | |____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_collect [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the HashMap [INFO] [stderr] --> src/facility/waterproc/tests.rs:112:8 [INFO] [stderr] | [INFO] [stderr] 112 | .into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the HashMap [INFO] [stderr] --> src/facility/mod.rs:34:29 [INFO] [stderr] | [INFO] [stderr] 34 | self.borrow_crew_hash().into_iter().map(|(_, unit)| (*unit).clone() ).collect() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 37 [INFO] [stderr] --> src/facility/tests.rs:15:1 [INFO] [stderr] | [INFO] [stderr] 15 | / fn facility_loc_test() { [INFO] [stderr] 16 | | assert_eq!(Loc::Academy, Loc::Academy); [INFO] [stderr] 17 | | assert_ne!(Loc::Academy, Loc::Farm); [INFO] [stderr] 18 | | assert_ne!(Loc::Academy, Loc::Lab); [INFO] [stderr] ... | [INFO] [stderr] 56 | | assert_eq!(Loc::WaterProcessor, Loc::WaterProcessor); [INFO] [stderr] 57 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/resources/food/mod.rs:24:15 [INFO] [stderr] | [INFO] [stderr] 24 | pub fn food(&self) -> u64 {self.food} [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] error: this operation will always return zero. This is likely not the intended outcome [INFO] [stderr] --> src/resources/food/tests.rs:63:14 [INFO] [stderr] | [INFO] [stderr] 63 | assert_eq!(f1 * 0, Food::new(0) ); [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::erasing_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#erasing_op [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/resources/water/mod.rs:24:16 [INFO] [stderr] | [INFO] [stderr] 24 | pub fn water(&self) -> u64 {self.water} [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] error: this operation will always return zero. This is likely not the intended outcome [INFO] [stderr] --> src/resources/water/tests.rs:56:14 [INFO] [stderr] | [INFO] [stderr] 56 | assert_eq!(w1 * 0, Water::new(0) ); [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#erasing_op [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/worker/mod.rs:20:14 [INFO] [stderr] | [INFO] [stderr] 20 | fn get_lvl(&self) -> u8 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/worker/mod.rs:26:19 [INFO] [stderr] | [INFO] [stderr] 26 | self.exp += exp as u32; [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(exp)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/worker/tests.rs:25:3 [INFO] [stderr] | [INFO] [stderr] 25 | assert_eq!(worker.get_energy(), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/worker/tests.rs:25:3 [INFO] [stderr] | [INFO] [stderr] 25 | assert_eq!(worker.get_energy(), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/worker/tests.rs:47:3 [INFO] [stderr] | [INFO] [stderr] 47 | assert_eq!(worker.get_energy(), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/worker/tests.rs:47:3 [INFO] [stderr] | [INFO] [stderr] 47 | assert_eq!(worker.get_energy(), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/worker/tests.rs:51:3 [INFO] [stderr] | [INFO] [stderr] 51 | assert_eq!(worker.get_energy(), 0.1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/worker/tests.rs:51:3 [INFO] [stderr] | [INFO] [stderr] 51 | assert_eq!(worker.get_energy(), 0.1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/worker/tests.rs:55:3 [INFO] [stderr] | [INFO] [stderr] 55 | assert_eq!(worker.get_energy(), 0.5); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/worker/tests.rs:55:3 [INFO] [stderr] | [INFO] [stderr] 55 | assert_eq!(worker.get_energy(), 0.5); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: literal out of range for u16 [INFO] [stderr] --> src/worker/tests.rs:89:18 [INFO] [stderr] | [INFO] [stderr] 89 | worker.add_exp(65536); [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(overflowing_literals)] on by default [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `worksite::WorkSite` [INFO] [stderr] --> src/worksite/mod.rs:37:3 [INFO] [stderr] | [INFO] [stderr] 37 | / pub fn new() -> WorkSite { [INFO] [stderr] 38 | | WorkSite { [INFO] [stderr] 39 | | crew: (0..50).map(|id| Arc::new(Mutex::new(Worker::new(id))) ).collect(), [INFO] [stderr] 40 | | academy: Arc::new(Mutex::new(Academy::new()) ), [INFO] [stderr] ... | [INFO] [stderr] 49 | | } [INFO] [stderr] 50 | | } [INFO] [stderr] | |___^ [INFO] [stderr] | [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] 36 | impl Default for worksite::WorkSite { [INFO] [stderr] 37 | fn default() -> Self { [INFO] [stderr] 38 | Self::new() [INFO] [stderr] 39 | } [INFO] [stderr] 40 | } [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/worksite/mod.rs:67:5 [INFO] [stderr] | [INFO] [stderr] 67 | / match loc { [INFO] [stderr] 68 | | Some(loc) => { [INFO] [stderr] 69 | | match loc { [INFO] [stderr] 70 | | Loc::Academy => self.academy.lock().unwrap().remove_unit(id), [INFO] [stderr] ... | [INFO] [stderr] 78 | | None => {}, [INFO] [stderr] 79 | | } [INFO] [stderr] | |_____^ [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] help: try this [INFO] [stderr] | [INFO] [stderr] 67 | if let Some(loc) = loc { [INFO] [stderr] 68 | match loc { [INFO] [stderr] 69 | Loc::Academy => self.academy.lock().unwrap().remove_unit(id), [INFO] [stderr] 70 | Loc::Farm => self.farm.lock().unwrap().remove_unit(id), [INFO] [stderr] 71 | Loc::Lab => self.lab.lock().unwrap().remove_unit(id), [INFO] [stderr] 72 | Loc::Mine => self.mine.lock().unwrap().remove_unit(id), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: aborting due to 6 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `game`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "090bfa160b9d7c481dccb56a661672b759016dc8566e752e2f5c26c49ec8c6c4"` [INFO] running `"docker" "rm" "-f" "090bfa160b9d7c481dccb56a661672b759016dc8566e752e2f5c26c49ec8c6c4"` [INFO] [stdout] 090bfa160b9d7c481dccb56a661672b759016dc8566e752e2f5c26c49ec8c6c4