mirror of
https://github.com/serde-rs/serde.git
synced 2025-10-02 15:25:38 +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