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}