本文主要是介绍Rust基础拾遗--辅助功能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Rust基础拾遗
- 前言
- 1.错误处理
- 1.1 panic
- 为什么是 Result
- 2. create与模块
- 3. 宏
- 4. 不安全代码
- 5. 外部函数
前言
通过Rust程序设计-第二版
笔记的形式对Rust相关重点知识
进行汇总,读者通读此系列文章就可以轻松的把该语言基础捡起来。
1.错误处理
Rust 中的两类错误处理:panic 和 Result。
- 普通错误使用 Result 类型来处理。Result 通常用以表示由程序外部的事物引发的错误,比如错误的输入、网络中断或权限问题。
- panic 针对的是另一种错误,即那种永远不应该发生的错误。
1.1 panic
当程序遇到下列问题的时候,就可以断定程序自身存在 bug,故而会引发 panic:
- 数组越界访问;
- 整数除以 0;
- 在恰好为 Err 的 Result 上调用 .expect();
- 断言失败。
panic!() 是一种宏,用于处理程序中出现错误的情况。
如果panic真的发生了,那么该怎么办呢?
Rust 为你提供了一种选择。Rust 既可以在发生 panic 时展开调用栈,也可以中止进程。
为什么是 Result
现在我们已经足够了解为何 Rust 会优先选择 Result 而非异常了。以下是此设计的几个要点。
-
Rust 要求程序员在每个可能发生错误的地方做出某种决策,并将其记录在代码中。这样做很好,否则容易因为疏忽而无法正确处理错误。
-
最常见的决策是让错误继续传播,而这用单个字符 ? 就可以实现。因此,错误处理管道不会像在 C 和 Go 中那样让你的代码混乱不堪,而且它还具有可见性:在浏览一段代码时,你一眼就能看出错误是从哪里传出来的。
-
是否可能出错是每个函数的返回类型的一部分,因此哪些函数会失败、哪些不会失败非常清晰。如果你将一个函数改为可能出错的,那么就要同时更改它的返回类型,而编译器会让你随之修改该函数的各个下游使用者。
-
Rust 会检查 Result 值是否被用过了,这样你就不会意外地让错误悄悄溜过去。
-
由于 Result 是一种与任何其他数据类型没有本质区别的数据类型,因此很容易将成功结果和错误结果存储在同一个集合中,也很容易对“部分成功”的情况进行模拟。
2. create与模块
3. 宏
4. 不安全代码
5. 外部函数
这篇关于Rust基础拾遗--辅助功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!