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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/680517.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

寒假作业——2/13

作业1 作业2 cp cp 当前的文件位置 复制到哪个位置 格式 : cp 路径/文件 路径/目录名/重新命名的目录名 mv mv 当前的文件位置 复制到哪个位置 格式 : mv 路径/文件 路径/目录名/重新命名的目录名 也可进行重命名操作 find 查找文件 find 目标路径 -name 文件名 后续…

vue监视和深度监视

vue监视 监视属性watch 1.监视的属性变化时,回调函数自动调用,自动操作 2.监视的属性一定要存在,才可以进行监视 3.监视的写法 1.new vue的时候传入watch配置 2.通过vm.$watch监视 vue监视深度 深度监视 1.vue中的watch默认不检测对象内部…

leetcode(数组)128.最长连续序列(c++详细解释)DAY8

文章目录 1.题目示例提示 2.解答思路3.实现代码结果 4.总结 1.题目 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 示例 1&a…

政安晨:在Jupyter中【示例演绎】Matplotlib的官方指南(二){Image tutorial}·{Python语言}

咱们接着上一篇,这次咱们讲使用Matplotlib绘制图像的简短尝试。 我的这个系列的上一篇文章在这里: 政安晨:在Jupyter中【示例演绎】Matplotlib的官方指南(一){Pyplot tutorial}https://blog.csdn.net/snowdenkeke/ar…

IM聊天系统为什么需要做消息幂等?如何使用Redis以及Lua脚本做消息幂等【第12期】

0前言 消息收发模型 第一张图是一个时序图,第二张图是一个标清楚步骤的流程图,更加清晰。消息的插入环节主要在2步。save部分。主要也是对这个部分就行消息幂等的操作。 前情提要:使用Redis发布 token 以及lua脚本来共同完成消息的幂等 目…

119.乐理基础-五线谱-五线谱的标记

内容参考于:三分钟音乐社 上一个内容:音值组合法(二) 力度记号:简谱里什么意思,五线谱也完全是什么意思,p越多就越弱,f越多就越强,然后这些渐强、渐弱、sf、fp这些标记…

如何开发一个属于自己的人工智能语言大模型?

要开发一个属于自己的人工智能语言模型,你需要遵循以下步骤: 数据收集:首先你需要大量的文本数据来训练你的模型。这些数据可以来自于各种来源,例如书籍、网站、新闻文章等。你需要确保这些数据足够多样化,以便模型能学…

大模型+LangChain知识

什么是 LangChain? https://python.langchain.com/docs/get_started/introduction LangChain 是一个基于语言模型的框架,用于构建聊天机器人、生成式问答(GQA)、摘要等功能。它的核心思想是将不同的组件“链”在一起&#xff0c…

Proteus -模拟串口被关闭后怎样打开

Proteus -模拟串口被关闭后怎样打开 点击恢复弹出窗口,即可重新打开

XGboost和lightGBM算法对比

XGBoost(eXtreme Gradient Boosting)和LightGBM(Light Gradient Boosting Machine)都是一类基于梯度提升树(Gradient Boosting Decision Trees)的机器学习算法。 XGBoost是由陈天奇开发的一种优化的梯度提…

WPF中值转换器的使用

什么是值转换器 在WPF(Windows Presentation Foundation)中,值转换器(Value Converter)是一种机制,允许你在绑定时转换绑定源和绑定目标之间的值。值转换器实现了 IValueConverter 接口,该接口…

剪辑思维大学习(Day5) - 剪辑时如何找到合适的音乐?!

目录 一、写在前面 二、关键词概括 1.找音乐前考虑什么? 2.常见的情绪关键词 3.常见的音乐风格关键词 三、思路总结 1.旅拍vlog/文旅宣传片 1).世界音乐/民族音乐 2).史诗音乐 3).中国传统乐器 2.炫酷/时尚/节奏感片子 …

【华为 ICT HCIA eNSP 习题汇总】——题目集12

1、企业网络内部常常采用私有 IP 地址进行通信,以下哪个地址属于私有 IP 地址? A、0.1.1.1 B、127.5.4.3 C、128.0.0.5 D、172.24.35.36 考点:网络层 解析:(D) A类 IP 地址中,10.0.0.0 ~ 10.255…

command的作用

int waitCommand(int waitFD) {uint32_t command0;ssize_t sread(waitFD,&command,sizeof(command));assert(ssizeof(uint32_t));return command; } 这段代码中的command是一个无符号32位整数变量,用于存储从文件描述符waitFD中读取的命令。函数waitCommand的作…

深入学习《大学计算机》系列之第1章 1.7节——图灵机的一个例子

一.欢迎来到我的酒馆 第1章 1.7节,图灵机的一个例子。 目录 一.欢迎来到我的酒馆二.图灵机2.1 艾伦-图灵简介2.2 图灵机简介 三.图灵机工作原理3.1 使用图灵机打印二进制数3.2 图灵机工作原理总结 四.总结 二.图灵机 本节内容主要介绍计算机科学之父——艾伦-图灵、…

Java学习-常用API-新增时间

1.学习JDK8新增时间的原因? 2.JDK8新增了那些时间? 代替calendar的 localDate localTime localDateTime 常用APi及代码示例: ZoneIdZonedDateTime 常用方法 代码示例: 代替Date的 Instant常见方法及其代码示例: 注…

权限提升:利用Linux漏洞提权

目录 Linux权限基础 Linux用户权限 Linux文件权限 特殊的Linux文件权限 Linux本机信息收集 利用Linux漏洞进行提权 脏牛漏洞 pkexec Linux权限基础 Linux用户权限 在Linux中,根据权限的不同,大致可以分为三种:超级用户(…

Linux系统上部署网站

在Linux系统上部署网站通常涉及以下步骤: 1. **选择 Web 服务器**:常见的选择包括 Apache、Nginx 或 Lighttpd。这些服务器都支持在 Linux 上部署网站,并且各有优缺点。 2. **安装 Web 服务器**:使用包管理器(如apt、…

C#,卢卡斯数(Lucas Number)的算法与源代码

1 卢卡斯数(Lucas Number) 卢卡斯数(Lucas Number)是一个以数学家爱德华卢卡斯(Edward Lucas)命名的整数序列。爱德华卢卡斯既研究了这个数列,也研究了有密切关系的斐波那契数(两个…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 2月13日,星期二

每天一分钟,知晓天下事! 2024年2月13日 星期二 农历正月初四 1、 春节假期旅游爆火!多地景区宣布门票售罄,建议错峰错区游览。 2、 中国旅游研究院:预计2024年全年国内旅游人数将超过60亿人次。 3、 应急管理部&#…