Rust基础[part9]_返回值和错误处理、模块化
返回值
Option<T>
基本使用
fn option_example() {
// 创建Option
let 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中的错误主要分为两类:
- 可恢