2014-09-18 63 views
1

我試圖發送多個值到文件/套接字/某種作家。每個寫入結果都是IoResult。在這種情況下,我怎樣才能處理好一批價值? Result提供了.and_then(...),但這使得代碼看起來非常難看。有沒有比這更好的方法?處理多個IoResult錯誤

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

回答

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) }) 
)