Rust对可靠性的执着也延伸到了错误处理。Rust将错误组合成两个主要类别:

不可恢复错误panic!

通常是bug,遇到错误停止程序执行,比如数组越界。在遇到panic时有两种处理方式。一种是栈展开并清理。程序默认是开始展开,即Rust会回溯栈并清理它遇到的每一个函数的数据,回溯过程会做很多工作。
一种是程序终止。不清理数据就退出程序,程序使用的内存由操作系统清理。
如果将来你的代码中出现了panic,要搞清楚是哪个地方的什么操作什么值导致了这一panic,以及应该如何解决。

可恢复错误Result!

通常代表向用户报告错误和重试操作是合理的操作,比如未找到文件。