MCPcopy Create free account
hub / github.com/GraphLite-AI/GraphLite / hash_value

Function hash_value

graphlite/src/cache/subquery_cache.rs:177–269  ·  view source on GitHub ↗

Helper function to hash Values (since Value doesn't implement Hash)

(value: &Value, state: &mut H)

Source from the content-addressed store, hash-verified

175
176// Helper function to hash Values (since Value doesn't implement Hash)
177fn hash_value<H: Hasher>(value: &Value, state: &mut H) {
178 match value {
179 Value::String(s) => {
180 0u8.hash(state);
181 s.hash(state);
182 }
183 Value::Number(n) => {
184 1u8.hash(state);
185 n.to_bits().hash(state);
186 }
187 Value::Boolean(b) => {
188 2u8.hash(state);
189 b.hash(state);
190 }
191 Value::Null => {
192 3u8.hash(state);
193 }
194 Value::DateTime(dt) => {
195 4u8.hash(state);
196 dt.timestamp().hash(state);
197 dt.timestamp_subsec_nanos().hash(state);
198 }
199 Value::DateTimeWithFixedOffset(dt) => {
200 5u8.hash(state);
201 dt.timestamp().hash(state);
202 dt.timestamp_subsec_nanos().hash(state);
203 dt.offset().local_minus_utc().hash(state);
204 }
205 Value::DateTimeWithNamedTz(tz, dt) => {
206 6u8.hash(state);
207 tz.hash(state);
208 dt.timestamp().hash(state);
209 dt.timestamp_subsec_nanos().hash(state);
210 }
211 Value::TimeWindow(tw) => {
212 7u8.hash(state);
213 tw.hash(state);
214 }
215 Value::Array(arr) => {
216 8u8.hash(state);
217 arr.len().hash(state);
218 for item in arr {
219 hash_value(item, state);
220 }
221 }
222 Value::Vector(vec) => {
223 9u8.hash(state);
224 vec.len().hash(state);
225 for &val in vec {
226 val.to_bits().hash(state);
227 }
228 }
229 Value::Path(path) => {
230 10u8.hash(state);
231 // PathValue doesn't implement Hash, so hash its string representation
232 format!("{:?}", path).hash(state);
233 }
234 Value::List(list) => {

Callers 1

hashMethod · 0.85

Calls 2

hashMethod · 0.45
lenMethod · 0.45

Tested by

no test coverage detected