pub rec Heap[T];
pub fun init[T](alloc: *allocator.Allocator, cmp: fun(*T, *T) i64) Heap[T];
创建一个空的最小堆
alloc:用于分配的分配器 cmp:比较函数(若 a < b 返回负数,相等返回 0,若 a > b 返回正数) ret:一个新的空 Heap[T]
pub fun dnit[T](h: *Heap[T]) bool;
释放后备缓冲区
ret:如果内存成功释放则为 true
pub fun is_empty[T](h: Heap[T]) bool;
检查堆是否为空
ret:如果堆没有元素则为 true
pub fun length[T](h: Heap[T]) usize;
返回堆中的元素数量
ret:元素数量
pub fun push[T](h: *Heap[T], value: T) Result[usize, str];
向堆中添加一个元素
value:要插入的值 ret:新长度,或一个错误
pub fun pop[T](h: *Heap[T]) Result[T, str];
移除并返回最小元素
ret:最小值,如果为空则返回错误
pub fun peek[T](h: *Heap[T]) Result[*T, str];
返回指向最小元素的指针而不移除它
ret:指向最小元素的指针,如果为空则返回错误