def rd.heap
bend-kit-runner@0.13.0.1 · runner.bend:720
import bend-kit-runner@0.13.0.1/runner.bend as Runner
import Base
import bend-kit-bytes@0.3.3.0/bytes.bend as Bytes
import bend-kit-scheduler@0.4.1.0/queue.bend as Q
import bend-kit-collections@0.1.4.1/heap.bend as H
720
721def rd.heap(~A: Data, ~pdec: Bytes.Bytes -> Maybe<&2, A>, +fuel: Nat, node: Bool) -> Dec(H.Heap<Q.Ticket<A>>):
722 match fuel node:
723 case 0n b:
724 Dec.fail(H.Heap<Q.Ticket<A>>)
725 case 1n+f False{}:
726 Dec.pure(H.Heap<Q.Ticket<A>>, H.HLeaf{})
727 case 1n+f True{}:
728 do Dec<H.Heap<Q.Ticket<A>>>:
729 n : Nat <- rd.u64()
730 t : Q.Ticket<A> <- rd.ticket(~A, ~pdec)
731 lf : Bool <- rd.flag()
732 l : H.Heap<Q.Ticket<A>> <- rd.heap(~A, ~pdec, f, lf)
733 rf : Bool <- rd.flag()
734 r : H.Heap<Q.Ticket<A>> <- rd.heap(~A, ~pdec, f, rf)
735 return H.HNode{n, t, l, r}