summaryrefslogtreecommitdiff
path: root/solutions
diff options
context:
space:
mode:
authorAntoine Dupuis <moonshadws@gmail.com>2024-11-13 23:51:09 +0100
committerAntoine Dupuis <moonshadws@gmail.com>2024-11-13 23:51:09 +0100
commitd5cae8ff597ab85d817d3abb6f30159f1823a0f2 (patch)
treeaae9eff70b424eb80ac85da2c58012810f182f03 /solutions
parent38016cb2d6053c7d4f18c7ca98880a3ac7d392fa (diff)
Add alternative solution using From trait
Diffstat (limited to 'solutions')
-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..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);