应该使用?操作符代替拆包(unwrap())操作,以处理可能出现错误的情况。
示例代码:
使用unwrap()操作:
fn divide(a: i32, b: i32) -> i32 {
a / b
}
fn main() {
let result = divide(10, 0);
println!("Result is: {}", result.unwrap());
}
使用?操作符:
fn divide(a: i32, b: i32) -> Result {
if b == 0 {
return Err(String::from("Cannot divide by zero"));
}
Ok(a / b)
}
fn main() -> Result<(), String> {
let result = divide(10, 0)?;
println!("Result is: {}", result);
Ok(())
}
在使用Result或Option返回值的函数中,我们可以使用?操作符将错误传递给调用该函数的地方,而不需要使用拆包(unwrap())操作来获取结果。这种方式使代码更加健壮并减少错误的可能性。