小编Omi*_*mid的帖子

有什么方法可以执行 unwrap_or_return 错误(任何错误)

有什么方法可以简化以下示例中的返回(最初从这里复制):

use std::num::ParseIntError;

fn multiply(first_number_str: &str, second_number_str: &str) -> Result<i32, ParseIntError> {
    let first_number = match first_number_str.parse::<i32>() {
        Ok(first_number)  => first_number,
        Err(e) => return Err(e),
    };

    let second_number = match second_number_str.parse::<i32>() {
        Ok(second_number)  => second_number,
        Err(e) => return Err(AnotherError::ParseError("error")),
    };

    Ok(first_number * second_number)
}
Run Code Online (Sandbox Code Playgroud)

我的意思是:

use std::num::ParseIntError;

fn multiply(first_number_str: &str, second_number_str: &str) -> Result<i32, ParseIntError> {
    let first_number = first_number_str.parse::<i32>()
        .unwrap_or_return(|e| Err(e));

    let second_number = second_number_str.parse::<i32>()
        .unwrap_or_return(|e| Err(AnotherError::ParseError("error"));

    Ok(first_number * second_number)
}
Run Code Online (Sandbox Code Playgroud)

return rust unwrap

3
推荐指数
1
解决办法
5261
查看次数

标签 统计

return ×1

rust ×1

unwrap ×1