👈 9 生命周期
Rust 的错误分为两类:
- 可恢复错误:只影响某个用户自身的操作进程,不影响系统的全局稳定性,用
Result<T, E>
。 - 不可恢复错误:全局性、系统性的致命错误,用
panic!
。
panic
被动触发
fn main() {
let v = vec![1, 2];
println!("{}", v[99]); // panic: 索引越界
}
主动调用
调用 panic!
宏时,程序将打印错误信息,展开报错点之前的函数调用栈,随后退出。
fn main() {
panic!("Crash!");
}
线程 panic
将导致所属进程终止,如果该进程为 main
,则整个程序终止。
Result
enum Result<T, E> {
Ok(T),
Err(E),
}
T
代表成功时存入的正确值的类型,E
代表错误时存入的错误值。
?
fn last_char_of_first_line(text: &str) -> Option<char> {
text.lines().next()?.chars().last()
}
👉 11 格式化输出