Obecnie używam tego wzoru:Jak mogę zwięźle połączyć wiele "wyników" różnych typów?
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)
}))
Czy jest bardziej zwięzły sposób określić a
, b
& c
, takich jak Scala dla ekspresji?
To nie jest dokładnie "łączenie wyników", jak próbujesz tutaj .. jednak ostatnio robię to - łączenie parsowania w iteracji przy sumowaniu wszystkiego razem (http: //play.integer32 .com /? gist = 9470f7e9f293852f7444c1017ae91fa9 & version = stable). Nie jestem pewien, czy jest to odpowiednie dla ciebie, zważywszy na znacznie trudniejsze określenie, które z nich nie powiodło się w tym scenariuszu (jeśli takowe są). –
Podoba mi się. Chociaż to nie jest to, czego potrzebuję i uświadamia mi, że moje pytanie jest trochę mylące. Pójdę jeszcze napisać to. – Synesso