1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
/// Macro to make your error-handling blocks (appear) lambda-less /// /// #### Before: /// ``` /// let result: Result<T, E> = || { /// let a = do_one(x)?; /// let b = do_two(a)?; /// Ok(b) /// }(); /// ``` /// /// #### After: /// ``` /// let result: Result<T, E> = try_block! { /// let a = do_one(x)?; /// let b = do_two(a)?; /// Ok(b) /// }; /// ``` #[macro_export] macro_rules! try_block { { $($token:tt)* } => {{ let l = || { $($token)* }; l() }} }