P.UNS.01 不要为了逃避编译器安全检查而滥用 Unsafe Rust
【描述】
Unsafe Rust 有其应用范围和目标,不要为了逃避 编译器安全检查而随便滥用 Unsafe Rust,否则很可能引起未定义行为(UB)。
【反例】
// 该函数为滥用 unsafe 来跳过 Rust 借用检查 // 强行返回本地变量的引用,最终引起 UB 未定义行为 fn abuse_unsafe_return_local_ref<'a>() -> &'a String { let s = "hello".to_string(); let ptr_s_addr = &s as *const String as usize; unsafe{ &*(ptr_s_addr as *const String) } } fn main() { let s = abuse_unsafe_return_local_ref(); // error: Undefined Behavior: encountered a dangling reference (use-after-free) }