[INFO] crate hematite_server 0.0.4 is already in cache [INFO] extracting crate hematite_server 0.0.4 into work/ex/clippy-test-run/sources/stable/reg/hematite_server/0.0.4 [INFO] extracting crate hematite_server 0.0.4 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/hematite_server/0.0.4 [INFO] validating manifest of hematite_server-0.0.4 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 hematite_server-0.0.4 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 hematite_server-0.0.4 [INFO] finished frobbing hematite_server-0.0.4 [INFO] frobbed toml for hematite_server-0.0.4 written to work/ex/clippy-test-run/sources/stable/reg/hematite_server/0.0.4/Cargo.toml [INFO] started frobbing hematite_server-0.0.4 [INFO] finished frobbing hematite_server-0.0.4 [INFO] frobbed toml for hematite_server-0.0.4 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/hematite_server/0.0.4/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting hematite_server-0.0.4 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-6/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/hematite_server/0.0.4:/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] fca224d83a2ad0ce21ae86c9b63ffd01999bc3b46e259beedeebeed612826a5c [INFO] running `"docker" "start" "-a" "fca224d83a2ad0ce21ae86c9b63ffd01999bc3b46e259beedeebeed612826a5c"` [INFO] [stderr] Checking hematite-nbt v0.3.0 [INFO] [stderr] Checking hematite_server v0.0.4 (/opt/crater/workdir) [INFO] [stderr] error: redundant field names in struct initialization [INFO] [stderr] --> src/types/chunk.rs:56:13 [INFO] [stderr] | [INFO] [stderr] 56 | chunks: chunks, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `chunks` [INFO] [stderr] | [INFO] [stderr] note: lint level defined here [INFO] [stderr] --> src/lib.rs:1:38 [INFO] [stderr] | [INFO] [stderr] 1 | #![cfg_attr(test, deny(missing_docs, warnings))] [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] = note: #[deny(clippy::redundant_field_names)] implied by #[deny(warnings)] [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] error: redundant field names in struct initialization [INFO] [stderr] --> src/types/entity_metadata.rs:127:28 [INFO] [stderr] | [INFO] [stderr] 127 | Ok(EntityMetadata{ dict: dict }) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `dict` [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] error: redundant field names in struct initialization [INFO] [stderr] --> src/vanilla/server.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | addr: addr, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `addr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] error: redundant field names in struct initialization [INFO] [stderr] --> src/vanilla/server.rs:43:13 [INFO] [stderr] | [INFO] [stderr] 43 | props: props, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `props` [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] error: redundant field names in struct initialization [INFO] [stderr] --> src/world.rs:126:39 [INFO] [stderr] | [INFO] [stderr] 126 | meta.push(ChunkMeta { x: x, z: z, mask: 0b000_0000_0000_1111 }); [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] error: redundant field names in struct initialization [INFO] [stderr] --> src/world.rs:126:45 [INFO] [stderr] | [INFO] [stderr] 126 | meta.push(ChunkMeta { x: x, z: z, mask: 0b000_0000_0000_1111 }); [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/types/chunk.rs:56:13 [INFO] [stderr] | [INFO] [stderr] 56 | chunks: chunks, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `chunks` [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/types/entity_metadata.rs:127:28 [INFO] [stderr] | [INFO] [stderr] 127 | Ok(EntityMetadata{ dict: dict }) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `dict` [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/vanilla/server.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | addr: addr, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `addr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/vanilla/server.rs:43:13 [INFO] [stderr] | [INFO] [stderr] 43 | props: props, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `props` [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/world.rs:126:39 [INFO] [stderr] | [INFO] [stderr] 126 | meta.push(ChunkMeta { x: x, z: z, mask: 0b000_0000_0000_1111 }); [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/world.rs:126:45 [INFO] [stderr] | [INFO] [stderr] 126 | meta.push(ChunkMeta { x: x, z: z, mask: 0b000_0000_0000_1111 }); [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/consts.rs:2:21 [INFO] [stderr] | [INFO] [stderr] 2 | pub const VERSION: &'static str = "1.8.9"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/proto/properties.rs:183:46 [INFO] [stderr] | [INFO] [stderr] 183 | { max_world_size, "max-world-size", i32, 29999984 } [INFO] [stderr] | ^^^^^^^^ help: consider: `29_999_984` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/types/pos.rs:32:53 [INFO] [stderr] | [INFO] [stderr] 32 | try!(dst.write_u64::((x as u64 & 0x3ffffff) << 38 | (y as u64 & 0xfff) << 26 | z as u64 & 0x3ffffff)); [INFO] [stderr] | ^^^^^^^^^ help: consider: `0x03ff_ffff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/types/pos.rs:32:110 [INFO] [stderr] | [INFO] [stderr] 32 | try!(dst.write_u64::((x as u64 & 0x3ffffff) << 38 | (y as u64 & 0xfff) << 26 | z as u64 & 0x3ffffff)); [INFO] [stderr] | ^^^^^^^^^ help: consider: `0x03ff_ffff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/types/pos.rs:40:30 [INFO] [stderr] | [INFO] [stderr] 40 | let z = (block_pos & 0x3ffffff) as i32; [INFO] [stderr] | ^^^^^^^^^ help: consider: `0x03ff_ffff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/types/varnum.rs:21:26 [INFO] [stderr] | [INFO] [stderr] 21 | if (value & (0xffffffffu32 << (7 * i))) == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider: `0xffff_ffffu32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/types/varnum.rs:66:26 [INFO] [stderr] | [INFO] [stderr] 66 | if (value & (0xffffffffffffffffu64 << (7 * i))) == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider: `0xffff_ffff_ffff_ffffu64` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/vanilla/server.rs:49:34 [INFO] [stderr] | [INFO] [stderr] 49 | pub fn addr(&self) -> &str { return &self.addr } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.addr` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/world.rs:18:23 [INFO] [stderr] | [INFO] [stderr] 18 | const PACKET_NAMES: [&'static str; 26] = [ [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] error: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/consts.rs:2:21 [INFO] [stderr] | [INFO] [stderr] 2 | pub const VERSION: &'static str = "1.8.9"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] note: lint level defined here [INFO] [stderr] --> src/lib.rs:1:38 [INFO] [stderr] | [INFO] [stderr] 1 | #![cfg_attr(test, deny(missing_docs, warnings))] [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] = note: #[deny(clippy::const_static_lifetime)] implied by #[deny(warnings)] [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] error: long literal lacking separators [INFO] [stderr] --> src/proto/properties.rs:183:46 [INFO] [stderr] | [INFO] [stderr] 183 | { max_world_size, "max-world-size", i32, 29999984 } [INFO] [stderr] | ^^^^^^^^ help: consider: `29_999_984` [INFO] [stderr] | [INFO] [stderr] note: lint level defined here [INFO] [stderr] --> src/lib.rs:1:38 [INFO] [stderr] | [INFO] [stderr] 1 | #![cfg_attr(test, deny(missing_docs, warnings))] [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] = note: #[deny(clippy::unreadable_literal)] implied by #[deny(warnings)] [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] error: long literal lacking separators [INFO] [stderr] --> src/proto/properties.rs:183:46 [INFO] [stderr] | [INFO] [stderr] 183 | { max_world_size, "max-world-size", i32, 29999984 } [INFO] [stderr] | ^^^^^^^^ help: consider: `29_999_984` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] error: long literal lacking separators [INFO] [stderr] --> src/types/pos.rs:32:53 [INFO] [stderr] | [INFO] [stderr] 32 | try!(dst.write_u64::((x as u64 & 0x3ffffff) << 38 | (y as u64 & 0xfff) << 26 | z as u64 & 0x3ffffff)); [INFO] [stderr] | ^^^^^^^^^ help: consider: `0x03ff_ffff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] error: long literal lacking separators [INFO] [stderr] --> src/types/pos.rs:32:110 [INFO] [stderr] | [INFO] [stderr] 32 | try!(dst.write_u64::((x as u64 & 0x3ffffff) << 38 | (y as u64 & 0xfff) << 26 | z as u64 & 0x3ffffff)); [INFO] [stderr] | ^^^^^^^^^ help: consider: `0x03ff_ffff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] error: long literal lacking separators [INFO] [stderr] --> src/types/pos.rs:40:30 [INFO] [stderr] | [INFO] [stderr] 40 | let z = (block_pos & 0x3ffffff) as i32; [INFO] [stderr] | ^^^^^^^^^ help: consider: `0x03ff_ffff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] error: long literal lacking separators [INFO] [stderr] --> src/types/varnum.rs:21:26 [INFO] [stderr] | [INFO] [stderr] 21 | if (value & (0xffffffffu32 << (7 * i))) == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider: `0xffff_ffffu32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] error: long literal lacking separators [INFO] [stderr] --> src/types/varnum.rs:66:26 [INFO] [stderr] | [INFO] [stderr] 66 | if (value & (0xffffffffffffffffu64 << (7 * i))) == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider: `0xffff_ffff_ffff_ffffu64` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] error: long literal lacking separators [INFO] [stderr] --> src/types/varnum.rs:141:24 [INFO] [stderr] | [INFO] [stderr] 141 | value: 2961488830i64, [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider: `2_961_488_830i64` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] error: long literal lacking separators [INFO] [stderr] --> src/types/varnum.rs:145:24 [INFO] [stderr] | [INFO] [stderr] 145 | value: 7256456126i64, [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider: `7_256_456_126i64` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] error: long literal lacking separators [INFO] [stderr] --> src/types/varnum.rs:149:24 [INFO] [stderr] | [INFO] [stderr] 149 | value: 41256202580718336i64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider: `41_256_202_580_718_336i64` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] error: unneeded return statement [INFO] [stderr] --> src/vanilla/server.rs:49:34 [INFO] [stderr] | [INFO] [stderr] 49 | pub fn addr(&self) -> &str { return &self.addr } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.addr` [INFO] [stderr] | [INFO] [stderr] note: lint level defined here [INFO] [stderr] --> src/lib.rs:1:38 [INFO] [stderr] | [INFO] [stderr] 1 | #![cfg_attr(test, deny(missing_docs, warnings))] [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] = note: #[deny(clippy::needless_return)] implied by #[deny(warnings)] [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] error: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/world.rs:18:23 [INFO] [stderr] | [INFO] [stderr] 18 | const PACKET_NAMES: [&'static str; 26] = [ [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] error: aborting due to 19 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `hematite_server`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/packet.rs:120:41 [INFO] [stderr] | [INFO] [stderr] 120 | src.$dec_name().map_err(|err| io::Error::from(err)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `io::Error::from` [INFO] [stderr] ... [INFO] [stderr] 205 | impl_protocol!(i8, 1, write_i8, read_i8); [INFO] [stderr] | ------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/packet.rs:120:41 [INFO] [stderr] | [INFO] [stderr] 120 | src.$dec_name().map_err(|err| io::Error::from(err)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `io::Error::from` [INFO] [stderr] ... [INFO] [stderr] 206 | impl_protocol!(u8, 1, write_u8, read_u8); [INFO] [stderr] | ------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/packet.rs:136:54 [INFO] [stderr] | [INFO] [stderr] 136 | src.$dec_name::().map_err(|err| io::Error::from(err)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `io::Error::from` [INFO] [stderr] ... [INFO] [stderr] 207 | impl_protocol!(i16, 2, write_i16, read_i16); [INFO] [stderr] | -------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/packet.rs:136:54 [INFO] [stderr] | [INFO] [stderr] 136 | src.$dec_name::().map_err(|err| io::Error::from(err)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `io::Error::from` [INFO] [stderr] ... [INFO] [stderr] 208 | impl_protocol!(u16, 2, write_u16, read_u16); [INFO] [stderr] | -------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/packet.rs:136:54 [INFO] [stderr] | [INFO] [stderr] 136 | src.$dec_name::().map_err(|err| io::Error::from(err)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `io::Error::from` [INFO] [stderr] ... [INFO] [stderr] 209 | impl_protocol!(i32, 4, write_i32, read_i32); [INFO] [stderr] | -------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/packet.rs:136:54 [INFO] [stderr] | [INFO] [stderr] 136 | src.$dec_name::().map_err(|err| io::Error::from(err)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `io::Error::from` [INFO] [stderr] ... [INFO] [stderr] 210 | impl_protocol!(u32, 4, write_u32, read_u32); [INFO] [stderr] | -------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/packet.rs:136:54 [INFO] [stderr] | [INFO] [stderr] 136 | src.$dec_name::().map_err(|err| io::Error::from(err)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `io::Error::from` [INFO] [stderr] ... [INFO] [stderr] 211 | impl_protocol!(i64, 8, write_i64, read_i64); [INFO] [stderr] | -------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/packet.rs:136:54 [INFO] [stderr] | [INFO] [stderr] 136 | src.$dec_name::().map_err(|err| io::Error::from(err)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `io::Error::from` [INFO] [stderr] ... [INFO] [stderr] 212 | impl_protocol!(u64, 8, write_u64, read_u64); [INFO] [stderr] | -------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/packet.rs:136:54 [INFO] [stderr] | [INFO] [stderr] 136 | src.$dec_name::().map_err(|err| io::Error::from(err)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `io::Error::from` [INFO] [stderr] ... [INFO] [stderr] 213 | impl_protocol!(f32, 4, write_f32, read_f32); [INFO] [stderr] | -------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/packet.rs:136:54 [INFO] [stderr] | [INFO] [stderr] 136 | src.$dec_name::().map_err(|err| io::Error::from(err)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `io::Error::from` [INFO] [stderr] ... [INFO] [stderr] 214 | impl_protocol!(f64, 8, write_f64, read_f64); [INFO] [stderr] | -------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/packet.rs:365:85 [INFO] [stderr] | [INFO] [stderr] 365 | + this.chunk_meta.iter().map(::proto_len).fold(0, |acc, item| acc + item) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `.sum()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_fold)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/packet.rs:366:64 [INFO] [stderr] | [INFO] [stderr] 366 | + this.chunk_data.iter().map(|cd| cd.len()).fold(0, |acc, item| acc + item) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `.sum()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/types/arr.rs:19:70 [INFO] [stderr] | [INFO] [stderr] 19 | let len_values = value.iter().map(::proto_len).fold(0, |acc, item| acc + item); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `.sum()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/types/arr.rs:24:65 [INFO] [stderr] | [INFO] [stderr] 24 | let len = try!(::from(value.len()).ok_or(io::Error::new(io::ErrorKind::InvalidInput, "could not convert length of vector to Array length type"))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| io::Error::new(io::ErrorKind::InvalidInput, "could not convert length of vector to Array length type"))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/types/arr.rs:36:25 [INFO] [stderr] | [INFO] [stderr] 36 | .ok_or(io::Error::new(io::ErrorKind::InvalidInput, "could not read length of vector from Array length type")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| io::Error::new(io::ErrorKind::InvalidInput, "could not read length of vector from Array length type"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/types/chat.rs:173:36 [INFO] [stderr] | [INFO] [stderr] 173 | if b == true { [INFO] [stderr] | ^^^^^^^^^ help: try simplifying it as shown: `b` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/types/chat.rs:231:75 [INFO] [stderr] | [INFO] [stderr] 231 | result.extra = try!(extra.into_iter().map(|elt| ChatJson::from_json(elt)).collect()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ChatJson::from_json` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/types/chat.rs:240:65 [INFO] [stderr] | [INFO] [stderr] 240 | Ok(ChatJson { extra: try!(array.into_iter().map(|elt| ChatJson::from_json(elt)).collect()), ..ChatJson::from("") }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ChatJson::from_json` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/types/chat.rs:271:16 [INFO] [stderr] | [INFO] [stderr] 271 | if extra.len() == 0 && *formats == BTreeSet::new() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `extra.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: length comparison to zero [INFO] [stderr] --> src/types/chat.rs:302:12 [INFO] [stderr] | [INFO] [stderr] 302 | if self.extra.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.extra.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: large size difference between variants [INFO] [stderr] --> src/types/chat.rs:333:5 [INFO] [stderr] | [INFO] [stderr] 333 | Selector(EntitySelector) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 333 | Selector(Box) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/types/chat.rs:347:9 [INFO] [stderr] | [INFO] [stderr] 347 | / match self { [INFO] [stderr] 348 | | &ClickEvent::OpenUrl(ref url) => { [INFO] [stderr] 349 | | d.insert("action".to_string(), "open_url".to_json()); [INFO] [stderr] 350 | | d.insert("value".to_string(), url.to_json()); [INFO] [stderr] ... | [INFO] [stderr] 363 | | } [INFO] [stderr] 364 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 347 | match *self { [INFO] [stderr] 348 | ClickEvent::OpenUrl(ref url) => { [INFO] [stderr] 349 | d.insert("action".to_string(), "open_url".to_json()); [INFO] [stderr] 350 | d.insert("value".to_string(), url.to_json()); [INFO] [stderr] 351 | }, [INFO] [stderr] 352 | ClickEvent::OpenFile(ref file) => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/types/chat.rs:379:9 [INFO] [stderr] | [INFO] [stderr] 379 | / match self { [INFO] [stderr] 380 | | &HoverEvent::Text(ref text) => { [INFO] [stderr] 381 | | d.insert("action".to_string(), "show_text".to_json()); [INFO] [stderr] 382 | | d.insert("value".to_string(), text.to_json()); [INFO] [stderr] ... | [INFO] [stderr] 393 | | } [INFO] [stderr] 394 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 379 | match *self { [INFO] [stderr] 380 | HoverEvent::Text(ref text) => { [INFO] [stderr] 381 | d.insert("action".to_string(), "show_text".to_json()); [INFO] [stderr] 382 | d.insert("value".to_string(), text.to_json()); [INFO] [stderr] 383 | }, [INFO] [stderr] 384 | HoverEvent::Achievement(ref ach) => { [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/types/chat.rs:405:22 [INFO] [stderr] | [INFO] [stderr] 405 | pub fn to_string(&self) -> String { [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/types/chat.rs:406:9 [INFO] [stderr] | [INFO] [stderr] 406 | / match self { [INFO] [stderr] 407 | | &Format::Bold => "bold".to_string(), [INFO] [stderr] 408 | | &Format::Italic => "italic".to_string(), [INFO] [stderr] 409 | | &Format::Underlined => "underlined".to_string(), [INFO] [stderr] ... | [INFO] [stderr] 413 | | &Format::Reset => "reset".to_string() [INFO] [stderr] 414 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 406 | match *self { [INFO] [stderr] 407 | Format::Bold => "bold".to_string(), [INFO] [stderr] 408 | Format::Italic => "italic".to_string(), [INFO] [stderr] 409 | Format::Underlined => "underlined".to_string(), [INFO] [stderr] 410 | Format::Strikethrough => "strikethrough".to_string(), [INFO] [stderr] 411 | Format::Obfuscated => "obfuscated".to_string(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: item `types::chunk::ChunkColumn` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/types/chunk.rs:15:1 [INFO] [stderr] | [INFO] [stderr] 15 | / impl ChunkColumn { [INFO] [stderr] 16 | | pub fn len(&self) -> usize { [INFO] [stderr] 17 | | let chunks = self.chunks.iter().map(|x| x.len()).fold(0, |acc, item| acc + item); [INFO] [stderr] 18 | | let biomes = match self.biomes { [INFO] [stderr] ... | [INFO] [stderr] 89 | | } [INFO] [stderr] 90 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/types/chunk.rs:17:57 [INFO] [stderr] | [INFO] [stderr] 17 | let chunks = self.chunks.iter().map(|x| x.len()).fold(0, |acc, item| acc + item); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `.sum()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [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/types/chunk.rs:37:13 [INFO] [stderr] | [INFO] [stderr] 37 | / match chunk.sky_light { [INFO] [stderr] 38 | | Some(xs) => try!(dst.write_all(&xs)), [INFO] [stderr] 39 | | None => {} [INFO] [stderr] 40 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Some(xs) = chunk.sky_light { try!(dst.write_all(&xs)) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/types/chunk.rs:42:9 [INFO] [stderr] | [INFO] [stderr] 42 | / match self.biomes { [INFO] [stderr] 43 | | Some(xs) => try!(dst.write_all(&xs)), [INFO] [stderr] 44 | | None => {} [INFO] [stderr] 45 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(xs) = self.biomes { try!(dst.write_all(&xs)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: item `types::chunk::Chunk` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/types/chunk.rs:107:1 [INFO] [stderr] | [INFO] [stderr] 107 | / impl Chunk { [INFO] [stderr] 108 | | pub fn len(&self) -> usize { [INFO] [stderr] 109 | | let sky = match self.sky_light { [INFO] [stderr] 110 | | Some(_) => 2048, [INFO] [stderr] ... | [INFO] [stderr] 121 | | } [INFO] [stderr] 122 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `types::entity_metadata::EntityMetadata` [INFO] [stderr] --> src/types/entity_metadata.rs:38:5 [INFO] [stderr] | [INFO] [stderr] 38 | / pub fn new() -> EntityMetadata { [INFO] [stderr] 39 | | EntityMetadata { dict: HashMap::new() } [INFO] [stderr] 40 | | } [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] 21 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/types/entity_metadata.rs:47:13 [INFO] [stderr] | [INFO] [stderr] 47 | / match value { [INFO] [stderr] 48 | | &Entry::Byte(_) => 1, [INFO] [stderr] 49 | | &Entry::Short(_) => 2, [INFO] [stderr] 50 | | &Entry::Int(_) [INFO] [stderr] ... | [INFO] [stderr] 55 | | | &Entry::Float3(_) => 12, [INFO] [stderr] 56 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 47 | match *value { [INFO] [stderr] 48 | Entry::Byte(_) => 1, [INFO] [stderr] 49 | Entry::Short(_) => 2, [INFO] [stderr] 50 | Entry::Int(_) [INFO] [stderr] 51 | | Entry::Float(_) => 4, [INFO] [stderr] 52 | Entry::String(ref s) => ::proto_len(s), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/types/entity_metadata.rs:58:43 [INFO] [stderr] | [INFO] [stderr] 58 | value.dict.values().map(entry_len).fold(0, |acc, item| acc + item) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `.sum()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `(k << 5 | idx & 0x1f)` [INFO] [stderr] --> src/types/entity_metadata.rs:62:13 [INFO] [stderr] | [INFO] [stderr] 62 | (k << 5 | idx & 0x1f) & 0xff [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/types/entity_metadata.rs:65:13 [INFO] [stderr] | [INFO] [stderr] 65 | / match value { [INFO] [stderr] 66 | | &Entry::Byte(ref b) => { [INFO] [stderr] 67 | | try!(::proto_encode(&key(0, *idx), dst)); [INFO] [stderr] 68 | | try!(::proto_encode(b, dst)); [INFO] [stderr] ... | [INFO] [stderr] 97 | | } [INFO] [stderr] 98 | | }; [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 65 | match *value { [INFO] [stderr] 66 | Entry::Byte(ref b) => { [INFO] [stderr] 67 | try!(::proto_encode(&key(0, *idx), dst)); [INFO] [stderr] 68 | try!(::proto_encode(b, dst)); [INFO] [stderr] 69 | } [INFO] [stderr] 70 | Entry::Short(ref s) => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/types/nbt.rs:17:12 [INFO] [stderr] | [INFO] [stderr] 17 | Ok(try!(value.write(dst))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/types/pos.rs:26:17 [INFO] [stderr] | [INFO] [stderr] 26 | let x = value[0].clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `value[0]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/types/pos.rs:27:17 [INFO] [stderr] | [INFO] [stderr] 27 | let y = value[1].clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `value[1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/types/pos.rs:28:17 [INFO] [stderr] | [INFO] [stderr] 28 | let z = value[2].clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `value[2]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/types/pos.rs:53:68 [INFO] [stderr] | [INFO] [stderr] 53 | value.iter().map(|coord| ::proto_len(coord)).fold(0, |acc, item| acc + item) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `.sum()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/types/selector.rs:19:12 [INFO] [stderr] | [INFO] [stderr] 19 | if s.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `s.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: length comparison to zero [INFO] [stderr] --> src/types/selector.rs:31:12 [INFO] [stderr] | [INFO] [stderr] 31 | if s.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `s.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: use of `or_insert` followed by a function call [INFO] [stderr] --> src/types/selector.rs:175:80 [INFO] [stderr] | [INFO] [stderr] 175 | result.scores.entry(objective.to_string()).or_insert(Range::from(..)).end = Some(try!(i32::from_str(value))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| Range::from(..))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/types/selector.rs:178:80 [INFO] [stderr] | [INFO] [stderr] 178 | result.scores.entry(objective.to_string()).or_insert(Range::from(..)).start = Some(try!(i32::from_str(value))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| Range::from(..))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 33 [INFO] [stderr] --> src/types/selector.rs:235:5 [INFO] [stderr] | [INFO] [stderr] 235 | / fn from(sel: &EntitySelector) -> String { [INFO] [stderr] 236 | | let mut sigil = if sel.random { 'r' } else { 'e' }; [INFO] [stderr] 237 | | let mut args = vec![]; [INFO] [stderr] 238 | | // arguments that can be displayed as positional [INFO] [stderr] ... | [INFO] [stderr] 298 | | format!("@{}{}", sigil, if args.len() > 0 { format!("[{}]", args.join(',')) } else { "".to_string() }) [INFO] [stderr] 299 | | } [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: length comparison to zero [INFO] [stderr] --> src/types/selector.rs:298:36 [INFO] [stderr] | [INFO] [stderr] 298 | format!("@{}{}", sigil, if args.len() > 0 { format!("[{}]", args.join(',')) } else { "".to_string() }) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!args.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: use of `ok_or` followed by a function call [INFO] [stderr] --> src/types/uuid.rs:24:30 [INFO] [stderr] | [INFO] [stderr] 24 | Uuid::from_bytes(&v).ok_or(io::Error::new(io::ErrorKind::InvalidInput, &format!("Invalid UUID value: {:?} can't be used to create UUID", v)[..])) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| io::Error::new(io::ErrorKind::InvalidInput, &format!("Invalid UUID value: {:?} can't be used to create UUID", v)[..]))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] error: this .into_iter() call is equivalent to .iter() and will not move the array [INFO] [stderr] --> src/types/varnum.rs:46:44 [INFO] [stderr] | [INFO] [stderr] 46 | for shift in [0u32, 7, 14, 21, 28].into_iter() { // (0..32).step_by(7) [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::into_iter_on_array)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_array [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/types/varnum.rs:47:21 [INFO] [stderr] | [INFO] [stderr] 47 | let b = try!(src.read_u8()) as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [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] help: try [INFO] [stderr] | [INFO] [stderr] 47 | let b = i32::from(match $ expr { [INFO] [stderr] 48 | $ crate :: result :: Result :: Ok ( val ) => val , $ crate :: result :: Result [INFO] [stderr] 49 | :: Err ( err ) => { [INFO] [stderr] 50 | return $ crate :: result :: Result :: Err ( [INFO] [stderr] 51 | $ crate :: convert :: From :: from ( err ) ) } }); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: this .into_iter() call is equivalent to .iter() and will not move the array [INFO] [stderr] --> src/types/varnum.rs:91:64 [INFO] [stderr] | [INFO] [stderr] 91 | for shift in [0u32, 7, 14, 21, 28, 35, 42, 49, 56, 63].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_array [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/types/varnum.rs:92:21 [INFO] [stderr] | [INFO] [stderr] 92 | let b = try!(src.read_u8()) as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 92 | let b = i64::from(match $ expr { [INFO] [stderr] 93 | $ crate :: result :: Result :: Ok ( val ) => val , $ crate :: result :: Result [INFO] [stderr] 94 | :: Err ( err ) => { [INFO] [stderr] 95 | return $ crate :: result :: Result :: Err ( [INFO] [stderr] 96 | $ crate :: convert :: From :: from ( err ) ) } }); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `world::World` [INFO] [stderr] --> src/world.rs:53:5 [INFO] [stderr] | [INFO] [stderr] 53 | / pub fn new() -> World { [INFO] [stderr] 54 | | World { start: time::get_time() } [INFO] [stderr] 55 | | } [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] 52 | impl Default for world::World { [INFO] [stderr] 53 | fn default() -> Self { [INFO] [stderr] 54 | Self::new() [INFO] [stderr] 55 | } [INFO] [stderr] 56 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `hematite_server`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "fca224d83a2ad0ce21ae86c9b63ffd01999bc3b46e259beedeebeed612826a5c"` [INFO] running `"docker" "rm" "-f" "fca224d83a2ad0ce21ae86c9b63ffd01999bc3b46e259beedeebeed612826a5c"` [INFO] [stdout] fca224d83a2ad0ce21ae86c9b63ffd01999bc3b46e259beedeebeed612826a5c