diff --git a/solutions/13_error_handling/errors6.rs b/solutions/13_error_handling/errors6.rs index 86793619..ce18073a 100644 --- a/solutions/13_error_handling/errors6.rs +++ b/solutions/13_error_handling/errors6.rs @@ -29,6 +29,21 @@ impl ParsePosNonzeroError { } } +// As an alternative solution, implementing the `From` trait allows for the +// automatic conversion from a `ParseIntError` into a `ParsePosNonzeroError` +// using the `?` operator, without the need to call `map_err`. +// +// ``` +// let x: i64 = s.parse()?; +// ``` +// +// Traits like `From` will be dealt with in later exercises. +impl From for ParsePosNonzeroError { + fn from(err: ParseIntError) -> Self { + ParsePosNonzeroError::ParseInt(err) + } +} + #[derive(PartialEq, Debug)] struct PositiveNonzeroInteger(u64);