#hash #newline

normalized-hash

Cross-platform hash algorithm

1 unstable release

0.1.0 Aug 19, 2023

#6 in #crlf


Used in normalized-hasher

MIT license

17KB
226 lines

normalized-hash

badge github badge crates.io badge docs.rs badge license

Cross-platform hash algorithm.

This is the library crate. If you're looking for the binary crate instead, go to normalized-hasher.

Summary

This hashing algorithm allows consistent hashes even if you accidentally convert a file from using UNIX line endings (LF) to Windows line endings (CRLF). For a longish motivational speech about how such a thing can happen and why you should want to even care about such a case, head over to normalized-hasher.

Code Example

use std::path::PathBuf;

use normalized_hash::Hasher;

fn main() {
    let file_in = PathBuf::from("input.txt");
    let file_out = PathBuf::from("output.txt");

    // Simple example with default options, without writing an output file
    let hash = Hasher::new().hash_file(&file_in, None::<PathBuf>);
    println!("{}", hash);

    // More complex example, with writing output
    let hash = Hasher::new()
        .eol("\r\n")
        .no_eof(true)
        .hash_file(&file_in, Some(file_out));
    println!("{}", hash);
}

Dependencies

~460KB
~10K SLoC