diff --git a/bigint/Cargo.toml b/bigint/Cargo.toml index ee0b7b5384..bc7c633e80 100644 --- a/bigint/Cargo.toml +++ b/bigint/Cargo.toml @@ -29,7 +29,7 @@ version = "0.3.19" [dependencies.serde] optional = true -version = ">= 0.7.0, < 0.9.0" +version = "1" [dev-dependencies.rand] version = "0.3.14" diff --git a/bigint/src/bigint.rs b/bigint/src/bigint.rs index 32a44419ef..cec996c5b4 100644 --- a/bigint/src/bigint.rs +++ b/bigint/src/bigint.rs @@ -70,7 +70,7 @@ impl Mul for Sign { #[cfg(feature = "serde")] impl serde::Serialize for Sign { - fn serialize(&self, serializer: &mut S) -> Result<(), S::Error> + fn serialize(&self, serializer: S) -> Result where S: serde::Serializer { match *self { @@ -82,9 +82,9 @@ impl serde::Serialize for Sign { } #[cfg(feature = "serde")] -impl serde::Deserialize for Sign { - fn deserialize(deserializer: &mut D) -> Result - where D: serde::Deserializer +impl<'de> serde::Deserialize<'de> for Sign { + fn deserialize(deserializer: D) -> Result + where D: serde::Deserializer<'de> { use serde::de::Error; @@ -93,7 +93,9 @@ impl serde::Deserialize for Sign { -1 => Ok(Sign::Minus), 0 => Ok(Sign::NoSign), 1 => Ok(Sign::Plus), - _ => Err(D::Error::invalid_value("sign must be -1, 0, or 1")), + _ => Err(D::Error::invalid_value( + serde::de::Unexpected::Signed(sign as i64), + &"sign must be -1, 0, or 1")), } } } @@ -753,7 +755,7 @@ impl From for BigInt { #[cfg(feature = "serde")] impl serde::Serialize for BigInt { - fn serialize(&self, serializer: &mut S) -> Result<(), S::Error> + fn serialize(&self, serializer: S) -> Result where S: serde::Serializer { (self.sign, &self.data).serialize(serializer) @@ -761,9 +763,9 @@ impl serde::Serialize for BigInt { } #[cfg(feature = "serde")] -impl serde::Deserialize for BigInt { - fn deserialize(deserializer: &mut D) -> Result - where D: serde::Deserializer +impl<'de> serde::Deserialize<'de> for BigInt { + fn deserialize(deserializer: D) -> Result + where D: serde::Deserializer<'de> { let (sign, data) = try!(serde::Deserialize::deserialize(deserializer)); Ok(BigInt { diff --git a/bigint/src/biguint.rs b/bigint/src/biguint.rs index 00877c8258..f9f8837ceb 100644 --- a/bigint/src/biguint.rs +++ b/bigint/src/biguint.rs @@ -1073,7 +1073,7 @@ impl BigUint { #[cfg(feature = "serde")] impl serde::Serialize for BigUint { - fn serialize(&self, serializer: &mut S) -> Result<(), S::Error> + fn serialize(&self, serializer: S) -> Result where S: serde::Serializer { self.data.serialize(serializer) @@ -1081,9 +1081,9 @@ impl serde::Serialize for BigUint { } #[cfg(feature = "serde")] -impl serde::Deserialize for BigUint { - fn deserialize(deserializer: &mut D) -> Result - where D: serde::Deserializer +impl<'de> serde::Deserialize<'de> for BigUint { + fn deserialize(deserializer: D) -> Result + where D: serde::Deserializer<'de> { let data = try!(Vec::deserialize(deserializer)); Ok(BigUint { data: data }) diff --git a/ci/test_full.sh b/ci/test_full.sh index 9a0f2cf697..6bfdc81f57 100755 --- a/ci/test_full.sh +++ b/ci/test_full.sh @@ -22,16 +22,11 @@ for feature in '' bigint rational complex; do cargo test --verbose --no-default-features --features="$feature" done -# Build test for the serde feature -cargo build --verbose --features "serde" +if [ "$TRAVIS_RUST_VERSION" = 1.8.0 ]; then exit; fi -# Downgrade serde and build test the 0.7.0 channel as well -cargo update -p serde --precise 0.7.0 +# Build test for the serde feature cargo build --verbose --features "serde" - -if [ "$TRAVIS_RUST_VERSION" = 1.8.0 ]; then exit; fi - # num-derive should build on 1.15.0+ cargo build --verbose --manifest-path=derive/Cargo.toml diff --git a/complex/Cargo.toml b/complex/Cargo.toml index 86a0972838..0d66ab0e54 100644 --- a/complex/Cargo.toml +++ b/complex/Cargo.toml @@ -22,7 +22,7 @@ version = "0.3.19" [dependencies.serde] optional = true -version = ">= 0.7.0, < 0.9.0" +version = "1" [features] default = ["rustc-serialize"] diff --git a/complex/src/lib.rs b/complex/src/lib.rs index cb605a2c28..4651d26c59 100644 --- a/complex/src/lib.rs +++ b/complex/src/lib.rs @@ -744,7 +744,7 @@ impl fmt::Binary for Complex where impl serde::Serialize for Complex where T: serde::Serialize { - fn serialize(&self, serializer: &mut S) -> Result<(), S::Error> where + fn serialize(&self, serializer: S) -> Result where S: serde::Serializer { (&self.re, &self.im).serialize(serializer) @@ -752,11 +752,11 @@ impl serde::Serialize for Complex } #[cfg(feature = "serde")] -impl serde::Deserialize for Complex where - T: serde::Deserialize + Num + Clone +impl<'de, T> serde::Deserialize<'de> for Complex where + T: serde::Deserialize<'de> + Num + Clone { - fn deserialize(deserializer: &mut D) -> Result where - D: serde::Deserializer, + fn deserialize(deserializer: D) -> Result where + D: serde::Deserializer<'de>, { let (re, im) = try!(serde::Deserialize::deserialize(deserializer)); Ok(Complex::new(re, im)) diff --git a/rational/Cargo.toml b/rational/Cargo.toml index 785e93baaa..05f5523c5f 100644 --- a/rational/Cargo.toml +++ b/rational/Cargo.toml @@ -30,7 +30,7 @@ version = "0.3.19" [dependencies.serde] optional = true -version = ">= 0.7.0, < 0.9.0" +version = "1" [features] default = ["bigint", "rustc-serialize"] diff --git a/rational/src/lib.rs b/rational/src/lib.rs index f984548399..19d28094a1 100644 --- a/rational/src/lib.rs +++ b/rational/src/lib.rs @@ -612,7 +612,7 @@ impl Into<(T, T)> for Ratio { impl serde::Serialize for Ratio where T: serde::Serialize + Clone + Integer + PartialOrd { - fn serialize(&self, serializer: &mut S) -> Result<(), S::Error> + fn serialize(&self, serializer: S) -> Result where S: serde::Serializer { (self.numer(), self.denom()).serialize(serializer) @@ -620,15 +620,17 @@ impl serde::Serialize for Ratio } #[cfg(feature = "serde")] -impl serde::Deserialize for Ratio - where T: serde::Deserialize + Clone + Integer + PartialOrd +impl<'de, T> serde::Deserialize<'de> for Ratio + where T: serde::Deserialize<'de> + Clone + Integer + PartialOrd { - fn deserialize(deserializer: &mut D) -> Result - where D: serde::Deserializer + fn deserialize(deserializer: D) -> Result + where D: serde::Deserializer<'de> { let (numer, denom): (T,T) = try!(serde::Deserialize::deserialize(deserializer)); if denom.is_zero() { - Err(serde::de::Error::invalid_value("denominator is zero")) + Err(serde::de::Error::invalid_value( + serde::de::Unexpected::Unsigned(0), + &"denominator should be non-zero")) } else { Ok(Ratio::new_raw(numer, denom)) }