diff options
| author | Mo <76752051+mo8it@users.noreply.github.com> | 2024-11-14 14:49:57 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-11-14 14:49:57 +0100 |
| commit | dd0634c48375db3bb06eb3304b11abb7a4649a73 (patch) | |
| tree | ec25a07f38eb09183f6eedc928dabb24d02bdf28 /solutions/13_error_handling/errors6.rs | |
| parent | 38016cb2d6053c7d4f18c7ca98880a3ac7d392fa (diff) | |
| parent | fc0cd8f0f88a03b7fdb69a6ba668b8479bd3eddd (diff) | |
Merge pull request #2158 from mnshdw/mnshdw/feedback-errors6
errors6: Add alternative solution using From trait
Diffstat (limited to 'solutions/13_error_handling/errors6.rs')
| -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..ce18073 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); |
