diff --git a/serde_json/src/de.rs b/serde_json/src/de.rs index 8dea69e1..04491899 100644 --- a/serde_json/src/de.rs +++ b/serde_json/src/de.rs @@ -259,7 +259,9 @@ impl Deserializer if pos { visitor.visit_u64(res) } else { - let res_i64 = (res as i64).wrapping_neg(); + // FIXME: `wrapping_neg` will be stable in Rust 1.2 + //let res_i64 = (res as i64).wrapping_neg(); + let res_i64 = (!res + 1) as i64; // Convert into a float if we underflow. if res_i64 > 0 {