mirror of https://github.com/sunface/rust-course
				
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							30 lines
						
					
					
						
							663 B
						
					
					
				
			
		
		
	
	
							30 lines
						
					
					
						
							663 B
						
					
					
				// errors4.rs
 | 
						|
// 通过测试!执行 `rustlings hint errors4` 获取提示 :)
 | 
						|
 | 
						|
// I AM NOT DONE
 | 
						|
 | 
						|
#[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));
 | 
						|
}
 |