Skip to content

std.ndjson

tier: alloc

NDJSON 逐行游标(P8-C;T1 档:零 use 纯函数,无 IO 无时钟)

形态(router/pb 同款零 use 纯模块):lane 游标面(不整载——消费方按窗口 逐行取用,行文本经可印表 Str 化后交 std/json parse;大文件分块喂入 = 调用方移动 pos,本模块不持状态)。NDJSON(RFC 7463 惯例):每行一个 JSON 值;空白行跳过;行尾 \r 剥离(容忍 CRLF);尾行可无换行符。 【策略登记】坏行(非 JSON 语义)不在本层判定——行窗口交消费方 json.parse, 跳过或报错 = 消费方策略;本层只保证窗口切分正确。 分层准入(宪章 v2 四问):零依赖/纯函数/无平台面/与 json·csv 同类 —— T1。

pub struct

struct NdLine

行游标结果:rc(1=行/0=EOF/-1=坏窗口)+ 行文本窗口 [start, ln)

Field Type
rc I64
start I64
ln I64

pub fn

Signature Returns Description
nd_rc_line() I64 游标 rc:读到非空行
nd_rc_eof() I64 游标 rc:输入耗尽
nd_rc_bad() I64 游标 rc:窗口参数坏(负位/越界)
nd_next(buf: &[I64], n: I64, pos: I64) NdLine 游标:自 pos 起跳过空白行,返回下一非空行窗口(行尾 \r 剥离)。
rc 1=行 / 0=EOF。npos = 下一游标(消费方直传回)。
nd_line_str(buf: &[I64], f: NdLine) Str 行窗口 → Str(可印透传;JSON 文本可印口径)