如何中止 Rust 进程?

How do I abort a Rust process?

我正在包装一个 C 库,它执行一些可能会失败的 mallocs。 Rust 的其余部分在 OOM 上中止,所以我也想这样做。有std::intrinsics::abort()core::intrinsics::abort()(有什么区别?)但它们都不稳定。

如何使用稳定的 Rust 中止 ()?

您可以致电 panic!()

不过,如果你能拦截一个失败的分配,并且return到Rust处于稳定的程序状态,我觉得还是报错比较好(使用Result等)

因为 Rust 代码通常与定义了 abort 的 C 运行时库链接,您可以使用 extern 块导入该函数:

extern {
    fn abort();
}

fn main() {
    unsafe { abort(); }
}

请注意,这实际上不同于 abort 内在函数:abort() 函数引发 SIGABRT,而内在函数生成无效指令 (ud2),这会导致SIGILL.

希望以后std::process::abort能稳定下来

从 Rust 1.17.0 开始,您可以调用 std::process::abort()