error handling in rust: explain the macro.