Error handling 处理多个IoResult错误

Error handling 处理多个IoResult错误,error-handling,rust,Error Handling,Rust,我正在尝试将多个值发送到文件/套接字/某种写入程序。每一次写入都会产生IoResult。在这种情况下,我如何才能很好地处理整批值结果提供了。然后(…),但这使代码看起来非常难看。还有比这更好的方法吗 return writer.write(thing1).and_then(|()| { writer.write(thing2).and_then(|()| { ... writer.write(thing10) })})})})})})})})}) A试试

我正在尝试将多个值发送到文件/套接字/某种写入程序。每一次写入都会产生
IoResult
。在这种情况下,我如何才能很好地处理整批值<代码>结果提供了
。然后(…)
,但这使代码看起来非常难看。还有比这更好的方法吗

return
    writer.write(thing1).and_then(|()| {
    writer.write(thing2).and_then(|()| {
    ...
    writer.write(thing10)
    })})})})})})})})})

A
试试看宏将在此处帮助您:

try!(writer.write(thing1))
try!(writer.write(thing2))
...
try!(writer.write(thing10))
它的定义如下:

macro_rules! try(
    ($e:expr) => (match $e { Ok(e) => e, Err(e) => return Err(e) })
)