[INFO] crate kamadak-exif 0.3.1 is already in cache [INFO] extracting crate kamadak-exif 0.3.1 into work/ex/clippy-test-run/sources/stable/reg/kamadak-exif/0.3.1 [INFO] extracting crate kamadak-exif 0.3.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/kamadak-exif/0.3.1 [INFO] validating manifest of kamadak-exif-0.3.1 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 kamadak-exif-0.3.1 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 kamadak-exif-0.3.1 [INFO] finished frobbing kamadak-exif-0.3.1 [INFO] frobbed toml for kamadak-exif-0.3.1 written to work/ex/clippy-test-run/sources/stable/reg/kamadak-exif/0.3.1/Cargo.toml [INFO] started frobbing kamadak-exif-0.3.1 [INFO] finished frobbing kamadak-exif-0.3.1 [INFO] frobbed toml for kamadak-exif-0.3.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/kamadak-exif/0.3.1/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting kamadak-exif-0.3.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-6/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/kamadak-exif/0.3.1:/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] 9198bcf19565251cd8b210424e955a156b6dc73eef5fa637e4799cc7b7a24c04 [INFO] running `"docker" "start" "-a" "9198bcf19565251cd8b210424e955a156b6dc73eef5fa637e4799cc7b7a24c04"` [INFO] [stderr] Checking kamadak-exif v0.3.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/reader.rs:96:13 [INFO] [stderr] | [INFO] [stderr] 96 | buf: buf, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `buf` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/reader.rs:97:13 [INFO] [stderr] | [INFO] [stderr] 97 | fields: fields, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `fields` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/reader.rs:99:13 [INFO] [stderr] | [INFO] [stderr] 99 | field_map: field_map [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `field_map` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tag.rs:529:55 [INFO] [stderr] | [INFO] [stderr] 529 | Some(ti) => value::Display { fmt: ti.dispval, value: value }, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tag.rs:530:50 [INFO] [stderr] | [INFO] [stderr] 530 | None => value::Display { fmt: d_default, value: value }, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/tag.rs:1081:24 [INFO] [stderr] | [INFO] [stderr] 1081 | let (h, m, s) = (v[0].to_f64(), v[1].to_f64(), v[2].to_f64()); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tiff.rs:128:38 [INFO] [stderr] | [INFO] [stderr] 128 | _ => fields.push(Field { tag: tag, thumbnail: thumbnail, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `tag` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tiff.rs:128:48 [INFO] [stderr] | [INFO] [stderr] 128 | _ => fields.push(Field { tag: tag, thumbnail: thumbnail, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `thumbnail` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/writer.rs:271:13 [INFO] [stderr] | [INFO] [stderr] 271 | thumbnail: thumbnail, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `thumbnail` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/writer.rs:277:13 [INFO] [stderr] | [INFO] [stderr] 277 | thumbnail: thumbnail, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `thumbnail` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/writer.rs:286:13 [INFO] [stderr] | [INFO] [stderr] 286 | thumbnail: thumbnail, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `thumbnail` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/writer.rs:292:13 [INFO] [stderr] | [INFO] [stderr] 292 | thumbnail: thumbnail, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `thumbnail` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/writer.rs:301:13 [INFO] [stderr] | [INFO] [stderr] 301 | thumbnail: thumbnail, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `thumbnail` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/writer.rs:307:13 [INFO] [stderr] | [INFO] [stderr] 307 | thumbnail: thumbnail, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `thumbnail` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/writer.rs:326:13 [INFO] [stderr] | [INFO] [stderr] 326 | thumbnail: thumbnail, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `thumbnail` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/writer.rs:335:13 [INFO] [stderr] | [INFO] [stderr] 335 | thumbnail: thumbnail, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `thumbnail` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/writer.rs:344:13 [INFO] [stderr] | [INFO] [stderr] 344 | thumbnail: thumbnail, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `thumbnail` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/reader.rs:96:13 [INFO] [stderr] | [INFO] [stderr] 96 | buf: buf, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `buf` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/reader.rs:97:13 [INFO] [stderr] | [INFO] [stderr] 97 | fields: fields, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `fields` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/reader.rs:99:13 [INFO] [stderr] | [INFO] [stderr] 99 | field_map: field_map [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `field_map` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tag.rs:529:55 [INFO] [stderr] | [INFO] [stderr] 529 | Some(ti) => value::Display { fmt: ti.dispval, value: value }, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tag.rs:530:50 [INFO] [stderr] | [INFO] [stderr] 530 | None => value::Display { fmt: d_default, value: value }, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/tag.rs:1081:24 [INFO] [stderr] | [INFO] [stderr] 1081 | let (h, m, s) = (v[0].to_f64(), v[1].to_f64(), v[2].to_f64()); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tiff.rs:128:38 [INFO] [stderr] | [INFO] [stderr] 128 | _ => fields.push(Field { tag: tag, thumbnail: thumbnail, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `tag` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tiff.rs:128:48 [INFO] [stderr] | [INFO] [stderr] 128 | _ => fields.push(Field { tag: tag, thumbnail: thumbnail, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `thumbnail` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/writer.rs:271:13 [INFO] [stderr] | [INFO] [stderr] 271 | thumbnail: thumbnail, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `thumbnail` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/writer.rs:277:13 [INFO] [stderr] | [INFO] [stderr] 277 | thumbnail: thumbnail, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `thumbnail` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/writer.rs:286:13 [INFO] [stderr] | [INFO] [stderr] 286 | thumbnail: thumbnail, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `thumbnail` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/writer.rs:292:13 [INFO] [stderr] | [INFO] [stderr] 292 | thumbnail: thumbnail, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `thumbnail` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/writer.rs:301:13 [INFO] [stderr] | [INFO] [stderr] 301 | thumbnail: thumbnail, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `thumbnail` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/writer.rs:307:13 [INFO] [stderr] | [INFO] [stderr] 307 | thumbnail: thumbnail, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `thumbnail` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/writer.rs:326:13 [INFO] [stderr] | [INFO] [stderr] 326 | thumbnail: thumbnail, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `thumbnail` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/writer.rs:335:13 [INFO] [stderr] | [INFO] [stderr] 335 | thumbnail: thumbnail, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `thumbnail` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/writer.rs:344:13 [INFO] [stderr] | [INFO] [stderr] 344 | thumbnail: thumbnail, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `thumbnail` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/tag.rs:734:35 [INFO] [stderr] | [INFO] [stderr] 734 | } else if dist.num == 0xffffffff { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xffff_ffff` [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/tag.rs:838:30 [INFO] [stderr] | [INFO] [stderr] 838 | if v[0].denom != 0xffffffff { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xffff_ffff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/endian.rs:104:20 [INFO] [stderr] | [INFO] [stderr] 104 | 0x01020304); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0102_0304` [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/endian.rs:106:20 [INFO] [stderr] | [INFO] [stderr] 106 | 0x02030405); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0203_0405` [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/endian.rs:108:20 [INFO] [stderr] | [INFO] [stderr] 108 | 0x04030201); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0403_0201` [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/endian.rs:110:20 [INFO] [stderr] | [INFO] [stderr] 110 | 0x05040302); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0504_0302` [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/endian.rs:117:20 [INFO] [stderr] | [INFO] [stderr] 117 | 0x0102030405060708); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0x0102_0304_0506_0708` [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/endian.rs:120:20 [INFO] [stderr] | [INFO] [stderr] 120 | 0x0203040506070809); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0x0203_0405_0607_0809` [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/endian.rs:123:20 [INFO] [stderr] | [INFO] [stderr] 123 | 0x0807060504030201); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0x0807_0605_0403_0201` [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/endian.rs:126:20 [INFO] [stderr] | [INFO] [stderr] 126 | 0x0908070605040302); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0x0908_0706_0504_0302` [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/endian.rs:140:39 [INFO] [stderr] | [INFO] [stderr] 140 | BigEndian::writeu32(&mut buf, 0x01020304).unwrap(); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0102_0304` [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/endian.rs:141:42 [INFO] [stderr] | [INFO] [stderr] 141 | LittleEndian::writeu32(&mut buf, 0x05060708).unwrap(); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0506_0708` [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/endian.rs:148:39 [INFO] [stderr] | [INFO] [stderr] 148 | BigEndian::writeu64(&mut buf, 0x0102030405060708).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0x0102_0304_0506_0708` [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/endian.rs:149:42 [INFO] [stderr] | [INFO] [stderr] 149 | LittleEndian::writeu64(&mut buf, 0x090a0b0c0d0e0f10).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0x090a_0b0c_0d0e_0f10` [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/tag.rs:734:35 [INFO] [stderr] | [INFO] [stderr] 734 | } else if dist.num == 0xffffffff { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xffff_ffff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/tag.rs:838:30 [INFO] [stderr] | [INFO] [stderr] 838 | if v[0].denom != 0xffffffff { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xffff_ffff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/tiff.rs:299:44 [INFO] [stderr] | [INFO] [stderr] 299 | assert_eq!(dt.nanosecond.unwrap(), 987000000); [INFO] [stderr] | ^^^^^^^^^ help: consider: `987_000_000` [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/tiff.rs:301:44 [INFO] [stderr] | [INFO] [stderr] 301 | assert_eq!(dt.nanosecond.unwrap(), 987000); [INFO] [stderr] | ^^^^^^ help: consider: `987_000` [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/tiff.rs:303:44 [INFO] [stderr] | [INFO] [stderr] 303 | assert_eq!(dt.nanosecond.unwrap(), 987654321); [INFO] [stderr] | ^^^^^^^^^ help: consider: `987_654_321` [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/tiff.rs:305:44 [INFO] [stderr] | [INFO] [stderr] 305 | assert_eq!(dt.nanosecond.unwrap(), 987654321); [INFO] [stderr] | ^^^^^^^^^ help: consider: `987_654_321` [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/tiff.rs:307:44 [INFO] [stderr] | [INFO] [stderr] 307 | assert_eq!(dt.nanosecond.unwrap(), 130000000); [INFO] [stderr] | ^^^^^^^^^ help: consider: `130_000_000` [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/value.rs:491:19 [INFO] [stderr] | [INFO] [stderr] 491 | vec![0x01020304, 0x05060708]), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0102_0304` [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/value.rs:491:31 [INFO] [stderr] | [INFO] [stderr] 491 | vec![0x01020304, 0x05060708]), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0506_0708` [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/value.rs:509:35 [INFO] [stderr] | [INFO] [stderr] 509 | vec![Rational { num: 0xa1020304, denom: 0x05060708 }, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xa102_0304` [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/value.rs:509:54 [INFO] [stderr] | [INFO] [stderr] 509 | vec![Rational { num: 0xa1020304, denom: 0x05060708 }, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0506_0708` [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/value.rs:510:35 [INFO] [stderr] | [INFO] [stderr] 510 | Rational { num: 0x090a0b0c, denom: 0xbd0e0f10 }]), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x090a_0b0c` [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/value.rs:510:54 [INFO] [stderr] | [INFO] [stderr] 510 | Rational { num: 0x090a0b0c, denom: 0xbd0e0f10 }]), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xbd0e_0f10` [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/value.rs:583:19 [INFO] [stderr] | [INFO] [stderr] 583 | vec![0x01020304, -0x7af9f8f8]), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0102_0304` [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/value.rs:583:32 [INFO] [stderr] | [INFO] [stderr] 583 | vec![0x01020304, -0x7af9f8f8]), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x7af9_f8f8` [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/value.rs:601:37 [INFO] [stderr] | [INFO] [stderr] 601 | vec![SRational { num: -0x5efdfcfc, denom: 0x05060708 }, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x5efd_fcfc` [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/value.rs:601:56 [INFO] [stderr] | [INFO] [stderr] 601 | vec![SRational { num: -0x5efdfcfc, denom: 0x05060708 }, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0506_0708` [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/value.rs:602:36 [INFO] [stderr] | [INFO] [stderr] 602 | SRational { num: 0x090a0b0c, denom: -0x42f1f0f0 }]), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x090a_0b0c` [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/value.rs:602:56 [INFO] [stderr] | [INFO] [stderr] 602 | SRational { num: 0x090a0b0c, denom: -0x42f1f0f0 }]), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x42f1_f0f0` [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/value.rs:755:20 [INFO] [stderr] | [INFO] [stderr] 755 | 2.3283064370807974e-10); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider: `2.328_306_437_080_797_4e-10` [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/value.rs:759:20 [INFO] [stderr] | [INFO] [stderr] 759 | 0.9999999997671694); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0.999_999_999_767_169_4` [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/value.rs:761:20 [INFO] [stderr] | [INFO] [stderr] 761 | 1.0000000002328306); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `1.000_000_000_232_830_6` [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/value.rs:778:56 [INFO] [stderr] | [INFO] [stderr] 778 | assert_eq!(f32::from(Rational { num: 1, denom: 16777217 }), [INFO] [stderr] | ^^^^^^^^ help: consider: `16_777_217` [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/value.rs:779:20 [INFO] [stderr] | [INFO] [stderr] 779 | 5.960464e-8); [INFO] [stderr] | ^^^^^^^^^^^ help: consider: `5.960_464e-8` [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/writer.rs:787:31 [INFO] [stderr] | [INFO] [stderr] 787 | (Value::Long(vec![0x01020304, 0x05060708]), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0102_0304` [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/writer.rs:787:43 [INFO] [stderr] | [INFO] [stderr] 787 | (Value::Long(vec![0x01020304, 0x05060708]), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0506_0708` [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/writer.rs:803:37 [INFO] [stderr] | [INFO] [stderr] 803 | (Value::SLong(vec![-2, -0x80000000]), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x8000_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] error: casting from `*const u8` to a more-strictly-aligned pointer (`*const u16`) [INFO] [stderr] --> src/endian.rs:53:23 [INFO] [stderr] | [INFO] [stderr] 53 | let ptr = buf.as_ptr() as *const $int_type; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 72 | generate_load!(loadu16, u16, from_be); [INFO] [stderr] | -------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::cast_ptr_alignment)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [INFO] [stderr] [INFO] [stderr] warning: transmute from a type (`u16`) to itself [INFO] [stderr] --> src/endian.rs:54:32 [INFO] [stderr] | [INFO] [stderr] 54 | let num = unsafe { mem::transmute(*ptr) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 72 | generate_load!(loadu16, u16, from_be); [INFO] [stderr] | -------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_transmute)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] error: casting from `*const u8` to a more-strictly-aligned pointer (`*const u32`) [INFO] [stderr] --> src/endian.rs:53:23 [INFO] [stderr] | [INFO] [stderr] 53 | let ptr = buf.as_ptr() as *const $int_type; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 73 | generate_load!(loadu32, u32, from_be); [INFO] [stderr] | -------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [INFO] [stderr] [INFO] [stderr] warning: transmute from a type (`u32`) to itself [INFO] [stderr] --> src/endian.rs:54:32 [INFO] [stderr] | [INFO] [stderr] 54 | let num = unsafe { mem::transmute(*ptr) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 73 | generate_load!(loadu32, u32, from_be); [INFO] [stderr] | -------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] error: casting from `*const u8` to a more-strictly-aligned pointer (`*const u64`) [INFO] [stderr] --> src/endian.rs:53:23 [INFO] [stderr] | [INFO] [stderr] 53 | let ptr = buf.as_ptr() as *const $int_type; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 74 | generate_load!(loadu64, u64, from_be); [INFO] [stderr] | -------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [INFO] [stderr] [INFO] [stderr] warning: transmute from a type (`u64`) to itself [INFO] [stderr] --> src/endian.rs:54:32 [INFO] [stderr] | [INFO] [stderr] 54 | let num = unsafe { mem::transmute(*ptr) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 74 | generate_load!(loadu64, u64, from_be); [INFO] [stderr] | -------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] error: casting from `*const u8` to a more-strictly-aligned pointer (`*const u16`) [INFO] [stderr] --> src/endian.rs:53:23 [INFO] [stderr] | [INFO] [stderr] 53 | let ptr = buf.as_ptr() as *const $int_type; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 81 | generate_load!(loadu16, u16, from_le); [INFO] [stderr] | -------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [INFO] [stderr] [INFO] [stderr] warning: transmute from a type (`u16`) to itself [INFO] [stderr] --> src/endian.rs:54:32 [INFO] [stderr] | [INFO] [stderr] 54 | let num = unsafe { mem::transmute(*ptr) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 81 | generate_load!(loadu16, u16, from_le); [INFO] [stderr] | -------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] error: casting from `*const u8` to a more-strictly-aligned pointer (`*const u32`) [INFO] [stderr] --> src/endian.rs:53:23 [INFO] [stderr] | [INFO] [stderr] 53 | let ptr = buf.as_ptr() as *const $int_type; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 82 | generate_load!(loadu32, u32, from_le); [INFO] [stderr] | -------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [INFO] [stderr] [INFO] [stderr] warning: transmute from a type (`u32`) to itself [INFO] [stderr] --> src/endian.rs:54:32 [INFO] [stderr] | [INFO] [stderr] 54 | let num = unsafe { mem::transmute(*ptr) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 82 | generate_load!(loadu32, u32, from_le); [INFO] [stderr] | -------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] error: casting from `*const u8` to a more-strictly-aligned pointer (`*const u64`) [INFO] [stderr] --> src/endian.rs:53:23 [INFO] [stderr] | [INFO] [stderr] 53 | let ptr = buf.as_ptr() as *const $int_type; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 83 | generate_load!(loadu64, u64, from_le); [INFO] [stderr] | -------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [INFO] [stderr] [INFO] [stderr] warning: transmute from a type (`u64`) to itself [INFO] [stderr] --> src/endian.rs:54:32 [INFO] [stderr] | [INFO] [stderr] 54 | let num = unsafe { mem::transmute(*ptr) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 83 | generate_load!(loadu64, u64, from_le); [INFO] [stderr] | -------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/jpeg.rs:94:30 [INFO] [stderr] | [INFO] [stderr] 94 | reader.by_ref().take(seglen as u64 - 2).read_to_end(&mut seg)?; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u64::from(seglen)` [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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/reader.rs:125:9 [INFO] [stderr] | [INFO] [stderr] 125 | self.field_map.get(&(tag, thumbnail)).map(|&f| f) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.field_map.get(&(tag, thumbnail)).cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tag.rs:85:24 [INFO] [stderr] | [INFO] [stderr] 85 | pub fn description(&self) -> Option<&str> { [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/tag.rs:92:26 [INFO] [stderr] | [INFO] [stderr] 92 | pub fn default_value(&self) -> Option { [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/tag.rs:646:42 [INFO] [stderr] | [INFO] [stderr] 646 | return write!(w, "1/{}", et.denom as f64 / et.num as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f64::from(et.denom)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/tag.rs:646:60 [INFO] [stderr] | [INFO] [stderr] 646 | return write!(w, "1/{}", et.denom as f64 / et.num as f64); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f64::from(et.num)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tag.rs:837:35 [INFO] [stderr] | [INFO] [stderr] 837 | Value::Rational(ref v) if v.len() > 0 => [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!v.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tag.rs:843:36 [INFO] [stderr] | [INFO] [stderr] 843 | Value::SRational(ref v) if v.len() > 0 => [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!v.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/tag.rs:881:35 [INFO] [stderr] | [INFO] [stderr] 881 | Value::Undefined(s, _) => s.first().map(|&x| x), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `s.first().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/tag.rs:896:35 [INFO] [stderr] | [INFO] [stderr] 896 | Value::Undefined(s, _) => s.first().map(|&x| x), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `s.first().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tag.rs:939:12 [INFO] [stderr] | [INFO] [stderr] 939 | if v.len() > 0 && v[0].num == 0 { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!v.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/tag.rs:1094:32 [INFO] [stderr] | [INFO] [stderr] 1094 | Value::Ascii(ref v) => v.first().map(|&x| x), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `v.first().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/tag.rs:1107:32 [INFO] [stderr] | [INFO] [stderr] 1107 | Value::Ascii(ref v) => v.first().map(|&x| x), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `v.first().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/tag.rs:1120:32 [INFO] [stderr] | [INFO] [stderr] 1120 | Value::Ascii(ref v) => v.first().map(|&x| x), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `v.first().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/tag.rs:1135:32 [INFO] [stderr] | [INFO] [stderr] 1135 | Value::Ascii(ref v) => v.first().map(|&x| x), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `v.first().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/tag.rs:1148:32 [INFO] [stderr] | [INFO] [stderr] 1148 | Value::Ascii(ref v) => v.first().map(|&x| x), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `v.first().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/tag.rs:1243:9 [INFO] [stderr] | [INFO] [stderr] 1243 | / match first { [INFO] [stderr] 1244 | | true => write!(w, "{}", x), [INFO] [stderr] 1245 | | false => write!(w, ", {}", x), [INFO] [stderr] 1246 | | }?; [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if first { write!(w, "{}", x) } else { write!(w, ", {}", x) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/tag.rs:1257:9 [INFO] [stderr] | [INFO] [stderr] 1257 | / match first { [INFO] [stderr] 1258 | | true => write!(w, "{}", x), [INFO] [stderr] 1259 | | false => write!(w, ", {}", x), [INFO] [stderr] 1260 | | }?; [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if first { write!(w, "{}", x) } else { write!(w, ", {}", x) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: some ranges overlap [INFO] [stderr] --> src/tag.rs:1282:13 [INFO] [stderr] | [INFO] [stderr] 1282 | 0x20...0x7e => w.write_char(c as char)?, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_overlapping_arm)] on by default [INFO] [stderr] note: overlaps with this [INFO] [stderr] --> src/tag.rs:1278:21 [INFO] [stderr] | [INFO] [stderr] 1278 | b'\\' | b'"' => { [INFO] [stderr] | ^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_overlapping_arm [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/util.rs:44:9 [INFO] [stderr] | [INFO] [stderr] 44 | Ok(((buf[0] as u16) << 8) + buf[1] as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(buf[0])` [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 u16 may become silently lossy if types change [INFO] [stderr] --> src/util.rs:44:33 [INFO] [stderr] | [INFO] [stderr] 44 | Ok(((buf[0] as u16) << 8) + buf[1] as u16) [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u16::from(buf[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: length comparison to zero [INFO] [stderr] --> src/util.rs:52:8 [INFO] [stderr] | [INFO] [stderr] 52 | if bytes.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `bytes.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/util.rs:60:22 [INFO] [stderr] | [INFO] [stderr] 60 | n = n * 10 + (c - ASCII_0) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(c - ASCII_0)` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/util.rs:69:8 [INFO] [stderr] | [INFO] [stderr] 69 | Ok((c - ASCII_0) as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(c - ASCII_0)` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:101:59 [INFO] [stderr] | [INFO] [stderr] 101 | Value::Byte(ref v) if v.len() > index => Some(v[index] as u32), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(v[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 u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:102:60 [INFO] [stderr] | [INFO] [stderr] 102 | Value::Short(ref v) if v.len() > index => Some(v[index] as u32), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(v[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 u32 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:117:66 [INFO] [stderr] | [INFO] [stderr] 117 | Some(UIntIter { iter: Box::new(v.iter().map(|&x| x as u32)) }), [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:119:66 [INFO] [stderr] | [INFO] [stderr] 119 | Some(UIntIter { iter: Box::new(v.iter().map(|&x| x as u32)) }), [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/value.rs:121:48 [INFO] [stderr] | [INFO] [stderr] 121 | Some(UIntIter { iter: Box::new(v.iter().map(|&x| x)) }), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `v.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/value.rs:198:19 [INFO] [stderr] | [INFO] [stderr] 198 | pub fn to_f64(&self) -> f64 { [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:199:9 [INFO] [stderr] | [INFO] [stderr] 199 | self.num as f64 / self.denom as f64 [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f64::from(self.num)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:199:27 [INFO] [stderr] | [INFO] [stderr] 199 | self.num as f64 / self.denom as f64 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.denom)` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/value.rs:238:19 [INFO] [stderr] | [INFO] [stderr] 238 | pub fn to_f64(&self) -> f64 { [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:239:9 [INFO] [stderr] | [INFO] [stderr] 239 | self.num as f64 / self.denom as f64 [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f64::from(self.num)` [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:239:27 [INFO] [stderr] | [INFO] [stderr] 239 | self.num as f64 / self.denom as f64 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.denom)` [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/value.rs:311:1 [INFO] [stderr] | [INFO] [stderr] 311 | / fn parse_byte<'a>(data: &'a [u8], offset: usize, count: usize) [INFO] [stderr] 312 | | -> Value<'a> { [INFO] [stderr] 313 | | Value::Byte(data[offset .. offset + count].to_vec()) [INFO] [stderr] 314 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/value.rs:316:1 [INFO] [stderr] | [INFO] [stderr] 316 | / fn parse_ascii<'a>(data: &'a [u8], offset: usize, count: usize) [INFO] [stderr] 317 | | -> Value<'a> { [INFO] [stderr] 318 | | // Any ASCII field can contain multiple strings [TIFF6 Image File [INFO] [stderr] 319 | | // Directory]. [INFO] [stderr] ... | [INFO] [stderr] 325 | | Value::Ascii(v) [INFO] [stderr] 326 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/value.rs:322:36 [INFO] [stderr] | [INFO] [stderr] 322 | if v.last().map_or(false, |&s| s.len() == 0) { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `s.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/value.rs:328:1 [INFO] [stderr] | [INFO] [stderr] 328 | / fn parse_short<'a, E>(data: &'a [u8], offset: usize, count: usize) [INFO] [stderr] 329 | | -> Value<'a> where E: Endian { [INFO] [stderr] 330 | | let mut val = Vec::with_capacity(count); [INFO] [stderr] 331 | | for i in 0..count { [INFO] [stderr] ... | [INFO] [stderr] 334 | | Value::Short(val) [INFO] [stderr] 335 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/value.rs:337:1 [INFO] [stderr] | [INFO] [stderr] 337 | / fn parse_long<'a, E>(data: &'a [u8], offset: usize, count: usize) [INFO] [stderr] 338 | | -> Value<'a> where E: Endian { [INFO] [stderr] 339 | | let mut val = Vec::with_capacity(count); [INFO] [stderr] 340 | | for i in 0..count { [INFO] [stderr] ... | [INFO] [stderr] 343 | | Value::Long(val) [INFO] [stderr] 344 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/value.rs:346:1 [INFO] [stderr] | [INFO] [stderr] 346 | / fn parse_rational<'a, E>(data: &'a [u8], offset: usize, count: usize) [INFO] [stderr] 347 | | -> Value<'a> where E: Endian { [INFO] [stderr] 348 | | let mut val = Vec::with_capacity(count); [INFO] [stderr] 349 | | for i in 0..count { [INFO] [stderr] ... | [INFO] [stderr] 355 | | Value::Rational(val) [INFO] [stderr] 356 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/value.rs:358:1 [INFO] [stderr] | [INFO] [stderr] 358 | / fn parse_sbyte<'a>(data: &'a [u8], offset: usize, count: usize) [INFO] [stderr] 359 | | -> Value<'a> { [INFO] [stderr] 360 | | let uslice = &data[offset .. offset + count]; [INFO] [stderr] 361 | | let islice = unsafe { ::std::slice::from_raw_parts( [INFO] [stderr] 362 | | uslice.as_ptr() as *const i8, count) }; [INFO] [stderr] 363 | | Value::SByte(islice.to_vec()) [INFO] [stderr] 364 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/value.rs:366:1 [INFO] [stderr] | [INFO] [stderr] 366 | / fn parse_undefined<'a>(data: &'a [u8], offset: usize, count: usize) [INFO] [stderr] 367 | | -> Value<'a> { [INFO] [stderr] 368 | | Value::Undefined(&data[offset .. offset + count], offset as u32) [INFO] [stderr] 369 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/value.rs:371:1 [INFO] [stderr] | [INFO] [stderr] 371 | / fn parse_sshort<'a, E>(data: &'a [u8], offset: usize, count: usize) [INFO] [stderr] 372 | | -> Value<'a> where E: Endian { [INFO] [stderr] 373 | | let mut val = Vec::with_capacity(count); [INFO] [stderr] 374 | | for i in 0..count { [INFO] [stderr] ... | [INFO] [stderr] 377 | | Value::SShort(val) [INFO] [stderr] 378 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/value.rs:380:1 [INFO] [stderr] | [INFO] [stderr] 380 | / fn parse_slong<'a, E>(data: &'a [u8], offset: usize, count: usize) [INFO] [stderr] 381 | | -> Value<'a> where E: Endian { [INFO] [stderr] 382 | | let mut val = Vec::with_capacity(count); [INFO] [stderr] 383 | | for i in 0..count { [INFO] [stderr] ... | [INFO] [stderr] 386 | | Value::SLong(val) [INFO] [stderr] 387 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/value.rs:389:1 [INFO] [stderr] | [INFO] [stderr] 389 | / fn parse_srational<'a, E>(data: &'a [u8], offset: usize, count: usize) [INFO] [stderr] 390 | | -> Value<'a> where E: Endian { [INFO] [stderr] 391 | | let mut val = Vec::with_capacity(count); [INFO] [stderr] 392 | | for i in 0..count { [INFO] [stderr] ... | [INFO] [stderr] 398 | | Value::SRational(val) [INFO] [stderr] 399 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/value.rs:402:1 [INFO] [stderr] | [INFO] [stderr] 402 | / fn parse_float<'a, E>(data: &'a [u8], offset: usize, count: usize) [INFO] [stderr] 403 | | -> Value<'a> where E: Endian { [INFO] [stderr] 404 | | let mut val = Vec::with_capacity(count); [INFO] [stderr] 405 | | for i in 0..count { [INFO] [stderr] ... | [INFO] [stderr] 408 | | Value::Float(val) [INFO] [stderr] 409 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/value.rs:412:1 [INFO] [stderr] | [INFO] [stderr] 412 | / fn parse_double<'a, E>(data: &'a [u8], offset: usize, count: usize) [INFO] [stderr] 413 | | -> Value<'a> where E: Endian { [INFO] [stderr] 414 | | let mut val = Vec::with_capacity(count); [INFO] [stderr] 415 | | for i in 0..count { [INFO] [stderr] ... | [INFO] [stderr] 418 | | Value::Double(val) [INFO] [stderr] 419 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/value.rs:423:1 [INFO] [stderr] | [INFO] [stderr] 423 | / fn parse_unknown<'a>(data: &'a [u8], offset: usize, count: usize) [INFO] [stderr] 424 | | -> Value<'a> { [INFO] [stderr] 425 | | unreachable!() [INFO] [stderr] 426 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `writer::Writer<'a>` [INFO] [stderr] --> src/writer.rs:92:5 [INFO] [stderr] | [INFO] [stderr] 92 | / pub fn new() -> Writer<'a> { [INFO] [stderr] 93 | | Writer { [INFO] [stderr] 94 | | tiff_fields: Vec::new(), [INFO] [stderr] 95 | | exif_fields: Vec::new(), [INFO] [stderr] ... | [INFO] [stderr] 106 | | } [INFO] [stderr] 107 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 61 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/writer.rs:210:13 [INFO] [stderr] | [INFO] [stderr] 210 | self.tn_tiff_fields.len() == 0 && [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.tn_tiff_fields.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/writer.rs:211:13 [INFO] [stderr] | [INFO] [stderr] 211 | self.tn_exif_fields.len() == 0 && [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.tn_exif_fields.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/writer.rs:212:13 [INFO] [stderr] | [INFO] [stderr] 212 | self.tn_gps_fields.len() == 0 && [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.tn_gps_fields.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/writer.rs:213:13 [INFO] [stderr] | [INFO] [stderr] 213 | self.tn_interop_fields.len() == 0 && [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.tn_interop_fields.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/writer.rs:223:32 [INFO] [stderr] | [INFO] [stderr] 223 | w.seek(SeekFrom::Start(next_ifd_offset_offset as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(next_ifd_offset_offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/writer.rs:224:9 [INFO] [stderr] | [INFO] [stderr] 224 | / match little_endian { [INFO] [stderr] 225 | | false => BigEndian::writeu32(w, next_ifd_offset)?, [INFO] [stderr] 226 | | true => LittleEndian::writeu32(w, next_ifd_offset)?, [INFO] [stderr] 227 | | } [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if little_endian { LittleEndian::writeu32(w, next_ifd_offset)? } else { BigEndian::writeu32(w, next_ifd_offset)? }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/writer.rs:355:5 [INFO] [stderr] | [INFO] [stderr] 355 | / match little_endian { [INFO] [stderr] 356 | | false => write_image::<_, BigEndian>(w, ws), [INFO] [stderr] 357 | | true => write_image::<_, LittleEndian>(w, ws), [INFO] [stderr] 358 | | } [INFO] [stderr] | |_____^ help: consider using an if/else expression: `if little_endian { write_image::<_, LittleEndian>(w, ws) } else { write_image::<_, BigEndian>(w, ws) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/writer.rs:368:8 [INFO] [stderr] | [INFO] [stderr] 368 | if ws.exif_fields.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!ws.exif_fields.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/writer.rs:372:8 [INFO] [stderr] | [INFO] [stderr] 372 | if ws.gps_fields.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!ws.gps_fields.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/writer.rs:376:8 [INFO] [stderr] | [INFO] [stderr] 376 | if ws.interop_fields.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!ws.interop_fields.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/writer.rs:388:32 [INFO] [stderr] | [INFO] [stderr] 388 | w.seek(SeekFrom::Start(strip_offsets_offset as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(strip_offsets_offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/writer.rs:401:32 [INFO] [stderr] | [INFO] [stderr] 401 | w.seek(SeekFrom::Start(tile_offsets_offset as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(tile_offsets_offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/writer.rs:411:32 [INFO] [stderr] | [INFO] [stderr] 411 | w.seek(SeekFrom::Start(jpeg_offset as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u64::from(jpeg_offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/writer.rs:435:24 [INFO] [stderr] | [INFO] [stderr] 435 | w: &mut W, fields: &Vec<&Field>, ifd_offset: u32) [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[&Field]` [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: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/writer.rs:580:28 [INFO] [stderr] | [INFO] [stderr] 580 | w.seek(SeekFrom::Start(offset as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u64::from(offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/writer.rs:603:8 [INFO] [stderr] | [INFO] [stderr] 603 | if pos as u32 as u64 != pos { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u64::from(pos as u32)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: aborting due to 6 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `kamadak-exif`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: casting from `*const u8` to a more-strictly-aligned pointer (`*const u16`) [INFO] [stderr] --> src/endian.rs:53:23 [INFO] [stderr] | [INFO] [stderr] 53 | let ptr = buf.as_ptr() as *const $int_type; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 72 | generate_load!(loadu16, u16, from_be); [INFO] [stderr] | -------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::cast_ptr_alignment)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [INFO] [stderr] [INFO] [stderr] warning: transmute from a type (`u16`) to itself [INFO] [stderr] --> src/endian.rs:54:32 [INFO] [stderr] | [INFO] [stderr] 54 | let num = unsafe { mem::transmute(*ptr) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 72 | generate_load!(loadu16, u16, from_be); [INFO] [stderr] | -------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_transmute)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] error: casting from `*const u8` to a more-strictly-aligned pointer (`*const u32`) [INFO] [stderr] --> src/endian.rs:53:23 [INFO] [stderr] | [INFO] [stderr] 53 | let ptr = buf.as_ptr() as *const $int_type; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 73 | generate_load!(loadu32, u32, from_be); [INFO] [stderr] | -------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [INFO] [stderr] [INFO] [stderr] warning: transmute from a type (`u32`) to itself [INFO] [stderr] --> src/endian.rs:54:32 [INFO] [stderr] | [INFO] [stderr] 54 | let num = unsafe { mem::transmute(*ptr) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 73 | generate_load!(loadu32, u32, from_be); [INFO] [stderr] | -------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] error: casting from `*const u8` to a more-strictly-aligned pointer (`*const u64`) [INFO] [stderr] --> src/endian.rs:53:23 [INFO] [stderr] | [INFO] [stderr] 53 | let ptr = buf.as_ptr() as *const $int_type; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 74 | generate_load!(loadu64, u64, from_be); [INFO] [stderr] | -------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [INFO] [stderr] [INFO] [stderr] warning: transmute from a type (`u64`) to itself [INFO] [stderr] --> src/endian.rs:54:32 [INFO] [stderr] | [INFO] [stderr] 54 | let num = unsafe { mem::transmute(*ptr) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 74 | generate_load!(loadu64, u64, from_be); [INFO] [stderr] | -------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] error: casting from `*const u8` to a more-strictly-aligned pointer (`*const u16`) [INFO] [stderr] --> src/endian.rs:53:23 [INFO] [stderr] | [INFO] [stderr] 53 | let ptr = buf.as_ptr() as *const $int_type; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 81 | generate_load!(loadu16, u16, from_le); [INFO] [stderr] | -------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [INFO] [stderr] [INFO] [stderr] warning: transmute from a type (`u16`) to itself [INFO] [stderr] --> src/endian.rs:54:32 [INFO] [stderr] | [INFO] [stderr] 54 | let num = unsafe { mem::transmute(*ptr) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 81 | generate_load!(loadu16, u16, from_le); [INFO] [stderr] | -------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] error: casting from `*const u8` to a more-strictly-aligned pointer (`*const u32`) [INFO] [stderr] --> src/endian.rs:53:23 [INFO] [stderr] | [INFO] [stderr] 53 | let ptr = buf.as_ptr() as *const $int_type; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 82 | generate_load!(loadu32, u32, from_le); [INFO] [stderr] | -------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [INFO] [stderr] [INFO] [stderr] warning: transmute from a type (`u32`) to itself [INFO] [stderr] --> src/endian.rs:54:32 [INFO] [stderr] | [INFO] [stderr] 54 | let num = unsafe { mem::transmute(*ptr) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 82 | generate_load!(loadu32, u32, from_le); [INFO] [stderr] | -------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] error: casting from `*const u8` to a more-strictly-aligned pointer (`*const u64`) [INFO] [stderr] --> src/endian.rs:53:23 [INFO] [stderr] | [INFO] [stderr] 53 | let ptr = buf.as_ptr() as *const $int_type; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 83 | generate_load!(loadu64, u64, from_le); [INFO] [stderr] | -------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [INFO] [stderr] [INFO] [stderr] warning: transmute from a type (`u64`) to itself [INFO] [stderr] --> src/endian.rs:54:32 [INFO] [stderr] | [INFO] [stderr] 54 | let num = unsafe { mem::transmute(*ptr) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 83 | generate_load!(loadu64, u64, from_le); [INFO] [stderr] | -------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/jpeg.rs:94:30 [INFO] [stderr] | [INFO] [stderr] 94 | reader.by_ref().take(seglen as u64 - 2).read_to_end(&mut seg)?; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u64::from(seglen)` [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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/reader.rs:125:9 [INFO] [stderr] | [INFO] [stderr] 125 | self.field_map.get(&(tag, thumbnail)).map(|&f| f) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.field_map.get(&(tag, thumbnail)).cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tag.rs:85:24 [INFO] [stderr] | [INFO] [stderr] 85 | pub fn description(&self) -> Option<&str> { [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/tag.rs:92:26 [INFO] [stderr] | [INFO] [stderr] 92 | pub fn default_value(&self) -> Option { [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/tag.rs:646:42 [INFO] [stderr] | [INFO] [stderr] 646 | return write!(w, "1/{}", et.denom as f64 / et.num as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f64::from(et.denom)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/tag.rs:646:60 [INFO] [stderr] | [INFO] [stderr] 646 | return write!(w, "1/{}", et.denom as f64 / et.num as f64); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f64::from(et.num)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tag.rs:837:35 [INFO] [stderr] | [INFO] [stderr] 837 | Value::Rational(ref v) if v.len() > 0 => [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!v.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tag.rs:843:36 [INFO] [stderr] | [INFO] [stderr] 843 | Value::SRational(ref v) if v.len() > 0 => [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!v.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/tag.rs:881:35 [INFO] [stderr] | [INFO] [stderr] 881 | Value::Undefined(s, _) => s.first().map(|&x| x), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `s.first().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/tag.rs:896:35 [INFO] [stderr] | [INFO] [stderr] 896 | Value::Undefined(s, _) => s.first().map(|&x| x), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `s.first().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tag.rs:939:12 [INFO] [stderr] | [INFO] [stderr] 939 | if v.len() > 0 && v[0].num == 0 { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!v.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/tag.rs:1094:32 [INFO] [stderr] | [INFO] [stderr] 1094 | Value::Ascii(ref v) => v.first().map(|&x| x), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `v.first().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/tag.rs:1107:32 [INFO] [stderr] | [INFO] [stderr] 1107 | Value::Ascii(ref v) => v.first().map(|&x| x), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `v.first().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/tag.rs:1120:32 [INFO] [stderr] | [INFO] [stderr] 1120 | Value::Ascii(ref v) => v.first().map(|&x| x), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `v.first().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/tag.rs:1135:32 [INFO] [stderr] | [INFO] [stderr] 1135 | Value::Ascii(ref v) => v.first().map(|&x| x), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `v.first().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/tag.rs:1148:32 [INFO] [stderr] | [INFO] [stderr] 1148 | Value::Ascii(ref v) => v.first().map(|&x| x), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `v.first().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/tag.rs:1243:9 [INFO] [stderr] | [INFO] [stderr] 1243 | / match first { [INFO] [stderr] 1244 | | true => write!(w, "{}", x), [INFO] [stderr] 1245 | | false => write!(w, ", {}", x), [INFO] [stderr] 1246 | | }?; [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if first { write!(w, "{}", x) } else { write!(w, ", {}", x) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/tag.rs:1257:9 [INFO] [stderr] | [INFO] [stderr] 1257 | / match first { [INFO] [stderr] 1258 | | true => write!(w, "{}", x), [INFO] [stderr] 1259 | | false => write!(w, ", {}", x), [INFO] [stderr] 1260 | | }?; [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if first { write!(w, "{}", x) } else { write!(w, ", {}", x) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: some ranges overlap [INFO] [stderr] --> src/tag.rs:1282:13 [INFO] [stderr] | [INFO] [stderr] 1282 | 0x20...0x7e => w.write_char(c as char)?, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_overlapping_arm)] on by default [INFO] [stderr] note: overlaps with this [INFO] [stderr] --> src/tag.rs:1278:21 [INFO] [stderr] | [INFO] [stderr] 1278 | b'\\' | b'"' => { [INFO] [stderr] | ^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_overlapping_arm [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/util.rs:44:9 [INFO] [stderr] | [INFO] [stderr] 44 | Ok(((buf[0] as u16) << 8) + buf[1] as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(buf[0])` [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 u16 may become silently lossy if types change [INFO] [stderr] --> src/util.rs:44:33 [INFO] [stderr] | [INFO] [stderr] 44 | Ok(((buf[0] as u16) << 8) + buf[1] as u16) [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u16::from(buf[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: length comparison to zero [INFO] [stderr] --> src/util.rs:52:8 [INFO] [stderr] | [INFO] [stderr] 52 | if bytes.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `bytes.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/util.rs:60:22 [INFO] [stderr] | [INFO] [stderr] 60 | n = n * 10 + (c - ASCII_0) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(c - ASCII_0)` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/util.rs:69:8 [INFO] [stderr] | [INFO] [stderr] 69 | Ok((c - ASCII_0) as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(c - ASCII_0)` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:101:59 [INFO] [stderr] | [INFO] [stderr] 101 | Value::Byte(ref v) if v.len() > index => Some(v[index] as u32), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(v[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 u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:102:60 [INFO] [stderr] | [INFO] [stderr] 102 | Value::Short(ref v) if v.len() > index => Some(v[index] as u32), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(v[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 u32 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:117:66 [INFO] [stderr] | [INFO] [stderr] 117 | Some(UIntIter { iter: Box::new(v.iter().map(|&x| x as u32)) }), [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:119:66 [INFO] [stderr] | [INFO] [stderr] 119 | Some(UIntIter { iter: Box::new(v.iter().map(|&x| x as u32)) }), [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/value.rs:121:48 [INFO] [stderr] | [INFO] [stderr] 121 | Some(UIntIter { iter: Box::new(v.iter().map(|&x| x)) }), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `v.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/value.rs:198:19 [INFO] [stderr] | [INFO] [stderr] 198 | pub fn to_f64(&self) -> f64 { [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:199:9 [INFO] [stderr] | [INFO] [stderr] 199 | self.num as f64 / self.denom as f64 [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f64::from(self.num)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:199:27 [INFO] [stderr] | [INFO] [stderr] 199 | self.num as f64 / self.denom as f64 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.denom)` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/value.rs:238:19 [INFO] [stderr] | [INFO] [stderr] 238 | pub fn to_f64(&self) -> f64 { [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:239:9 [INFO] [stderr] | [INFO] [stderr] 239 | self.num as f64 / self.denom as f64 [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f64::from(self.num)` [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:239:27 [INFO] [stderr] | [INFO] [stderr] 239 | self.num as f64 / self.denom as f64 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.denom)` [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/value.rs:311:1 [INFO] [stderr] | [INFO] [stderr] 311 | / fn parse_byte<'a>(data: &'a [u8], offset: usize, count: usize) [INFO] [stderr] 312 | | -> Value<'a> { [INFO] [stderr] 313 | | Value::Byte(data[offset .. offset + count].to_vec()) [INFO] [stderr] 314 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/value.rs:316:1 [INFO] [stderr] | [INFO] [stderr] 316 | / fn parse_ascii<'a>(data: &'a [u8], offset: usize, count: usize) [INFO] [stderr] 317 | | -> Value<'a> { [INFO] [stderr] 318 | | // Any ASCII field can contain multiple strings [TIFF6 Image File [INFO] [stderr] 319 | | // Directory]. [INFO] [stderr] ... | [INFO] [stderr] 325 | | Value::Ascii(v) [INFO] [stderr] 326 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/value.rs:322:36 [INFO] [stderr] | [INFO] [stderr] 322 | if v.last().map_or(false, |&s| s.len() == 0) { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `s.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/value.rs:328:1 [INFO] [stderr] | [INFO] [stderr] 328 | / fn parse_short<'a, E>(data: &'a [u8], offset: usize, count: usize) [INFO] [stderr] 329 | | -> Value<'a> where E: Endian { [INFO] [stderr] 330 | | let mut val = Vec::with_capacity(count); [INFO] [stderr] 331 | | for i in 0..count { [INFO] [stderr] ... | [INFO] [stderr] 334 | | Value::Short(val) [INFO] [stderr] 335 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/value.rs:337:1 [INFO] [stderr] | [INFO] [stderr] 337 | / fn parse_long<'a, E>(data: &'a [u8], offset: usize, count: usize) [INFO] [stderr] 338 | | -> Value<'a> where E: Endian { [INFO] [stderr] 339 | | let mut val = Vec::with_capacity(count); [INFO] [stderr] 340 | | for i in 0..count { [INFO] [stderr] ... | [INFO] [stderr] 343 | | Value::Long(val) [INFO] [stderr] 344 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/value.rs:346:1 [INFO] [stderr] | [INFO] [stderr] 346 | / fn parse_rational<'a, E>(data: &'a [u8], offset: usize, count: usize) [INFO] [stderr] 347 | | -> Value<'a> where E: Endian { [INFO] [stderr] 348 | | let mut val = Vec::with_capacity(count); [INFO] [stderr] 349 | | for i in 0..count { [INFO] [stderr] ... | [INFO] [stderr] 355 | | Value::Rational(val) [INFO] [stderr] 356 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/value.rs:358:1 [INFO] [stderr] | [INFO] [stderr] 358 | / fn parse_sbyte<'a>(data: &'a [u8], offset: usize, count: usize) [INFO] [stderr] 359 | | -> Value<'a> { [INFO] [stderr] 360 | | let uslice = &data[offset .. offset + count]; [INFO] [stderr] 361 | | let islice = unsafe { ::std::slice::from_raw_parts( [INFO] [stderr] 362 | | uslice.as_ptr() as *const i8, count) }; [INFO] [stderr] 363 | | Value::SByte(islice.to_vec()) [INFO] [stderr] 364 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/value.rs:366:1 [INFO] [stderr] | [INFO] [stderr] 366 | / fn parse_undefined<'a>(data: &'a [u8], offset: usize, count: usize) [INFO] [stderr] 367 | | -> Value<'a> { [INFO] [stderr] 368 | | Value::Undefined(&data[offset .. offset + count], offset as u32) [INFO] [stderr] 369 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/value.rs:371:1 [INFO] [stderr] | [INFO] [stderr] 371 | / fn parse_sshort<'a, E>(data: &'a [u8], offset: usize, count: usize) [INFO] [stderr] 372 | | -> Value<'a> where E: Endian { [INFO] [stderr] 373 | | let mut val = Vec::with_capacity(count); [INFO] [stderr] 374 | | for i in 0..count { [INFO] [stderr] ... | [INFO] [stderr] 377 | | Value::SShort(val) [INFO] [stderr] 378 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/value.rs:380:1 [INFO] [stderr] | [INFO] [stderr] 380 | / fn parse_slong<'a, E>(data: &'a [u8], offset: usize, count: usize) [INFO] [stderr] 381 | | -> Value<'a> where E: Endian { [INFO] [stderr] 382 | | let mut val = Vec::with_capacity(count); [INFO] [stderr] 383 | | for i in 0..count { [INFO] [stderr] ... | [INFO] [stderr] 386 | | Value::SLong(val) [INFO] [stderr] 387 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/value.rs:389:1 [INFO] [stderr] | [INFO] [stderr] 389 | / fn parse_srational<'a, E>(data: &'a [u8], offset: usize, count: usize) [INFO] [stderr] 390 | | -> Value<'a> where E: Endian { [INFO] [stderr] 391 | | let mut val = Vec::with_capacity(count); [INFO] [stderr] 392 | | for i in 0..count { [INFO] [stderr] ... | [INFO] [stderr] 398 | | Value::SRational(val) [INFO] [stderr] 399 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/value.rs:402:1 [INFO] [stderr] | [INFO] [stderr] 402 | / fn parse_float<'a, E>(data: &'a [u8], offset: usize, count: usize) [INFO] [stderr] 403 | | -> Value<'a> where E: Endian { [INFO] [stderr] 404 | | let mut val = Vec::with_capacity(count); [INFO] [stderr] 405 | | for i in 0..count { [INFO] [stderr] ... | [INFO] [stderr] 408 | | Value::Float(val) [INFO] [stderr] 409 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/value.rs:412:1 [INFO] [stderr] | [INFO] [stderr] 412 | / fn parse_double<'a, E>(data: &'a [u8], offset: usize, count: usize) [INFO] [stderr] 413 | | -> Value<'a> where E: Endian { [INFO] [stderr] 414 | | let mut val = Vec::with_capacity(count); [INFO] [stderr] 415 | | for i in 0..count { [INFO] [stderr] ... | [INFO] [stderr] 418 | | Value::Double(val) [INFO] [stderr] 419 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/value.rs:423:1 [INFO] [stderr] | [INFO] [stderr] 423 | / fn parse_unknown<'a>(data: &'a [u8], offset: usize, count: usize) [INFO] [stderr] 424 | | -> Value<'a> { [INFO] [stderr] 425 | | unreachable!() [INFO] [stderr] 426 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/value.rs:753:9 [INFO] [stderr] | [INFO] [stderr] 753 | assert_eq!(f64::from(Rational { num: 1, denom: 2 }), 0.5); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/value.rs:753:9 [INFO] [stderr] | [INFO] [stderr] 753 | assert_eq!(f64::from(Rational { num: 1, denom: 2 }), 0.5); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/value.rs:754:9 [INFO] [stderr] | [INFO] [stderr] 754 | / assert_eq!(f64::from(Rational { num: 1, denom: u32::MAX }), [INFO] [stderr] 755 | | 2.3283064370807974e-10); [INFO] [stderr] | |___________________________________________^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/value.rs:754:9 [INFO] [stderr] | [INFO] [stderr] 754 | / assert_eq!(f64::from(Rational { num: 1, denom: u32::MAX }), [INFO] [stderr] 755 | | 2.3283064370807974e-10); [INFO] [stderr] | |___________________________________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:757:20 [INFO] [stderr] | [INFO] [stderr] 757 | u32::MAX as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f64::from(u32::MAX)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/value.rs:756:9 [INFO] [stderr] | [INFO] [stderr] 756 | / assert_eq!(f64::from(Rational { num: u32::MAX, denom: 1 }), [INFO] [stderr] 757 | | u32::MAX as f64); [INFO] [stderr] | |____________________________________^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/value.rs:756:9 [INFO] [stderr] | [INFO] [stderr] 756 | / assert_eq!(f64::from(Rational { num: u32::MAX, denom: 1 }), [INFO] [stderr] 757 | | u32::MAX as f64); [INFO] [stderr] | |____________________________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/value.rs:758:9 [INFO] [stderr] | [INFO] [stderr] 758 | / assert_eq!(f64::from(Rational { num: u32::MAX - 1, denom: u32::MAX }), [INFO] [stderr] 759 | | 0.9999999997671694); [INFO] [stderr] | |_______________________________________^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/value.rs:758:9 [INFO] [stderr] | [INFO] [stderr] 758 | / assert_eq!(f64::from(Rational { num: u32::MAX - 1, denom: u32::MAX }), [INFO] [stderr] 759 | | 0.9999999997671694); [INFO] [stderr] | |_______________________________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/value.rs:760:9 [INFO] [stderr] | [INFO] [stderr] 760 | / assert_eq!(f64::from(Rational { num: u32::MAX, denom: u32::MAX - 1 }), [INFO] [stderr] 761 | | 1.0000000002328306); [INFO] [stderr] | |_______________________________________^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/value.rs:760:9 [INFO] [stderr] | [INFO] [stderr] 760 | / assert_eq!(f64::from(Rational { num: u32::MAX, denom: u32::MAX - 1 }), [INFO] [stderr] 761 | | 1.0000000002328306); [INFO] [stderr] | |_______________________________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/value.rs:762:9 [INFO] [stderr] | [INFO] [stderr] 762 | assert_eq!(f64::from(Rational { num: 1, denom: 0 }), f64::INFINITY); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/value.rs:762:9 [INFO] [stderr] | [INFO] [stderr] 762 | assert_eq!(f64::from(Rational { num: 1, denom: 0 }), f64::INFINITY); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/value.rs:765:9 [INFO] [stderr] | [INFO] [stderr] 765 | assert_eq!(f64::from(SRational { num: 1, denom: 2 }), 0.5); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/value.rs:765:9 [INFO] [stderr] | [INFO] [stderr] 765 | assert_eq!(f64::from(SRational { num: 1, denom: 2 }), 0.5); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/value.rs:766:9 [INFO] [stderr] | [INFO] [stderr] 766 | assert_eq!(f64::from(SRational { num: -1, denom: 2 }), -0.5); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/value.rs:766:9 [INFO] [stderr] | [INFO] [stderr] 766 | assert_eq!(f64::from(SRational { num: -1, denom: 2 }), -0.5); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/value.rs:767:9 [INFO] [stderr] | [INFO] [stderr] 767 | assert_eq!(f64::from(SRational { num: 1, denom: -2 }), -0.5); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/value.rs:767:9 [INFO] [stderr] | [INFO] [stderr] 767 | assert_eq!(f64::from(SRational { num: 1, denom: -2 }), -0.5); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/value.rs:768:9 [INFO] [stderr] | [INFO] [stderr] 768 | assert_eq!(f64::from(SRational { num: -1, denom: -2 }), 0.5); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/value.rs:768:9 [INFO] [stderr] | [INFO] [stderr] 768 | assert_eq!(f64::from(SRational { num: -1, denom: -2 }), 0.5); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/value.rs:769:9 [INFO] [stderr] | [INFO] [stderr] 769 | assert_eq!(f64::from(SRational { num: 1, denom: 0 }), f64::INFINITY); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/value.rs:769:9 [INFO] [stderr] | [INFO] [stderr] 769 | assert_eq!(f64::from(SRational { num: 1, denom: 0 }), f64::INFINITY); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/value.rs:770:9 [INFO] [stderr] | [INFO] [stderr] 770 | / assert_eq!(f64::from(SRational { num: -1, denom: 0 }), [INFO] [stderr] 771 | | f64::NEG_INFINITY); [INFO] [stderr] | |______________________________________^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/value.rs:770:9 [INFO] [stderr] | [INFO] [stderr] 770 | / assert_eq!(f64::from(SRational { num: -1, denom: 0 }), [INFO] [stderr] 771 | | f64::NEG_INFINITY); [INFO] [stderr] | |______________________________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/value.rs:778:9 [INFO] [stderr] | [INFO] [stderr] 778 | / assert_eq!(f32::from(Rational { num: 1, denom: 16777217 }), [INFO] [stderr] 779 | | 5.960464e-8); [INFO] [stderr] | |________________________________^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/value.rs:778:9 [INFO] [stderr] | [INFO] [stderr] 778 | / assert_eq!(f32::from(Rational { num: 1, denom: 16777217 }), [INFO] [stderr] 779 | | 5.960464e-8); [INFO] [stderr] | |________________________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `writer::Writer<'a>` [INFO] [stderr] --> src/writer.rs:92:5 [INFO] [stderr] | [INFO] [stderr] 92 | / pub fn new() -> Writer<'a> { [INFO] [stderr] 93 | | Writer { [INFO] [stderr] 94 | | tiff_fields: Vec::new(), [INFO] [stderr] 95 | | exif_fields: Vec::new(), [INFO] [stderr] ... | [INFO] [stderr] 106 | | } [INFO] [stderr] 107 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 61 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/writer.rs:210:13 [INFO] [stderr] | [INFO] [stderr] 210 | self.tn_tiff_fields.len() == 0 && [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.tn_tiff_fields.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/writer.rs:211:13 [INFO] [stderr] | [INFO] [stderr] 211 | self.tn_exif_fields.len() == 0 && [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.tn_exif_fields.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/writer.rs:212:13 [INFO] [stderr] | [INFO] [stderr] 212 | self.tn_gps_fields.len() == 0 && [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.tn_gps_fields.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/writer.rs:213:13 [INFO] [stderr] | [INFO] [stderr] 213 | self.tn_interop_fields.len() == 0 && [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.tn_interop_fields.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/writer.rs:223:32 [INFO] [stderr] | [INFO] [stderr] 223 | w.seek(SeekFrom::Start(next_ifd_offset_offset as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(next_ifd_offset_offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/writer.rs:224:9 [INFO] [stderr] | [INFO] [stderr] 224 | / match little_endian { [INFO] [stderr] 225 | | false => BigEndian::writeu32(w, next_ifd_offset)?, [INFO] [stderr] 226 | | true => LittleEndian::writeu32(w, next_ifd_offset)?, [INFO] [stderr] 227 | | } [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if little_endian { LittleEndian::writeu32(w, next_ifd_offset)? } else { BigEndian::writeu32(w, next_ifd_offset)? }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/writer.rs:355:5 [INFO] [stderr] | [INFO] [stderr] 355 | / match little_endian { [INFO] [stderr] 356 | | false => write_image::<_, BigEndian>(w, ws), [INFO] [stderr] 357 | | true => write_image::<_, LittleEndian>(w, ws), [INFO] [stderr] 358 | | } [INFO] [stderr] | |_____^ help: consider using an if/else expression: `if little_endian { write_image::<_, LittleEndian>(w, ws) } else { write_image::<_, BigEndian>(w, ws) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/writer.rs:368:8 [INFO] [stderr] | [INFO] [stderr] 368 | if ws.exif_fields.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!ws.exif_fields.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/writer.rs:372:8 [INFO] [stderr] | [INFO] [stderr] 372 | if ws.gps_fields.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!ws.gps_fields.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/writer.rs:376:8 [INFO] [stderr] | [INFO] [stderr] 376 | if ws.interop_fields.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!ws.interop_fields.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/writer.rs:388:32 [INFO] [stderr] | [INFO] [stderr] 388 | w.seek(SeekFrom::Start(strip_offsets_offset as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(strip_offsets_offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/writer.rs:401:32 [INFO] [stderr] | [INFO] [stderr] 401 | w.seek(SeekFrom::Start(tile_offsets_offset as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(tile_offsets_offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/writer.rs:411:32 [INFO] [stderr] | [INFO] [stderr] 411 | w.seek(SeekFrom::Start(jpeg_offset as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u64::from(jpeg_offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/writer.rs:435:24 [INFO] [stderr] | [INFO] [stderr] 435 | w: &mut W, fields: &Vec<&Field>, ifd_offset: u32) [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[&Field]` [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: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/writer.rs:580:28 [INFO] [stderr] | [INFO] [stderr] 580 | w.seek(SeekFrom::Start(offset as u64))?; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u64::from(offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/writer.rs:603:8 [INFO] [stderr] | [INFO] [stderr] 603 | if pos as u32 as u64 != pos { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u64::from(pos as u32)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: aborting due to 19 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `kamadak-exif`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "9198bcf19565251cd8b210424e955a156b6dc73eef5fa637e4799cc7b7a24c04"` [INFO] running `"docker" "rm" "-f" "9198bcf19565251cd8b210424e955a156b6dc73eef5fa637e4799cc7b7a24c04"` [INFO] [stdout] 9198bcf19565251cd8b210424e955a156b6dc73eef5fa637e4799cc7b7a24c04