gpt4 book ai didi

rust - 在 Rust 中通过提前返回来处理错误的惯用方法

转载 作者:行者123 更新时间:2023-12-02 18:16:50 25 4
gpt4 key购买 nike

我目前有以下代码来处理我想在不传播的情况下处理错误或继续该功能的情况。这个用例是一个网络服务器 Controller ,我更愿意手动处理可能的错误 - 这就是返回类型为 HttpResponse 的原因。

我想知道是否有一种方法可以在没有此 unwrap 调用的情况下执行此操作,因为根据我的理解,编译器应该知道此时有一种方法可以解包为一个值而没有风险 panic 。

    // ...

let result: Result<u8, Error> = func_that_could_error();
if result.is_err() {
return HttpResponse::InternalServerError();
}
let value: u8 = result.unwrap();

// ...

最佳答案

如果可以,使用?:

let value = func_that_could_error()?;

可选择将其映射到您的错误,如@Jmb 建议:

let value = func_that_could_error()
.map_err(|_| HttpResponse::InternalServerError())?;

否则,使用let else:

let Ok(value) = func_that_could_error() else {
return HttpResponse::InternalServerError();
};

或者,对于 Rust < 1.65,匹配:

let value = match func_that_could_error() {
Err(_) => return HttpResponse::InternalServerError(),
Ok(v) => v,
};

关于rust - 在 Rust 中通过提前返回来处理错误的惯用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71483124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com