dprint 0.9.0

Binary for dprint.
use dprint_core::types::ErrBox;

pub fn get_bytes_hash(bytes: &[u8]) -> u64 {
    use std::hash::Hasher;
    use twox_hash::XxHash64;

    let mut hasher = XxHash64::default();
    hasher.write(bytes);
    hasher.finish()
}

pub fn get_sha256_checksum(bytes: &[u8]) -> String {
    use sha2::{Sha256, Digest};
    let mut hasher = Sha256::new();
    hasher.update(bytes);
    format!("{:x}", hasher.finalize())
}

pub fn verify_sha256_checksum(bytes: &[u8], checksum: &str) -> Result<(), ErrBox> {
    let bytes_checksum = get_sha256_checksum(bytes);
    if bytes_checksum != checksum {
        err!("The checksum {} did not match the expected checksum of {}.", bytes_checksum, checksum)
    } else {
        Ok(())
    }
}