def rd.chars
import bend-kit-runner@0.13.0.1/runner.bend as Runnerimport Base
822# Each rd.* sequence reader takes the count or flag already read. fuel bounds its length: every item holds at least 4 octets.
823def rd.chars(+fuel: Nat, end: Bool, +n: U32) -> Dec(String):
824 match fuel end:
825 case 0n b:
826 Dec.fail(String)
827 case 1n+f True{}:
828 Dec.pure(String, SNil{})
829 case 1n+f False{}:
830 +k = (n - 1 : U32)
831 do Dec<String>:
832 c : U32 <- rd.u32()
833 rest : String <- rd.chars(f, U32.is_eq(k, 0), k)
834 return SCon{Chr{c}, rest}