multipart::chain_result [] [src]

macro_rules! chain_result {
    ($first_expr:expr, $($try_expr:expr),*) => { ... };
    ($first_expr:expr, $($($arg:ident),+ -> $try_expr:expr),*) => { ... };
}

Chain a series of results together, with or without previous results.

#[macro_use] extern crate multipart;

fn try_add_one(val: u32) -> Result<u32, u32> {
    if val < 5 {
        Ok(val + 1)
    } else {
        Err(val)
    }
}
 
fn main() {
    let res = chain_result! {
        try_add_one(1),
        prev -> try_add_one(prev),
        prev -> try_add_one(prev),
        prev -> try_add_one(prev)
    };

    println!("{:?}", res);
}