Skip to content

Commit e89c480

Browse files
committed
Update rand and serde; drop rustc-serialize
1 parent 5e389ca commit e89c480

File tree

4 files changed

+29
-33
lines changed

4 files changed

+29
-33
lines changed

Cargo.toml

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,18 +35,14 @@ features = ["std"]
3535

3636
[dependencies.rand]
3737
optional = true
38-
version = ">= 0.3.14, < 0.5.0"
39-
40-
[dependencies.rustc-serialize]
41-
optional = true
42-
version = "0.3.19"
38+
version = "0.4"
4339

4440
[dependencies.serde]
4541
optional = true
46-
version = ">= 0.7.0, < 0.9.0"
42+
version = "1.0"
4743

4844
[dev-dependencies.rand]
49-
version = ">= 0.3.14, < 0.5.0"
45+
version = "0.4"
5046

5147
[features]
52-
default = ["rand", "rustc-serialize"]
48+
default = []

ci/test_full.sh

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,10 @@ cargo build --no-default-features
1313
cargo test --no-default-features
1414

1515
# Each isolated feature should also work everywhere.
16-
for feature in rand rustc-serialize serde; do
16+
for feature in rand serde; do
1717
cargo build --verbose --no-default-features --features="$feature"
1818
cargo test --verbose --no-default-features --features="$feature"
1919
done
2020

21-
# Downgrade serde and build test the 0.7.0 channel as well
22-
cargo update -p serde --precise 0.7.0
23-
cargo build --verbose --no-default-features --features "serde"
21+
cargo build --all-features
22+
cargo test --all-features

src/bigint.rs

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ use traits::{ToPrimitive, FromPrimitive, Num, CheckedAdd, CheckedSub,
2323
use self::Sign::{Minus, NoSign, Plus};
2424

2525
use super::ParseBigIntError;
26-
use super::big_digit;
2726
use super::big_digit::{BigDigit, DoubleBigDigit};
2827
use biguint;
2928
use biguint::to_str_radix_reversed;
@@ -38,7 +37,6 @@ mod bigint_tests;
3837

3938
/// A Sign is a `BigInt`'s composing element.
4039
#[derive(PartialEq, PartialOrd, Eq, Ord, Copy, Clone, Debug, Hash)]
41-
#[cfg_attr(feature = "rustc-serialize", derive(RustcEncodable, RustcDecodable))]
4240
pub enum Sign {
4341
Minus,
4442
NoSign,
@@ -74,7 +72,7 @@ impl Mul<Sign> for Sign {
7472

7573
#[cfg(feature = "serde")]
7674
impl serde::Serialize for Sign {
77-
fn serialize<S>(&self, serializer: &mut S) -> Result<(), S::Error>
75+
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
7876
where S: serde::Serializer
7977
{
8078
match *self {
@@ -86,25 +84,28 @@ impl serde::Serialize for Sign {
8684
}
8785

8886
#[cfg(feature = "serde")]
89-
impl serde::Deserialize for Sign {
90-
fn deserialize<D>(deserializer: &mut D) -> Result<Self, D::Error>
91-
where D: serde::Deserializer
87+
impl<'de> serde::Deserialize<'de> for Sign {
88+
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
89+
where D: serde::Deserializer<'de>
9290
{
9391
use serde::de::Error;
92+
use serde::de::Unexpected;
9493

95-
let sign: i8 = try!(serde::Deserialize::deserialize(deserializer));
94+
let sign: i8 = serde::Deserialize::deserialize(deserializer)?;
9695
match sign {
9796
-1 => Ok(Sign::Minus),
9897
0 => Ok(Sign::NoSign),
9998
1 => Ok(Sign::Plus),
100-
_ => Err(D::Error::invalid_value("sign must be -1, 0, or 1")),
99+
_ => Err(D::Error::invalid_value(
100+
Unexpected::Signed(sign.into()),
101+
&"a sign of -1, 0, or 1",
102+
)),
101103
}
102104
}
103105
}
104106

105107
/// A big signed integer type.
106108
#[derive(Clone, Debug, Hash)]
107-
#[cfg_attr(feature = "rustc-serialize", derive(RustcEncodable, RustcDecodable))]
108109
pub struct BigInt {
109110
sign: Sign,
110111
data: BigUint,
@@ -1200,19 +1201,19 @@ impl From<BigUint> for BigInt {
12001201

12011202
#[cfg(feature = "serde")]
12021203
impl serde::Serialize for BigInt {
1203-
fn serialize<S>(&self, serializer: &mut S) -> Result<(), S::Error>
1204+
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
12041205
where S: serde::Serializer
12051206
{
12061207
(self.sign, &self.data).serialize(serializer)
12071208
}
12081209
}
12091210

12101211
#[cfg(feature = "serde")]
1211-
impl serde::Deserialize for BigInt {
1212-
fn deserialize<D>(deserializer: &mut D) -> Result<Self, D::Error>
1213-
where D: serde::Deserializer
1212+
impl<'de> serde::Deserialize<'de> for BigInt {
1213+
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1214+
where D: serde::Deserializer<'de>
12141215
{
1215-
let (sign, data) = try!(serde::Deserialize::deserialize(deserializer));
1216+
let (sign, data) = serde::Deserialize::deserialize(deserializer)?;
12161217
Ok(BigInt {
12171218
sign: sign,
12181219
data: data,
@@ -1307,14 +1308,15 @@ pub trait RandBigInt {
13071308
#[cfg(any(feature = "rand", test))]
13081309
impl<R: Rng> RandBigInt for R {
13091310
fn gen_biguint(&mut self, bit_size: usize) -> BigUint {
1310-
let (digits, rem) = bit_size.div_rem(&big_digit::BITS);
1311+
use super::big_digit::BITS;
1312+
let (digits, rem) = bit_size.div_rem(&BITS);
13111313
let mut data = Vec::with_capacity(digits + 1);
13121314
for _ in 0..digits {
13131315
data.push(self.gen());
13141316
}
13151317
if rem > 0 {
13161318
let final_digit: BigDigit = self.gen();
1317-
data.push(final_digit >> (big_digit::BITS - rem));
1319+
data.push(final_digit >> (BITS - rem));
13181320
}
13191321
BigUint::new(data)
13201322
}

src/biguint.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ mod biguint_tests;
4747
/// A `BigUint`-typed value `BigUint { data: vec!(a, b, c) }` represents a number
4848
/// `(a + b * big_digit::BASE + c * big_digit::BASE^2)`.
4949
#[derive(Clone, Debug, Hash)]
50-
#[cfg_attr(feature = "rustc-serialize", derive(RustcEncodable, RustcDecodable))]
5150
pub struct BigUint {
5251
data: Vec<BigDigit>,
5352
}
@@ -1691,17 +1690,17 @@ impl BigUint {
16911690

16921691
#[cfg(feature = "serde")]
16931692
impl serde::Serialize for BigUint {
1694-
fn serialize<S>(&self, serializer: &mut S) -> Result<(), S::Error>
1693+
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
16951694
where S: serde::Serializer
16961695
{
16971696
self.data.serialize(serializer)
16981697
}
16991698
}
17001699

17011700
#[cfg(feature = "serde")]
1702-
impl serde::Deserialize for BigUint {
1703-
fn deserialize<D>(deserializer: &mut D) -> Result<Self, D::Error>
1704-
where D: serde::Deserializer
1701+
impl<'de> serde::Deserialize<'de> for BigUint {
1702+
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1703+
where D: serde::Deserializer<'de>
17051704
{
17061705
let data = try!(Vec::deserialize(deserializer));
17071706
Ok(BigUint { data: data })

0 commit comments

Comments
 (0)