def records.size.go

mylsm-lsm-store@0.6.0.1 · src/ByteSstFile.bend:346

import mylsm-lsm-store@0.6.0.1/src/ByteSstFile.bend as ByteSstFile
import Base
import mylsm-lsm-store@0.6.0.1/src/ByteMemTable.bend as ByteMemTable
import bend-kit-bytes@0.3.2.0/bytes.bend as Bytes

346# Sums exact record bytes while preserving a finite structural recursion bound.
347def records.size.go(
348  fuel: Nat,
349  entries: List<&1, ByteMemTable.Entry>,
350  total: Nat
351) -> Nat:
352  match fuel:
353    case 0n:
354      total
355    case 1n+rest:
356      match entries:
357        case Nil{}:
358          total
359        case Con{ByteMemTable.Entry{key, value}, tail}:
360          +entry_size = record.size(Bytes.length(key), value)
361          records.size.go(rest, tail, Nat.add(total, entry_size))

Uses (6)

Used by (1)