// errors4.rs // Execute `rustlings hint errors4` or use the `hint` watch subcommand for a hint. #[derive(PartialEq, Debug)] struct PositiveNonzeroInteger(u64); #[derive(PartialEq, Debug)] enum CreationError { Negative, Zero, } impl PositiveNonzeroInteger { fn new(value: i64) -> Result { // Hmm...? Why is this only returning an Ok value? match value { 0 => return Err(CreationError::Zero), x if x < 0 => return Err(CreationError::Negative), x => return Ok(PositiveNonzeroInteger(x 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)); }