🟢 P3 | ComrakOptions<'static> 生命周期强制转换过于脆弱 #45

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

背景

gfm_options() 返回 ComrakOptions<'static>,但 Default::default() 实际返回 Options<'_>。目前 safe 是因为 ParseOptions.broken_link_callback 为 None(无借用数据)。若 comrak 升级后在 Default 中加回调,编译器会拒绝编译(不会静默 UB),但需要及时适配。

建议

改为显式标注:let opts: ComrakOptions<'static> = Default::default();

位置

crates/zx_document_core/src/markdown.rs:12-19

## 背景 gfm_options() 返回 ComrakOptions<'static>,但 Default::default() 实际返回 Options<'_>。目前 safe 是因为 ParseOptions.broken_link_callback 为 None(无借用数据)。若 comrak 升级后在 Default 中加回调,编译器会拒绝编译(不会静默 UB),但需要及时适配。 ## 建议 改为显式标注:let opts: ComrakOptions<'static> = Default::default(); ## 位置 crates/zx_document_core/src/markdown.rs:12-19
wangdl added this to the M6:Code Review 质量完善(2026-06-06) milestone 2026-06-06 12:33:03 +08:00
Author
Owner

审查结论 (2026-06-06)

结论

gfm_options() 已显式标注 ComrakOptions<'static>,由于 broker_link_callbackNone,生命周期强制转换安全。即使 comrak 未来升级在 Default 中加了回调引用,编译器会在编译期报错,不会静默 UB。

状态

无需修改,已充分安全。

## 审查结论 (2026-06-06) ### 结论 `gfm_options()` 已显式标注 `ComrakOptions<'static>`,由于 `broker_link_callback` 为 `None`,生命周期强制转换安全。即使 comrak 未来升级在 Default 中加了回调引用,编译器会在编译期报错,不会静默 UB。 ### 状态 ✅ 无需修改,已充分安全。
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

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