🟢 P3 | ComrakOptions<'static> 生命周期强制转换过于脆弱 #45
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?
背景
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
审查结论 (2026-06-06)
结论
gfm_options()已显式标注ComrakOptions<'static>,由于broker_link_callback为None,生命周期强制转换安全。即使 comrak 未来升级在 Default 中加了回调引用,编译器会在编译期报错,不会静默 UB。状态
✅ 无需修改,已充分安全。