我试图将多个值发送到文件/套接字/某种编写器。每次写入都会产生IoResult
。在这种情况下,如何很好地处理整批值? Result
提供.and_then(...)
,但这会使代码看起来非常难看。还有比这更好的方法吗?
return
writer.write(thing1).and_then(|()| {
writer.write(thing2).and_then(|()| {
...
writer.write(thing10)
})})})})})})})})})
答案 0 :(得分:3)
try!
宏会在这里为您提供帮助:
try!(writer.write(thing1))
try!(writer.write(thing2))
...
try!(writer.write(thing10))
它定义为this:
macro_rules! try(
($e:expr) => (match $e { Ok(e) => e, Err(e) => return Err(e) })
)