Going through rustlings for the first time
at main 939 B view raw
1use std::cmp::Ordering; 2 3#[derive(PartialEq, Debug)] 4enum CreationError { 5 Negative, 6 Zero, 7} 8 9#[derive(PartialEq, Debug)] 10struct PositiveNonzeroInteger(u64); 11 12impl PositiveNonzeroInteger { 13 fn new(value: i64) -> Result<Self, CreationError> { 14 match value.cmp(&0) { 15 Ordering::Less => Err(CreationError::Negative), 16 Ordering::Equal => Err(CreationError::Zero), 17 Ordering::Greater => Ok(Self(value as u64)), 18 } 19 } 20} 21 22fn main() { 23 // You can optionally experiment here. 24} 25 26#[cfg(test)] 27mod tests { 28 use super::*; 29 30 #[test] 31 fn test_creation() { 32 assert_eq!( 33 PositiveNonzeroInteger::new(10), 34 Ok(PositiveNonzeroInteger(10)), 35 ); 36 assert_eq!( 37 PositiveNonzeroInteger::new(-10), 38 Err(CreationError::Negative), 39 ); 40 assert_eq!(PositiveNonzeroInteger::new(0), Err(CreationError::Zero)); 41 } 42}