Learning resources:
English: Rust Book 9.1, 9.2
简体中文: Rust语言圣经 - 返回值和错误处理
panic!
Rust 中最简单的错误处理方式就是使用 panic 。它会打印出一条错误信息并打印出栈调用情况,最终结束
当前线程:
若 panic 发生在 main 线程,那程序会随之退出
如果是在生成的( spawn )子线程中发生 panic, 那么当前的线程会结束,但是程序依然会继续运行
- 🌟🌟
// 填 空
fn drink(beverage: &str) {
if beverage == “lemonade” {
println!(“Success!”);
// 实 现 下 面 的 代 码
__
}
println!(“Exercise Failed if printing out this line!”);
}
fn main() {
drink(__);
println!(“Exercise Failed if printing out this line!”);
}
常见的 panic - 🌟🌟
// 修 复 所 有 的 panic, 让 代 码 工 作
fn main() {
assert_eq!(“abc”.as_bytes(), [96, 97, 98]);
let v = vec![1, 2, 3];
let ele = v[3];
let ele = v.get(3).unwrap();
// 大 部 分 时 候 编 译 器 是 可 以 帮 我 们 提 前 发 现 溢 出 错 误 , 并 阻 止 编 译 通 过 。 但 是 也 有 一 些 时 候 , 这
let v = production_rate_per_hour(2);
divide(15, 0);
println!(“Success!”)
}
fn divide(x:u8, y:u8) {
println!(“{}”, x / y)
}
fn production_rate_per_hour(speed: u8) -> f64 {
let cph: u8 = 221;
match speed {
1…=4 => (speed * cph) as f64,
5…=8 => (speed * cph) as f64 * 0.9,
9…=10 => (speed * cph) as f64 * 0.77,
_ => 0 as f64,
}
}
pub fn working_items_per_minute(speed: u8) -> u32 {
(production_rate_per_hour(speed) / 60 as f64) as u32
}