不安全代码与 FFI
核心问题
什么时候可以用 unsafe,怎么用才安全?
unsafe 是必要的,但必须谨慎使用。
何时可以用 Unsafe
| 使用场景 | 示例 | 是否正当 | |---------|-----|---------| | FFI 调用 C | extern "C" { fn libc_malloc(size: usize) -> *mut c_void; } | ✅ | | 实现底层抽象 | Vec, Arc 的内部实现 | ✅ | | 性能优化(已测量) | 热点代码测出瓶颈 | ⚠️ 需验证 | | 逃避借用检查 | 不知道为什么要用 | ❌ |
SAFETY 注释要求
每个 unsafe 块必须包含 SAFETY 注释:
// SAFETY: ptr must be non-null and properly aligned.
// This function is only called after a null check.
unsafe { *p
[Description truncada. Veja o README completo no GitHub.]