summaryrefslogtreecommitdiff
path: root/error_handling
diff options
context:
space:
mode:
authorCarol (Nichols || Goulding) <carol.nichols@gmail.com>2016-02-16 17:42:24 -0500
committerCarol (Nichols || Goulding) <carol.nichols@gmail.com>2016-04-16 10:53:39 -0400
commitd145c6334f34fb4a1289368175d73aeaa629090c (patch)
tree4069ae49a4147577ff3d3a4baceba3c985fd8528 /error_handling
parent79f0b17473dda3039f9226091e3806d191384822 (diff)
Start an error handling section and move the result exercise there
I think this is a better categorization than "standard library types".
Diffstat (limited to 'error_handling')
-rw-r--r--error_handling/result1.rs42
1 files changed, 42 insertions, 0 deletions
diff --git a/error_handling/result1.rs b/error_handling/result1.rs
new file mode 100644
index 0000000..7146d1e
--- /dev/null
+++ b/error_handling/result1.rs
@@ -0,0 +1,42 @@
+// Make this test pass! Scroll down for hints :)
+
+#[derive(PartialEq,Debug)]
+struct PositiveNonzeroInteger(u64);
+
+#[derive(PartialEq,Debug)]
+enum CreationError {
+ Negative,
+ Zero,
+}
+
+impl PositiveNonzeroInteger {
+ fn new(value: i64) -> Result<PositiveNonzeroInteger, CreationError> {
+ Ok(PositiveNonzeroInteger(value as u64))
+ }
+}
+
+#[test]
+fn test_creation() {
+ assert!(PositiveNonzeroInteger::new(10).is_ok());
+ assert_eq!(Err(CreationError::Negative), PositiveNonzeroInteger::new(-10));
+ assert_eq!(Err(CreationError::Zero), PositiveNonzeroInteger::new(0));
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+// `PositiveNonzeroInteger::new` is always creating a new instance and returning an `Ok` result.
+// It should be doing some checking, returning an `Err` result if those checks fail, and only
+// returning an `Ok` result if those checks determine that everything is... okay :)