[INFO] updating cached repository dbasedow/android-xml [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/dbasedow/android-xml [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/dbasedow/android-xml" "work/ex/clippy-test-run/sources/stable/gh/dbasedow/android-xml"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/dbasedow/android-xml'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/dbasedow/android-xml" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/dbasedow/android-xml"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/dbasedow/android-xml'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 84c5d07f3af18aa9172c9fd85c1809f64403615e [INFO] sha for GitHub repo dbasedow/android-xml: 84c5d07f3af18aa9172c9fd85c1809f64403615e [INFO] validating manifest of dbasedow/android-xml 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 dbasedow/android-xml 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 dbasedow/android-xml [INFO] finished frobbing dbasedow/android-xml [INFO] frobbed toml for dbasedow/android-xml written to work/ex/clippy-test-run/sources/stable/gh/dbasedow/android-xml/Cargo.toml [INFO] started frobbing dbasedow/android-xml [INFO] finished frobbing dbasedow/android-xml [INFO] frobbed toml for dbasedow/android-xml written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/dbasedow/android-xml/Cargo.toml [INFO] crate dbasedow/android-xml 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 dbasedow/android-xml 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/gh/dbasedow/android-xml:/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] 10c5c827589c94eadd0ba07773c137872d5dae5fdd00f950a6fe3aca4ad88f2f [INFO] running `"docker" "start" "-a" "10c5c827589c94eadd0ba07773c137872d5dae5fdd00f950a6fe3aca4ad88f2f"` [INFO] [stderr] Checking nom v3.2.1 [INFO] [stderr] Checking android-xml v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> src/main.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `is_binary_xml` [INFO] [stderr] --> src/main.rs:4:21 [INFO] [stderr] | [INFO] [stderr] 4 | use crate::parser::{is_binary_xml, XmlElementStream, XmlEvent}; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::resources::resources::parse_resource_table` [INFO] [stderr] --> src/main.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use crate::resources::resources::parse_resource_table; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `nom::IResult` [INFO] [stderr] --> src/main.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use nom::IResult; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fs::File` [INFO] [stderr] --> src/main.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use std::fs::File; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::Read` [INFO] [stderr] --> src/main.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use std::io::Read; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashSet` [INFO] [stderr] --> src/main.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | use std::collections::HashSet; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fs::File` [INFO] [stderr] --> src/apk.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use std::fs::File; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::Seek` [INFO] [stderr] --> src/apk.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use std::io::Seek; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::iter::Map` [INFO] [stderr] --> src/apk.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use std::iter::Map; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/stringpool.rs:59:9 [INFO] [stderr] | [INFO] [stderr] 59 | return IResult::Done(&input[2..], result); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `IResult::Done(&input[2..], result)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/stringpool.rs:61:9 [INFO] [stderr] | [INFO] [stderr] 61 | return IResult::Done(&input[1..], input[0] as usize); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `IResult::Done(&input[1..], input[0] as usize)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fs::File` [INFO] [stderr] --> src/zip/archive.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use std::fs::File; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Open` [INFO] [stderr] --> src/zip/archive.rs:5:22 [INFO] [stderr] | [INFO] [stderr] 5 | use crate::zip::io::{Open, FileReader}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::borrow::Cow` [INFO] [stderr] --> src/zip/archive.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use std::borrow::Cow; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: operator precedence can trip the unwary [INFO] [stderr] --> src/zip/archive.rs:41:27 [INFO] [stderr] | [INFO] [stderr] 41 | let comment_len = buf[comment_len_pos] as usize + (buf[comment_len_pos + 1] as usize) << 8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider parenthesizing your expression: `(buf[comment_len_pos] as usize + (buf[comment_len_pos + 1] as usize)) << 8` [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: unused import: `std::borrow::Cow` [INFO] [stderr] --> src/zip/parser.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use std::borrow::Cow; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/resources/mod.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | pub mod resources; [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: unused import: `TypedValue` [INFO] [stderr] --> src/resources/resources.rs:5:42 [INFO] [stderr] | [INFO] [stderr] 5 | use crate::typedvalue::{parse_res_value, TypedValue}; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashSet` [INFO] [stderr] --> src/resources/resources.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::collections::HashSet; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/resources/resources.rs:335:12 [INFO] [stderr] | [INFO] [stderr] 335 | ((id & 0x00ff0000) >> 16) as u8 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x00ff_0000` [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/resources/resources.rs:394:27 [INFO] [stderr] | [INFO] [stderr] 394 | let index = (id & 0x0000ffff) as usize; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_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/resources/resources.rs:409:27 [INFO] [stderr] | [INFO] [stderr] 409 | let index = (id & 0x0000ffff) as usize; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_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/resources/resources.rs:441:26 [INFO] [stderr] | [INFO] [stderr] 441 | let index = id & 0x0000ffff; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_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: unused import: `nom::*` [INFO] [stderr] --> src/resources/config_qualifiers.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use nom::*; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::resources::resources::convert_zero_terminated_u8` [INFO] [stderr] --> src/resources/config_qualifiers.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use crate::resources::resources::convert_zero_terminated_u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `match` head expression [INFO] [stderr] --> src/resources/config_qualifiers.rs:640:15 [INFO] [stderr] | [INFO] [stderr] 640 | match (color_mode & 0x03) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> src/main.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `is_binary_xml` [INFO] [stderr] --> src/main.rs:4:21 [INFO] [stderr] | [INFO] [stderr] 4 | use crate::parser::{is_binary_xml, XmlElementStream, XmlEvent}; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::resources::resources::parse_resource_table` [INFO] [stderr] --> src/main.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use crate::resources::resources::parse_resource_table; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `nom::IResult` [INFO] [stderr] --> src/main.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use nom::IResult; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fs::File` [INFO] [stderr] --> src/main.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use std::fs::File; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::Read` [INFO] [stderr] --> src/main.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use std::io::Read; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashSet` [INFO] [stderr] --> src/main.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | use std::collections::HashSet; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fs::File` [INFO] [stderr] --> src/apk.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use std::fs::File; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::Seek` [INFO] [stderr] --> src/apk.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use std::io::Seek; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::iter::Map` [INFO] [stderr] --> src/apk.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use std::iter::Map; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/stringpool.rs:59:9 [INFO] [stderr] | [INFO] [stderr] 59 | return IResult::Done(&input[2..], result); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `IResult::Done(&input[2..], result)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/stringpool.rs:61:9 [INFO] [stderr] | [INFO] [stderr] 61 | return IResult::Done(&input[1..], input[0] as usize); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `IResult::Done(&input[1..], input[0] as usize)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fs::File` [INFO] [stderr] --> src/zip/archive.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use std::fs::File; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Open` [INFO] [stderr] --> src/zip/archive.rs:5:22 [INFO] [stderr] | [INFO] [stderr] 5 | use crate::zip::io::{Open, FileReader}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::borrow::Cow` [INFO] [stderr] --> src/zip/archive.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use std::borrow::Cow; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: operator precedence can trip the unwary [INFO] [stderr] --> src/zip/archive.rs:41:27 [INFO] [stderr] | [INFO] [stderr] 41 | let comment_len = buf[comment_len_pos] as usize + (buf[comment_len_pos + 1] as usize) << 8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider parenthesizing your expression: `(buf[comment_len_pos] as usize + (buf[comment_len_pos + 1] as usize)) << 8` [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: unused import: `std::borrow::Cow` [INFO] [stderr] --> src/zip/parser.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use std::borrow::Cow; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/resources/mod.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | pub mod resources; [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: unused import: `TypedValue` [INFO] [stderr] --> src/resources/resources.rs:5:42 [INFO] [stderr] | [INFO] [stderr] 5 | use crate::typedvalue::{parse_res_value, TypedValue}; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashSet` [INFO] [stderr] --> src/resources/resources.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::collections::HashSet; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/resources/resources.rs:335:12 [INFO] [stderr] | [INFO] [stderr] 335 | ((id & 0x00ff0000) >> 16) as u8 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x00ff_0000` [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/resources/resources.rs:394:27 [INFO] [stderr] | [INFO] [stderr] 394 | let index = (id & 0x0000ffff) as usize; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_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/resources/resources.rs:409:27 [INFO] [stderr] | [INFO] [stderr] 409 | let index = (id & 0x0000ffff) as usize; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_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/resources/resources.rs:441:26 [INFO] [stderr] | [INFO] [stderr] 441 | let index = id & 0x0000ffff; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0000_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: unused import: `nom::*` [INFO] [stderr] --> src/resources/config_qualifiers.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use nom::*; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::resources::resources::convert_zero_terminated_u8` [INFO] [stderr] --> src/resources/config_qualifiers.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use crate::resources::resources::convert_zero_terminated_u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `match` head expression [INFO] [stderr] --> src/resources/config_qualifiers.rs:640:15 [INFO] [stderr] | [INFO] [stderr] 640 | match (color_mode & 0x03) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `seek_offset` [INFO] [stderr] --> src/zip/archive.rs:33:9 [INFO] [stderr] | [INFO] [stderr] 33 | let seek_offset = data.seek(SeekFrom::End(-1024))? as usize; [INFO] [stderr] | ^^^^^^^^^^^ help: consider using `_seek_offset` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pch` [INFO] [stderr] --> src/resources/resources.rs:20:21 [INFO] [stderr] | [INFO] [stderr] 20 | let (_, pch) = try_parse!(chunk.additional_header, parse_package_chunk_header); [INFO] [stderr] | ^^^ help: consider using `_pch` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `foo` [INFO] [stderr] --> src/zip/archive.rs:113:30 [INFO] [stderr] | [INFO] [stderr] 113 | if let IResult::Done(foo, res) = parser::parse_central_directory(&buf) { [INFO] [stderr] | ^^^ help: consider using `_foo` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `seek_offset` [INFO] [stderr] --> src/zip/archive.rs:33:9 [INFO] [stderr] | [INFO] [stderr] 33 | let seek_offset = data.seek(SeekFrom::End(-1024))? as usize; [INFO] [stderr] | ^^^^^^^^^^^ help: consider using `_seek_offset` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pch` [INFO] [stderr] --> src/resources/resources.rs:20:21 [INFO] [stderr] | [INFO] [stderr] 20 | let (_, pch) = try_parse!(chunk.additional_header, parse_package_chunk_header); [INFO] [stderr] | ^^^ help: consider using `_pch` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `foo` [INFO] [stderr] --> src/zip/archive.rs:113:30 [INFO] [stderr] | [INFO] [stderr] 113 | if let IResult::Done(foo, res) = parser::parse_central_directory(&buf) { [INFO] [stderr] | ^^^ help: consider using `_foo` instead [INFO] [stderr] [INFO] [stderr] warning: function is never used: `render_plain` [INFO] [stderr] --> src/main.rs:22:1 [INFO] [stderr] | [INFO] [stderr] 22 | fn render_plain(data: &[u8]) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `indent_ouput` [INFO] [stderr] --> src/main.rs:49:1 [INFO] [stderr] | [INFO] [stderr] 49 | fn indent_ouput(level: u32) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `resources` [INFO] [stderr] --> src/apk.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | resources: Option, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `file_by_name` [INFO] [stderr] --> src/apk.rs:59:5 [INFO] [stderr] | [INFO] [stderr] 59 | pub fn file_by_name(&self, name: &str) -> io::Result> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_sub_chunks` [INFO] [stderr] --> src/chunk.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | pub fn get_sub_chunks(&self) -> IResult<&[u8], Vec>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `is_binary_xml` [INFO] [stderr] --> src/parser.rs:6:1 [INFO] [stderr] | [INFO] [stderr] 6 | pub fn is_binary_xml(data: &[u8]) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `XmlElementStream` [INFO] [stderr] --> src/parser.rs:10:1 [INFO] [stderr] | [INFO] [stderr] 10 | pub struct XmlElementStream<'a> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/parser.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | pub fn new(data: &'a [u8]) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: enum is never used: `ParseError` [INFO] [stderr] --> src/parser.rs:102:1 [INFO] [stderr] | [INFO] [stderr] 102 | pub enum ParseError { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `attribute_len` [INFO] [stderr] --> src/parser.rs:166:5 [INFO] [stderr] | [INFO] [stderr] 166 | pub fn attribute_len(&self) -> usize { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `is_styled` [INFO] [stderr] --> src/stringpool.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | pub fn is_styled(&self, index: u32) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `to_string` [INFO] [stderr] --> src/typedvalue.rs:45:5 [INFO] [stderr] | [INFO] [stderr] 45 | pub fn to_string(&self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `is_reference_type` [INFO] [stderr] --> src/typedvalue.rs:66:5 [INFO] [stderr] | [INFO] [stderr] 66 | pub fn is_reference_type(&self) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `file_name` [INFO] [stderr] --> src/zip/archive.rs:76:5 [INFO] [stderr] | [INFO] [stderr] 76 | pub fn file_name(&self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `compression` [INFO] [stderr] --> src/zip/archive.rs:80:5 [INFO] [stderr] | [INFO] [stderr] 80 | pub fn compression(&self) -> Compression { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `is_utf8` [INFO] [stderr] --> src/zip/parser.rs:45:5 [INFO] [stderr] | [INFO] [stderr] 45 | pub fn is_utf8(&self) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `locale_script` [INFO] [stderr] --> src/resources/config.rs:103:5 [INFO] [stderr] | [INFO] [stderr] 103 | locale_script: String, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `locale_variant` [INFO] [stderr] --> src/resources/config.rs:104:5 [INFO] [stderr] | [INFO] [stderr] 104 | locale_variant: String, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `screen_layout2` [INFO] [stderr] --> src/resources/config.rs:106:5 [INFO] [stderr] | [INFO] [stderr] 106 | screen_layout2: u8, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `language_or_region_to_string` [INFO] [stderr] --> src/resources/config.rs:112:1 [INFO] [stderr] | [INFO] [stderr] 112 | fn language_or_region_to_string(v: u16) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `ResourceTableTypeSpec` [INFO] [stderr] --> src/resources/resources.rs:252:1 [INFO] [stderr] | [INFO] [stderr] 252 | struct ResourceTableTypeSpec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `get_configuration_dimensions` [INFO] [stderr] --> src/resources/resources.rs:318:1 [INFO] [stderr] | [INFO] [stderr] 318 | fn get_configuration_dimensions(flags: u32) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `device_config` [INFO] [stderr] --> src/resources/resources.rs:351:5 [INFO] [stderr] | [INFO] [stderr] 351 | device_config: Option, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Any` [INFO] [stderr] --> src/resources/config_qualifiers.rs:317:5 [INFO] [stderr] | [INFO] [stderr] 317 | Any, [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Some` [INFO] [stderr] --> src/resources/config_qualifiers.rs:318:5 [INFO] [stderr] | [INFO] [stderr] 318 | Some(u16), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Any` [INFO] [stderr] --> src/resources/config_qualifiers.rs:323:5 [INFO] [stderr] | [INFO] [stderr] 323 | Any, [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Some` [INFO] [stderr] --> src/resources/config_qualifiers.rs:324:5 [INFO] [stderr] | [INFO] [stderr] 324 | Some(u16), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Any` [INFO] [stderr] --> src/resources/config_qualifiers.rs:354:5 [INFO] [stderr] | [INFO] [stderr] 354 | Any, [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Some` [INFO] [stderr] --> src/resources/config_qualifiers.rs:355:5 [INFO] [stderr] | [INFO] [stderr] 355 | Some(u16), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `to_string` [INFO] [stderr] --> src/resources/config_qualifiers.rs:359:5 [INFO] [stderr] | [INFO] [stderr] 359 | fn to_string(&self) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/chunk.rs:18:12 [INFO] [stderr] | [INFO] [stderr] 18 | if self.additional_header.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.additional_header.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: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/chunk.rs:38:42 [INFO] [stderr] | [INFO] [stderr] 38 | >> data: take!((chunk_size - header_size as u32)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u32::from(header_size)` [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: length comparison to zero [INFO] [stderr] --> src/parser.rs:146:29 [INFO] [stderr] | [INFO] [stderr] 146 | let attributes = if chunk.attributes.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!chunk.attributes.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: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/parser.rs:149:22 [INFO] [stderr] | [INFO] [stderr] 149 | .into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a `u32` to a `f32` [INFO] [stderr] --> src/typedvalue.rs:29:25 [INFO] [stderr] | [INFO] [stderr] 29 | let f = mem::transmute::(typed_value.value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `f32::from_bits(typed_value.value)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_int_to_float)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_int_to_float [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/zip/io.rs:59:9 [INFO] [stderr] | [INFO] [stderr] 59 | / match self.file { [INFO] [stderr] 60 | | None => self.file = Some(File::open(self.path.as_ref())?), [INFO] [stderr] 61 | | _ => {} [INFO] [stderr] 62 | | } [INFO] [stderr] | |_________^ help: try this: `if let None = self.file { self.file = Some(File::open(self.path.as_ref())?) }` [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: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/zip/archive.rs:90:32 [INFO] [stderr] | [INFO] [stderr] 90 | r.seek(SeekFrom::Start(self.header.relative_offset_of_local_header as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.header.relative_offset_of_local_header)` [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/zip/archive.rs:97:59 [INFO] [stderr] | [INFO] [stderr] 97 | return Ok(Box::new(DeflateDecoder::new(r.take(self.header.compressed_size as u64)))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.header.compressed_size)` [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/zip/archive.rs:99:28 [INFO] [stderr] | [INFO] [stderr] 99 | Ok(Box::new(r.take(self.header.compressed_size as u64))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.header.compressed_size)` [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: use of a blacklisted/placeholder name `foo` [INFO] [stderr] --> src/zip/archive.rs:113:30 [INFO] [stderr] | [INFO] [stderr] 113 | if let IResult::Done(foo, res) = parser::parse_central_directory(&buf) { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::blacklisted_name)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blacklisted_name [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/zip/parser.rs:16:7 [INFO] [stderr] | [INFO] [stderr] 16 | ((file_name_len as i64, extra_field_len as i64)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(file_name_len)` [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 u16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/zip/parser.rs:16:29 [INFO] [stderr] | [INFO] [stderr] 16 | ((file_name_len as i64, extra_field_len as i64)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(extra_field_len)` [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: function is never used: `render_plain` [INFO] [stderr] --> src/main.rs:22:1 [INFO] [stderr] | [INFO] [stderr] 22 | fn render_plain(data: &[u8]) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `indent_ouput` [INFO] [stderr] --> src/main.rs:49:1 [INFO] [stderr] | [INFO] [stderr] 49 | fn indent_ouput(level: u32) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `resources` [INFO] [stderr] --> src/apk.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | resources: Option, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `file_by_name` [INFO] [stderr] --> src/apk.rs:59:5 [INFO] [stderr] | [INFO] [stderr] 59 | pub fn file_by_name(&self, name: &str) -> io::Result> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_sub_chunks` [INFO] [stderr] --> src/chunk.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | pub fn get_sub_chunks(&self) -> IResult<&[u8], Vec>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `is_binary_xml` [INFO] [stderr] --> src/parser.rs:6:1 [INFO] [stderr] | [INFO] [stderr] 6 | pub fn is_binary_xml(data: &[u8]) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `XmlElementStream` [INFO] [stderr] --> src/parser.rs:10:1 [INFO] [stderr] | [INFO] [stderr] 10 | pub struct XmlElementStream<'a> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/parser.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | pub fn new(data: &'a [u8]) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: enum is never used: `ParseError` [INFO] [stderr] --> src/parser.rs:102:1 [INFO] [stderr] | [INFO] [stderr] 102 | pub enum ParseError { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `attribute_len` [INFO] [stderr] --> src/parser.rs:166:5 [INFO] [stderr] | [INFO] [stderr] 166 | pub fn attribute_len(&self) -> usize { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `is_styled` [INFO] [stderr] --> src/stringpool.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | pub fn is_styled(&self, index: u32) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `to_string` [INFO] [stderr] --> src/typedvalue.rs:45:5 [INFO] [stderr] | [INFO] [stderr] 45 | pub fn to_string(&self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `is_reference_type` [INFO] [stderr] --> src/typedvalue.rs:66:5 [INFO] [stderr] | [INFO] [stderr] 66 | pub fn is_reference_type(&self) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `file_name` [INFO] [stderr] --> src/zip/archive.rs:76:5 [INFO] [stderr] | [INFO] [stderr] 76 | pub fn file_name(&self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `compression` [INFO] [stderr] --> src/zip/archive.rs:80:5 [INFO] [stderr] | [INFO] [stderr] 80 | pub fn compression(&self) -> Compression { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `is_utf8` [INFO] [stderr] --> src/zip/parser.rs:45:5 [INFO] [stderr] | [INFO] [stderr] 45 | pub fn is_utf8(&self) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `locale_script` [INFO] [stderr] --> src/resources/config.rs:103:5 [INFO] [stderr] | [INFO] [stderr] 103 | locale_script: String, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `locale_variant` [INFO] [stderr] --> src/resources/config.rs:104:5 [INFO] [stderr] | [INFO] [stderr] 104 | locale_variant: String, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `screen_layout2` [INFO] [stderr] --> src/resources/config.rs:106:5 [INFO] [stderr] | [INFO] [stderr] 106 | screen_layout2: u8, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `language_or_region_to_string` [INFO] [stderr] --> src/resources/config.rs:112:1 [INFO] [stderr] | [INFO] [stderr] 112 | fn language_or_region_to_string(v: u16) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `ResourceTableTypeSpec` [INFO] [stderr] --> src/resources/resources.rs:252:1 [INFO] [stderr] | [INFO] [stderr] 252 | struct ResourceTableTypeSpec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `get_configuration_dimensions` [INFO] [stderr] --> src/resources/resources.rs:318:1 [INFO] [stderr] | [INFO] [stderr] 318 | fn get_configuration_dimensions(flags: u32) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `device_config` [INFO] [stderr] --> src/resources/resources.rs:351:5 [INFO] [stderr] | [INFO] [stderr] 351 | device_config: Option, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Any` [INFO] [stderr] --> src/resources/config_qualifiers.rs:317:5 [INFO] [stderr] | [INFO] [stderr] 317 | Any, [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Some` [INFO] [stderr] --> src/resources/config_qualifiers.rs:318:5 [INFO] [stderr] | [INFO] [stderr] 318 | Some(u16), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Any` [INFO] [stderr] --> src/resources/config_qualifiers.rs:323:5 [INFO] [stderr] | [INFO] [stderr] 323 | Any, [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Some` [INFO] [stderr] --> src/resources/config_qualifiers.rs:324:5 [INFO] [stderr] | [INFO] [stderr] 324 | Some(u16), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Any` [INFO] [stderr] --> src/resources/config_qualifiers.rs:354:5 [INFO] [stderr] | [INFO] [stderr] 354 | Any, [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Some` [INFO] [stderr] --> src/resources/config_qualifiers.rs:355:5 [INFO] [stderr] | [INFO] [stderr] 355 | Some(u16), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `to_string` [INFO] [stderr] --> src/resources/config_qualifiers.rs:359:5 [INFO] [stderr] | [INFO] [stderr] 359 | fn to_string(&self) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/resources/config.rs:140:12 [INFO] [stderr] | [INFO] [stderr] 140 | if parts.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `parts.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/chunk.rs:18:12 [INFO] [stderr] | [INFO] [stderr] 18 | if self.additional_header.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.additional_header.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: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/chunk.rs:38:42 [INFO] [stderr] | [INFO] [stderr] 38 | >> data: take!((chunk_size - header_size as u32)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u32::from(header_size)` [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: manual implementation of an assign operation [INFO] [stderr] --> src/resources/resources.rs:326:9 [INFO] [stderr] | [INFO] [stderr] 326 | mask = mask << 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `mask <<= 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parser.rs:146:29 [INFO] [stderr] | [INFO] [stderr] 146 | let attributes = if chunk.attributes.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!chunk.attributes.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: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/parser.rs:149:22 [INFO] [stderr] | [INFO] [stderr] 149 | .into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/resources/resources.rs:390:33 [INFO] [stderr] | [INFO] [stderr] 390 | self.types.get_optional(type_index as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u32::from(type_index)` [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: called `filter(p).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(p)` instead. [INFO] [stderr] --> src/resources/resources.rs:396:35 [INFO] [stderr] | [INFO] [stderr] 396 | let first_existing = &res_type.data [INFO] [stderr] | ___________________________________^ [INFO] [stderr] 397 | | .iter() [INFO] [stderr] 398 | | .map(|d| &d.values[index]) [INFO] [stderr] 399 | | .filter(|v| v.is_some()) [INFO] [stderr] 400 | | .next(); [INFO] [stderr] | |_______________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::filter_next)] on by default [INFO] [stderr] = note: replace `filter(|v| v.is_some()).next()` with `find(|v| v.is_some())` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stderr] [INFO] [stderr] warning: transmute from a `u32` to a `f32` [INFO] [stderr] --> src/typedvalue.rs:29:25 [INFO] [stderr] | [INFO] [stderr] 29 | let f = mem::transmute::(typed_value.value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `f32::from_bits(typed_value.value)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_int_to_float)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_int_to_float [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/zip/io.rs:59:9 [INFO] [stderr] | [INFO] [stderr] 59 | / match self.file { [INFO] [stderr] 60 | | None => self.file = Some(File::open(self.path.as_ref())?), [INFO] [stderr] 61 | | _ => {} [INFO] [stderr] 62 | | } [INFO] [stderr] | |_________^ help: try this: `if let None = self.file { self.file = Some(File::open(self.path.as_ref())?) }` [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: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/zip/archive.rs:90:32 [INFO] [stderr] | [INFO] [stderr] 90 | r.seek(SeekFrom::Start(self.header.relative_offset_of_local_header as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.header.relative_offset_of_local_header)` [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/zip/archive.rs:97:59 [INFO] [stderr] | [INFO] [stderr] 97 | return Ok(Box::new(DeflateDecoder::new(r.take(self.header.compressed_size as u64)))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.header.compressed_size)` [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/zip/archive.rs:99:28 [INFO] [stderr] | [INFO] [stderr] 99 | Ok(Box::new(r.take(self.header.compressed_size as u64))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.header.compressed_size)` [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: use of a blacklisted/placeholder name `foo` [INFO] [stderr] --> src/zip/archive.rs:113:30 [INFO] [stderr] | [INFO] [stderr] 113 | if let IResult::Done(foo, res) = parser::parse_central_directory(&buf) { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::blacklisted_name)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blacklisted_name [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/zip/parser.rs:16:7 [INFO] [stderr] | [INFO] [stderr] 16 | ((file_name_len as i64, extra_field_len as i64)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(file_name_len)` [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 u16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/zip/parser.rs:16:29 [INFO] [stderr] | [INFO] [stderr] 16 | ((file_name_len as i64, extra_field_len as i64)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(extra_field_len)` [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: length comparison to zero [INFO] [stderr] --> src/resources/config.rs:140:12 [INFO] [stderr] | [INFO] [stderr] 140 | if parts.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `parts.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: manual implementation of an assign operation [INFO] [stderr] --> src/resources/resources.rs:326:9 [INFO] [stderr] | [INFO] [stderr] 326 | mask = mask << 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `mask <<= 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/resources/resources.rs:390:33 [INFO] [stderr] | [INFO] [stderr] 390 | self.types.get_optional(type_index as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u32::from(type_index)` [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: called `filter(p).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(p)` instead. [INFO] [stderr] --> src/resources/resources.rs:396:35 [INFO] [stderr] | [INFO] [stderr] 396 | let first_existing = &res_type.data [INFO] [stderr] | ___________________________________^ [INFO] [stderr] 397 | | .iter() [INFO] [stderr] 398 | | .map(|d| &d.values[index]) [INFO] [stderr] 399 | | .filter(|v| v.is_some()) [INFO] [stderr] 400 | | .next(); [INFO] [stderr] | |_______________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::filter_next)] on by default [INFO] [stderr] = note: replace `filter(|v| v.is_some()).next()` with `find(|v| v.is_some())` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 8.54s [INFO] running `"docker" "inspect" "10c5c827589c94eadd0ba07773c137872d5dae5fdd00f950a6fe3aca4ad88f2f"` [INFO] running `"docker" "rm" "-f" "10c5c827589c94eadd0ba07773c137872d5dae5fdd00f950a6fe3aca4ad88f2f"` [INFO] [stdout] 10c5c827589c94eadd0ba07773c137872d5dae5fdd00f950a6fe3aca4ad88f2f