Rust基础[part9]_返回值和错误处理、模块化
Rust基础[part9]_返回值和错误处理、模块化
返回值
Option<T>
基本使用
fn option_example() {// 创建Optionlet some_number = Some(5);let some_string = Some("a string");let absent_number: Option<i32> = None;//使用let x = plus_one(some_number);let y = plus_one(absent_number);println!("x: {:?}, y: {:?}", x, y);
}fn plus_one(x: Option<i32>) -> Option<i32> {match x {None => None,Some(i) => Some(i + 1),}
}
辅助函数
- unwrap() : 提取option中的值,但是没有值的时候会panic
fn unwrap_example() {let some_number = Some(5);let some_string = Some("a string");let absent_number: Option<i32> = None;println!("some_number: {:?}", some_number.unwrap());println!("some_string: {:?}", some_string.unwrap());// println!("absent_number: {:?}", absent_number.unwrap());
}
- is_some() 和is_none()
fn is_some_example() {let some_number = Some(5);let some_string = Some("a string");let absent_number: Option<i32> = None;println!("some_number: {:?}", some_number.is_some());println!("some_string: {:?}", some_string.is_some());println!("absent_number: {:?}", absent_number.is_some());
}fn is_none_example() {let some_number = Some(5);let some_string = Some("a string");let absent_number: Option<i32> = None;println!("some_number: {:?}", some_number.is_none());println!("some_string: {:?}", some_string.is_none());println!("absent_number: {:?}", absent_number.is_none());
}
错误处理
Rust中的错误主要分为两类:
- 可恢