catch_expr
The tracking issue for this feature is: #31436
The catch_expr
feature adds support for a catch
expression. The catch
expression creates a new scope one can use the ?
operator in.
#![allow(unused_variables)]
#![feature(catch_expr)]
fn main() {
use std::num::ParseIntError;
let result: Result<i32, ParseIntError> = do catch {
Ok("1".parse::<i32>()?
+ "2".parse::<i32>()?
+ "3".parse::<i32>()?)
};
assert_eq!(result, Ok(6));
let result: Result<i32, ParseIntError> = do catch {
Ok("1".parse::<i32>()?
+ "foo".parse::<i32>()?
+ "3".parse::<i32>()?)
};
assert!(result.is_err());
}