gpt4 book ai didi

rust - 我怎样才能简洁地组合许多不同类型的 `Result` ?

转载 作者:行者123 更新时间:2023-11-29 07:48:44 25 4
gpt4 key购买 nike

目前我使用这种模式:

let a: Result<A, ParseError> = parseA();
let b: Result<B, ParseError> = parseB();
let c: Result<C, ParseError> = parseC();
a.and_then(|a| b.map(|b| (a, b))).and_then(|(a,b)| c.map(|c| {
// finally the crux of what I want to do
a.foo(b).bar(c)
}))

有没有更简洁的方法来定义a, b & c,比如Scala的for-expression?

最佳答案

我通常将所有内容分层包装,而不是通过元组链接:

let result = a.and_then(|a| {
b.and_then(|b| {
c.map(|c| {
a.foo(b).bar(c)
})
})
});

或者,在最近的 Rust 版本中,您可以精心使用 ? 运算符:

let result = a.and_then(|a| {
a.foo(b?).bar(c?)
});

闭包可以让你很好地、安全地做到这一点。

当然,如果您想将中间 Result 存储在变量中,这是行不通的。

关于rust - 我怎样才能简洁地组合许多不同类型的 `Result` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41950933/

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