背景

高性能或底层场景里,Rust 项目经常需要少量 unsafe。问题不在于有没有 unsafe,而在于是否可审计。

审计清单

  1. 每个 unsafe block 有明确不变量说明
  2. 边界输入做前置校验
  3. 单测覆盖成功与失败路径
  4. 关键模块做 fuzz 或 Miri 检查
// SAFETY: ptr 来自有效切片起始地址,len 已做边界校验。
unsafe {
    std::ptr::copy_nonoverlapping(src.as_ptr(), dst.as_mut_ptr(), len);
}

总结

unsafe 管理的核心是制度化约束,不是个人经验。


能解释安全前提的 unsafe,才是工程可接受的 unsafe。