MST

星途 面试题库

面试题:Rust闭包中处理错误的常见方式

在Rust闭包中,假设闭包内部的操作可能会返回`Result`类型,包含`Ok`和`Err`两种情况。请描述处理这种闭包中错误的常见方式,并给出简单示例代码。
13.4万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
  1. 常见处理方式
    • 传播错误:使用?操作符将错误从闭包内部传播到调用闭包的函数中。
    • 在闭包内处理错误:使用match表达式或者if let表达式来处理Result类型,根据OkErr的不同情况进行不同的操作。
  2. 示例代码
    • 传播错误
fn process_with_closure() -> Result<i32, String> {
    let closure = |input: i32| -> Result<i32, String> {
        if input < 0 {
            Err("Input cannot be negative".to_string())
        } else {
            Ok(input * 2)
        }
    };
    let result = closure(5)?;
    Ok(result)
}
  • 在闭包内处理错误
fn handle_error_in_closure() {
    let closure = |input: i32| {
        match input {
            num if num < 0 => {
                println!("Error: Input cannot be negative");
                0
            }
            _ => input * 2,
        }
    };
    let result = closure(-3);
    println!("Result: {}", result);
}