summaryrefslogtreecommitdiff
path: root/exercises/13_error_handling
diff options
context:
space:
mode:
authormo8it <mo8it@proton.me>2024-06-26 15:54:18 +0200
committermo8it <mo8it@proton.me>2024-06-26 15:54:18 +0200
commit9b7a5c041e9856379154b109b2ee2f3e979d70f7 (patch)
tree804285d518f9f7aeb738fa704c5ab43ce76b48a2 /exercises/13_error_handling
parentc46d8bdf95c9a2025ee943feb208102a94b25ee6 (diff)
errors4 solution
Diffstat (limited to 'exercises/13_error_handling')
-rw-r--r--exercises/13_error_handling/errors4.rs21
1 files changed, 12 insertions, 9 deletions
diff --git a/exercises/13_error_handling/errors4.rs b/exercises/13_error_handling/errors4.rs
index 993d42a..ba01e54 100644
--- a/exercises/13_error_handling/errors4.rs
+++ b/exercises/13_error_handling/errors4.rs
@@ -1,16 +1,16 @@
#[derive(PartialEq, Debug)]
-struct PositiveNonzeroInteger(u64);
-
-#[derive(PartialEq, Debug)]
enum CreationError {
Negative,
Zero,
}
+#[derive(PartialEq, Debug)]
+struct PositiveNonzeroInteger(u64);
+
impl PositiveNonzeroInteger {
- fn new(value: i64) -> Result<PositiveNonzeroInteger, CreationError> {
- // Hmm... Why is this always returning an Ok value?
- Ok(PositiveNonzeroInteger(value as u64))
+ fn new(value: i64) -> Result<Self, CreationError> {
+ // TODO: This function shouldn't always return an `Ok`.
+ Ok(Self(value as u64))
}
}
@@ -24,11 +24,14 @@ mod tests {
#[test]
fn test_creation() {
- assert!(PositiveNonzeroInteger::new(10).is_ok());
assert_eq!(
+ PositiveNonzeroInteger::new(10),
+ Ok(PositiveNonzeroInteger(10)),
+ );
+ assert_eq!(
+ PositiveNonzeroInteger::new(-10),
Err(CreationError::Negative),
- PositiveNonzeroInteger::new(-10)
);
- assert_eq!(Err(CreationError::Zero), PositiveNonzeroInteger::new(0));
+ assert_eq!(PositiveNonzeroInteger::new(0), Err(CreationError::Zero));
}
}