title: How can I succinctly combine many `Result`s of different types?
body: <p>Currently I use this pattern:</p>
  
  <pre><code>let a: Result&lt;A, ParseError&gt; = parseA();
  let b: Result&lt;B, ParseError&gt; = parseB();
  let c: Result&lt;C, ParseError&gt; = 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)
  }))
  </code></pre>
  
  <p>Is there a more succinct way to define <code>a</code>, <code>b</code> &amp; <code>c</code>, such as Scala's for-expression?</p>