mirror of
				https://github.com/serde-rs/serde.git
				synced 2025-11-04 07:24:31 +00:00 
			
		
		
		
	NonZero constructor now returns Option
This commit is contained in:
		
							parent
							
								
									ccec002bf3
								
							
						
					
					
						commit
						9f0973aff7
					
				@ -1573,14 +1573,9 @@ where
 | 
				
			|||||||
        D: Deserializer<'de>,
 | 
					        D: Deserializer<'de>,
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        let value = try!(Deserialize::deserialize(deserializer));
 | 
					        let value = try!(Deserialize::deserialize(deserializer));
 | 
				
			||||||
        unsafe {
 | 
					        match NonZero::new(value) {
 | 
				
			||||||
            let ptr = &value as *const T as *const u8;
 | 
					            Some(nonzero) => Ok(nonzero),
 | 
				
			||||||
            if slice::from_raw_parts(ptr, mem::size_of::<T>()).iter().all(|&b| b == 0) {
 | 
					            None => Err(Error::custom("expected a non-zero value")),
 | 
				
			||||||
                return Err(Error::custom("expected a non-zero value"));
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            // Waiting for a safe way to construct NonZero<T>:
 | 
					 | 
				
			||||||
            // https://github.com/rust-lang/rust/issues/27730#issuecomment-269726075
 | 
					 | 
				
			||||||
            Ok(NonZero::new(value))
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user