summaryrefslogtreecommitdiff
path: root/solutions/13_error_handling/errors6.rs
diff options
context:
space:
mode:
authorMo <76752051+mo8it@users.noreply.github.com>2024-11-14 14:49:57 +0100
committerGitHub <noreply@github.com>2024-11-14 14:49:57 +0100
commitdd0634c48375db3bb06eb3304b11abb7a4649a73 (patch)
treeec25a07f38eb09183f6eedc928dabb24d02bdf28 /solutions/13_error_handling/errors6.rs
parent38016cb2d6053c7d4f18c7ca98880a3ac7d392fa (diff)
parentfc0cd8f0f88a03b7fdb69a6ba668b8479bd3eddd (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.rs15
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);