🟡 P2 | 两套 DocumentBlock 类型 + 双向手动 From impl #42
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
背景
zx_document_core::blocks::DocumentBlock(named fields, Serialize)和 zx_document_ffi::DocumentBlock(tuple variants, UniFFI)是两套独立定义。双向 From 转换各写一遍,共 16 个 arm。新增块类型需改 4 处。
建议
用宏生成 From impl 消除重复,或评估是否可以让 UniFFI 直接使用 named-field 枚举(UniFFI 0.31 已支持 record-like enum variants)。
位置
crates/zx_document_ffi/src/lib.rs:30-58, 257-284
审查结论 (2026-06-06)
结论
两套
DocumentBlock的Fromimpl 是 UniFFI 的常见模式(core 使用 named fields for Serialize, FFI 使用 tuple variants for UniFFI compat)。16 个 arm 的双向转换在编译期保证完整性(新增变体会在 match 报错)。改用宏提升有限。状态
✅ 可接受的技术债务,暂不修改。