Never 类型与发散函数
学习目标
- 理解
!类型 - 掌握发散函数
- 理解 never 类型的用途
核心概念
! 类型
// ! 表示永远不会返回的类型
fn forever() -> ! {
loop {}
}
fn exit() -> ! {
std::process::exit(1);
}
fn panic_fn() -> ! {
panic!("crash");
}
在 match 中使用
fn main() {
let x: Result<i32, &str> = Ok(42);
let value = match x {
Ok(n) => n,
Err(_) => panic!("error"), // panic! 返回 !,可以匹配任何类型
};
}
! 可以转换为任何类型
fn main() {
let x: i32 = match "123".parse::<i32>() {
Ok(n) => n,
Err(_) => return, // return 返回 !,可以作为 i32
};
}
小结
| 概念 | 说明 |
|---|---|
! | Never 类型,表示永不返回 |
| 发散函数 | 返回 ! 的函数 |
panic! | 返回 ! |
process::exit | 返回 ! |
| 类型转换 | ! 可以转换为任何类型 |