Rust基础拾遗--辅助功能

Rust基础拾遗

  • 前言
  • 1.错误处理
    • [1.1 panic](#1.1 panic)
    • [为什么是 Result](#为什么是 Result)
  • [2. create与模块](#2. create与模块)
  • [3. 宏](#3. 宏)
  • [4. 不安全代码](#4. 不安全代码)
  • [5. 外部函数](#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. 外部函数

相关推荐
星栈4 小时前
10 分钟跑起第一个 Dioxus 应用:`dx` CLI、`rsx!` 和热更新好不好用
前端·rust·前端框架
望眼欲穿的程序猿10 小时前
读取芯片内部温度传感器
嵌入式硬件·rust
望眼欲穿的程序猿10 小时前
ADC 模拟电压采集
嵌入式硬件·rust
codexu_46122918710 小时前
NoteGen 里一条记录如何变成 Markdown
前端·笔记·rust·tauri
Rust研习社10 小时前
Rust 错误处理的黄金搭档:一个定义错误,一个传播错误
后端·rust·编程语言
techdashen11 小时前
绕过系统 ICMP:用 rawsock、Npcap 和 WMI 找到默认网卡
开发语言·arm开发·rust
小二·11 小时前
Rust 后端实战:高性能 Web 服务开发全链路
开发语言·前端·rust
island131411 小时前
【开源软件移植】把 RustDesk 的 Rust 核心搬到 HarmonyOS PC:一次 Native HAR 迁移实战记录
开发语言·rust·harmonyos
小二·12 小时前
Rust 爬虫与数据处理实战:大规模并发抓取 + 流式处理
开发语言·爬虫·rust
techdashen12 小时前
绕过 WMI:用 Rust 绑定 Win32 变长结构体和 UTF-16 字符串
开发语言·后端·rust