fn hash(a: UserProvided, hasher: *std.hash.Wyhash) void
a: UserProvided
hasher: *std.hash.Wyhash
317 318 319 320 321 322 323 324 325 326 327 328 329 330
fn hash(a: UserProvided, hasher: *std.hash.Wyhash) void { hasher.update(&mem.toBytes(std.meta.activeTag(a))); switch (a) { .flag => {}, .scalar => |scalar| hasher.update(scalar), .list => |*list| for (list.items) |elem| hasher.update(elem), .map => |*map| for (map.keys(), map.values()) |key, val| { hasher.update(key); val.hash(hasher); }, .lazy_path => |lp| lp.hash(hasher), .lazy_path_list => |*list| for (list.items) |lp| lp.hash(hasher), } }