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. 外部函数

相关推荐
Amos_Web14 小时前
Rspack 源码解析 (1) —— 架构总览:从 Node.js 到 Rust 的跨界之旅
前端·rust·node.js
Source.Liu14 小时前
【office2pdf】 项目规则(CLAUDE.md)
rust·office2pdf
望眼欲穿的程序猿16 小时前
MacOS自定义安装Rust
开发语言·macos·rust
Source.Liu17 小时前
【office2pdf】PPTX 字体解析与文本样式继承(PPTX_FONT_RESOLUTION.md)
rust·office2pdf
Rust研习社18 小时前
手把手带你写 Rust 文档
rust
迷藏49419 小时前
# 发散创新:用Rust构建高性能分布式账本节点——从零实现共识算法与链上数据存储
java·python·rust·共识算法·分布式账本
古城小栈19 小时前
Tonic:构建高性能 Rust gRPC 服务
开发语言·rust
Rust语言中文社区2 天前
【Rust日报】 Danube Messaging - 云原生消息平台
开发语言·后端·rust
Rust研习社2 天前
构建可扩展 Rust 项目:从模块化到 Workspace 工程化实践
rust
好家伙VCC2 天前
**发散创新:用 Rust实现数据编织(DataWrangling)的高效流式处理架构**在现
java·开发语言·python·架构·rust