我正在Rust中编写 bash
克隆 . 当用户输入 exit
时,我需要退出程序 . 在我的程序的前几次迭代中,在添加更复杂的功能之前,我使用了 return
来退出提示用户输入的循环 . 这个逻辑现在是一个函数,因为我实现内置shell函数的方式,所以当我 return
它只是跳出函数回到控制循环,而不是短路控制循环和结束程序 .
我意识到当用户键入 exit
并退出循环时我可能会返回一个布尔值,但我想至少知道Rust是否有办法提前终止程序,类似于Java的 System.exit()
,因为这对于某些类型的程式 .
2 回答
Rust 1.0稳定
std::process::exit()正是这样 - 它使用指定的退出代码终止程序:
此函数使程序立即终止,无需展开和运行析构函数,因此应谨慎使用 .
替代(不推荐)解决方案
您可以直接使用C API . 将
libc = "0.2"
添加到Cargo.toml
,并且:Rust编译器无法验证调用C函数,因此需要
unsafe
块 . 程序使用的资源将无法正确释放 . 这可能会导致悬挂插座等问题 . 据我所知,退出程序的正确方法是以某种方式终止所有线程,然后进程将自动退出 .例:
在较旧的文档中,您会看到它失败!(“哦,这里没有发生任何不好的事情 . ”)
由于某种原因,这个宏从失败变为恐慌 . 如果必须的话,恐慌是失败的方法 .
[编辑]对不起 . 看起来你应该测试字符串“exit”的输入,这取决于你如何输入(按行或通过args) . 然后,您可以在检测到退出的条件下使程序脱离循环 .
例: