diff --git a/exercises/error_handling/errors6.rs b/exercises/error_handling/errors6.rs index 5dd3998..70b00b8 100644 --- a/exercises/error_handling/errors6.rs +++ b/exercises/error_handling/errors6.rs @@ -26,20 +26,25 @@ impl ParsePosNonzeroError { } } -fn parse_pos_nonzero(s: &str) - -> Result +fn parse_pos_nonzero(s: &str) -> Result { - match s.parse() { - Ok(n) => { - match PositiveNonzeroInteger::new(n) { - Ok(n) => Ok(n), - Err(err) => Err(ParsePosNonzeroError::from_creation(err)), - } - } - Err(err) => Err(ParsePosNonzeroError::from_parse_int(err)), - } + // long way + // match s.parse() { + // Ok(n) => { + // match PositiveNonzeroInteger::new(n) { + // Ok(n) => Ok(n), + // Err(err) => Err(ParsePosNonzeroError::from_creation(err)), + // } + // } + // Err(err) => Err(ParsePosNonzeroError::from_parse_int(err)), + // } + + // short way + let x: i64 = s.parse().map_err(ParsePosNonzeroError::from_parseint)?; + PositiveNonzeroInteger::new(x).map_err(ParsePosNonzeroError::from_creation) } + // Don't change anything below this line. #[derive(PartialEq, Debug)]