diff options
| author | Antoine Dupuis <moonshadws@gmail.com> | 2024-11-13 23:51:09 +0100 |
|---|---|---|
| committer | Antoine Dupuis <moonshadws@gmail.com> | 2024-11-13 23:51:09 +0100 |
| commit | d5cae8ff597ab85d817d3abb6f30159f1823a0f2 (patch) | |
| tree | aae9eff70b424eb80ac85da2c58012810f182f03 /solutions | |
| parent | 38016cb2d6053c7d4f18c7ca98880a3ac7d392fa (diff) | |
Add alternative solution using From trait
Diffstat (limited to 'solutions')
| -rw-r--r-- | solutions/13_error_handling/errors6.rs | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/solutions/13_error_handling/errors6.rs b/solutions/13_error_handling/errors6.rs index 8679361..7bad200 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<ParseIntError> for ParsePosNonzeroError { + fn from(err: ParseIntError) -> Self { + ParsePosNonzeroError::ParseInt(err) + } +} + #[derive(PartialEq, Debug)] struct PositiveNonzeroInteger(u64); |
