Trait DeterministicHash

Source
pub trait DeterministicHash {
    // Required method
    fn deterministic_hash<H: DeterministicHasher>(&self, state: &mut H);
}
Expand description

Signals the implementor can safely be hashed in a replicatable way across platforms and process runs.

Note that the default std::hash::Hash trait used by Rust allows for hashing that differs across process runs, so it is not suitable for persistent caching with turbo-tasks.

It’s very important that Vcs never implement this, since they cannot be deterministic. The value that they wrap, however, can implement the trait.

Required Methods§

Source

fn deterministic_hash<H: DeterministicHasher>(&self, state: &mut H)

Adds self’s bytes to the DeterministicHasher’s state, in a way that is replicatable on any platform or process run.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl DeterministicHash for &str

Source§

impl DeterministicHash for bool

Source§

impl DeterministicHash for i8

Source§

impl DeterministicHash for i16

Source§

impl DeterministicHash for i32

Source§

impl DeterministicHash for i64

Source§

impl DeterministicHash for i128

Source§

impl DeterministicHash for isize

Source§

impl DeterministicHash for u8

Source§

impl DeterministicHash for u16

Source§

impl DeterministicHash for u32

Source§

impl DeterministicHash for u64

Source§

impl DeterministicHash for u128

Source§

impl DeterministicHash for usize

Source§

impl DeterministicHash for String

Source§

impl DeterministicHash for [u8]

Source§

impl<A: DeterministicHash> DeterministicHash for (A,)

Source§

impl<A: DeterministicHash, B: DeterministicHash> DeterministicHash for (A, B)

Source§

impl<A: DeterministicHash, B: DeterministicHash, C: DeterministicHash> DeterministicHash for (A, B, C)

Source§

impl<A: DeterministicHash, B: DeterministicHash, C: DeterministicHash, D: DeterministicHash> DeterministicHash for (A, B, C, D)

Source§

impl<A: DeterministicHash, B: DeterministicHash, C: DeterministicHash, D: DeterministicHash, E: DeterministicHash> DeterministicHash for (A, B, C, D, E)

Source§

impl<A: DeterministicHash, B: DeterministicHash, C: DeterministicHash, D: DeterministicHash, E: DeterministicHash, F: DeterministicHash> DeterministicHash for (A, B, C, D, E, F)

Source§

impl<A: DeterministicHash, B: DeterministicHash, C: DeterministicHash, D: DeterministicHash, E: DeterministicHash, F: DeterministicHash, G: DeterministicHash> DeterministicHash for (A, B, C, D, E, F, G)

Source§

impl<A: DeterministicHash, B: DeterministicHash, C: DeterministicHash, D: DeterministicHash, E: DeterministicHash, F: DeterministicHash, G: DeterministicHash, H: DeterministicHash> DeterministicHash for (A, B, C, D, E, F, G, H)

Source§

impl<A: DeterministicHash, B: DeterministicHash, C: DeterministicHash, D: DeterministicHash, E: DeterministicHash, F: DeterministicHash, G: DeterministicHash, H: DeterministicHash, I: DeterministicHash> DeterministicHash for (A, B, C, D, E, F, G, H, I)

Source§

impl<A: DeterministicHash, B: DeterministicHash, C: DeterministicHash, D: DeterministicHash, E: DeterministicHash, F: DeterministicHash, G: DeterministicHash, H: DeterministicHash, I: DeterministicHash, J: DeterministicHash> DeterministicHash for (A, B, C, D, E, F, G, H, I, J)

Source§

impl<A: DeterministicHash, B: DeterministicHash, C: DeterministicHash, D: DeterministicHash, E: DeterministicHash, F: DeterministicHash, G: DeterministicHash, H: DeterministicHash, I: DeterministicHash, J: DeterministicHash, K: DeterministicHash> DeterministicHash for (A, B, C, D, E, F, G, H, I, J, K)

Source§

impl<A: DeterministicHash, B: DeterministicHash, C: DeterministicHash, D: DeterministicHash, E: DeterministicHash, F: DeterministicHash, G: DeterministicHash, H: DeterministicHash, I: DeterministicHash, J: DeterministicHash, K: DeterministicHash, L: DeterministicHash> DeterministicHash for (A, B, C, D, E, F, G, H, I, J, K, L)

Source§

impl<T> DeterministicHash for Discriminant<T>

Source§

impl<T: DeterministicHash> DeterministicHash for Option<T>

Source§

impl<T: DeterministicHash> DeterministicHash for Vec<T>

Source§

impl<T: ?Sized + DeterministicHash> DeterministicHash for &T

Implementors§