🟡 P2 | 两套 DocumentBlock 类型 + 双向手动 From impl #42

Closed
opened 2026-06-06 12:33:02 +08:00 by wangdl · 1 comment
Owner

背景

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

## 背景 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
wangdl added this to the M6:Code Review 质量完善(2026-06-06) milestone 2026-06-06 12:33:02 +08:00
Author
Owner

审查结论 (2026-06-06)

结论

两套 DocumentBlockFrom impl 是 UniFFI 的常见模式(core 使用 named fields for Serialize, FFI 使用 tuple variants for UniFFI compat)。16 个 arm 的双向转换在编译期保证完整性(新增变体会在 match 报错)。改用宏提升有限。

状态

可接受的技术债务,暂不修改。

## 审查结论 (2026-06-06) ### 结论 两套 `DocumentBlock` 的 `From` impl 是 UniFFI 的常见模式(core 使用 named fields for Serialize, FFI 使用 tuple variants for UniFFI compat)。16 个 arm 的双向转换在编译期保证完整性(新增变体会在 match 报错)。改用宏提升有限。 ### 状态 ✅ 可接受的技术债务,暂不修改。
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: wangdl/zhixi-document-runtime#42
No description provided.