reactive_graph_graph/instances/properties/
property_hash.rs1use serde_json::Value;
2use std::hash::Hash;
3use std::hash::Hasher;
4
5pub struct HashableValue<'a>(pub &'a Value);
8
9impl Hash for HashableValue<'_> {
10 fn hash<H: Hasher>(&self, state: &mut H) {
11 match &self.0 {
12 Value::Null => 0.hash(state),
13 Value::Bool(b) => b.hash(state),
14 Value::Number(n) => n.hash(state),
15 Value::String(str) => str.hash(state),
16 Value::Array(arr) => arr.iter().for_each(|a| HashableValue(a).hash(state)),
17 Value::Object(obj) => obj.iter().for_each(|entry| {
18 entry.0.hash(state);
19 HashableValue(entry.1).hash(state);
20 }),
21 }
22 }
23}