def go

bend-kit-multipart@0.3.0.0 · multipart.bend:587

import bend-kit-multipart@0.3.0.0/multipart.bend as Multipart
import Base

587# Each More step consumes a byte, except the two after a delimiter, which itself consumes dlen >= 5,
588# so len + 8 steps suffice. Running out still returns a sound state: the next feed goes on from it.
589def go(fuel: Nat, +delim: String, +dlen: U32, s: Step) -> Result<&1, &1, String, Dec & List<&1, Item>>:
590  match fuel:
591    case 0n:
592      go.stop(delim, dlen, s)
593    case 1n+p:
594      match s:
595        case More{st, buf, out}:
596          go(p, delim, dlen, step(st, delim, dlen, buf, out))
597        case Pause{st, buf, out}:
598          go.stop(delim, dlen, Pause{st, buf, out})
599        case Bad{e}:
600          Fail{e}

Uses (11)

Used by (1)