Skip to content

Commit 65214f7

Browse files
committed
Merge #24
24: Update rand and serde; drop rustc-serialize r=cuviper a=cuviper Fixes #9.
2 parents 1c19273 + e89c480 commit 65214f7

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,
@@ -1213,19 +1214,19 @@ impl From<BigUint> for BigInt {
12131214

12141215
#[cfg(feature = "serde")]
12151216
impl serde::Serialize for BigInt {
1216-
fn serialize<S>(&self, serializer: &mut S) -> Result<(), S::Error>
1217+
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
12171218
where S: serde::Serializer
12181219
{
12191220
(self.sign, &self.data).serialize(serializer)
12201221
}
12211222
}
12221223

12231224
#[cfg(feature = "serde")]
1224-
impl serde::Deserialize for BigInt {
1225-
fn deserialize<D>(deserializer: &mut D) -> Result<Self, D::Error>
1226-
where D: serde::Deserializer
1225+
impl<'de> serde::Deserialize<'de> for BigInt {
1226+
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1227+
where D: serde::Deserializer<'de>
12271228
{
1228-
let (sign, data) = try!(serde::Deserialize::deserialize(deserializer));
1229+
let (sign, data) = serde::Deserialize::deserialize(deserializer)?;
12291230
Ok(BigInt {
12301231
sign: sign,
12311232
data: data,
@@ -1320,14 +1321,15 @@ pub trait RandBigInt {
13201321
#[cfg(any(feature = "rand", test))]
13211322
impl<R: Rng> RandBigInt for R {
13221323
fn gen_biguint(&mut self, bit_size: usize) -> BigUint {
1323-
let (digits, rem) = bit_size.div_rem(&big_digit::BITS);
1324+
use super::big_digit::BITS;
1325+
let (digits, rem) = bit_size.div_rem(&BITS);
13241326
let mut data = Vec::with_capacity(digits + 1);
13251327
for _ in 0..digits {
13261328
data.push(self.gen());
13271329
}
13281330
if rem > 0 {
13291331
let final_digit: BigDigit = self.gen();
1330-
data.push(final_digit >> (big_digit::BITS - rem));
1332+
data.push(final_digit >> (BITS - rem));
13311333
}
13321334
BigUint::new(data)
13331335
}

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
}
@@ -1693,17 +1692,17 @@ pub fn trailing_zeros(u: &BigUint) -> Option<usize> {
16931692

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

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

0 commit comments

Comments
 (0)