pas*_*ugh 3 unsafe standard-library undefined-behavior rust
有没有办法在不使用 Rust 的情况下实现未定义的行为unsafe?
当然,这种行为可以由第三方库封装在“安全”函数中,所以假设我们只使用标准函数。
绝对可以,但任何此类情况都是 Rust 或标准 libary 的错误。
我最喜欢的例子是LLVM 循环优化可以使安全程序崩溃,这实际上是由于 Rust 和 LLVM 语义的不良交互而发生的:
pub fn oops() {
(|| loop {
drop(42)
})()
}
Run Code Online (Sandbox Code Playgroud)
使用 Rust 1.49.0 上的优化编译,生成程序集:
pub fn oops() {
(|| loop {
drop(42)
})()
}
Run Code Online (Sandbox Code Playgroud)
这种行为可以由第三方库包装在“安全”函数中,所以假设我们只使用标准函数
标准库是“第三方库”,所以我没有区别。