rust Result usage
比如, parse() 方法,并不能總是把一個(gè)輸入轉(zhuǎn)成數(shù)字, 比如輸入是 H,就不能轉(zhuǎn)成數(shù)字
所以?parse()
?返回一個(gè)?Result
?表示可能會(huì)失敗。
fn multiply(x: &str, y: &str) -> i32 {
let x = x.parse::<i32>().unwrap(); // maybe Some, maybe None
let y = y.parse::<i32>().unwrap(); // maybe Some, maybe None
x * y
}
fn main() {
let a = "3";
let b = "x";
? ?// println!(format!("{}",multiply(a, b)));
let res = format!("{}", multiply(a, b));
println!("res is {}", res);
}


Result 包含 Ok 和 Err 兩種可能性。
fn multiply(x: &str, y: &str) -> Result<i32, ParseIntError> {
let x = match x.parse::<i32>() {
Ok(x) => x,
Err(e) => return Err(e),
};
let y = match y.parse::<i32>() {
Ok(y) => y,
Err(e) => return Err(e),
};
? ?// x * y// can mot match Result it should be as below:
Ok(x * y)
}
parse 類比靜態(tài)方法, 實(shí)例上,調(diào)用靜態(tài)方法parse::<i32>()
