rustc/vendor/rustc-stable-hash-0.1.1
2025-02-17 11:14:05 +01:00
..
src New upstream version 1.85.0~beta.9+dfsg1 2025-02-17 11:14:05 +01:00
.cargo-checksum.json New upstream version 1.85.0~beta.9+dfsg1 2025-02-17 11:14:05 +01:00
Cargo.toml New upstream version 1.85.0~beta.9+dfsg1 2025-02-17 11:14:05 +01:00
CHANGELOG.md New upstream version 1.85.0~beta.9+dfsg1 2025-02-17 11:14:05 +01:00
CODE_OF_CONDUCT.md New upstream version 1.85.0~beta.9+dfsg1 2025-02-17 11:14:05 +01:00
LICENSE-APACHE New upstream version 1.85.0~beta.9+dfsg1 2025-02-17 11:14:05 +01:00
LICENSE-MIT New upstream version 1.85.0~beta.9+dfsg1 2025-02-17 11:14:05 +01:00
README.md New upstream version 1.85.0~beta.9+dfsg1 2025-02-17 11:14:05 +01:00

rustc-stable-hash

crates.io Documentation

A stable hashing algorithm used by rustc: cross-platform, deterministic, not secure.

This crate provides facilities with the StableHasher structure to create stable hashers over unstable hashers by abstracting over them the handling of endian-ness and the target usize/isize bit size difference.

Currently, this crate provides it's own implementation of 128-bit SipHasher: SipHasher128; with StableSipHasher128 for the stable variant.

Usage

use rustc_stable_hash::hashers::{StableSipHasher128, SipHasher128Hash};
use rustc_stable_hash::FromStableHash;
use std::hash::Hasher;

struct Hash128([u64; 2]);
impl FromStableHash for Hash128 {
    type Hash = SipHasher128Hash;

    fn from(SipHasher128Hash(hash): SipHasher128Hash) -> Hash128 {
        Hash128(hash)
    }
}

let mut hasher = StableSipHasher128::new();
hasher.write_usize(0xFA);

let hash: Hash128 = hasher.finish();