visual-hash 3.3.2

A simple library that provides perceptual hashing and difference calculation for images.
Documentation

Build #3394642 2026-05-26 20:28:15

# rustc version rustc 1.98.0-nightly (31a9463c6 2026-05-25)

# docs.rs version docsrs 0.0.0 (f16e33f3e6ac9fc9e4413728c5dd1b2ba1c6b799 2026-05-23 )

# build log [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "DOCS_RS=1" "-w" "/opt/rustwide/workdir" "--user" "1001:1001" "294bb1e67f4cdc4c179689f47e57830b4518eec338ac2931560661c254ad013b" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "rustdoc" "--lib" "-Zrustdoc-map" "--config" "build.rustdocflags=[\"--cfg\", \"docsrs\", \"-Z\", \"unstable-options\", \"--emit=invocation-specific\", \"--resource-suffix\", \"-20260525-1.98.0-nightly-31a9463c6\", \"--static-root-path\", \"/-/rustdoc.static/\", \"--cap-lints\", \"warn\", \"--extern-html-root-takes-precedence\"]" "--offline" "-Zunstable-options" "--config=doc.extern-map.registries.crates-io=\"https://docs.rs/{pkg_name}/{version}/x86_64-unknown-linux-gnu\"" "-Zrustdoc-scrape-examples" "-j6" "--target" "x86_64-unknown-linux-gnu", kill_on_drop: false }` [INFO] [stderr] warning: Rustdoc did not scrape the following examples because they require dev-dependencies: simple [INFO] [stderr] If you want Rustdoc to scrape these examples, then add `doc-scrape-examples = true` [INFO] [stderr] to the [[example]] target configuration of at least one example. [INFO] [stderr] warning: target filter specified, but no targets matched; this is a no-op [INFO] [stderr] Documenting visual-hash v3.3.2 (/opt/rustwide/workdir) [INFO] [stderr] warning: unnecessary parentheses around closure body [INFO] [stderr] --> src/alg/blockhash.rs:62:22 [INFO] [stderr] | [INFO] [stderr] 62 | move |x, y, add| (blocks[(y as usize) * (width as usize) + (x as usize)] += add) [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 62 - move |x, y, add| (blocks[(y as usize) * (width as usize) + (x as usize)] += add) [INFO] [stderr] 62 + move |x, y, add| blocks[(y as usize) * (width as usize) + (x as usize)] += add [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unexpected `cfg` condition value: `nightly` [INFO] [stderr] --> src/traits.rs:166:11 [INFO] [stderr] | [INFO] [stderr] 166 | #[cfg(not(feature = "nightly"))] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove the condition [INFO] [stderr] | [INFO] [stderr] = note: no expected values for `feature` [INFO] [stderr] = help: consider adding `nightly` as a feature in `Cargo.toml` [INFO] [stderr] = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration [INFO] [stderr] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unexpected `cfg` condition value: `nightly` [INFO] [stderr] --> src/traits.rs:191:7 [INFO] [stderr] | [INFO] [stderr] 191 | #[cfg(feature = "nightly")] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove the condition [INFO] [stderr] | [INFO] [stderr] = note: no expected values for `feature` [INFO] [stderr] = help: consider adding `nightly` as a feature in `Cargo.toml` [INFO] [stderr] = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration [INFO] [stderr] [INFO] [stderr] warning: unexpected `cfg` condition value: `nightly` [INFO] [stderr] --> src/traits.rs:246:7 [INFO] [stderr] | [INFO] [stderr] 246 | #[cfg(feature = "nightly")] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove the condition [INFO] [stderr] | [INFO] [stderr] = note: no expected values for `feature` [INFO] [stderr] = help: consider adding `nightly` as a feature in `Cargo.toml` [INFO] [stderr] = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `::Hasher` [INFO] [stderr] --> src/lib.rs:41:58 [INFO] [stderr] | [INFO] [stderr] 41 | /// **Start here**. Configuration builder for [`Hasher`](::Hasher). [INFO] [stderr] | ^^^^^^^^ no item named `Hasher` in scope [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(rustdoc::broken_intra_doc_links)]` on by default [INFO] [stderr] [INFO] [stderr] warning: this URL is not a hyperlink [INFO] [stderr] --> src/alg.rs:15:34 [INFO] [stderr] | [INFO] [stderr] 15 | /// written by Dr. Neal Krawetz: http://www.hackerfactor.com/ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: bare URLs are not automatically turned into clickable links [INFO] [stderr] = note: `#[warn(rustdoc::bare_urls)]` on by default [INFO] [stderr] help: use an automatic link instead [INFO] [stderr] | [INFO] [stderr] 15 | /// written by Dr. Neal Krawetz: <http://www.hackerfactor.com/> [INFO] [stderr] | + + [INFO] [stderr] [INFO] [stderr] warning: this URL is not a hyperlink [INFO] [stderr] --> src/alg.rs:35:9 [INFO] [stderr] | [INFO] [stderr] 35 | /// http://www.hackerfactor.com/blog/?/archives/432-Looks-Like-It.html [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: bare URLs are not automatically turned into clickable links [INFO] [stderr] help: use an automatic link instead [INFO] [stderr] | [INFO] [stderr] 35 | /// <http://www.hackerfactor.com/blog/?/archives/432-Looks-Like-It.html> [INFO] [stderr] | + + [INFO] [stderr] [INFO] [stderr] warning: this URL is not a hyperlink [INFO] [stderr] --> src/alg.rs:49:9 [INFO] [stderr] | [INFO] [stderr] 49 | /// http://www.hackerfactor.com/blog/index.php?/archives/529-Kind-of-Like-That.html [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: bare URLs are not automatically turned into clickable links [INFO] [stderr] help: use an automatic link instead [INFO] [stderr] | [INFO] [stderr] 49 | /// <http://www.hackerfactor.com/blog/index.php?/archives/529-Kind-of-Like-That.html> [INFO] [stderr] | + + [INFO] [stderr] [INFO] [stderr] warning: this URL is not a hyperlink [INFO] [stderr] --> src/alg.rs:77:9 [INFO] [stderr] | [INFO] [stderr] 77 | /// https://github.com/commonsmachinery/blockhash-rfc/blob/master/main.md [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: bare URLs are not automatically turned into clickable links [INFO] [stderr] help: use an automatic link instead [INFO] [stderr] | [INFO] [stderr] 77 | /// <https://github.com/commonsmachinery/blockhash-rfc/blob/master/main.md> [INFO] [stderr] | + + [INFO] [stderr] [INFO] [stderr] warning: this URL is not a hyperlink [INFO] [stderr] --> src/lib.rs:214:11 [INFO] [stderr] | [INFO] [stderr] 214 | /// * http://www.hackerfactor.com/blog/?/archives/432-Looks-Like-It.html [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: bare URLs are not automatically turned into clickable links [INFO] [stderr] help: use an automatic link instead [INFO] [stderr] | [INFO] [stderr] 214 | /// * <http://www.hackerfactor.com/blog/?/archives/432-Looks-Like-It.html> [INFO] [stderr] | + + [INFO] [stderr] [INFO] [stderr] warning: this URL is not a hyperlink [INFO] [stderr] --> src/lib.rs:218:11 [INFO] [stderr] | [INFO] [stderr] 218 | /// * https://en.wikipedia.org/wiki/Discrete_cosine_transform [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: bare URLs are not automatically turned into clickable links [INFO] [stderr] help: use an automatic link instead [INFO] [stderr] | [INFO] [stderr] 218 | /// * <https://en.wikipedia.org/wiki/Discrete_cosine_transform> [INFO] [stderr] | + + [INFO] [stderr] [INFO] [stderr] warning: this URL is not a hyperlink [INFO] [stderr] --> src/lib.rs:244:11 [INFO] [stderr] | [INFO] [stderr] 244 | /// * https://en.wikipedia.org/wiki/Difference_of_Gaussians [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: bare URLs are not automatically turned into clickable links [INFO] [stderr] help: use an automatic link instead [INFO] [stderr] | [INFO] [stderr] 244 | /// * <https://en.wikipedia.org/wiki/Difference_of_Gaussians> [INFO] [stderr] | + + [INFO] [stderr] [INFO] [stderr] warning: this URL is not a hyperlink [INFO] [stderr] --> src/lib.rs:245:11 [INFO] [stderr] | [INFO] [stderr] 245 | /// * http://homepages.inf.ed.ac.uk/rbf/HIPR2/log.htm [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: bare URLs are not automatically turned into clickable links [INFO] [stderr] help: use an automatic link instead [INFO] [stderr] | [INFO] [stderr] 245 | /// * <http://homepages.inf.ed.ac.uk/rbf/HIPR2/log.htm> [INFO] [stderr] | + + [INFO] [stderr] [INFO] [stderr] warning: specialization is experimental [INFO] [stderr] --> src/traits.rs:199:5 [INFO] [stderr] | [INFO] [stderr] 199 | default fn to_grayscale(&self) -> Cow<GrayImage> { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: see issue #31844 <https://github.com/rust-lang/rust/issues/31844> for more information [INFO] [stderr] = help: add `#![feature(specialization)]` to the crate attributes to enable [INFO] [stderr] = note: this compiler was built on 2026-05-25; consider upgrading it if it is out of date [INFO] [stderr] = warning: unstable syntax can change at any point in the future, causing a hard error! [INFO] [stderr] = note: for more information, see issue #154045 <https://github.com/rust-lang/rust/issues/154045> [INFO] [stderr] [INFO] [stderr] warning: specialization is experimental [INFO] [stderr] --> src/traits.rs:203:5 [INFO] [stderr] | [INFO] [stderr] 203 | default fn blur(&self, sigma: f32) -> Self::Buf { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: see issue #31844 <https://github.com/rust-lang/rust/issues/31844> for more information [INFO] [stderr] = help: add `#![feature(specialization)]` to the crate attributes to enable [INFO] [stderr] = note: this compiler was built on 2026-05-25; consider upgrading it if it is out of date [INFO] [stderr] = warning: unstable syntax can change at any point in the future, causing a hard error! [INFO] [stderr] = note: for more information, see issue #154045 <https://github.com/rust-lang/rust/issues/154045> [INFO] [stderr] [INFO] [stderr] warning: specialization is experimental [INFO] [stderr] --> src/traits.rs:207:5 [INFO] [stderr] | [INFO] [stderr] 207 | default fn foreach_pixel8<F>(&self, mut foreach: F) [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: see issue #31844 <https://github.com/rust-lang/rust/issues/31844> for more information [INFO] [stderr] = help: add `#![feature(specialization)]` to the crate attributes to enable [INFO] [stderr] = note: this compiler was built on 2026-05-25; consider upgrading it if it is out of date [INFO] [stderr] = warning: unstable syntax can change at any point in the future, causing a hard error! [INFO] [stderr] = note: for more information, see issue #154045 <https://github.com/rust-lang/rust/issues/154045> [INFO] [stderr] [INFO] [stderr] warning: `visual-hash` (lib doc) generated 16 warnings (run `cargo fix --lib -p visual-hash` to apply 9 suggestions) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.64s [INFO] [stderr] Generated /opt/rustwide/target/x86_64-unknown-linux-gnu/doc/visual_hash/index.html [INFO] running `Command { std: "docker" "inspect" "294bb1e67f4cdc4c179689f47e57830b4518eec338ac2931560661c254ad013b", kill_on_drop: false }`