Try Block
Try block is (at the time of writing) an unstable feature (#![feature(try_blocks)]
) to introduce a scope for the ?
operator. For example:
let result: Result<i32, ParseIntError> = try {
"1".parse::<i32>()?
+ "foo".parse::<i32>()?
+ "3".parse::<i32>()?
};
Libraries
There are two crates commonly help Rust error handling. thiserror for library code, and anyhow for application code.