[INFO] updating cached repository johannesvollmer/rs-exr [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/johannesvollmer/rs-exr [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/johannesvollmer/rs-exr" "work/ex/clippy-test-run/sources/stable/gh/johannesvollmer/rs-exr"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/johannesvollmer/rs-exr'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/johannesvollmer/rs-exr" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/johannesvollmer/rs-exr"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/johannesvollmer/rs-exr'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 2a0b3ed33d660b02f4598e7075ca89ecd0916936 [INFO] sha for GitHub repo johannesvollmer/rs-exr: 2a0b3ed33d660b02f4598e7075ca89ecd0916936 [INFO] validating manifest of johannesvollmer/rs-exr 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 johannesvollmer/rs-exr 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 johannesvollmer/rs-exr [INFO] finished frobbing johannesvollmer/rs-exr [INFO] frobbed toml for johannesvollmer/rs-exr written to work/ex/clippy-test-run/sources/stable/gh/johannesvollmer/rs-exr/Cargo.toml [INFO] started frobbing johannesvollmer/rs-exr [INFO] finished frobbing johannesvollmer/rs-exr [INFO] frobbed toml for johannesvollmer/rs-exr written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/johannesvollmer/rs-exr/Cargo.toml [INFO] crate johannesvollmer/rs-exr 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 johannesvollmer/rs-exr against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/johannesvollmer/rs-exr:/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] d41d4753e0fdc41905590259b96ac493c545a668679df59ee3e1dc5cc7a75d13 [INFO] running `"docker" "start" "-a" "d41d4753e0fdc41905590259b96ac493c545a668679df59ee3e1dc5cc7a75d13"` [INFO] [stderr] Checking seek_bufread v1.2.0 [INFO] [stderr] Checking half v1.2.0 [INFO] [stderr] Checking png v0.12.0 [INFO] [stderr] Checking jpeg-decoder v0.1.15 [INFO] [stderr] Checking rs-exr v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/file/meta/attributes.rs:84:27 [INFO] [stderr] | [INFO] [stderr] 84 | pub const SCAN_LINE: &'static [u8] = b"scanlineimage"; [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/file/meta/attributes.rs:85:22 [INFO] [stderr] | [INFO] [stderr] 85 | pub const TILE: &'static [u8] = b"tiledimage"; [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [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] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/file/meta/attributes.rs:87:32 [INFO] [stderr] | [INFO] [stderr] 87 | pub const DEEP_SCAN_LINE: &'static [u8] = b"deepscanline"; [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [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] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/file/meta/attributes.rs:88:27 [INFO] [stderr] | [INFO] [stderr] 88 | pub const DEEP_TILE: &'static [u8] = b"deeptile"; [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [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] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/file/meta/attributes.rs:264:37 [INFO] [stderr] | [INFO] [stderr] 264 | if is_valid { Ok(()) } else { [INFO] [stderr] | _____________________________________^ [INFO] [stderr] 265 | | if text.is_empty() { [INFO] [stderr] 266 | | Err(Invalid::Content(Value::Text, Required::Min(1)).into()) [INFO] [stderr] 267 | | } else if long_names.unwrap() { [INFO] [stderr] ... | [INFO] [stderr] 271 | | } [INFO] [stderr] 272 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 264 | if is_valid { Ok(()) } else if text.is_empty() { [INFO] [stderr] 265 | Err(Invalid::Content(Value::Text, Required::Min(1)).into()) [INFO] [stderr] 266 | } else if long_names.unwrap() { [INFO] [stderr] 267 | Err(Invalid::Content(Value::Text, Required::Max(255)).into()) [INFO] [stderr] 268 | } else { [INFO] [stderr] 269 | Err(Invalid::Content(Value::Text, Required::Max(31)).into()) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/file/meta/attributes.rs:841:33 [INFO] [stderr] | [INFO] [stderr] 841 | let level_mode = mode & 0b00001111; // wow that works [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_1111` [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: this if statement can be collapsed [INFO] [stderr] --> src/file/meta/mod.rs:354:13 [INFO] [stderr] | [INFO] [stderr] 354 | / if kind.is_tile_kind() { [INFO] [stderr] 355 | | if self.indices.tiles.is_none() { [INFO] [stderr] 356 | | return Err(Invalid::Missing(Value::Attribute("tiles (for tiledimage or deeptiles)")).into()); [INFO] [stderr] 357 | | } [INFO] [stderr] 358 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 354 | if kind.is_tile_kind() && self.indices.tiles.is_none() { [INFO] [stderr] 355 | return Err(Invalid::Missing(Value::Attribute("tiles (for tiledimage or deeptiles)")).into()); [INFO] [stderr] 356 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/file/data/compressed.rs:161:32 [INFO] [stderr] | [INFO] [stderr] 161 | const MAX_PIXEL_BYTES: usize = 1048576; // 2^20 [INFO] [stderr] | ^^^^^^^ help: consider: `1_048_576` [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/file/data/compressed.rs:484:20 [INFO] [stderr] | [INFO] [stderr] 484 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 485 | | if !is_tiled { [INFO] [stderr] 486 | | let mut scan_line_blocks = Vec::with_capacity(blocks); [INFO] [stderr] 487 | | for _ in 0..blocks { [INFO] [stderr] ... | [INFO] [stderr] 500 | | } [INFO] [stderr] 501 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 484 | } else if !is_tiled { [INFO] [stderr] 485 | let mut scan_line_blocks = Vec::with_capacity(blocks); [INFO] [stderr] 486 | for _ in 0..blocks { [INFO] [stderr] 487 | scan_line_blocks.push(ScanLineBlock::read(read)?) [INFO] [stderr] 488 | } [INFO] [stderr] 489 | [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/file/data/compressed.rs:540:16 [INFO] [stderr] | [INFO] [stderr] 540 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 541 | | if !is_tiled { [INFO] [stderr] 542 | | sender.send(ChunkUpdate::ExpectingChunks { additional: blocks }).unwrap(); [INFO] [stderr] 543 | | for _ in 0..blocks { [INFO] [stderr] ... | [INFO] [stderr] 564 | | } [INFO] [stderr] 565 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 540 | } else if !is_tiled { [INFO] [stderr] 541 | sender.send(ChunkUpdate::ExpectingChunks { additional: blocks }).unwrap(); [INFO] [stderr] 542 | for _ in 0..blocks { [INFO] [stderr] 543 | sender.send(ChunkUpdate::Chunk( [INFO] [stderr] 544 | ScanLineBlock::read(read) [INFO] [stderr] 545 | .map(|block| DynamicBlock::ScanLine(block)) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] Checking image v0.19.0 [INFO] [stderr] warning: unused variable: `write` [INFO] [stderr] --> src/image/immediate.rs:297:24 [INFO] [stderr] | [INFO] [stderr] 297 | pub fn write(write: &mut W, image: &Image) -> WriteResult { [INFO] [stderr] | ^^^^^ help: consider using `_write` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `image` [INFO] [stderr] --> src/image/immediate.rs:297:39 [INFO] [stderr] | [INFO] [stderr] 297 | pub fn write(write: &mut W, image: &Image) -> WriteResult { [INFO] [stderr] | ^^^^^ help: consider using `_image` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `decompressed` [INFO] [stderr] --> src/image/immediate.rs:235:37 [INFO] [stderr] | [INFO] [stderr] 235 | let decompressed = compression.decompress( [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using `_decompressed` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `parts` [INFO] [stderr] --> src/image/immediate.rs:276:31 [INFO] [stderr] | [INFO] [stderr] 276 | Chunks::MultiPart(parts) => unimplemented!() [INFO] [stderr] | ^^^^^ help: consider using `_parts` instead [INFO] [stderr] [INFO] [stderr] warning: field is never used: `x_levels` [INFO] [stderr] --> src/image/immediate.rs:51:5 [INFO] [stderr] | [INFO] [stderr] 51 | x_levels: usize, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: field is never used: `y_levels` [INFO] [stderr] --> src/image/immediate.rs:52:5 [INFO] [stderr] | [INFO] [stderr] 52 | y_levels: usize, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/file/meta/attributes.rs:32:5 [INFO] [stderr] | [INFO] [stderr] 32 | ChannelList(ChannelList), [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] 32 | ChannelList(Box), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: defining a method called `from_str` on this type; consider implementing the `std::str::FromStr` trait or choosing a less ambiguous name [INFO] [stderr] --> src/file/meta/attributes.rs:222:5 [INFO] [stderr] | [INFO] [stderr] 222 | / pub fn from_str(str_value: &str) -> Self { [INFO] [stderr] 223 | | debug_assert_eq!( [INFO] [stderr] 224 | | str_value.bytes().len(), str_value.chars().count(), [INFO] [stderr] 225 | | "only single-byte chars supported by open exr" // TODO is this true? [INFO] [stderr] ... | [INFO] [stderr] 228 | | Text { bytes: SmallVec::from_slice(str_value.as_bytes()) } [INFO] [stderr] 229 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/attributes.rs:266:21 [INFO] [stderr] | [INFO] [stderr] 266 | Err(Invalid::Content(Value::Text, Required::Min(1)).into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Content(Value::Text, Required::Min(1))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/attributes.rs:268:21 [INFO] [stderr] | [INFO] [stderr] 268 | Err(Invalid::Content(Value::Text, Required::Max(255)).into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Content(Value::Text, Required::Max(255))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/attributes.rs:270:21 [INFO] [stderr] | [INFO] [stderr] 270 | Err(Invalid::Content(Value::Text, Required::Max(31)).into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Content(Value::Text, Required::Max(31))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/file/meta/attributes.rs:490:22 [INFO] [stderr] | [INFO] [stderr] 490 | pub fn byte_size(&self) -> usize { [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/file/meta/attributes.rs:494:28 [INFO] [stderr] | [INFO] [stderr] 494 | pub fn write(&self, write: &mut W) -> WriteResult { [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 seem to be trying to match on a boolean expression [INFO] [stderr] --> src/file/meta/attributes.rs:543:9 [INFO] [stderr] | [INFO] [stderr] 543 | / match self.is_linear { [INFO] [stderr] 544 | | false => 0_u8, [INFO] [stderr] 545 | | true => 1_u8, [INFO] [stderr] 546 | | }.write(write)?; [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if self.is_linear { 1_u8 } else { 0_u8 }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/file/meta/attributes.rs:633:22 [INFO] [stderr] | [INFO] [stderr] 633 | pub fn byte_size(&self) -> usize { [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/file/meta/attributes.rs:675:22 [INFO] [stderr] | [INFO] [stderr] 675 | pub fn byte_size(&self) -> usize { [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/file/meta/attributes.rs:729:22 [INFO] [stderr] | [INFO] [stderr] 729 | pub fn byte_size(&self) -> usize { [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: identical conversion [INFO] [stderr] --> src/file/meta/attributes.rs:1063:22 [INFO] [stderr] | [INFO] [stderr] 1063 | _ => Err(Invalid::Type(Required::Exact("tiledesc")).into()), // TODO make these constants! [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Type(Required::Exact("tiledesc"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/attributes.rs:1070:22 [INFO] [stderr] | [INFO] [stderr] 1070 | _ => Err(Invalid::Type(Required::Exact("i32")).into()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Type(Required::Exact("i32"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/attributes.rs:1077:22 [INFO] [stderr] | [INFO] [stderr] 1077 | _ => Err(Invalid::Type(Required::Exact("box2i")).into()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Type(Required::Exact("box2i"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/attributes.rs:1084:22 [INFO] [stderr] | [INFO] [stderr] 1084 | _ => Err(Invalid::Type(Required::Exact("lineorder")).into()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Type(Required::Exact("lineorder"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/attributes.rs:1091:22 [INFO] [stderr] | [INFO] [stderr] 1091 | _ => Err(Invalid::Type(Required::Exact("compression")).into()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Type(Required::Exact("compression"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/attributes.rs:1098:22 [INFO] [stderr] | [INFO] [stderr] 1098 | _ => Err(Invalid::Type(Required::Exact("string")).into()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Type(Required::Exact("string"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/attributes.rs:1105:22 [INFO] [stderr] | [INFO] [stderr] 1105 | _ => Err(Invalid::Type(Required::Exact("chlist")).into()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Type(Required::Exact("chlist"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/attributes.rs:1112:22 [INFO] [stderr] | [INFO] [stderr] 1112 | _ => Err(Invalid::Type(Required::Exact("chromaticities")).into()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Type(Required::Exact("chromaticities"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/mod.rs:315:28 [INFO] [stderr] | [INFO] [stderr] 315 | return Err(Invalid::Missing(Value::Attribute("chunkCount (for multipart)")).into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Missing(Value::Attribute("chunkCount (for multipart)"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/mod.rs:318:28 [INFO] [stderr] | [INFO] [stderr] 318 | return Err(Invalid::Missing(Value::Attribute("type (for multipart)")).into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Missing(Value::Attribute("type (for multipart)"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/mod.rs:321:28 [INFO] [stderr] | [INFO] [stderr] 321 | return Err(Invalid::Missing(Value::Attribute("name (for multipart)")).into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Missing(Value::Attribute("name (for multipart)"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/mod.rs:327:28 [INFO] [stderr] | [INFO] [stderr] 327 | return Err(Invalid::Missing(Value::Attribute("chunkCount (for deepdata)")).into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Missing(Value::Attribute("chunkCount (for deepdata)"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/mod.rs:330:28 [INFO] [stderr] | [INFO] [stderr] 330 | return Err(Invalid::Missing(Value::Attribute("type (for deepdata)")).into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Missing(Value::Attribute("type (for deepdata)"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/mod.rs:333:28 [INFO] [stderr] | [INFO] [stderr] 333 | return Err(Invalid::Missing(Value::Attribute("name (for deepdata)")).into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Missing(Value::Attribute("name (for deepdata)"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/mod.rs:336:28 [INFO] [stderr] | [INFO] [stderr] 336 | return Err(Invalid::Missing(Value::Attribute("version (for deepdata)")).into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Missing(Value::Attribute("version (for deepdata)"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/mod.rs:346:28 [INFO] [stderr] | [INFO] [stderr] 346 | return Err(Invalid::Content( [INFO] [stderr] | ____________________________^ [INFO] [stderr] 347 | | Value::Attribute("compression (for deepdata)"), [INFO] [stderr] 348 | | Required::OneOf(&["none", "rle", "zips", "zip"]) [INFO] [stderr] 349 | | ).into()); [INFO] [stderr] | |________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] help: consider removing `.into()` [INFO] [stderr] | [INFO] [stderr] 346 | return Err(Invalid::Content( [INFO] [stderr] 347 | Value::Attribute("compression (for deepdata)"), [INFO] [stderr] 348 | Required::OneOf(&["none", "rle", "zips", "zip"]) [INFO] [stderr] 349 | )); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/mod.rs:356:32 [INFO] [stderr] | [INFO] [stderr] 356 | return Err(Invalid::Missing(Value::Attribute("tiles (for tiledimage or deeptiles)")).into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Missing(Value::Attribute("tiles (for tiledimage or deeptiles)"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/mod.rs:362:28 [INFO] [stderr] | [INFO] [stderr] 362 | return Err(Invalid::Content( [INFO] [stderr] | ____________________________^ [INFO] [stderr] 363 | | Value::Attribute("type"), [INFO] [stderr] 364 | | Required::OneOf(&["deepscanlines", "deeptiles"]) [INFO] [stderr] 365 | | ).into()); [INFO] [stderr] | |________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] help: consider removing `.into()` [INFO] [stderr] | [INFO] [stderr] 362 | return Err(Invalid::Content( [INFO] [stderr] 363 | Value::Attribute("type"), [INFO] [stderr] 364 | Required::OneOf(&["deepscanlines", "deeptiles"]) [INFO] [stderr] 365 | )); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/file/meta/mod.rs:419:37 [INFO] [stderr] | [INFO] [stderr] 419 | let mut version_and_flags = self.file_format_version as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.file_format_version)` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/file/meta/mod.rs:431:21 [INFO] [stderr] | [INFO] [stderr] 431 | pub fn validate(&self) -> Validity { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/file/meta/mod.rs:538:49 [INFO] [stderr] | [INFO] [stderr] 538 | read.seek(SeekFrom::Current(bytes_to_skip as i64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(bytes_to_skip)` [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 loop variable `i` is only used to index `headers`. [INFO] [stderr] --> src/file/meta/mod.rs:727:14 [INFO] [stderr] | [INFO] [stderr] 727 | for i in 0..headers.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 727 | for in &headers { [INFO] [stderr] | ^^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/file/data/compression/zip.rs:24:57 [INFO] [stderr] | [INFO] [stderr] 24 | pub fn decompress_bytes(target: UncompressedData, data: &CompressedData, line_size: usize) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/file/data/compression/rle.rs:33:63 [INFO] [stderr] | [INFO] [stderr] 33 | pub fn decompress_bytes(target: UncompressedData, compressed: &CompressedData, line_size: usize) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: casting i8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/file/data/compression/rle.rs:38:21 [INFO] [stderr] | [INFO] [stderr] 38 | let count = take_1(&mut remaining)? as i8 as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(take_1(&mut remaining)? as i8)` [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: an inclusive range would be more readable [INFO] [stderr] --> src/file/data/compression/rle.rs:48:22 [INFO] [stderr] | [INFO] [stderr] 48 | for _ in 0..count + 1 { // TODO memset? [INFO] [stderr] | ^^^^^^^^^^^^ help: use: `0..=count` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/file/data/compression/mod.rs:148:15 [INFO] [stderr] | [INFO] [stderr] 148 | data: &CompressedData, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/file/data/compression/mod.rs:190:55 [INFO] [stderr] | [INFO] [stderr] 190 | pub fn unpack(mut target: UncompressedData, data: &CompressedData, line_size: usize) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/file/data/compression/mod.rs:200:25 [INFO] [stderr] | [INFO] [stderr] 200 | for ref mut channel in scan_line_channels.iter_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ----------------------------- help: try: `let channel = &mut scan_line_channels.iter_mut();` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/file/data/compression/mod.rs:243:25 [INFO] [stderr] | [INFO] [stderr] 243 | for ref mut channel in tile_channels.iter_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ------------------------ help: try: `let channel = &mut tile_channels.iter_mut();` [INFO] [stderr] | [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: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/file/data/compression/mod.rs:371:30 [INFO] [stderr] | [INFO] [stderr] 371 | buffer[index] = (buffer[index-1] as i32 + buffer[index] as i32 - 128) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(buffer[index-1])` [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 u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/file/data/compression/mod.rs:371:55 [INFO] [stderr] | [INFO] [stderr] 371 | buffer[index] = (buffer[index-1] as i32 + buffer[index] as i32 - 128) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(buffer[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: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/file/data/compression/mod.rs:378:30 [INFO] [stderr] | [INFO] [stderr] 378 | buffer[index] = (buffer[index] as i32 - buffer[index-1] as i32 + 128 + 256) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(buffer[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: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/file/data/compression/mod.rs:378:53 [INFO] [stderr] | [INFO] [stderr] 378 | buffer[index] = (buffer[index] as i32 - buffer[index-1] as i32 + 128 + 256) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(buffer[index-1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/file/data/compressed.rs:166:9 [INFO] [stderr] | [INFO] [stderr] 166 | / if let &ParsedText::ScanLine = header.kind().expect("check failed: header kind missing") { [INFO] [stderr] 167 | | Ok(()) [INFO] [stderr] 168 | | [INFO] [stderr] 169 | | } else { [INFO] [stderr] 170 | | // TODO make these string literals constants! [INFO] [stderr] 171 | | Err(Invalid::Content(Value::Attribute("type"), Required::Exact("scanlineimage")).into()) [INFO] [stderr] 172 | | } [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] 166 | if let ParsedText::ScanLine = *header.kind().expect("check failed: header kind missing") { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/data/compressed.rs:171:17 [INFO] [stderr] | [INFO] [stderr] 171 | Err(Invalid::Content(Value::Attribute("type"), Required::Exact("scanlineimage")).into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Content(Value::Attribute("type"), Required::Exact("scanlineimage"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/file/data/compressed.rs:203:9 [INFO] [stderr] | [INFO] [stderr] 203 | / if let &ParsedText::Tile = header.kind().expect("check failed: header kind missing") { [INFO] [stderr] 204 | | Ok(()) [INFO] [stderr] 205 | | [INFO] [stderr] 206 | | } else { [INFO] [stderr] 207 | | Err(Invalid::Content(Value::Attribute("type"), Required::Exact("tiledimage")).into()) [INFO] [stderr] 208 | | } [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] 203 | if let ParsedText::Tile = *header.kind().expect("check failed: header kind missing") { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/data/compressed.rs:207:17 [INFO] [stderr] | [INFO] [stderr] 207 | Err(Invalid::Content(Value::Attribute("type"), Required::Exact("tiledimage")).into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Content(Value::Attribute("type"), Required::Exact("tiledimage"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/file/data/compressed.rs:239:9 [INFO] [stderr] | [INFO] [stderr] 239 | / if let &ParsedText::DeepScanLine = header.kind().expect("check failed: header kind missing") { [INFO] [stderr] 240 | | Ok(()) [INFO] [stderr] 241 | | [INFO] [stderr] 242 | | } else { [INFO] [stderr] 243 | | Err(Invalid::Content(Value::Attribute("type"), Required::Exact("deepscanline")).into()) [INFO] [stderr] 244 | | } [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] 239 | if let ParsedText::DeepScanLine = *header.kind().expect("check failed: header kind missing") { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/data/compressed.rs:243:17 [INFO] [stderr] | [INFO] [stderr] 243 | Err(Invalid::Content(Value::Attribute("type"), Required::Exact("deepscanline")).into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Content(Value::Attribute("type"), Required::Exact("deepscanline"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/file/data/compressed.rs:285:9 [INFO] [stderr] | [INFO] [stderr] 285 | / if let &ParsedText::DeepTile = header.kind().expect("check failed: header kind missing") { [INFO] [stderr] 286 | | Ok(()) [INFO] [stderr] 287 | | [INFO] [stderr] 288 | | } else { [INFO] [stderr] 289 | | Err(Invalid::Content(Value::Attribute("type"), Required::Exact("deeptile")).into()) [INFO] [stderr] 290 | | } [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] 285 | if let ParsedText::DeepTile = *header.kind().expect("check failed: header kind missing") { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/data/compressed.rs:289:17 [INFO] [stderr] | [INFO] [stderr] 289 | Err(Invalid::Content(Value::Attribute("type"), Required::Exact("deeptile")).into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Content(Value::Attribute("type"), Required::Exact("deeptile"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/file/data/compressed.rs:363:14 [INFO] [stderr] | [INFO] [stderr] 363 | .ok_or(Invalid::Content(Value::Chunk("part index"), Required::Range { min:0, max: meta_data.headers.len() }))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| Invalid::Content(Value::Chunk("part index"), Required::Range { min:0, max: meta_data.headers.len() }))` [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: redundant closure found [INFO] [stderr] --> src/file/data/compressed.rs:546:34 [INFO] [stderr] | [INFO] [stderr] 546 | .map(|block| DynamicBlock::ScanLine(block)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `DynamicBlock::ScanLine` [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/file/data/compressed.rs:558:34 [INFO] [stderr] | [INFO] [stderr] 558 | .map(|block| DynamicBlock::Tile(block)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `DynamicBlock::Tile` [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: large size difference between variants [INFO] [stderr] --> src/file/data/compressed.rs:581:5 [INFO] [stderr] | [INFO] [stderr] 581 | Finished(MetaData), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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] 581 | Finished(Box), [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/image/immediate.rs:45:5 [INFO] [stderr] | [INFO] [stderr] 45 | Mip(SmallVec<[PartData; 16]>), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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] 45 | Mip(Box>), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/file/meta/attributes.rs:84:27 [INFO] [stderr] | [INFO] [stderr] 84 | pub const SCAN_LINE: &'static [u8] = b"scanlineimage"; [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/file/meta/attributes.rs:85:22 [INFO] [stderr] | [INFO] [stderr] 85 | pub const TILE: &'static [u8] = b"tiledimage"; [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [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] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/file/meta/attributes.rs:87:32 [INFO] [stderr] | [INFO] [stderr] 87 | pub const DEEP_SCAN_LINE: &'static [u8] = b"deepscanline"; [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [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] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/file/meta/attributes.rs:88:27 [INFO] [stderr] | [INFO] [stderr] 88 | pub const DEEP_TILE: &'static [u8] = b"deeptile"; [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [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] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/file/meta/attributes.rs:264:37 [INFO] [stderr] | [INFO] [stderr] 264 | if is_valid { Ok(()) } else { [INFO] [stderr] | _____________________________________^ [INFO] [stderr] 265 | | if text.is_empty() { [INFO] [stderr] 266 | | Err(Invalid::Content(Value::Text, Required::Min(1)).into()) [INFO] [stderr] 267 | | } else if long_names.unwrap() { [INFO] [stderr] ... | [INFO] [stderr] 271 | | } [INFO] [stderr] 272 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 264 | if is_valid { Ok(()) } else if text.is_empty() { [INFO] [stderr] 265 | Err(Invalid::Content(Value::Text, Required::Min(1)).into()) [INFO] [stderr] 266 | } else if long_names.unwrap() { [INFO] [stderr] 267 | Err(Invalid::Content(Value::Text, Required::Max(255)).into()) [INFO] [stderr] 268 | } else { [INFO] [stderr] 269 | Err(Invalid::Content(Value::Text, Required::Max(31)).into()) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/file/meta/attributes.rs:841:33 [INFO] [stderr] | [INFO] [stderr] 841 | let level_mode = mode & 0b00001111; // wow that works [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_1111` [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/file/meta/attributes.rs:1284:25 [INFO] [stderr] | [INFO] [stderr] 1284 | x_size: 4294967294, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `4_294_967_294` [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/file/meta/attributes.rs:1285:25 [INFO] [stderr] | [INFO] [stderr] 1285 | y_size: 4294967295, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `4_294_967_295` [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/file/meta/attributes.rs:1313:44 [INFO] [stderr] | [INFO] [stderr] 1313 | value: AttributeValue::F64(9.114939599234), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider: `9.114_939_599_234` [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/file/meta/attributes.rs:1321:28 [INFO] [stderr] | [INFO] [stderr] 1321 | y_max: 3.12425926538, [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider: `3.124_259_265_38` [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: this if statement can be collapsed [INFO] [stderr] --> src/file/meta/mod.rs:354:13 [INFO] [stderr] | [INFO] [stderr] 354 | / if kind.is_tile_kind() { [INFO] [stderr] 355 | | if self.indices.tiles.is_none() { [INFO] [stderr] 356 | | return Err(Invalid::Missing(Value::Attribute("tiles (for tiledimage or deeptiles)")).into()); [INFO] [stderr] 357 | | } [INFO] [stderr] 358 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 354 | if kind.is_tile_kind() && self.indices.tiles.is_none() { [INFO] [stderr] 355 | return Err(Invalid::Missing(Value::Attribute("tiles (for tiledimage or deeptiles)")).into()); [INFO] [stderr] 356 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/file/data/compressed.rs:161:32 [INFO] [stderr] | [INFO] [stderr] 161 | const MAX_PIXEL_BYTES: usize = 1048576; // 2^20 [INFO] [stderr] | ^^^^^^^ help: consider: `1_048_576` [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/file/data/compressed.rs:484:20 [INFO] [stderr] | [INFO] [stderr] 484 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 485 | | if !is_tiled { [INFO] [stderr] 486 | | let mut scan_line_blocks = Vec::with_capacity(blocks); [INFO] [stderr] 487 | | for _ in 0..blocks { [INFO] [stderr] ... | [INFO] [stderr] 500 | | } [INFO] [stderr] 501 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 484 | } else if !is_tiled { [INFO] [stderr] 485 | let mut scan_line_blocks = Vec::with_capacity(blocks); [INFO] [stderr] 486 | for _ in 0..blocks { [INFO] [stderr] 487 | scan_line_blocks.push(ScanLineBlock::read(read)?) [INFO] [stderr] 488 | } [INFO] [stderr] 489 | [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/file/data/compressed.rs:540:16 [INFO] [stderr] | [INFO] [stderr] 540 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 541 | | if !is_tiled { [INFO] [stderr] 542 | | sender.send(ChunkUpdate::ExpectingChunks { additional: blocks }).unwrap(); [INFO] [stderr] 543 | | for _ in 0..blocks { [INFO] [stderr] ... | [INFO] [stderr] 564 | | } [INFO] [stderr] 565 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 540 | } else if !is_tiled { [INFO] [stderr] 541 | sender.send(ChunkUpdate::ExpectingChunks { additional: blocks }).unwrap(); [INFO] [stderr] 542 | for _ in 0..blocks { [INFO] [stderr] 543 | sender.send(ChunkUpdate::Chunk( [INFO] [stderr] 544 | ScanLineBlock::read(read) [INFO] [stderr] 545 | .map(|block| DynamicBlock::ScanLine(block)) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unused variable: `write` [INFO] [stderr] --> src/image/immediate.rs:297:24 [INFO] [stderr] | [INFO] [stderr] 297 | pub fn write(write: &mut W, image: &Image) -> WriteResult { [INFO] [stderr] | ^^^^^ help: consider using `_write` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `image` [INFO] [stderr] --> src/image/immediate.rs:297:39 [INFO] [stderr] | [INFO] [stderr] 297 | pub fn write(write: &mut W, image: &Image) -> WriteResult { [INFO] [stderr] | ^^^^^ help: consider using `_image` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `decompressed` [INFO] [stderr] --> src/image/immediate.rs:235:37 [INFO] [stderr] | [INFO] [stderr] 235 | let decompressed = compression.decompress( [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using `_decompressed` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `parts` [INFO] [stderr] --> src/image/immediate.rs:276:31 [INFO] [stderr] | [INFO] [stderr] 276 | Chunks::MultiPart(parts) => unimplemented!() [INFO] [stderr] | ^^^^^ help: consider using `_parts` instead [INFO] [stderr] [INFO] [stderr] warning: field is never used: `x_levels` [INFO] [stderr] --> src/image/immediate.rs:51:5 [INFO] [stderr] | [INFO] [stderr] 51 | x_levels: usize, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: field is never used: `y_levels` [INFO] [stderr] --> src/image/immediate.rs:52:5 [INFO] [stderr] | [INFO] [stderr] 52 | y_levels: usize, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/file/meta/attributes.rs:32:5 [INFO] [stderr] | [INFO] [stderr] 32 | ChannelList(ChannelList), [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] 32 | ChannelList(Box), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: defining a method called `from_str` on this type; consider implementing the `std::str::FromStr` trait or choosing a less ambiguous name [INFO] [stderr] --> src/file/meta/attributes.rs:222:5 [INFO] [stderr] | [INFO] [stderr] 222 | / pub fn from_str(str_value: &str) -> Self { [INFO] [stderr] 223 | | debug_assert_eq!( [INFO] [stderr] 224 | | str_value.bytes().len(), str_value.chars().count(), [INFO] [stderr] 225 | | "only single-byte chars supported by open exr" // TODO is this true? [INFO] [stderr] ... | [INFO] [stderr] 228 | | Text { bytes: SmallVec::from_slice(str_value.as_bytes()) } [INFO] [stderr] 229 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/attributes.rs:266:21 [INFO] [stderr] | [INFO] [stderr] 266 | Err(Invalid::Content(Value::Text, Required::Min(1)).into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Content(Value::Text, Required::Min(1))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/attributes.rs:268:21 [INFO] [stderr] | [INFO] [stderr] 268 | Err(Invalid::Content(Value::Text, Required::Max(255)).into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Content(Value::Text, Required::Max(255))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/attributes.rs:270:21 [INFO] [stderr] | [INFO] [stderr] 270 | Err(Invalid::Content(Value::Text, Required::Max(31)).into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Content(Value::Text, Required::Max(31))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/file/meta/attributes.rs:490:22 [INFO] [stderr] | [INFO] [stderr] 490 | pub fn byte_size(&self) -> usize { [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/file/meta/attributes.rs:494:28 [INFO] [stderr] | [INFO] [stderr] 494 | pub fn write(&self, write: &mut W) -> WriteResult { [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 seem to be trying to match on a boolean expression [INFO] [stderr] --> src/file/meta/attributes.rs:543:9 [INFO] [stderr] | [INFO] [stderr] 543 | / match self.is_linear { [INFO] [stderr] 544 | | false => 0_u8, [INFO] [stderr] 545 | | true => 1_u8, [INFO] [stderr] 546 | | }.write(write)?; [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if self.is_linear { 1_u8 } else { 0_u8 }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/file/meta/attributes.rs:633:22 [INFO] [stderr] | [INFO] [stderr] 633 | pub fn byte_size(&self) -> usize { [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/file/meta/attributes.rs:675:22 [INFO] [stderr] | [INFO] [stderr] 675 | pub fn byte_size(&self) -> usize { [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/file/meta/attributes.rs:729:22 [INFO] [stderr] | [INFO] [stderr] 729 | pub fn byte_size(&self) -> usize { [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: identical conversion [INFO] [stderr] --> src/file/meta/attributes.rs:1063:22 [INFO] [stderr] | [INFO] [stderr] 1063 | _ => Err(Invalid::Type(Required::Exact("tiledesc")).into()), // TODO make these constants! [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Type(Required::Exact("tiledesc"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/attributes.rs:1070:22 [INFO] [stderr] | [INFO] [stderr] 1070 | _ => Err(Invalid::Type(Required::Exact("i32")).into()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Type(Required::Exact("i32"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/attributes.rs:1077:22 [INFO] [stderr] | [INFO] [stderr] 1077 | _ => Err(Invalid::Type(Required::Exact("box2i")).into()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Type(Required::Exact("box2i"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/attributes.rs:1084:22 [INFO] [stderr] | [INFO] [stderr] 1084 | _ => Err(Invalid::Type(Required::Exact("lineorder")).into()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Type(Required::Exact("lineorder"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/attributes.rs:1091:22 [INFO] [stderr] | [INFO] [stderr] 1091 | _ => Err(Invalid::Type(Required::Exact("compression")).into()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Type(Required::Exact("compression"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/attributes.rs:1098:22 [INFO] [stderr] | [INFO] [stderr] 1098 | _ => Err(Invalid::Type(Required::Exact("string")).into()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Type(Required::Exact("string"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/attributes.rs:1105:22 [INFO] [stderr] | [INFO] [stderr] 1105 | _ => Err(Invalid::Type(Required::Exact("chlist")).into()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Type(Required::Exact("chlist"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/attributes.rs:1112:22 [INFO] [stderr] | [INFO] [stderr] 1112 | _ => Err(Invalid::Type(Required::Exact("chromaticities")).into()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Type(Required::Exact("chromaticities"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: float has excessive precision [INFO] [stderr] --> src/file/meta/attributes.rs:1321:28 [INFO] [stderr] | [INFO] [stderr] 1321 | y_max: 3.12425926538, [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider changing the type or truncating it to: `3.124_259_2` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::excessive_precision)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#excessive_precision [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/mod.rs:315:28 [INFO] [stderr] | [INFO] [stderr] 315 | return Err(Invalid::Missing(Value::Attribute("chunkCount (for multipart)")).into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Missing(Value::Attribute("chunkCount (for multipart)"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/mod.rs:318:28 [INFO] [stderr] | [INFO] [stderr] 318 | return Err(Invalid::Missing(Value::Attribute("type (for multipart)")).into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Missing(Value::Attribute("type (for multipart)"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/mod.rs:321:28 [INFO] [stderr] | [INFO] [stderr] 321 | return Err(Invalid::Missing(Value::Attribute("name (for multipart)")).into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Missing(Value::Attribute("name (for multipart)"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/mod.rs:327:28 [INFO] [stderr] | [INFO] [stderr] 327 | return Err(Invalid::Missing(Value::Attribute("chunkCount (for deepdata)")).into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Missing(Value::Attribute("chunkCount (for deepdata)"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/mod.rs:330:28 [INFO] [stderr] | [INFO] [stderr] 330 | return Err(Invalid::Missing(Value::Attribute("type (for deepdata)")).into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Missing(Value::Attribute("type (for deepdata)"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/mod.rs:333:28 [INFO] [stderr] | [INFO] [stderr] 333 | return Err(Invalid::Missing(Value::Attribute("name (for deepdata)")).into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Missing(Value::Attribute("name (for deepdata)"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/mod.rs:336:28 [INFO] [stderr] | [INFO] [stderr] 336 | return Err(Invalid::Missing(Value::Attribute("version (for deepdata)")).into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Missing(Value::Attribute("version (for deepdata)"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/mod.rs:346:28 [INFO] [stderr] | [INFO] [stderr] 346 | return Err(Invalid::Content( [INFO] [stderr] | ____________________________^ [INFO] [stderr] 347 | | Value::Attribute("compression (for deepdata)"), [INFO] [stderr] 348 | | Required::OneOf(&["none", "rle", "zips", "zip"]) [INFO] [stderr] 349 | | ).into()); [INFO] [stderr] | |________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] help: consider removing `.into()` [INFO] [stderr] | [INFO] [stderr] 346 | return Err(Invalid::Content( [INFO] [stderr] 347 | Value::Attribute("compression (for deepdata)"), [INFO] [stderr] 348 | Required::OneOf(&["none", "rle", "zips", "zip"]) [INFO] [stderr] 349 | )); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/mod.rs:356:32 [INFO] [stderr] | [INFO] [stderr] 356 | return Err(Invalid::Missing(Value::Attribute("tiles (for tiledimage or deeptiles)")).into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Missing(Value::Attribute("tiles (for tiledimage or deeptiles)"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/meta/mod.rs:362:28 [INFO] [stderr] | [INFO] [stderr] 362 | return Err(Invalid::Content( [INFO] [stderr] | ____________________________^ [INFO] [stderr] 363 | | Value::Attribute("type"), [INFO] [stderr] 364 | | Required::OneOf(&["deepscanlines", "deeptiles"]) [INFO] [stderr] 365 | | ).into()); [INFO] [stderr] | |________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] help: consider removing `.into()` [INFO] [stderr] | [INFO] [stderr] 362 | return Err(Invalid::Content( [INFO] [stderr] 363 | Value::Attribute("type"), [INFO] [stderr] 364 | Required::OneOf(&["deepscanlines", "deeptiles"]) [INFO] [stderr] 365 | )); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/file/meta/mod.rs:419:37 [INFO] [stderr] | [INFO] [stderr] 419 | let mut version_and_flags = self.file_format_version as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.file_format_version)` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/file/meta/mod.rs:431:21 [INFO] [stderr] | [INFO] [stderr] 431 | pub fn validate(&self) -> Validity { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/file/meta/mod.rs:538:49 [INFO] [stderr] | [INFO] [stderr] 538 | read.seek(SeekFrom::Current(bytes_to_skip as i64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(bytes_to_skip)` [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 loop variable `i` is only used to index `headers`. [INFO] [stderr] --> src/file/meta/mod.rs:727:14 [INFO] [stderr] | [INFO] [stderr] 727 | for i in 0..headers.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 727 | for in &headers { [INFO] [stderr] | ^^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/file/data/compression/zip.rs:24:57 [INFO] [stderr] | [INFO] [stderr] 24 | pub fn decompress_bytes(target: UncompressedData, data: &CompressedData, line_size: usize) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/file/data/compression/rle.rs:33:63 [INFO] [stderr] | [INFO] [stderr] 33 | pub fn decompress_bytes(target: UncompressedData, compressed: &CompressedData, line_size: usize) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: casting i8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/file/data/compression/rle.rs:38:21 [INFO] [stderr] | [INFO] [stderr] 38 | let count = take_1(&mut remaining)? as i8 as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(take_1(&mut remaining)? as i8)` [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: an inclusive range would be more readable [INFO] [stderr] --> src/file/data/compression/rle.rs:48:22 [INFO] [stderr] | [INFO] [stderr] 48 | for _ in 0..count + 1 { // TODO memset? [INFO] [stderr] | ^^^^^^^^^^^^ help: use: `0..=count` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/file/data/compression/mod.rs:148:15 [INFO] [stderr] | [INFO] [stderr] 148 | data: &CompressedData, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/file/data/compression/mod.rs:190:55 [INFO] [stderr] | [INFO] [stderr] 190 | pub fn unpack(mut target: UncompressedData, data: &CompressedData, line_size: usize) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/file/data/compression/mod.rs:200:25 [INFO] [stderr] | [INFO] [stderr] 200 | for ref mut channel in scan_line_channels.iter_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ----------------------------- help: try: `let channel = &mut scan_line_channels.iter_mut();` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/file/data/compression/mod.rs:243:25 [INFO] [stderr] | [INFO] [stderr] 243 | for ref mut channel in tile_channels.iter_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ------------------------ help: try: `let channel = &mut tile_channels.iter_mut();` [INFO] [stderr] | [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: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/file/data/compression/mod.rs:371:30 [INFO] [stderr] | [INFO] [stderr] 371 | buffer[index] = (buffer[index-1] as i32 + buffer[index] as i32 - 128) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(buffer[index-1])` [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 u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/file/data/compression/mod.rs:371:55 [INFO] [stderr] | [INFO] [stderr] 371 | buffer[index] = (buffer[index-1] as i32 + buffer[index] as i32 - 128) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(buffer[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: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/file/data/compression/mod.rs:378:30 [INFO] [stderr] | [INFO] [stderr] 378 | buffer[index] = (buffer[index] as i32 - buffer[index-1] as i32 + 128 + 256) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(buffer[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: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/file/data/compression/mod.rs:378:53 [INFO] [stderr] | [INFO] [stderr] 378 | buffer[index] = (buffer[index] as i32 - buffer[index-1] as i32 + 128 + 256) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(buffer[index-1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/file/data/compressed.rs:166:9 [INFO] [stderr] | [INFO] [stderr] 166 | / if let &ParsedText::ScanLine = header.kind().expect("check failed: header kind missing") { [INFO] [stderr] 167 | | Ok(()) [INFO] [stderr] 168 | | [INFO] [stderr] 169 | | } else { [INFO] [stderr] 170 | | // TODO make these string literals constants! [INFO] [stderr] 171 | | Err(Invalid::Content(Value::Attribute("type"), Required::Exact("scanlineimage")).into()) [INFO] [stderr] 172 | | } [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] 166 | if let ParsedText::ScanLine = *header.kind().expect("check failed: header kind missing") { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/data/compressed.rs:171:17 [INFO] [stderr] | [INFO] [stderr] 171 | Err(Invalid::Content(Value::Attribute("type"), Required::Exact("scanlineimage")).into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Content(Value::Attribute("type"), Required::Exact("scanlineimage"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/file/data/compressed.rs:203:9 [INFO] [stderr] | [INFO] [stderr] 203 | / if let &ParsedText::Tile = header.kind().expect("check failed: header kind missing") { [INFO] [stderr] 204 | | Ok(()) [INFO] [stderr] 205 | | [INFO] [stderr] 206 | | } else { [INFO] [stderr] 207 | | Err(Invalid::Content(Value::Attribute("type"), Required::Exact("tiledimage")).into()) [INFO] [stderr] 208 | | } [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] 203 | if let ParsedText::Tile = *header.kind().expect("check failed: header kind missing") { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/data/compressed.rs:207:17 [INFO] [stderr] | [INFO] [stderr] 207 | Err(Invalid::Content(Value::Attribute("type"), Required::Exact("tiledimage")).into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Content(Value::Attribute("type"), Required::Exact("tiledimage"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/file/data/compressed.rs:239:9 [INFO] [stderr] | [INFO] [stderr] 239 | / if let &ParsedText::DeepScanLine = header.kind().expect("check failed: header kind missing") { [INFO] [stderr] 240 | | Ok(()) [INFO] [stderr] 241 | | [INFO] [stderr] 242 | | } else { [INFO] [stderr] 243 | | Err(Invalid::Content(Value::Attribute("type"), Required::Exact("deepscanline")).into()) [INFO] [stderr] 244 | | } [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] 239 | if let ParsedText::DeepScanLine = *header.kind().expect("check failed: header kind missing") { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/data/compressed.rs:243:17 [INFO] [stderr] | [INFO] [stderr] 243 | Err(Invalid::Content(Value::Attribute("type"), Required::Exact("deepscanline")).into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Content(Value::Attribute("type"), Required::Exact("deepscanline"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/file/data/compressed.rs:285:9 [INFO] [stderr] | [INFO] [stderr] 285 | / if let &ParsedText::DeepTile = header.kind().expect("check failed: header kind missing") { [INFO] [stderr] 286 | | Ok(()) [INFO] [stderr] 287 | | [INFO] [stderr] 288 | | } else { [INFO] [stderr] 289 | | Err(Invalid::Content(Value::Attribute("type"), Required::Exact("deeptile")).into()) [INFO] [stderr] 290 | | } [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] 285 | if let ParsedText::DeepTile = *header.kind().expect("check failed: header kind missing") { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/file/data/compressed.rs:289:17 [INFO] [stderr] | [INFO] [stderr] 289 | Err(Invalid::Content(Value::Attribute("type"), Required::Exact("deeptile")).into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Invalid::Content(Value::Attribute("type"), Required::Exact("deeptile"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/file/data/compressed.rs:363:14 [INFO] [stderr] | [INFO] [stderr] 363 | .ok_or(Invalid::Content(Value::Chunk("part index"), Required::Range { min:0, max: meta_data.headers.len() }))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| Invalid::Content(Value::Chunk("part index"), Required::Range { min:0, max: meta_data.headers.len() }))` [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: redundant closure found [INFO] [stderr] --> src/file/data/compressed.rs:546:34 [INFO] [stderr] | [INFO] [stderr] 546 | .map(|block| DynamicBlock::ScanLine(block)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `DynamicBlock::ScanLine` [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/file/data/compressed.rs:558:34 [INFO] [stderr] | [INFO] [stderr] 558 | .map(|block| DynamicBlock::Tile(block)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `DynamicBlock::Tile` [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: large size difference between variants [INFO] [stderr] --> src/file/data/compressed.rs:581:5 [INFO] [stderr] | [INFO] [stderr] 581 | Finished(MetaData), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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] 581 | Finished(Box), [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/image/immediate.rs:45:5 [INFO] [stderr] | [INFO] [stderr] 45 | Mip(SmallVec<[PartData; 16]>), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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] 45 | Mip(Box>), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:102:49 [INFO] [stderr] | [INFO] [stderr] 102 | let millis = elapsed.as_secs() * 1000 + elapsed.subsec_millis() as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(elapsed.subsec_millis())` [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] Finished dev [unoptimized + debuginfo] target(s) in 12.63s [INFO] running `"docker" "inspect" "d41d4753e0fdc41905590259b96ac493c545a668679df59ee3e1dc5cc7a75d13"` [INFO] running `"docker" "rm" "-f" "d41d4753e0fdc41905590259b96ac493c545a668679df59ee3e1dc5cc7a75d13"` [INFO] [stdout] d41d4753e0fdc41905590259b96ac493c545a668679df59ee3e1dc5cc7a75d13