depends/execution/hash_value.rs
1use std::{hash::Hasher, ops::Deref};
2
3use super::NodeHash;
4use crate::NodeRef;
5
6/// A unique number derived from the internal state of a node.
7pub trait HashValue {
8 /// Either a unique number, or a value detailing that this node cannot be
9 /// hashed.
10 fn hash_value(&self, hasher: &mut impl Hasher) -> NodeHash;
11}
12
13impl<T: HashValue> HashValue for NodeRef<'_, T> {
14 fn hash_value(&self, hasher: &mut impl Hasher) -> NodeHash {
15 self.deref().hash_value(hasher)
16 }
17}