👈 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 格式化输出