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 文本可印口径) |