有没有办法在Rust 1.0中返回退出代码?
我试过env::set_exit_status(exit_code);但这会产生编译器错误.
还有这个问题:提前退出Rust程序,这是类似的,但询问过程必须提前退出的情况.
编辑:我正在寻找一个解决方案,也可以让进程整理堆栈,调用析构函数等.
Lev*_*ans 43
根据@FrancisGagné的回答评论,如果你正在寻找相当于C的return exit_code,你可以通过这种方式人为地构建它:
fn main() {
let exit_code = real_main();
std::process::exit(exit_code);
}
fn real_main() -> i32 {
// the real program here
}
Run Code Online (Sandbox Code Playgroud)
这样,程序的所有对象都将在real_main()函数的范围内,并且您可以安全地使用return exit_code;,main同时仍然可以正确运行所有析构函数.
使用它会更合适std::env::set_exit_status(..),但是这个功能还没有稳定的Rust.
Fra*_*gné 11
std::process::exit 使用指定的退出代码退出程序.
从Rust 1.26开始,该main函数不再限于():main还可Result<(), E>以为任何type 返回a E: Debug。的Ok值映射到EXIT_SUCCESS(这恰好是0在所有平台上)和一个Err值映射为EXIT_FAILURE(这恰好是1在所有平台上)。错误值也会自动打印到标准错误流中。
将来,Rust将支持的更多返回类型main。的Termination性状(如不稳定锈病1.31.1的)定义了所有这些类型的。特质的工作是将值转换为i32退出代码。当Termination变得稳定时,应用程序自然可以自己实现该特征以提供自己的结果类型。
| 归档时间: |
|
| 查看次数: |
7259 次 |
| 最近记录: |