面试题答案
一键面试Result类型的作用
在Rust中,Result
类型用于处理可能会失败的操作。它是一个枚举类型,定义如下:
enum Result<T, E> {
Ok(T),
Err(E),
}
T
表示操作成功时返回的值的类型,E
表示操作失败时返回的错误类型。这种方式使得错误处理显式化,避免了像在其他语言中可能出现的隐式错误(如空指针异常等)。
使用Result类型处理可能出现异常的操作示例
下面是一个接收两个整数作为参数,进行除法运算并使用Result
类型处理除数为零异常情况的函数:
fn divide(a: i32, b: i32) -> Result<i32, &'static str> {
if b == 0 {
Err("除数不能为零")
} else {
Ok(a / b)
}
}
你可以这样调用这个函数:
fn main() {
let result1 = divide(10, 2);
match result1 {
Ok(result) => println!("结果: {}", result),
Err(error) => println!("错误: {}", error),
}
let result2 = divide(10, 0);
match result2 {
Ok(result) => println!("结果: {}", result),
Err(error) => println!("错误: {}", error),
}
}
在上述代码中,divide
函数在除数为零时返回Err
,并携带错误信息;否则返回Ok
,并携带除法运算的结果。在main
函数中,使用match
语句来处理Result
的不同情况,分别打印结果或错误信息。