summaryrefslogtreecommitdiff
path: root/exercises
diff options
context:
space:
mode:
Diffstat (limited to 'exercises')
-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));
}
}