def u32.read.go

bend-kit-bytes@0.3.3.0 · bytes.bend:767

import bend-kit-bytes@0.3.3.0/bytes.bend as Bytes
import Base

767# For a digit d, n * 10 + d overflows exactly when (n * 10 + d) / 10 != n in wrapping U32.
768def u32.read.go(n: Nat, r: Array<U32> & U32, +i: U32, +acc: U32, +ok: Bool) -> Maybe<&2, U32>:
769  match n:
770    case 0n:
771      (a, v) = r
772      Bool.pick(Maybe<&2, U32>, ok, Some{acc}, None{})
773    case 1n+p:
774      (a, +v) = r
775      +m = (acc * 10 + (v - 48) : U32)
776      u32.read.go(p, peek(a, (i + 1 : U32)), (i + 1 : U32), m, Bool.and(ok, Bool.and(in(48, v, 57), U32.is_eq((m / 10 : U32), acc))))

Uses (16)

Used by (1)