SuperAPI AI 工具集

rust-syntax-unsafe

编程与开发

查看项目

更新于 10-15 22:18

技能介绍

用途:面向 Rust 的 unsafe 语法与安全契约技能,适用于用户编写 unsafe fn、unsafe {} 块、解引用裸指针、调用 FFI、使用 transmute、处理 MaybeUninit 等场景。核心前提:unsafe 不会关闭借用检查器或类型检查器,只是把健全性证明责任转移给作者,违反契约即产生未定义行为(UB),并污染整个程序(包括调用它的安全代码)。

主要能力:梳理 Rust 1.85 / edition 2024 下的 unsafe 表面,以 Reference 的 unsafety 与 behavior-considered-undefined 为基准,列出需要 unsafe 的八项能力(解引用裸指针、调用 unsafe fn、读写可变/外部 static、实现 unsafe trait、访问 union 字段、在 unsafe extern 中声明项、调用 #[target_feature] 函数、应用 unsafe 属性),并给出对应的 UB 类别清单,如数据竞争、悬垂/未对齐访问、越界投影、破坏指针别名规则、产生无效值、内联汇编误用等。

使用方式与规则:每个 unsafe 块和 #[unsafe(...)] 属性前写 // SAFETY: 注释并列举不变量;unsafe fn 体内调用 unsafe 操作需再包一层 unsafe {}(edition 2024 默认警告);extern 块写 unsafe extern "C",属性写 #[unsafe(no_mangle)] 等;指针与整数往返用 expose_provenance/with_exposed_provenance,或 &raw const/&raw mut;static mut 不取引用,用 addr_of! / addr_of_mut!;建议在 CI 运行 cargo +nightly miri test。还给出 as_bytes、MaybeUninit 数组、UnsafeCell、unsafe extern 等模式。

限制:未提供收费、平台、价格等信息;部分细节依赖具体 Rust 版本与 lint 配置。