Rust编程:理解发散函数与!类型
需积分: 44 62 浏览量
更新于2024-08-07
收藏 3.91MB PDF 举报
"深入浅出Rust - 范长春著"
在Rust编程语言中,发散函数是一种特殊类型的函数,其返回类型是感叹号(!),表示该函数无法正常返回。这种函数通常用于处理异常情况,如通过`panic!`宏抛出错误,或者在程序遇到无法恢复的问题时终止执行。发散函数之所以存在,是因为它们能够适应Rust的严格类型系统,确保编译期间的类型一致性。
当一个函数通过`panic!`或其他类似函数(如`unimplemented!`或`unreachable!`)直接导致程序崩溃时,它的返回类型实际上可以被解释为任何类型,因为这些函数不会执行到返回值的阶段。例如,即使将发散函数赋值给i32或String类型的变量,编译器也能接受,因为在这些情况下,程序实际上不会执行到使用返回值的地方。
在Rust的控制流语句中,如if-else表达式,每个分支的类型必须相同。在这种情况下,发散函数的!类型就起到了关键作用,因为它可以被视为任何类型,从而使编译器能通过类型检查。例如,在如下代码中,无论x是否为真,`panic!`都会使程序终止,因此两个分支的类型可以视为一致:
```rust
let p = if x {
panic!("error");
} else {
100
};
```
此外,死循环`loop {}`和进程退出函数`std::process::exit`等也是发散函数的例子,因为它们不会返回到调用者。
在Rust的类型系统中,NeverType(!)是一个非常重要的概念,它代表了一个永远不会出现的值。在第8章深入讨论类型系统时,会进一步阐述NeverType的使用及其在类型推导和错误处理中的角色。
本书《深入浅出Rust》由范长春著,涵盖了Rust编程语言的基础知识,如变量、类型、函数、trait、数组、字符串、模式解构等,并深入探讨了Rust的核心特性,如内存安全、所有权和生命周期等。这本书对于理解和掌握Rust语言的精髓非常有帮助,适合想要学习或已经使用Rust进行开发的程序员阅读。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2022-05-20 上传
2022-05-22 上传
2021-05-20 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
Davider_Wu
- 粉丝: 45
- 资源: 3887
最新资源
- Struts快速学习指南
- 新型 求真 有效 值芯片 AD536的应 用
- Convex Optimization book (pdf)
- Web Service配置示例(例子)
- ajax方式载入外部页面数据的层打开效果.txt
- AJAX开发简略-简体中文教程
- 图书管理系统可行性分析
- STL_Tutorial_Reference.pdf
- GNU make中文手册
- How to Break MD5 and Other Hash Functions
- js精确定位HTML标签的TOP和LEFT值
- 高质量C编程指南 编程时我们经常忽视的地方
- QQ2440之初体验.pdf
- at89s52中文资料
- SAP人力资源管理功能概述
- S3C2440数据手册