[INFO] updating cached repository SkyZH/warehouse.rs [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/SkyZH/warehouse.rs [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/SkyZH/warehouse.rs" "work/ex/clippy-test-run/sources/stable/gh/SkyZH/warehouse.rs"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/SkyZH/warehouse.rs'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/SkyZH/warehouse.rs" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/SkyZH/warehouse.rs"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/SkyZH/warehouse.rs'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] bc7c47cd118ddd06adb12eaa927197d7d447676d [INFO] sha for GitHub repo SkyZH/warehouse.rs: bc7c47cd118ddd06adb12eaa927197d7d447676d [INFO] validating manifest of SkyZH/warehouse.rs 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 SkyZH/warehouse.rs 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 SkyZH/warehouse.rs [INFO] finished frobbing SkyZH/warehouse.rs [INFO] frobbed toml for SkyZH/warehouse.rs written to work/ex/clippy-test-run/sources/stable/gh/SkyZH/warehouse.rs/Cargo.toml [INFO] started frobbing SkyZH/warehouse.rs [INFO] finished frobbing SkyZH/warehouse.rs [INFO] frobbed toml for SkyZH/warehouse.rs written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/SkyZH/warehouse.rs/Cargo.toml [INFO] crate SkyZH/warehouse.rs 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 SkyZH/warehouse.rs against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/SkyZH/warehouse.rs:/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] c548a1e23c91be6606d16c9b6d3c5e51f4ce82c0f4fabe93493c539985b1d2f9 [INFO] running `"docker" "start" "-a" "c548a1e23c91be6606d16c9b6d3c5e51f4ce82c0f4fabe93493c539985b1d2f9"` [INFO] [stderr] Checking warehouse v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/warehouse/command/transfer_command.rs:18:13 [INFO] [stderr] | [INFO] [stderr] 18 | from: from, to: to [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `from` [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/warehouse/command/transfer_command.rs:18:25 [INFO] [stderr] | [INFO] [stderr] 18 | from: from, to: to [INFO] [stderr] | ^^^^^^ help: replace it with: `to` [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/warehouse/command/transfer_command.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | from: from, to: to [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `from` [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/warehouse/command/transfer_command.rs:29:25 [INFO] [stderr] | [INFO] [stderr] 29 | from: from, to: to [INFO] [stderr] | ^^^^^^ help: replace it with: `to` [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/warehouse/command/move_command.rs:16:13 [INFO] [stderr] | [INFO] [stderr] 16 | bot: bot, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `bot` [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/warehouse/command/move_command.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | location: location, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `location` [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/warehouse/command/move_command.rs:18:13 [INFO] [stderr] | [INFO] [stderr] 18 | world: world [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `world` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/warehouse/command/pick_command.rs:22:13 [INFO] [stderr] | [INFO] [stderr] 22 | site: site, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `site` [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/warehouse/command/pick_command.rs:23:13 [INFO] [stderr] | [INFO] [stderr] 23 | item: item, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `item` [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/warehouse/command/pick_command.rs:32:13 [INFO] [stderr] | [INFO] [stderr] 32 | site: site, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `site` [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/warehouse/command/pick_command.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | item: item, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `item` [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/warehouse/object/location.rs:11:13 [INFO] [stderr] | [INFO] [stderr] 11 | x: x, y: y, z: z [INFO] [stderr] | ^^^^ help: replace it with: `x` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/warehouse/object/location.rs:11:19 [INFO] [stderr] | [INFO] [stderr] 11 | x: x, y: y, z: z [INFO] [stderr] | ^^^^ help: replace it with: `y` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/warehouse/object/location.rs:11:25 [INFO] [stderr] | [INFO] [stderr] 11 | x: x, y: y, z: z [INFO] [stderr] | ^^^^ help: replace it with: `z` [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/warehouse/command/transfer_command.rs:18:13 [INFO] [stderr] | [INFO] [stderr] 18 | from: from, to: to [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `from` [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/warehouse/command/transfer_command.rs:18:25 [INFO] [stderr] | [INFO] [stderr] 18 | from: from, to: to [INFO] [stderr] | ^^^^^^ help: replace it with: `to` [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/warehouse/command/transfer_command.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | from: from, to: to [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `from` [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/warehouse/command/transfer_command.rs:29:25 [INFO] [stderr] | [INFO] [stderr] 29 | from: from, to: to [INFO] [stderr] | ^^^^^^ help: replace it with: `to` [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/warehouse/command/move_command.rs:16:13 [INFO] [stderr] | [INFO] [stderr] 16 | bot: bot, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `bot` [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/warehouse/command/move_command.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | location: location, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `location` [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/warehouse/command/move_command.rs:18:13 [INFO] [stderr] | [INFO] [stderr] 18 | world: world [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `world` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/warehouse/command/pick_command.rs:22:13 [INFO] [stderr] | [INFO] [stderr] 22 | site: site, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `site` [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/warehouse/command/pick_command.rs:23:13 [INFO] [stderr] | [INFO] [stderr] 23 | item: item, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `item` [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/warehouse/command/pick_command.rs:32:13 [INFO] [stderr] | [INFO] [stderr] 32 | site: site, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `site` [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/warehouse/command/pick_command.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | item: item, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `item` [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/warehouse/object/location.rs:11:13 [INFO] [stderr] | [INFO] [stderr] 11 | x: x, y: y, z: z [INFO] [stderr] | ^^^^ help: replace it with: `x` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/warehouse/object/location.rs:11:19 [INFO] [stderr] | [INFO] [stderr] 11 | x: x, y: y, z: z [INFO] [stderr] | ^^^^ help: replace it with: `y` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/warehouse/object/location.rs:11:25 [INFO] [stderr] | [INFO] [stderr] 11 | x: x, y: y, z: z [INFO] [stderr] | ^^^^ help: replace it with: `z` [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: module has the same name as its containing module [INFO] [stderr] --> src/warehouse/command/mod.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | mod command; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/warehouse/command/pick_command.rs:48:20 [INFO] [stderr] | [INFO] [stderr] 48 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 49 | | if storage.have(self.item.0) < self.item.1 { [INFO] [stderr] 50 | | return Err("not enough item"); [INFO] [stderr] 51 | | } [INFO] [stderr] 52 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 48 | } else if storage.have(self.item.0) < self.item.1 { [INFO] [stderr] 49 | return Err("not enough item"); [INFO] [stderr] 50 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused import: `warehouse::command::Command` [INFO] [stderr] --> src/warehouse/object/bot.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use warehouse::command::Command; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `warehouse::command::Command` [INFO] [stderr] --> src/warehouse/object/shelf.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use warehouse::command::Command; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/warehouse/object/mod.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | mod object; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: unused import: `Location` [INFO] [stderr] --> src/worlddata/one_runner.rs:2:44 [INFO] [stderr] | [INFO] [stderr] 2 | use warehouse::object::{ Bot, Shelf, Site, Location, Object }; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::prelude::*` [INFO] [stderr] --> src/main.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::io::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/warehouse/command/mod.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | mod command; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/warehouse/command/pick_command.rs:48:20 [INFO] [stderr] | [INFO] [stderr] 48 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 49 | | if storage.have(self.item.0) < self.item.1 { [INFO] [stderr] 50 | | return Err("not enough item"); [INFO] [stderr] 51 | | } [INFO] [stderr] 52 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 48 | } else if storage.have(self.item.0) < self.item.1 { [INFO] [stderr] 49 | return Err("not enough item"); [INFO] [stderr] 50 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused import: `warehouse::command::Command` [INFO] [stderr] --> src/warehouse/object/bot.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use warehouse::command::Command; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `warehouse::command::Command` [INFO] [stderr] --> src/warehouse/object/shelf.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use warehouse::command::Command; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/warehouse/object/mod.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | mod object; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: unused import: `Location` [INFO] [stderr] --> src/worlddata/one_runner.rs:2:44 [INFO] [stderr] | [INFO] [stderr] 2 | use warehouse::object::{ Bot, Shelf, Site, Location, Object }; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::prelude::*` [INFO] [stderr] --> src/main.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::io::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `SequentialCommandQueue` [INFO] [stderr] --> src/warehouse/command/sequential_queue.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | pub struct SequentialCommandQueue { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `TestCommandStatus` [INFO] [stderr] --> src/warehouse/command/test_command.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | pub struct TestCommandStatus { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `TestCommand` [INFO] [stderr] --> src/warehouse/command/test_command.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | pub struct TestCommand { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/warehouse/command/test_command.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | pub fn new() -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `TestNextCommand` [INFO] [stderr] --> src/warehouse/command/test_command.rs:38:1 [INFO] [stderr] | [INFO] [stderr] 38 | pub struct TestNextCommand { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/warehouse/command/test_command.rs:42:5 [INFO] [stderr] | [INFO] [stderr] 42 | pub fn new() -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `PanicCommand` [INFO] [stderr] --> src/warehouse/command/panic_command.rs:3:1 [INFO] [stderr] | [INFO] [stderr] 3 | pub struct PanicCommand { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/warehouse/command/panic_command.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | pub fn new() -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `ConsumePanicCommand` [INFO] [stderr] --> src/warehouse/command/panic_command.rs:24:1 [INFO] [stderr] | [INFO] [stderr] 24 | pub struct ConsumePanicCommand { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/warehouse/command/panic_command.rs:28:5 [INFO] [stderr] | [INFO] [stderr] 28 | pub fn new() -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `TransferCommand` [INFO] [stderr] --> src/warehouse/command/transfer_command.rs:6:1 [INFO] [stderr] | [INFO] [stderr] 6 | pub struct TransferCommand { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `BotTransferToCommand` [INFO] [stderr] --> src/warehouse/command/transfer_command.rs:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | pub struct BotTransferToCommand { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/warehouse/command/transfer_command.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | pub fn new(from: Arc>, to: Arc>) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `BotTransferFromCommand` [INFO] [stderr] --> src/warehouse/command/transfer_command.rs:23:1 [INFO] [stderr] | [INFO] [stderr] 23 | pub struct BotTransferFromCommand { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/warehouse/command/transfer_command.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | pub fn new(from: Arc>, to: Arc>) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `PickCommand` [INFO] [stderr] --> src/warehouse/command/pick_command.rs:7:1 [INFO] [stderr] | [INFO] [stderr] 7 | pub struct PickCommand { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `SitePutCommand` [INFO] [stderr] --> src/warehouse/command/pick_command.rs:13:1 [INFO] [stderr] | [INFO] [stderr] 13 | pub struct SitePutCommand { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `SitePickCommand` [INFO] [stderr] --> src/warehouse/command/pick_command.rs:16:1 [INFO] [stderr] | [INFO] [stderr] 16 | pub struct SitePickCommand { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/warehouse/command/pick_command.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | pub fn new(site: Arc>, item: ItemSet) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/warehouse/command/pick_command.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | pub fn new(site: Arc>, item: ItemSet) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `left` [INFO] [stderr] --> src/warehouse/object/location.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | pub fn left(&self) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `right` [INFO] [stderr] --> src/warehouse/object/location.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | pub fn right(&self) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `front` [INFO] [stderr] --> src/warehouse/object/location.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | pub fn front(&self) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `back` [INFO] [stderr] --> src/warehouse/object/location.rs:32:5 [INFO] [stderr] | [INFO] [stderr] 32 | pub fn back(&self) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `down` [INFO] [stderr] --> src/warehouse/object/location.rs:42:5 [INFO] [stderr] | [INFO] [stderr] 42 | pub fn down(&self) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `TestObject` [INFO] [stderr] --> src/warehouse/object/test_object.rs:5:1 [INFO] [stderr] | [INFO] [stderr] 5 | pub struct TestObject { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/warehouse/object/test_object.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | pub fn new() -> Arc> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_items` [INFO] [stderr] --> src/warehouse/world.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | pub fn get_items(&mut self) -> &mut Vec>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `items` [INFO] [stderr] --> src/warehouse/storage.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | pub fn items(&self) -> &Vec<(Item, u32)> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `shelves` [INFO] [stderr] --> src/worlddata/one_runner.rs:43:5 [INFO] [stderr] | [INFO] [stderr] 43 | shelves: Vec>>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `sites` [INFO] [stderr] --> src/worlddata/one_runner.rs:44:5 [INFO] [stderr] | [INFO] [stderr] 44 | sites: Vec>>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/warehouse/command/parallel_queue.rs:49:12 [INFO] [stderr] | [INFO] [stderr] 49 | Ok(self.queue.len() > 0) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.queue.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/warehouse/command/parallel_queue.rs:54:28 [INFO] [stderr] | [INFO] [stderr] 54 | .map(|command: &Box| match command.render() { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Command` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::borrowed_box)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/warehouse/command/transfer_command.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | / pub fn new(from: Arc>, to: Arc>) -> Box { [INFO] [stderr] 17 | | Box::new(TransferCommand { [INFO] [stderr] 18 | | from: from, to: to [INFO] [stderr] 19 | | }) [INFO] [stderr] 20 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_ret_no_self)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/warehouse/command/transfer_command.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | / pub fn new(from: Arc>, to: Arc>) -> Box { [INFO] [stderr] 28 | | Box::new(TransferCommand { [INFO] [stderr] 29 | | from: from, to: to [INFO] [stderr] 30 | | }) [INFO] [stderr] 31 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/warehouse/command/transfer_command.rs:38:12 [INFO] [stderr] | [INFO] [stderr] 38 | if to.storage().items.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!to.storage().items.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/warehouse/command/pick_command.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | / pub fn new(site: Arc>, item: ItemSet) -> Box { [INFO] [stderr] 21 | | Box::new(PickCommand { [INFO] [stderr] 22 | | site: site, [INFO] [stderr] 23 | | item: item, [INFO] [stderr] 24 | | reverse: false [INFO] [stderr] 25 | | }) [INFO] [stderr] 26 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/warehouse/command/pick_command.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | / pub fn new(site: Arc>, item: ItemSet) -> Box { [INFO] [stderr] 31 | | Box::new(PickCommand { [INFO] [stderr] 32 | | site: site, [INFO] [stderr] 33 | | item: item, [INFO] [stderr] 34 | | reverse: true [INFO] [stderr] 35 | | }) [INFO] [stderr] 36 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/warehouse/command/pick_command.rs:60:13 [INFO] [stderr] | [INFO] [stderr] 60 | / match self.reverse { [INFO] [stderr] 61 | | false => storage.take(self.item.0, self.item.1).unwrap(), [INFO] [stderr] 62 | | true => storage.add(self.item.0, self.item.1).unwrap() [INFO] [stderr] 63 | | } [INFO] [stderr] | |_____________^ help: consider using an if/else expression: `if self.reverse { storage.add(self.item.0, self.item.1).unwrap() } else { storage.take(self.item.0, self.item.1).unwrap() }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/warehouse/command/pick_command.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | / match self.reverse { [INFO] [stderr] 67 | | true => site.pick_storage.take(self.item.0, self.item.1).unwrap(), [INFO] [stderr] 68 | | false => site.pick_storage.add(self.item.0, self.item.1).unwrap() [INFO] [stderr] 69 | | } [INFO] [stderr] | |_____________^ help: consider using an if/else expression: `if self.reverse { site.pick_storage.take(self.item.0, self.item.1).unwrap() } else { site.pick_storage.add(self.item.0, self.item.1).unwrap() }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/warehouse/command/pick_command.rs:77:9 [INFO] [stderr] | [INFO] [stderr] 77 | / match self.reverse { [INFO] [stderr] 78 | | true => Ok(format!("{{ \"type\": \"{}\", \"site\": \"{}\", \"item\": {}, \"count\": {} }}", [INFO] [stderr] 79 | | "put", site.id(), self.item.0, self.item.1)), [INFO] [stderr] 80 | | false => Ok(format!("{{ \"type\": \"{}\", \"site\": \"{}\", \"item\": {}, \"count\": {} }}", [INFO] [stderr] 81 | | "pick", site.id(), self.item.0, self.item.1)) [INFO] [stderr] 82 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 77 | if self.reverse { Ok(format!("{{ \"type\": \"{}\", \"site\": \"{}\", \"item\": {}, \"count\": {} }}", [INFO] [stderr] 78 | "put", site.id(), self.item.0, self.item.1)) } else { Ok(format!("{{ \"type\": \"{}\", \"site\": \"{}\", \"item\": {}, \"count\": {} }}", [INFO] [stderr] 79 | "pick", site.id(), self.item.0, self.item.1)) } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/warehouse/object/object.rs:13:9 [INFO] [stderr] | [INFO] [stderr] 13 | / match *locked { [INFO] [stderr] 14 | | true => Err("object already locked"), [INFO] [stderr] 15 | | false => { [INFO] [stderr] 16 | | *locked = true; [INFO] [stderr] 17 | | Ok(()) [INFO] [stderr] 18 | | } [INFO] [stderr] 19 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 13 | if *locked { Err("object already locked") } else { [INFO] [stderr] 14 | *locked = true; [INFO] [stderr] 15 | Ok(()) [INFO] [stderr] 16 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/warehouse/object/object.rs:23:9 [INFO] [stderr] | [INFO] [stderr] 23 | / match *locked { [INFO] [stderr] 24 | | false => Err("object already unlocked"), [INFO] [stderr] 25 | | true => { [INFO] [stderr] 26 | | *locked = false; [INFO] [stderr] 27 | | Ok(()) [INFO] [stderr] 28 | | } [INFO] [stderr] 29 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 23 | if *locked { [INFO] [stderr] 24 | *locked = false; [INFO] [stderr] 25 | Ok(()) [INFO] [stderr] 26 | } else { Err("object already unlocked") } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/warehouse/object/location.rs:15:10 [INFO] [stderr] | [INFO] [stderr] 15 | (self.x as i64 - target.x as i64).abs() + (self.y as i64 - target.y as i64).abs() + (self.z as i64 - target.z as i64).abs() <= 1 [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `i64::from(self.x)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/warehouse/object/location.rs:15:26 [INFO] [stderr] | [INFO] [stderr] 15 | (self.x as i64 - target.x as i64).abs() + (self.y as i64 - target.y as i64).abs() + (self.z as i64 - target.z as i64).abs() <= 1 [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i64::from(target.x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/warehouse/object/location.rs:15:52 [INFO] [stderr] | [INFO] [stderr] 15 | (self.x as i64 - target.x as i64).abs() + (self.y as i64 - target.y as i64).abs() + (self.z as i64 - target.z as i64).abs() <= 1 [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `i64::from(self.y)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/warehouse/object/location.rs:15:68 [INFO] [stderr] | [INFO] [stderr] 15 | (self.x as i64 - target.x as i64).abs() + (self.y as i64 - target.y as i64).abs() + (self.z as i64 - target.z as i64).abs() <= 1 [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i64::from(target.y)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/warehouse/object/location.rs:15:94 [INFO] [stderr] | [INFO] [stderr] 15 | (self.x as i64 - target.x as i64).abs() + (self.y as i64 - target.y as i64).abs() + (self.z as i64 - target.z as i64).abs() <= 1 [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `i64::from(self.z)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/warehouse/object/location.rs:15:110 [INFO] [stderr] | [INFO] [stderr] 15 | (self.x as i64 - target.x as i64).abs() + (self.y as i64 - target.y as i64).abs() + (self.z as i64 - target.z as i64).abs() <= 1 [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i64::from(target.z)` [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: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/warehouse/world.rs:41:20 [INFO] [stderr] | [INFO] [stderr] 41 | if *cnt <= 0 { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::absurd_extreme_comparisons)] on by default [INFO] [stderr] = help: because 0 is the minimum value for this type, the case where the two sides are not equal never occurs, consider using *cnt == 0 instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [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/warehouse/storage.rs:26:13 [INFO] [stderr] | [INFO] [stderr] 26 | / match iter.find(|&& mut(c_item, _)| c_item == item) { [INFO] [stderr] 27 | | Some((_, cnt)) => { [INFO] [stderr] 28 | | *cnt += count; [INFO] [stderr] 29 | | return Ok(()) [INFO] [stderr] 30 | | }, [INFO] [stderr] 31 | | None => {} [INFO] [stderr] 32 | | } [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] 26 | if let Some((_, cnt)) = iter.find(|&& mut(c_item, _)| c_item == item) { [INFO] [stderr] 27 | *cnt += count; [INFO] [stderr] 28 | return Ok(()) [INFO] [stderr] 29 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/worlddata/one_bot.rs:6:21 [INFO] [stderr] | [INFO] [stderr] 6 | pub fn one_bot() -> (World, [INFO] [stderr] | _____________________^ [INFO] [stderr] 7 | | Vec>>, [INFO] [stderr] 8 | | Vec>>, [INFO] [stderr] 9 | | Vec>>) { [INFO] [stderr] | |__________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: variable `SHELF_COUNT` should have a snake case name such as `shelf_count` [INFO] [stderr] --> src/worlddata/one_bot.rs:10:10 [INFO] [stderr] | [INFO] [stderr] 10 | let (SHELF_COUNT, SHELF_WIDTH, SHELF_HEIGHT) = (6, 10, 5); [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable `SHELF_WIDTH` should have a snake case name such as `shelf_width` [INFO] [stderr] --> src/worlddata/one_bot.rs:10:23 [INFO] [stderr] | [INFO] [stderr] 10 | let (SHELF_COUNT, SHELF_WIDTH, SHELF_HEIGHT) = (6, 10, 5); [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `SHELF_HEIGHT` should have a snake case name such as `shelf_height` [INFO] [stderr] --> src/worlddata/one_bot.rs:10:36 [INFO] [stderr] | [INFO] [stderr] 10 | let (SHELF_COUNT, SHELF_WIDTH, SHELF_HEIGHT) = (6, 10, 5); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `MARGIN_L` should have a snake case name such as `margin_l` [INFO] [stderr] --> src/worlddata/one_bot.rs:11:10 [INFO] [stderr] | [INFO] [stderr] 11 | let (MARGIN_L, MARGIN_T) = (1, 1); [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `MARGIN_T` should have a snake case name such as `margin_t` [INFO] [stderr] --> src/worlddata/one_bot.rs:11:20 [INFO] [stderr] | [INFO] [stderr] 11 | let (MARGIN_L, MARGIN_T) = (1, 1); [INFO] [stderr] | ^^^^^^^^ [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/worlddata/util.rs:10:49 [INFO] [stderr] | [INFO] [stderr] 10 | pub fn map_as_object <'a, T: 'a + Object> (vec: &Vec>>) -> Vec>>{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Arc>]` [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] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `warehouse`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: value assigned to `target_loc` is never read [INFO] [stderr] --> src/warehouse/command/move_command.rs:91:17 [INFO] [stderr] | [INFO] [stderr] 91 | let mut target_loc = Location::new(0, 0, 0); [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_assignments)] on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `target_loc` is never read [INFO] [stderr] --> src/warehouse/command/move_command.rs:108:17 [INFO] [stderr] | [INFO] [stderr] 108 | let mut target_loc = Location::new(0, 0, 0); [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: value assigned to `target_loc_1` is never read [INFO] [stderr] --> src/warehouse/command/move_command.rs:127:18 [INFO] [stderr] | [INFO] [stderr] 127 | let (mut target_loc_1, mut target_loc_2) = (Location::new(0, 0, 0), Location::new(0, 0, 0)); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: value assigned to `target_loc_2` is never read [INFO] [stderr] --> src/warehouse/command/move_command.rs:127:36 [INFO] [stderr] | [INFO] [stderr] 127 | let (mut target_loc_1, mut target_loc_2) = (Location::new(0, 0, 0), Location::new(0, 0, 0)); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/warehouse/world.rs:77:13 [INFO] [stderr] | [INFO] [stderr] 77 | let mut world = World::new(); [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/warehouse/world.rs:83:13 [INFO] [stderr] | [INFO] [stderr] 83 | let mut bot = Bot::new(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `SequentialCommandQueue` [INFO] [stderr] --> src/warehouse/command/sequential_queue.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | pub struct SequentialCommandQueue { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `BotTransferFromCommand` [INFO] [stderr] --> src/warehouse/command/transfer_command.rs:23:1 [INFO] [stderr] | [INFO] [stderr] 23 | pub struct BotTransferFromCommand { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/warehouse/command/transfer_command.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | pub fn new(from: Arc>, to: Arc>) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `left` [INFO] [stderr] --> src/warehouse/object/location.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | pub fn left(&self) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `right` [INFO] [stderr] --> src/warehouse/object/location.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | pub fn right(&self) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `back` [INFO] [stderr] --> src/warehouse/object/location.rs:32:5 [INFO] [stderr] | [INFO] [stderr] 32 | pub fn back(&self) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `down` [INFO] [stderr] --> src/warehouse/object/location.rs:42:5 [INFO] [stderr] | [INFO] [stderr] 42 | pub fn down(&self) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_items` [INFO] [stderr] --> src/warehouse/world.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | pub fn get_items(&mut self) -> &mut Vec>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `items` [INFO] [stderr] --> src/warehouse/storage.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | pub fn items(&self) -> &Vec<(Item, u32)> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `shelves` [INFO] [stderr] --> src/worlddata/one_runner.rs:43:5 [INFO] [stderr] | [INFO] [stderr] 43 | shelves: Vec>>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `sites` [INFO] [stderr] --> src/worlddata/one_runner.rs:44:5 [INFO] [stderr] | [INFO] [stderr] 44 | sites: Vec>>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/warehouse/command/parallel_queue.rs:49:12 [INFO] [stderr] | [INFO] [stderr] 49 | Ok(self.queue.len() > 0) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.queue.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/warehouse/command/parallel_queue.rs:54:28 [INFO] [stderr] | [INFO] [stderr] 54 | .map(|command: &Box| match command.render() { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Command` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::borrowed_box)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/warehouse/command/parallel_queue.rs:151:17 [INFO] [stderr] | [INFO] [stderr] 151 | assert!(queue.queue.len() == 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `queue.queue.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/warehouse/command/transfer_command.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | / pub fn new(from: Arc>, to: Arc>) -> Box { [INFO] [stderr] 17 | | Box::new(TransferCommand { [INFO] [stderr] 18 | | from: from, to: to [INFO] [stderr] 19 | | }) [INFO] [stderr] 20 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_ret_no_self)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/warehouse/command/transfer_command.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | / pub fn new(from: Arc>, to: Arc>) -> Box { [INFO] [stderr] 28 | | Box::new(TransferCommand { [INFO] [stderr] 29 | | from: from, to: to [INFO] [stderr] 30 | | }) [INFO] [stderr] 31 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/warehouse/command/transfer_command.rs:38:12 [INFO] [stderr] | [INFO] [stderr] 38 | if to.storage().items.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!to.storage().items.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/warehouse/command/pick_command.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | / pub fn new(site: Arc>, item: ItemSet) -> Box { [INFO] [stderr] 21 | | Box::new(PickCommand { [INFO] [stderr] 22 | | site: site, [INFO] [stderr] 23 | | item: item, [INFO] [stderr] 24 | | reverse: false [INFO] [stderr] 25 | | }) [INFO] [stderr] 26 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/warehouse/command/pick_command.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | / pub fn new(site: Arc>, item: ItemSet) -> Box { [INFO] [stderr] 31 | | Box::new(PickCommand { [INFO] [stderr] 32 | | site: site, [INFO] [stderr] 33 | | item: item, [INFO] [stderr] 34 | | reverse: true [INFO] [stderr] 35 | | }) [INFO] [stderr] 36 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/warehouse/command/pick_command.rs:60:13 [INFO] [stderr] | [INFO] [stderr] 60 | / match self.reverse { [INFO] [stderr] 61 | | false => storage.take(self.item.0, self.item.1).unwrap(), [INFO] [stderr] 62 | | true => storage.add(self.item.0, self.item.1).unwrap() [INFO] [stderr] 63 | | } [INFO] [stderr] | |_____________^ help: consider using an if/else expression: `if self.reverse { storage.add(self.item.0, self.item.1).unwrap() } else { storage.take(self.item.0, self.item.1).unwrap() }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/warehouse/command/pick_command.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | / match self.reverse { [INFO] [stderr] 67 | | true => site.pick_storage.take(self.item.0, self.item.1).unwrap(), [INFO] [stderr] 68 | | false => site.pick_storage.add(self.item.0, self.item.1).unwrap() [INFO] [stderr] 69 | | } [INFO] [stderr] | |_____________^ help: consider using an if/else expression: `if self.reverse { site.pick_storage.take(self.item.0, self.item.1).unwrap() } else { site.pick_storage.add(self.item.0, self.item.1).unwrap() }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/warehouse/command/pick_command.rs:77:9 [INFO] [stderr] | [INFO] [stderr] 77 | / match self.reverse { [INFO] [stderr] 78 | | true => Ok(format!("{{ \"type\": \"{}\", \"site\": \"{}\", \"item\": {}, \"count\": {} }}", [INFO] [stderr] 79 | | "put", site.id(), self.item.0, self.item.1)), [INFO] [stderr] 80 | | false => Ok(format!("{{ \"type\": \"{}\", \"site\": \"{}\", \"item\": {}, \"count\": {} }}", [INFO] [stderr] 81 | | "pick", site.id(), self.item.0, self.item.1)) [INFO] [stderr] 82 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 77 | if self.reverse { Ok(format!("{{ \"type\": \"{}\", \"site\": \"{}\", \"item\": {}, \"count\": {} }}", [INFO] [stderr] 78 | "put", site.id(), self.item.0, self.item.1)) } else { Ok(format!("{{ \"type\": \"{}\", \"site\": \"{}\", \"item\": {}, \"count\": {} }}", [INFO] [stderr] 79 | "pick", site.id(), self.item.0, self.item.1)) } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/warehouse/object/object.rs:13:9 [INFO] [stderr] | [INFO] [stderr] 13 | / match *locked { [INFO] [stderr] 14 | | true => Err("object already locked"), [INFO] [stderr] 15 | | false => { [INFO] [stderr] 16 | | *locked = true; [INFO] [stderr] 17 | | Ok(()) [INFO] [stderr] 18 | | } [INFO] [stderr] 19 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 13 | if *locked { Err("object already locked") } else { [INFO] [stderr] 14 | *locked = true; [INFO] [stderr] 15 | Ok(()) [INFO] [stderr] 16 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/warehouse/object/object.rs:23:9 [INFO] [stderr] | [INFO] [stderr] 23 | / match *locked { [INFO] [stderr] 24 | | false => Err("object already unlocked"), [INFO] [stderr] 25 | | true => { [INFO] [stderr] 26 | | *locked = false; [INFO] [stderr] 27 | | Ok(()) [INFO] [stderr] 28 | | } [INFO] [stderr] 29 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 23 | if *locked { [INFO] [stderr] 24 | *locked = false; [INFO] [stderr] 25 | Ok(()) [INFO] [stderr] 26 | } else { Err("object already unlocked") } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/warehouse/object/location.rs:15:10 [INFO] [stderr] | [INFO] [stderr] 15 | (self.x as i64 - target.x as i64).abs() + (self.y as i64 - target.y as i64).abs() + (self.z as i64 - target.z as i64).abs() <= 1 [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `i64::from(self.x)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/warehouse/object/location.rs:15:26 [INFO] [stderr] | [INFO] [stderr] 15 | (self.x as i64 - target.x as i64).abs() + (self.y as i64 - target.y as i64).abs() + (self.z as i64 - target.z as i64).abs() <= 1 [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i64::from(target.x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/warehouse/object/location.rs:15:52 [INFO] [stderr] | [INFO] [stderr] 15 | (self.x as i64 - target.x as i64).abs() + (self.y as i64 - target.y as i64).abs() + (self.z as i64 - target.z as i64).abs() <= 1 [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `i64::from(self.y)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/warehouse/object/location.rs:15:68 [INFO] [stderr] | [INFO] [stderr] 15 | (self.x as i64 - target.x as i64).abs() + (self.y as i64 - target.y as i64).abs() + (self.z as i64 - target.z as i64).abs() <= 1 [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i64::from(target.y)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/warehouse/object/location.rs:15:94 [INFO] [stderr] | [INFO] [stderr] 15 | (self.x as i64 - target.x as i64).abs() + (self.y as i64 - target.y as i64).abs() + (self.z as i64 - target.z as i64).abs() <= 1 [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `i64::from(self.z)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/warehouse/object/location.rs:15:110 [INFO] [stderr] | [INFO] [stderr] 15 | (self.x as i64 - target.x as i64).abs() + (self.y as i64 - target.y as i64).abs() + (self.z as i64 - target.z as i64).abs() <= 1 [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i64::from(target.z)` [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: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/warehouse/world.rs:41:20 [INFO] [stderr] | [INFO] [stderr] 41 | if *cnt <= 0 { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::absurd_extreme_comparisons)] on by default [INFO] [stderr] = help: because 0 is the minimum value for this type, the case where the two sides are not equal never occurs, consider using *cnt == 0 instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/warehouse/world.rs:106:21 [INFO] [stderr] | [INFO] [stderr] 106 | assert_eq!(*world.is_available.get(&Location::new(1, 1, 1)).unwrap(), 1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&world.is_available[&Location::new(1, 1, 1)]` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/warehouse/storage.rs:26:13 [INFO] [stderr] | [INFO] [stderr] 26 | / match iter.find(|&& mut(c_item, _)| c_item == item) { [INFO] [stderr] 27 | | Some((_, cnt)) => { [INFO] [stderr] 28 | | *cnt += count; [INFO] [stderr] 29 | | return Ok(()) [INFO] [stderr] 30 | | }, [INFO] [stderr] 31 | | None => {} [INFO] [stderr] 32 | | } [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] 26 | if let Some((_, cnt)) = iter.find(|&& mut(c_item, _)| c_item == item) { [INFO] [stderr] 27 | *cnt += count; [INFO] [stderr] 28 | return Ok(()) [INFO] [stderr] 29 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/worlddata/one_bot.rs:6:21 [INFO] [stderr] | [INFO] [stderr] 6 | pub fn one_bot() -> (World, [INFO] [stderr] | _____________________^ [INFO] [stderr] 7 | | Vec>>, [INFO] [stderr] 8 | | Vec>>, [INFO] [stderr] 9 | | Vec>>) { [INFO] [stderr] | |__________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: variable `SHELF_COUNT` should have a snake case name such as `shelf_count` [INFO] [stderr] --> src/worlddata/one_bot.rs:10:10 [INFO] [stderr] | [INFO] [stderr] 10 | let (SHELF_COUNT, SHELF_WIDTH, SHELF_HEIGHT) = (6, 10, 5); [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable `SHELF_WIDTH` should have a snake case name such as `shelf_width` [INFO] [stderr] --> src/worlddata/one_bot.rs:10:23 [INFO] [stderr] | [INFO] [stderr] 10 | let (SHELF_COUNT, SHELF_WIDTH, SHELF_HEIGHT) = (6, 10, 5); [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `SHELF_HEIGHT` should have a snake case name such as `shelf_height` [INFO] [stderr] --> src/worlddata/one_bot.rs:10:36 [INFO] [stderr] | [INFO] [stderr] 10 | let (SHELF_COUNT, SHELF_WIDTH, SHELF_HEIGHT) = (6, 10, 5); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `MARGIN_L` should have a snake case name such as `margin_l` [INFO] [stderr] --> src/worlddata/one_bot.rs:11:10 [INFO] [stderr] | [INFO] [stderr] 11 | let (MARGIN_L, MARGIN_T) = (1, 1); [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `MARGIN_T` should have a snake case name such as `margin_t` [INFO] [stderr] --> src/worlddata/one_bot.rs:11:20 [INFO] [stderr] | [INFO] [stderr] 11 | let (MARGIN_L, MARGIN_T) = (1, 1); [INFO] [stderr] | ^^^^^^^^ [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/worlddata/util.rs:10:49 [INFO] [stderr] | [INFO] [stderr] 10 | pub fn map_as_object <'a, T: 'a + Object> (vec: &Vec>>) -> Vec>>{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Arc>]` [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] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `warehouse`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "c548a1e23c91be6606d16c9b6d3c5e51f4ce82c0f4fabe93493c539985b1d2f9"` [INFO] running `"docker" "rm" "-f" "c548a1e23c91be6606d16c9b6d3c5e51f4ce82c0f4fabe93493c539985b1d2f9"` [INFO] [stdout] c548a1e23c91be6606d16c9b6d3c5e51f4ce82c0f4fabe93493c539985b1d2f9