Skip to main content

Module hash

Module hash 

Source

Structs§

CheckOptions
Options for check mode.
CheckResult
Result of check mode verification.

Enums§

HashAlgorithm
Supported hash algorithms.

Functions§

blake2b_hash_data
Hash raw data with BLAKE2b variable output length. output_bytes is the output size in bytes (e.g., 32 for 256-bit).
blake2b_hash_file
Hash a file with BLAKE2b variable output length. Single open + fstat. Uses zero-copy mmap for regular files, streaming for pipes/special files.
blake2b_hash_reader
Hash a reader with BLAKE2b variable output length. Uses thread-local 1MB buffer for cache-friendly streaming.
blake2b_hash_stdin
Hash stdin with BLAKE2b variable output length. Tries fadvise if stdin is a regular file (shell redirect), then streams.
check_file
Verify checksums from a check file. Each line should be “hash filename” or “hash *filename” or “ALGO (filename) = hash”.
hash_bytes
Compute hash of a byte slice directly (zero-copy fast path).
hash_file
Hash a file by path. Single open + fstat to minimize syscalls. Uses zero-copy mmap for regular files: the hash function reads directly from the page cache without any kernel→user memcpy or read() syscalls. MAP_POPULATE prefaults all pages before hashing starts. MADV_HUGEPAGE uses 2MB pages to reduce TLB misses by ~500x.
hash_reader
Compute hash of data from a reader, returning hex string.
hash_stdin
Hash stdin. Uses fadvise for file redirects, streaming for pipes.
parse_check_line
Parse a checksum line in any supported format.
parse_check_line_tag
Parse a BSD-style tag line: “ALGO (filename) = hash” Returns (expected_hash, filename, optional_bits). bits is the hash length parsed from the algo name (e.g., BLAKE2b-256 -> Some(256)).
print_hash
Print hash result in GNU format: “hash filename\n”
print_hash_tag
Print hash result in BSD tag format: “ALGO (filename) = hash\n”
print_hash_tag_b2sum
Print hash in BSD tag format with BLAKE2b length info: “BLAKE2b (filename) = hash” for 512-bit, or “BLAKE2b-256 (filename) = hash” for other lengths.
print_hash_tag_b2sum_zero
Print hash in BSD tag format with BLAKE2b length info and NUL terminator.
print_hash_tag_zero
Print hash in BSD tag format with NUL terminator.
print_hash_zero
Print hash in GNU format with NUL terminator instead of newline.
readahead_files
Issue readahead hints for a list of file paths to warm the page cache. Uses POSIX_FADV_WILLNEED which is non-blocking and batches efficiently.
should_use_parallel
Check if parallel hashing is worthwhile for the given file paths. Always parallelizes with 2+ files — rayon’s thread pool is already initialized and work-stealing overhead is minimal (~1µs per file dispatch). With mmap, each thread independently maps and hashes its own file with no shared state, giving near-linear speedup with available cores.