use hash::fnv; def BUCKETS: size = 1 << 17; type hashmap = [BUCKETS](str, data); fn getitem(map: *hashmap, hash: size) data = { let bucket = &map[hash & (BUCKETS - 1)]; return bucket.1; }; fn setitem(map: *hashmap, hash: size, key: str, value: data) void = { let bucket = &map[hash & (BUCKETS - 1)]; *bucket = (key, value); };