pub rec Map[K, V];
带有用户提供的哈希和相等性函数的泛型哈希映射
alloc:用于后备存储的分配器 keys:键缓冲区 values:值缓冲区 states:每个槽的状态(空/占用/墓碑) len:条目数量 tombstones:墓碑槽的数量 cap:总槽数 hash_fn:接受 ptr 并返回 u64 的哈希函数 eq_fn:接受两个 ptr 并返回 bool 的相等性函数
pub fun init[K, V](alloc: *allocator.Allocator, hash_fn: fun(ptr) u64, eq_fn: fun(ptr, ptr) bool) Map[K, V];
创建一个空映射
alloc:用于后备存储的分配器 hash_fn:键的哈希函数 eq_fn:键的相等性函数 ret:一个新的空 Map[K, V]
pub fun dnit[K, V](m: *Map[K, V]) bool;
释放所有后备存储并重置映射
ret:如果内存成功释放则为 true
pub fun is_empty[K, V](m: Map[K, V]) bool;
检查映射是否没有条目
ret:如果映射没有条目则为 true
pub fun length[K, V](m: Map[K, V]) usize;
返回映射中的条目数量
ret:条目数量
pub fun capacity[K, V](m: Map[K, V]) usize;
返回当前的槽容量
ret:槽容量
pub fun clear[K, V](m: *Map[K, V]);
移除所有条目但保留已分配的容量
pub fun insert[K, V](m: *Map[K, V], key: K, value: V) Result[bool, str];
插入或更新键值对
key:要插入的键 value:要关联的值 ret:如果插入了新条目则为 true,如果更新了现有条目则为 false
pub fun get[K, V](m: *Map[K, V], key: *K) Result[*V, str];
获取指向与键关联的值的指针
key:指向要查找的键的指针 ret:指向值的指针,或错误消息
pub fun contains[K, V](m: *Map[K, V], key: *K) bool;
检查映射是否包含某个键
key:指向要检查的键的指针 ret:如果键存在则为 true
pub fun remove[K, V](m: *Map[K, V], key: *K) Result[bool, str];
从映射中移除键值对
key:指向要移除的键的指针 ret:如果已移除则为 true,如果未找到键则为 false
pub fun hash_str(p: ptr) u64;
字符串的 FNV-1a 哈希
pub fun eq_str(pa: ptr, pb: ptr) bool;
字符串的相等性函数
pub fun hash_i64(p: ptr) u64;
i64 的 splitmix64 哈希
pub fun eq_i64(pa: ptr, pb: ptr) bool;
i64 的相等性函数
pub fun hash_u64(p: ptr) u64;
u64 的 splitmix64 哈希
pub fun eq_u64(pa: ptr, pb: ptr) bool;
u64 的相等性函数
pub fun hash_u32(p: ptr) u64;
u32 的 splitmix64 哈希
pub fun eq_u32(pa: ptr, pb: ptr) bool;
u32 的相等性函数