[INFO] crate pihash 0.4.0 is already in cache [INFO] extracting crate pihash 0.4.0 into work/ex/clippy-test-run/sources/stable/reg/pihash/0.4.0 [INFO] extracting crate pihash 0.4.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/pihash/0.4.0 [INFO] validating manifest of pihash-0.4.0 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 pihash-0.4.0 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 pihash-0.4.0 [INFO] finished frobbing pihash-0.4.0 [INFO] frobbed toml for pihash-0.4.0 written to work/ex/clippy-test-run/sources/stable/reg/pihash/0.4.0/Cargo.toml [INFO] started frobbing pihash-0.4.0 [INFO] finished frobbing pihash-0.4.0 [INFO] frobbed toml for pihash-0.4.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/pihash/0.4.0/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 pihash-0.4.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/pihash/0.4.0:/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] 3f539f1f629d3a2e2f656ef10d8239dc0ab28ef6831e8620e4636aa608f65d3d [INFO] running `"docker" "start" "-a" "3f539f1f629d3a2e2f656ef10d8239dc0ab28ef6831e8620e4636aa608f65d3d"` [INFO] [stderr] Checking dft v0.5.5 [INFO] [stderr] Checking image v0.18.0 [INFO] [stderr] Checking pihash v0.4.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/hash/mod.rs:233:9 [INFO] [stderr] | [INFO] [stderr] 233 | ahash: ahash, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `ahash` [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/hash/mod.rs:234:9 [INFO] [stderr] | [INFO] [stderr] 234 | dhash: dhash, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `dhash` [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/hash/mod.rs:235:9 [INFO] [stderr] | [INFO] [stderr] 235 | phash: phash, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `phash` [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/hash/mod.rs:233:9 [INFO] [stderr] | [INFO] [stderr] 233 | ahash: ahash, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `ahash` [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/hash/mod.rs:234:9 [INFO] [stderr] | [INFO] [stderr] 234 | dhash: dhash, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `dhash` [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/hash/mod.rs:235:9 [INFO] [stderr] | [INFO] [stderr] 235 | phash: phash, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `phash` [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/hash/phash.rs:189:14 [INFO] [stderr] | [INFO] [stderr] 189 | (f * 100000_f64).round() / 100000_f64 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `100_000_f64` [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/hash/phash.rs:189:36 [INFO] [stderr] | [INFO] [stderr] 189 | (f * 100000_f64).round() / 100000_f64 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `100_000_f64` [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/hash/mod.rs:35:47 [INFO] [stderr] | [INFO] [stderr] 35 | const FLOAT_PRECISION_MAX_5: f64 = f64::MAX / 100000_f64; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `100_000_f64` [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/hash/mod.rs:36:47 [INFO] [stderr] | [INFO] [stderr] 36 | const FLOAT_PRECISION_MIN_5: f64 = f64::MIN / 100000_f64; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `100_000_f64` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/cache.rs:25:31 [INFO] [stderr] | [INFO] [stderr] 25 | pub const DEFAULT_CACHE_DIR: &'static str = "./.hash_cache"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/cache.rs:26:26 [INFO] [stderr] | [INFO] [stderr] 26 | const CACHED_IMAGE_EXT: &'static str = "png"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/cache.rs:27:27 [INFO] [stderr] | [INFO] [stderr] 27 | const CACHED_MATRIX_EXT: &'static str = "dft"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/cache.rs:30:29 [INFO] [stderr] | [INFO] [stderr] 30 | const CACHE_METADATA_FILE: &'static str = "cache.meta"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/lib.rs:106:9 [INFO] [stderr] | [INFO] [stderr] 106 | ptr [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/lib.rs:105:19 [INFO] [stderr] | [INFO] [stderr] 105 | let ptr = Box::into_raw(lib) as *mut libc::c_void; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:268:43 [INFO] [stderr] | [INFO] [stderr] 268 | let sample_01_hashes: [u64; 3] = [7065306774709811078, 7065306774709811078, 7065306774172940166]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider: `7_065_306_774_709_811_078` [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/lib.rs:268:64 [INFO] [stderr] | [INFO] [stderr] 268 | let sample_01_hashes: [u64; 3] = [7065306774709811078, 7065306774709811078, 7065306774172940166]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider: `7_065_306_774_709_811_078` [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/lib.rs:268:85 [INFO] [stderr] | [INFO] [stderr] 268 | let sample_01_hashes: [u64; 3] = [7065306774709811078, 7065306774709811078, 7065306774172940166]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider: `7_065_306_774_172_940_166` [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/lib.rs:280:43 [INFO] [stderr] | [INFO] [stderr] 280 | let sample_02_hashes: [u64; 3] = [18446744068986765312, 18446744069246812160, 18446744073541779456]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider: `18_446_744_068_986_765_312` [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/lib.rs:280:65 [INFO] [stderr] | [INFO] [stderr] 280 | let sample_02_hashes: [u64; 3] = [18446744068986765312, 18446744069246812160, 18446744073541779456]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider: `18_446_744_069_246_812_160` [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/lib.rs:280:87 [INFO] [stderr] | [INFO] [stderr] 280 | let sample_02_hashes: [u64; 3] = [18446744068986765312, 18446744069246812160, 18446744073541779456]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider: `18_446_744_073_541_779_456` [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/lib.rs:292:43 [INFO] [stderr] | [INFO] [stderr] 292 | let sample_03_hashes: [u64; 3] = [108649334536274430, 126663733045756414, 108649334536274430]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `108_649_334_536_274_430` [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/lib.rs:292:63 [INFO] [stderr] | [INFO] [stderr] 292 | let sample_03_hashes: [u64; 3] = [108649334536274430, 126663733045756414, 108649334536274430]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `126_663_733_045_756_414` [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/lib.rs:292:83 [INFO] [stderr] | [INFO] [stderr] 292 | let sample_03_hashes: [u64; 3] = [108649334536274430, 126663733045756414, 108649334536274430]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `108_649_334_536_274_430` [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/lib.rs:304:43 [INFO] [stderr] | [INFO] [stderr] 304 | let sample_04_hashes: [u64; 3] = [18446460933225054208, 18446460933225054208, 18446460933225054208]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider: `18_446_460_933_225_054_208` [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/lib.rs:304:65 [INFO] [stderr] | [INFO] [stderr] 304 | let sample_04_hashes: [u64; 3] = [18446460933225054208, 18446460933225054208, 18446460933225054208]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider: `18_446_460_933_225_054_208` [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/lib.rs:304:87 [INFO] [stderr] | [INFO] [stderr] 304 | let sample_04_hashes: [u64; 3] = [18446460933225054208, 18446460933225054208, 18446460933225054208]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider: `18_446_460_933_225_054_208` [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/lib.rs:325:43 [INFO] [stderr] | [INFO] [stderr] 325 | let sample_01_hashes: [u64; 3] = [18131474507607572478, 18131474507607572478, 18131474507607572478]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider: `18_131_474_507_607_572_478` [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/lib.rs:325:65 [INFO] [stderr] | [INFO] [stderr] 325 | let sample_01_hashes: [u64; 3] = [18131474507607572478, 18131474507607572478, 18131474507607572478]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider: `18_131_474_507_607_572_478` [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/lib.rs:325:87 [INFO] [stderr] | [INFO] [stderr] 325 | let sample_01_hashes: [u64; 3] = [18131474507607572478, 18131474507607572478, 18131474507607572478]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider: `18_131_474_507_607_572_478` [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/lib.rs:337:43 [INFO] [stderr] | [INFO] [stderr] 337 | let sample_02_hashes: [u64; 3] = [10088065226894213121, 10088065226894213121, 10088065226894213121]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider: `10_088_065_226_894_213_121` [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/lib.rs:337:65 [INFO] [stderr] | [INFO] [stderr] 337 | let sample_02_hashes: [u64; 3] = [10088065226894213121, 10088065226894213121, 10088065226894213121]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider: `10_088_065_226_894_213_121` [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/lib.rs:337:87 [INFO] [stderr] | [INFO] [stderr] 337 | let sample_02_hashes: [u64; 3] = [10088065226894213121, 10088065226894213121, 10088065226894213121]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider: `10_088_065_226_894_213_121` [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/lib.rs:349:43 [INFO] [stderr] | [INFO] [stderr] 349 | let sample_03_hashes: [u64; 3] = [144115181601817086, 144115181601817086, 144115181601817086]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `144_115_181_601_817_086` [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/lib.rs:349:63 [INFO] [stderr] | [INFO] [stderr] 349 | let sample_03_hashes: [u64; 3] = [144115181601817086, 144115181601817086, 144115181601817086]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `144_115_181_601_817_086` [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/lib.rs:349:83 [INFO] [stderr] | [INFO] [stderr] 349 | let sample_03_hashes: [u64; 3] = [144115181601817086, 144115181601817086, 144115181601817086]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `144_115_181_601_817_086` [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/lib.rs:361:43 [INFO] [stderr] | [INFO] [stderr] 361 | let sample_04_hashes: [u64; 3] = [18374262326015557633, 18374262326015557633, 18374262326283993089]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider: `18_374_262_326_015_557_633` [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/lib.rs:361:65 [INFO] [stderr] | [INFO] [stderr] 361 | let sample_04_hashes: [u64; 3] = [18374262326015557633, 18374262326015557633, 18374262326283993089]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider: `18_374_262_326_015_557_633` [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/lib.rs:361:87 [INFO] [stderr] | [INFO] [stderr] 361 | let sample_04_hashes: [u64; 3] = [18374262326015557633, 18374262326015557633, 18374262326283993089]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider: `18_374_262_326_283_993_089` [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/lib.rs:382:43 [INFO] [stderr] | [INFO] [stderr] 382 | let sample_01_hashes: [u64; 3] = [72410537899606272, 72410537899606272, 72410537899606400]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider: `72_410_537_899_606_272` [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/lib.rs:382:62 [INFO] [stderr] | [INFO] [stderr] 382 | let sample_01_hashes: [u64; 3] = [72410537899606272, 72410537899606272, 72410537899606400]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider: `72_410_537_899_606_272` [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/lib.rs:382:81 [INFO] [stderr] | [INFO] [stderr] 382 | let sample_01_hashes: [u64; 3] = [72410537899606272, 72410537899606272, 72410537899606400]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider: `72_410_537_899_606_400` [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/lib.rs:394:43 [INFO] [stderr] | [INFO] [stderr] 394 | let sample_02_hashes: [u64; 3] = [5620563253458370560, 5620562703702556672, 5620562703702556672]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider: `5_620_563_253_458_370_560` [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/lib.rs:394:64 [INFO] [stderr] | [INFO] [stderr] 394 | let sample_02_hashes: [u64; 3] = [5620563253458370560, 5620562703702556672, 5620562703702556672]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider: `5_620_562_703_702_556_672` [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/lib.rs:394:85 [INFO] [stderr] | [INFO] [stderr] 394 | let sample_02_hashes: [u64; 3] = [5620563253458370560, 5620562703702556672, 5620562703702556672]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider: `5_620_562_703_702_556_672` [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/lib.rs:406:43 [INFO] [stderr] | [INFO] [stderr] 406 | let sample_03_hashes: [u64; 3] = [6926536226895822848, 6926536226895822848, 6926536226895822848]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider: `6_926_536_226_895_822_848` [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/lib.rs:406:64 [INFO] [stderr] | [INFO] [stderr] 406 | let sample_03_hashes: [u64; 3] = [6926536226895822848, 6926536226895822848, 6926536226895822848]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider: `6_926_536_226_895_822_848` [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/lib.rs:406:86 [INFO] [stderr] | [INFO] [stderr] 406 | let sample_03_hashes: [u64; 3] = [6926536226895822848, 6926536226895822848, 6926536226895822848]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider: `6_926_536_226_895_822_848` [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/lib.rs:418:43 [INFO] [stderr] | [INFO] [stderr] 418 | let sample_04_hashes: [u64; 3] = [11430286023502856200, 10997940459275288576, 11142055647351144448]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider: `11_430_286_023_502_856_200` [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/lib.rs:418:65 [INFO] [stderr] | [INFO] [stderr] 418 | let sample_04_hashes: [u64; 3] = [11430286023502856200, 10997940459275288576, 11142055647351144448]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider: `10_997_940_459_275_288_576` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:418:87 [INFO] [stderr] | [INFO] [stderr] 418 | let sample_04_hashes: [u64; 3] = [11430286023502856200, 10997940459275288576, 11142055647351144448]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider: `11_142_055_647_351_144_448` [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/hash/phash.rs:189:14 [INFO] [stderr] | [INFO] [stderr] 189 | (f * 100000_f64).round() / 100000_f64 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `100_000_f64` [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/hash/phash.rs:189:36 [INFO] [stderr] | [INFO] [stderr] 189 | (f * 100000_f64).round() / 100000_f64 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `100_000_f64` [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/hash/mod.rs:35:47 [INFO] [stderr] | [INFO] [stderr] 35 | const FLOAT_PRECISION_MAX_5: f64 = f64::MAX / 100000_f64; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `100_000_f64` [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/hash/mod.rs:36:47 [INFO] [stderr] | [INFO] [stderr] 36 | const FLOAT_PRECISION_MIN_5: f64 = f64::MIN / 100000_f64; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `100_000_f64` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/cache.rs:25:31 [INFO] [stderr] | [INFO] [stderr] 25 | pub const DEFAULT_CACHE_DIR: &'static str = "./.hash_cache"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/cache.rs:26:26 [INFO] [stderr] | [INFO] [stderr] 26 | const CACHED_IMAGE_EXT: &'static str = "png"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/cache.rs:27:27 [INFO] [stderr] | [INFO] [stderr] 27 | const CACHED_MATRIX_EXT: &'static str = "dft"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/cache.rs:30:29 [INFO] [stderr] | [INFO] [stderr] 30 | const CACHE_METADATA_FILE: &'static str = "cache.meta"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/lib.rs:106:9 [INFO] [stderr] | [INFO] [stderr] 106 | ptr [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/lib.rs:105:19 [INFO] [stderr] | [INFO] [stderr] 105 | let ptr = Box::into_raw(lib) as *mut libc::c_void; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/hash/ahash.rs:42:30 [INFO] [stderr] | [INFO] [stderr] 42 | total += pixel.data[0] as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(pixel.data[0])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/hash/ahash.rs:44:36 [INFO] [stderr] | [INFO] [stderr] 44 | let mean = total / (height * width) as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(height * width)` [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 u64 may become silently lossy if types change [INFO] [stderr] --> src/hash/ahash.rs:50:24 [INFO] [stderr] | [INFO] [stderr] 50 | if pixel.data[0] as u64 >= mean { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(pixel.data[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 u64 may become silently lossy if types change [INFO] [stderr] --> src/hash/dhash.rs:38:41 [INFO] [stderr] | [INFO] [stderr] 38 | let first_pixel_value = first_pixel.data[0] as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(first_pixel.data[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 u64 may become silently lossy if types change [INFO] [stderr] --> src/hash/dhash.rs:39:40 [INFO] [stderr] | [INFO] [stderr] 39 | let last_pixel_value = last_pixel.data[0] as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(last_pixel.data[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 u64 may become silently lossy if types change [INFO] [stderr] --> src/hash/dhash.rs:46:48 [INFO] [stderr] | [INFO] [stderr] 46 | previous_pixel_value = pixel.data[0] as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(pixel.data[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 u64 may become silently lossy if types change [INFO] [stderr] --> src/hash/dhash.rs:49:37 [INFO] [stderr] | [INFO] [stderr] 49 | let pixel_val = pixel.data[0] as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(pixel.data[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: the loop variable `x` is only used to index `data_matrix`. [INFO] [stderr] --> src/hash/phash.rs:75:26 [INFO] [stderr] | [INFO] [stderr] 75 | for x in 0..target_width { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 75 | for in data_matrix.iter().take(target_width) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `x` is only used to index `data_matrix`. [INFO] [stderr] --> src/hash/phash.rs:84:26 [INFO] [stderr] | [INFO] [stderr] 84 | for x in 0..target_width { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 84 | for in data_matrix.iter().take(target_width) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/hash/phash.rs:112:33 [INFO] [stderr] | [INFO] [stderr] 112 | data_matrix[x].push(image.get_pixel(pos_x, pos_y).channels()[0] as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(image.get_pixel(pos_x, pos_y).channels()[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: the loop variable `x` is only used to index `data_matrix`. [INFO] [stderr] --> src/hash/phash.rs:143:14 [INFO] [stderr] | [INFO] [stderr] 143 | for x in 0..width { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 143 | for in data_matrix.iter().take(width) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `x` is only used to index `complex_data_matrix`. [INFO] [stderr] --> src/hash/phash.rs:161:18 [INFO] [stderr] | [INFO] [stderr] 161 | for x in 0..width { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 161 | for in complex_data_matrix.iter().take(width) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/hash/mod.rs:62:9 [INFO] [stderr] | [INFO] [stderr] 62 | / if self.orig_path != other.orig_path && [INFO] [stderr] 63 | | calculate_hamming_distance(self.ahash, other.ahash) <= [INFO] [stderr] 64 | | HAMMING_DISTANCE_SIMILARITY_LIMIT && [INFO] [stderr] 65 | | calculate_hamming_distance(self.dhash, other.dhash) <= [INFO] [stderr] ... | [INFO] [stderr] 71 | | false [INFO] [stderr] 72 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] help: you can reduce it to [INFO] [stderr] | [INFO] [stderr] 62 | self.orig_path != other.orig_path && [INFO] [stderr] 63 | calculate_hamming_distance(self.ahash, other.ahash) <= [INFO] [stderr] 64 | HAMMING_DISTANCE_SIMILARITY_LIMIT && [INFO] [stderr] 65 | calculate_hamming_distance(self.dhash, other.dhash) <= [INFO] [stderr] 66 | HAMMING_DISTANCE_SIMILARITY_LIMIT && [INFO] [stderr] 67 | calculate_hamming_distance(self.phash, other.phash) <= [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/hash/mod.rs:166:21 [INFO] [stderr] | [INFO] [stderr] 166 | / match processed_image.image { [INFO] [stderr] 167 | | Some(ref image) => { [INFO] [stderr] 168 | | match c.put_image_in_cache(&path, size, &image) { [INFO] [stderr] 169 | | Ok(_) => {} [INFO] [stderr] ... | [INFO] [stderr] 173 | | None => {} [INFO] [stderr] 174 | | }; [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 166 | if let Some(ref image) = processed_image.image { [INFO] [stderr] 167 | match c.put_image_in_cache(&path, size, &image) { [INFO] [stderr] 168 | Ok(_) => {} [INFO] [stderr] 169 | Err(e) => println!("Unable to store image in cache. {}", e), [INFO] [stderr] 170 | }; [INFO] [stderr] 171 | }; [INFO] [stderr] | [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/hash/mod.rs:186:1 [INFO] [stderr] | [INFO] [stderr] 186 | / fn process_image<'a>(image_path: &'a str, size: u32) -> PreparedImage<'a> { [INFO] [stderr] 187 | | // Otherwise let's do that work now and store it. [INFO] [stderr] 188 | | // println!("Path: {}", image_path); [INFO] [stderr] 189 | | let image = match image::open(Path::new(image_path)) { [INFO] [stderr] ... | [INFO] [stderr] 202 | | } [INFO] [stderr] 203 | | } [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: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/hash/mod.rs:247:5 [INFO] [stderr] | [INFO] [stderr] 247 | (hash1 ^ hash2).count_ones() as u64 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from((hash1 ^ hash2).count_ones())` [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: re-implementing `PartialEq::ne` is unnecessary [INFO] [stderr] --> src/cache.rs:48:5 [INFO] [stderr] | [INFO] [stderr] 48 | / fn ne(&self, other: &CacheMetadata) -> bool { [INFO] [stderr] 49 | | !self.eq(&other) [INFO] [stderr] 50 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::partialeq_ne_impl)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_ne_impl [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/cache.rs:81:17 [INFO] [stderr] | [INFO] [stderr] 81 | / match File::open(&metadata_path) { [INFO] [stderr] 82 | | Ok(mut file) => { [INFO] [stderr] 83 | | // Metadata file exists, compare them [INFO] [stderr] 84 | | let mut loaded_metadata_string = String::new(); [INFO] [stderr] ... | [INFO] [stderr] 112 | | Err(_) => {} [INFO] [stderr] 113 | | }; [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 81 | if let Ok(mut file) = File::open(&metadata_path) { [INFO] [stderr] 82 | // Metadata file exists, compare them [INFO] [stderr] 83 | let mut loaded_metadata_string = String::new(); [INFO] [stderr] 84 | match file.read_to_string(&mut loaded_metadata_string) { [INFO] [stderr] 85 | Ok(_) => { [INFO] [stderr] 86 | let loaded_metadata: CacheMetadata = [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/cache.rs:240:47 [INFO] [stderr] | [INFO] [stderr] 240 | file_contents: &Vec>) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[Vec]` [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] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/cache.rs:269:37 [INFO] [stderr] | [INFO] [stderr] 269 | try!(compressor.write(&row_str.into_bytes())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] = 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: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/cache.rs:278:33 [INFO] [stderr] | [INFO] [stderr] 278 | try!(file.write(&compressed_matrix)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [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: single-character string constant used as pattern [INFO] [stderr] --> src/cache.rs:328:40 [INFO] [stderr] | [INFO] [stderr] 328 | .split("\n") [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/cache.rs:330:48 [INFO] [stderr] | [INFO] [stderr] 330 | line.split(",") [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/lib.rs:98:40 [INFO] [stderr] | [INFO] [stderr] 98 | let path_cstr = CStr::from_ptr(cache_path_char); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::not_unsafe_ptr_arg_deref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/lib.rs:120:39 [INFO] [stderr] | [INFO] [stderr] 120 | let path_str = CStr::from_ptr(path_char); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/lib.rs:138:39 [INFO] [stderr] | [INFO] [stderr] 138 | let path_str = CStr::from_ptr(path_char); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/lib.rs:156:39 [INFO] [stderr] | [INFO] [stderr] 156 | let path_str = CStr::from_ptr(path_char); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref [INFO] [stderr] [INFO] [stderr] error: aborting due to 6 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `pihash`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/hash/ahash.rs:42:30 [INFO] [stderr] | [INFO] [stderr] 42 | total += pixel.data[0] as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(pixel.data[0])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/hash/ahash.rs:44:36 [INFO] [stderr] | [INFO] [stderr] 44 | let mean = total / (height * width) as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(height * width)` [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 u64 may become silently lossy if types change [INFO] [stderr] --> src/hash/ahash.rs:50:24 [INFO] [stderr] | [INFO] [stderr] 50 | if pixel.data[0] as u64 >= mean { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(pixel.data[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 u64 may become silently lossy if types change [INFO] [stderr] --> src/hash/dhash.rs:38:41 [INFO] [stderr] | [INFO] [stderr] 38 | let first_pixel_value = first_pixel.data[0] as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(first_pixel.data[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 u64 may become silently lossy if types change [INFO] [stderr] --> src/hash/dhash.rs:39:40 [INFO] [stderr] | [INFO] [stderr] 39 | let last_pixel_value = last_pixel.data[0] as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(last_pixel.data[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 u64 may become silently lossy if types change [INFO] [stderr] --> src/hash/dhash.rs:46:48 [INFO] [stderr] | [INFO] [stderr] 46 | previous_pixel_value = pixel.data[0] as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(pixel.data[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 u64 may become silently lossy if types change [INFO] [stderr] --> src/hash/dhash.rs:49:37 [INFO] [stderr] | [INFO] [stderr] 49 | let pixel_val = pixel.data[0] as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(pixel.data[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: the loop variable `x` is only used to index `data_matrix`. [INFO] [stderr] --> src/hash/phash.rs:75:26 [INFO] [stderr] | [INFO] [stderr] 75 | for x in 0..target_width { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 75 | for in data_matrix.iter().take(target_width) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `x` is only used to index `data_matrix`. [INFO] [stderr] --> src/hash/phash.rs:84:26 [INFO] [stderr] | [INFO] [stderr] 84 | for x in 0..target_width { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 84 | for in data_matrix.iter().take(target_width) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/hash/phash.rs:112:33 [INFO] [stderr] | [INFO] [stderr] 112 | data_matrix[x].push(image.get_pixel(pos_x, pos_y).channels()[0] as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(image.get_pixel(pos_x, pos_y).channels()[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: the loop variable `x` is only used to index `data_matrix`. [INFO] [stderr] --> src/hash/phash.rs:143:14 [INFO] [stderr] | [INFO] [stderr] 143 | for x in 0..width { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 143 | for in data_matrix.iter().take(width) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `x` is only used to index `complex_data_matrix`. [INFO] [stderr] --> src/hash/phash.rs:161:18 [INFO] [stderr] | [INFO] [stderr] 161 | for x in 0..width { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 161 | for in complex_data_matrix.iter().take(width) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/hash/phash.rs:214:13 [INFO] [stderr] | [INFO] [stderr] 214 | assert!(test_matrix[0][0] == 24_f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(test_matrix[0][0] - 24_f64).abs() < error` [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/hash/phash.rs:214:13 [INFO] [stderr] | [INFO] [stderr] 214 | assert!(test_matrix[0][0] == 24_f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/hash/phash.rs:221:13 [INFO] [stderr] | [INFO] [stderr] 221 | assert!(test_matrix[1][2] == -2_f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(test_matrix[1][2] - -2_f64).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/hash/phash.rs:221:13 [INFO] [stderr] | [INFO] [stderr] 221 | assert!(test_matrix[1][2] == -2_f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/hash/phash.rs:222:13 [INFO] [stderr] | [INFO] [stderr] 222 | assert!(test_matrix[1][3] == 2_f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(test_matrix[1][3] - 2_f64).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/hash/phash.rs:222:13 [INFO] [stderr] | [INFO] [stderr] 222 | assert!(test_matrix[1][3] == 2_f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/hash/phash.rs:225:13 [INFO] [stderr] | [INFO] [stderr] 225 | assert!(test_matrix[2][1] == -2_f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(test_matrix[2][1] - -2_f64).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/hash/phash.rs:225:13 [INFO] [stderr] | [INFO] [stderr] 225 | assert!(test_matrix[2][1] == -2_f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/hash/phash.rs:226:13 [INFO] [stderr] | [INFO] [stderr] 226 | assert!(test_matrix[2][2] == -4_f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(test_matrix[2][2] - -4_f64).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/hash/phash.rs:226:13 [INFO] [stderr] | [INFO] [stderr] 226 | assert!(test_matrix[2][2] == -4_f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/hash/phash.rs:227:13 [INFO] [stderr] | [INFO] [stderr] 227 | assert!(test_matrix[2][3] == -2_f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(test_matrix[2][3] - -2_f64).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/hash/phash.rs:227:13 [INFO] [stderr] | [INFO] [stderr] 227 | assert!(test_matrix[2][3] == -2_f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/hash/phash.rs:230:13 [INFO] [stderr] | [INFO] [stderr] 230 | assert!(test_matrix[3][1] == 2_f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(test_matrix[3][1] - 2_f64).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/hash/phash.rs:230:13 [INFO] [stderr] | [INFO] [stderr] 230 | assert!(test_matrix[3][1] == 2_f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/hash/phash.rs:231:13 [INFO] [stderr] | [INFO] [stderr] 231 | assert!(test_matrix[3][2] == -2_f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(test_matrix[3][2] - -2_f64).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/hash/phash.rs:231:13 [INFO] [stderr] | [INFO] [stderr] 231 | assert!(test_matrix[3][2] == -2_f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/hash/mod.rs:62:9 [INFO] [stderr] | [INFO] [stderr] 62 | / if self.orig_path != other.orig_path && [INFO] [stderr] 63 | | calculate_hamming_distance(self.ahash, other.ahash) <= [INFO] [stderr] 64 | | HAMMING_DISTANCE_SIMILARITY_LIMIT && [INFO] [stderr] 65 | | calculate_hamming_distance(self.dhash, other.dhash) <= [INFO] [stderr] ... | [INFO] [stderr] 71 | | false [INFO] [stderr] 72 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] help: you can reduce it to [INFO] [stderr] | [INFO] [stderr] 62 | self.orig_path != other.orig_path && [INFO] [stderr] 63 | calculate_hamming_distance(self.ahash, other.ahash) <= [INFO] [stderr] 64 | HAMMING_DISTANCE_SIMILARITY_LIMIT && [INFO] [stderr] 65 | calculate_hamming_distance(self.dhash, other.dhash) <= [INFO] [stderr] 66 | HAMMING_DISTANCE_SIMILARITY_LIMIT && [INFO] [stderr] 67 | calculate_hamming_distance(self.phash, other.phash) <= [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/hash/mod.rs:166:21 [INFO] [stderr] | [INFO] [stderr] 166 | / match processed_image.image { [INFO] [stderr] 167 | | Some(ref image) => { [INFO] [stderr] 168 | | match c.put_image_in_cache(&path, size, &image) { [INFO] [stderr] 169 | | Ok(_) => {} [INFO] [stderr] ... | [INFO] [stderr] 173 | | None => {} [INFO] [stderr] 174 | | }; [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 166 | if let Some(ref image) = processed_image.image { [INFO] [stderr] 167 | match c.put_image_in_cache(&path, size, &image) { [INFO] [stderr] 168 | Ok(_) => {} [INFO] [stderr] 169 | Err(e) => println!("Unable to store image in cache. {}", e), [INFO] [stderr] 170 | }; [INFO] [stderr] 171 | }; [INFO] [stderr] | [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/hash/mod.rs:186:1 [INFO] [stderr] | [INFO] [stderr] 186 | / fn process_image<'a>(image_path: &'a str, size: u32) -> PreparedImage<'a> { [INFO] [stderr] 187 | | // Otherwise let's do that work now and store it. [INFO] [stderr] 188 | | // println!("Path: {}", image_path); [INFO] [stderr] 189 | | let image = match image::open(Path::new(image_path)) { [INFO] [stderr] ... | [INFO] [stderr] 202 | | } [INFO] [stderr] 203 | | } [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: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/hash/mod.rs:247:5 [INFO] [stderr] | [INFO] [stderr] 247 | (hash1 ^ hash2).count_ones() as u64 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from((hash1 ^ hash2).count_ones())` [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: re-implementing `PartialEq::ne` is unnecessary [INFO] [stderr] --> src/cache.rs:48:5 [INFO] [stderr] | [INFO] [stderr] 48 | / fn ne(&self, other: &CacheMetadata) -> bool { [INFO] [stderr] 49 | | !self.eq(&other) [INFO] [stderr] 50 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::partialeq_ne_impl)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_ne_impl [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/cache.rs:81:17 [INFO] [stderr] | [INFO] [stderr] 81 | / match File::open(&metadata_path) { [INFO] [stderr] 82 | | Ok(mut file) => { [INFO] [stderr] 83 | | // Metadata file exists, compare them [INFO] [stderr] 84 | | let mut loaded_metadata_string = String::new(); [INFO] [stderr] ... | [INFO] [stderr] 112 | | Err(_) => {} [INFO] [stderr] 113 | | }; [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 81 | if let Ok(mut file) = File::open(&metadata_path) { [INFO] [stderr] 82 | // Metadata file exists, compare them [INFO] [stderr] 83 | let mut loaded_metadata_string = String::new(); [INFO] [stderr] 84 | match file.read_to_string(&mut loaded_metadata_string) { [INFO] [stderr] 85 | Ok(_) => { [INFO] [stderr] 86 | let loaded_metadata: CacheMetadata = [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/cache.rs:240:47 [INFO] [stderr] | [INFO] [stderr] 240 | file_contents: &Vec>) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[Vec]` [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] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/cache.rs:269:37 [INFO] [stderr] | [INFO] [stderr] 269 | try!(compressor.write(&row_str.into_bytes())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] = 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: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/cache.rs:278:33 [INFO] [stderr] | [INFO] [stderr] 278 | try!(file.write(&compressed_matrix)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [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: single-character string constant used as pattern [INFO] [stderr] --> src/cache.rs:328:40 [INFO] [stderr] | [INFO] [stderr] 328 | .split("\n") [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/cache.rs:330:48 [INFO] [stderr] | [INFO] [stderr] 330 | line.split(",") [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/lib.rs:98:40 [INFO] [stderr] | [INFO] [stderr] 98 | let path_cstr = CStr::from_ptr(cache_path_char); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::not_unsafe_ptr_arg_deref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/lib.rs:120:39 [INFO] [stderr] | [INFO] [stderr] 120 | let path_str = CStr::from_ptr(path_char); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/lib.rs:138:39 [INFO] [stderr] | [INFO] [stderr] 138 | let path_str = CStr::from_ptr(path_char); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/lib.rs:156:39 [INFO] [stderr] | [INFO] [stderr] 156 | let path_str = CStr::from_ptr(path_char); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref [INFO] [stderr] [INFO] [stderr] error: aborting due to 14 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `pihash`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "3f539f1f629d3a2e2f656ef10d8239dc0ab28ef6831e8620e4636aa608f65d3d"` [INFO] running `"docker" "rm" "-f" "3f539f1f629d3a2e2f656ef10d8239dc0ab28ef6831e8620e4636aa608f65d3d"` [INFO] [stdout] 3f539f1f629d3a2e2f656ef10d8239dc0ab28ef6831e8620e4636aa608f65d3d