diff options
| author | Carol (Nichols || Goulding) <carol.nichols@gmail.com> | 2016-02-16 17:42:24 -0500 |
|---|---|---|
| committer | Carol (Nichols || Goulding) <carol.nichols@gmail.com> | 2016-04-16 10:53:39 -0400 |
| commit | d145c6334f34fb4a1289368175d73aeaa629090c (patch) | |
| tree | 4069ae49a4147577ff3d3a4baceba3c985fd8528 /error_handling | |
| parent | 79f0b17473dda3039f9226091e3806d191384822 (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.rs | 42 |
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 :) |
