[INFO] updating cached repository zekesonxx/deviltool [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/zekesonxx/deviltool [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/zekesonxx/deviltool" "work/ex/clippy-test-run/sources/stable/gh/zekesonxx/deviltool"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/zekesonxx/deviltool'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/zekesonxx/deviltool" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/zekesonxx/deviltool"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/zekesonxx/deviltool'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 0aca78723d3d782ca8e663fcacba7a1eb4b8086b [INFO] sha for GitHub repo zekesonxx/deviltool: 0aca78723d3d782ca8e663fcacba7a1eb4b8086b [INFO] validating manifest of zekesonxx/deviltool 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 zekesonxx/deviltool 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 zekesonxx/deviltool [INFO] finished frobbing zekesonxx/deviltool [INFO] frobbed toml for zekesonxx/deviltool written to work/ex/clippy-test-run/sources/stable/gh/zekesonxx/deviltool/Cargo.toml [INFO] started frobbing zekesonxx/deviltool [INFO] finished frobbing zekesonxx/deviltool [INFO] frobbed toml for zekesonxx/deviltool written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/zekesonxx/deviltool/Cargo.toml [INFO] crate zekesonxx/deviltool 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 zekesonxx/deviltool against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/zekesonxx/deviltool:/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] 3f4364c289810666b927225d129127d4965a6e3b69a5d534d51c9f66f6bb55ae [INFO] running `"docker" "start" "-a" "3f4364c289810666b927225d129127d4965a6e3b69a5d534d51c9f66f6bb55ae"` [INFO] [stderr] Checking libc v0.2.29 [INFO] [stderr] Checking either v1.1.0 [INFO] [stderr] Compiling rayon-core v1.2.1 [INFO] [stderr] Compiling gcc v0.3.53 [INFO] [stderr] Checking scopeguard v0.3.2 [INFO] [stderr] Checking futures v0.1.14 [INFO] [stderr] Checking adler32 v1.0.1 [INFO] [stderr] Checking color_quant v1.0.0 [INFO] [stderr] Checking inflate v0.2.0 [INFO] [stderr] Checking lzw v0.10.0 [INFO] [stderr] Checking unicode-segmentation v1.2.0 [INFO] [stderr] Checking scoped_threadpool v0.1.7 [INFO] [stderr] Checking ansi_term v0.9.0 [INFO] [stderr] Checking bytesize v0.1.3 [INFO] [stderr] Checking num-integer v0.1.35 [INFO] [stderr] Checking enum_primitive v0.1.1 [INFO] [stderr] Checking deflate v0.7.15 [INFO] [stderr] Checking coco v0.1.1 [INFO] [stderr] Checking gif v0.9.2 [INFO] [stderr] Checking num_cpus v1.6.2 [INFO] [stderr] Checking rand v0.3.16 [INFO] [stderr] Checking term_size v0.3.0 [INFO] [stderr] Checking memchr v1.0.1 [INFO] [stderr] Checking atty v0.2.2 [INFO] [stderr] Checking time v0.1.38 [INFO] [stderr] Checking filetime v0.1.10 [INFO] [stderr] Compiling backtrace-sys v0.1.12 [INFO] [stderr] Checking num-iter v0.1.34 [INFO] [stderr] Checking num-rational v0.1.39 [INFO] [stderr] Checking textwrap v0.7.0 [INFO] [stderr] Checking nom v3.2.0 [INFO] [stderr] Checking clap v2.26.0 [INFO] [stderr] Checking png v0.9.0 [INFO] [stderr] Checking rayon v0.8.2 [INFO] [stderr] Checking jpeg-decoder v0.1.13 [INFO] [stderr] Checking image v0.15.0 [INFO] [stderr] Checking backtrace v0.3.2 [INFO] [stderr] Checking error-chain v0.10.0 [INFO] [stderr] Checking deviltool v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tex2.rs:55:13 [INFO] [stderr] | [INFO] [stderr] 55 | height: height, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `height` [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/tex2.rs:56:13 [INFO] [stderr] | [INFO] [stderr] 56 | width: width, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `width` [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/commands/pack.rs:91:13 [INFO] [stderr] | [INFO] [stderr] 91 | filename: filename, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `filename` [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/tex2.rs:55:13 [INFO] [stderr] | [INFO] [stderr] 55 | height: height, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `height` [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/tex2.rs:56:13 [INFO] [stderr] | [INFO] [stderr] 56 | width: width, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `width` [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/commands/pack.rs:91:13 [INFO] [stderr] | [INFO] [stderr] 91 | filename: filename, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `filename` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:79:13 [INFO] [stderr] | [INFO] [stderr] 79 | return Ok(Err(IError::Incomplete(Unknown))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Err(IError::Incomplete(Unknown)))` [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: operator precedence can trip the unwary [INFO] [stderr] --> src/tex2.rs:147:45 [INFO] [stderr] | [INFO] [stderr] 147 | (0..cur_mip).fold(0u32, |acc, n| acc + (1 << (x - n) * 1 << (y - n))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider parenthesizing your expression: `1 << ((x - n) * 1)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::precedence)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#precedence [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/commands/imgconv.rs:59:13 [INFO] [stderr] | [INFO] [stderr] 59 | return Ok(tex2image); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(tex2image)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:79:13 [INFO] [stderr] | [INFO] [stderr] 79 | return Ok(Err(IError::Incomplete(Unknown))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Err(IError::Incomplete(Unknown)))` [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: operator precedence can trip the unwary [INFO] [stderr] --> src/tex2.rs:147:45 [INFO] [stderr] | [INFO] [stderr] 147 | (0..cur_mip).fold(0u32, |acc, n| acc + (1 << (x - n) * 1 << (y - n))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider parenthesizing your expression: `1 << ((x - n) * 1)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::precedence)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#precedence [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/commands/imgconv.rs:59:13 [INFO] [stderr] | [INFO] [stderr] 59 | return Ok(tex2image); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(tex2image)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/tex2.rs:61:24 [INFO] [stderr] | [INFO] [stderr] 61 | pub fn save(&self, mut dst: &mut Write) -> io::Result<()> { [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/types.rs:36:25 [INFO] [stderr] | [INFO] [stderr] 36 | pub fn write(&self, mut dst: &mut Write) -> io::Result<()> { [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/commands/info.rs:53:33 [INFO] [stderr] | [INFO] [stderr] 53 | fn guess_format(mut reader: &mut R) -> Result { [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/commands/info.rs:134:48 [INFO] [stderr] | [INFO] [stderr] 134 | fn texture_info(matches: &ArgMatches, mut reader: &mut R) -> Result<()> { [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/commands/info.rs:151:45 [INFO] [stderr] | [INFO] [stderr] 151 | fn glsl_info(matches: &ArgMatches, mut reader: &mut R) -> Result<()> { [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/tex2.rs:31:68 [INFO] [stderr] | [INFO] [stderr] 31 | pixels: count!(tex2_pixel, calc_offset(header.0, header.1, (header.2 as u32)+1) as usize) >> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u32::from(header.2)` [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 u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/tex2.rs:92:47 [INFO] [stderr] | [INFO] [stderr] 92 | (calc_offset(self.height, self.width, (self.mipmap_current) as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from((self.mipmap_current))` [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: the operation is ineffective. Consider reducing it to `(x - n)` [INFO] [stderr] --> src/tex2.rs:147:50 [INFO] [stderr] | [INFO] [stderr] 147 | (0..cur_mip).fold(0u32, |acc, n| acc + (1 << (x - n) * 1 << (y - n))) [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] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/types.rs:38:9 [INFO] [stderr] | [INFO] [stderr] 38 | dst.write(self.filename.as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/types.rs:82:19 [INFO] [stderr] | [INFO] [stderr] 82 | pub fn to_u16(&self) -> u16 { [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/types.rs:95:22 [INFO] [stderr] | [INFO] [stderr] 95 | pub fn extension(&self) -> String { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/types.rs:118:23 [INFO] [stderr] | [INFO] [stderr] 118 | pub fn is_unknown(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/types.rs:120:9 [INFO] [stderr] | [INFO] [stderr] 120 | / if let &Unknown(_) = self { [INFO] [stderr] 121 | | true [INFO] [stderr] 122 | | } else { [INFO] [stderr] 123 | | false [INFO] [stderr] 124 | | } [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] 120 | if let Unknown(_) = *self { [INFO] [stderr] | ^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/commands/unpack.rs:49:41 [INFO] [stderr] | [INFO] [stderr] 49 | reader.seek(SeekFrom::Start(file.offset as u64)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u64::from(file.offset)` [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 u64 may become silently lossy if types change [INFO] [stderr] --> src/commands/unpack.rs:95:72 [INFO] [stderr] | [INFO] [stderr] 95 | FileTime::from_seconds_since_1970(file.timestamp as u64, 0)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(file.timestamp)` [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: variable does not need to be mutable [INFO] [stderr] --> src/tex2.rs:61:24 [INFO] [stderr] | [INFO] [stderr] 61 | pub fn save(&self, mut dst: &mut Write) -> io::Result<()> { [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/types.rs:36:25 [INFO] [stderr] | [INFO] [stderr] 36 | pub fn write(&self, mut dst: &mut Write) -> io::Result<()> { [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/commands/pack.rs:149:45 [INFO] [stderr] | [INFO] [stderr] 149 | output_archive.seek(SeekFrom::Start(subheader.offset as u64)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(subheader.offset)` [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: The function/method `write_all` doesn't need a mutable reference [INFO] [stderr] --> src/commands/pack.rs:151:34 [INFO] [stderr] | [INFO] [stderr] 151 | output_archive.write_all(&mut buf.as_ref()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/commands/info.rs:53:33 [INFO] [stderr] | [INFO] [stderr] 53 | fn guess_format(mut reader: &mut R) -> Result { [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/commands/imgconv.rs:30:45 [INFO] [stderr] | [INFO] [stderr] 30 | let filename = _output_file.file_name().unwrap_or("converted_dd_tex2".as_ref()).to_str().unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "converted_dd_tex2".as_ref())` [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 `unwrap_or` followed by a function call [INFO] [stderr] --> src/commands/imgconv.rs:31:40 [INFO] [stderr] | [INFO] [stderr] 31 | let ext = _output_file.extension().unwrap_or("png".as_ref()).to_str().unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "png".as_ref())` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/commands/imgconv.rs:77:9 [INFO] [stderr] | [INFO] [stderr] 77 | let ref mut fout = File::create(output_file).chain_err(|| "Failed to open output image file")?; [INFO] [stderr] | ----^^^^^^^^^^^^------------------------------------------------------------------------------- help: try: `let fout = &mut (File::create(output_file).chain_err(|| "Failed to open output image file")?);` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/commands/info.rs:134:48 [INFO] [stderr] | [INFO] [stderr] 134 | fn texture_info(matches: &ArgMatches, mut reader: &mut R) -> Result<()> { [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/commands/info.rs:151:45 [INFO] [stderr] | [INFO] [stderr] 151 | fn glsl_info(matches: &ArgMatches, mut reader: &mut R) -> Result<()> { [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] error: Could not compile `deviltool`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/tex2.rs:31:68 [INFO] [stderr] | [INFO] [stderr] 31 | pixels: count!(tex2_pixel, calc_offset(header.0, header.1, (header.2 as u32)+1) as usize) >> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u32::from(header.2)` [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 u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/tex2.rs:92:47 [INFO] [stderr] | [INFO] [stderr] 92 | (calc_offset(self.height, self.width, (self.mipmap_current) as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from((self.mipmap_current))` [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: the operation is ineffective. Consider reducing it to `(x - n)` [INFO] [stderr] --> src/tex2.rs:147:50 [INFO] [stderr] | [INFO] [stderr] 147 | (0..cur_mip).fold(0u32, |acc, n| acc + (1 << (x - n) * 1 << (y - n))) [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] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/types.rs:38:9 [INFO] [stderr] | [INFO] [stderr] 38 | dst.write(self.filename.as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/types.rs:82:19 [INFO] [stderr] | [INFO] [stderr] 82 | pub fn to_u16(&self) -> u16 { [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/types.rs:95:22 [INFO] [stderr] | [INFO] [stderr] 95 | pub fn extension(&self) -> String { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/types.rs:118:23 [INFO] [stderr] | [INFO] [stderr] 118 | pub fn is_unknown(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/types.rs:120:9 [INFO] [stderr] | [INFO] [stderr] 120 | / if let &Unknown(_) = self { [INFO] [stderr] 121 | | true [INFO] [stderr] 122 | | } else { [INFO] [stderr] 123 | | false [INFO] [stderr] 124 | | } [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] 120 | if let Unknown(_) = *self { [INFO] [stderr] | ^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/commands/unpack.rs:49:41 [INFO] [stderr] | [INFO] [stderr] 49 | reader.seek(SeekFrom::Start(file.offset as u64)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u64::from(file.offset)` [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 u64 may become silently lossy if types change [INFO] [stderr] --> src/commands/unpack.rs:95:72 [INFO] [stderr] | [INFO] [stderr] 95 | FileTime::from_seconds_since_1970(file.timestamp as u64, 0)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(file.timestamp)` [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 u64 may become silently lossy if types change [INFO] [stderr] --> src/commands/pack.rs:149:45 [INFO] [stderr] | [INFO] [stderr] 149 | output_archive.seek(SeekFrom::Start(subheader.offset as u64)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(subheader.offset)` [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: The function/method `write_all` doesn't need a mutable reference [INFO] [stderr] --> src/commands/pack.rs:151:34 [INFO] [stderr] | [INFO] [stderr] 151 | output_archive.write_all(&mut buf.as_ref()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/commands/imgconv.rs:30:45 [INFO] [stderr] | [INFO] [stderr] 30 | let filename = _output_file.file_name().unwrap_or("converted_dd_tex2".as_ref()).to_str().unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "converted_dd_tex2".as_ref())` [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 `unwrap_or` followed by a function call [INFO] [stderr] --> src/commands/imgconv.rs:31:40 [INFO] [stderr] | [INFO] [stderr] 31 | let ext = _output_file.extension().unwrap_or("png".as_ref()).to_str().unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "png".as_ref())` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/commands/imgconv.rs:77:9 [INFO] [stderr] | [INFO] [stderr] 77 | let ref mut fout = File::create(output_file).chain_err(|| "Failed to open output image file")?; [INFO] [stderr] | ----^^^^^^^^^^^^------------------------------------------------------------------------------- help: try: `let fout = &mut (File::create(output_file).chain_err(|| "Failed to open output image file")?);` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `deviltool`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "3f4364c289810666b927225d129127d4965a6e3b69a5d534d51c9f66f6bb55ae"` [INFO] running `"docker" "rm" "-f" "3f4364c289810666b927225d129127d4965a6e3b69a5d534d51c9f66f6bb55ae"` [INFO] [stdout] 3f4364c289810666b927225d129127d4965a6e3b69a5d534d51c9f66f6bb55ae