2014-09-18 1 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) }) 
) 

 Смежные вопросы

  • Нет связанных вопросов^_^