mirror of
https://git.proxmox.com/git/rustc
synced 2025-08-13 23:02:01 +00:00
33 lines
1.1 KiB
Markdown
33 lines
1.1 KiB
Markdown
# rustc-stable-hash
|
|
|
|
[](https://crates.io/crates/rustc-stable-hash)
|
|
[](https://docs.rs/rustc-stable-hash)
|
|
|
|
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
|
|
|
|
```rust
|
|
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();
|
|
```
|