From 35f19d8e5eee083d35bee8f4b81366c7ca5715dd Mon Sep 17 00:00:00 2001 From: matytan <-f> Date: Mon, 21 Nov 2022 19:29:33 +0800 Subject: [PATCH] day6 --- exercises/error_handling/errors6.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/exercises/error_handling/errors6.rs b/exercises/error_handling/errors6.rs index 8097b490..7afac235 100644 --- a/exercises/error_handling/errors6.rs +++ b/exercises/error_handling/errors6.rs @@ -25,13 +25,21 @@ impl ParsePosNonzeroError { } // TODO: add another error conversion function here. // fn from_parseint... + fn from_parseint(err: ParseIntError) -> ParsePosNonzeroError { + ParsePosNonzeroError::ParseInt(err) + } } fn parse_pos_nonzero(s: &str) -> Result { // TODO: change this to return an appropriate error instead of panicking // when `parse()` returns an error. - let x: i64 = s.parse().unwrap(); - PositiveNonzeroInteger::new(x).map_err(ParsePosNonzeroError::from_creation) + // let x: i64 = s.parse().unwrap(); + let res = s.parse(); + match res { + Ok(x) => PositiveNonzeroInteger::new(x).map_err(ParsePosNonzeroError::from_creation), + Err(err) => Err(ParsePosNonzeroError::from_parseint(err)), + } + // PositiveNonzeroInteger::new(x).map_err(ParsePosNonzeroError::from_creation) } // Don't change anything below this line.