Skip to content

Commit f293ca3

Browse files
committed
Upgrade to serde 1.0.17 wrapping impls
1 parent 5369f30 commit f293ca3

File tree

3 files changed

+4
-107
lines changed

3 files changed

+4
-107
lines changed

src/chacha.rs

Lines changed: 0 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,7 @@ const CHACHA_ROUNDS: u32 = 20; // Cryptographically secure from 8 upwards as of
2929
#[derive(Copy, Clone, Debug)]
3030
#[cfg_attr(feature="serde-1", derive(Serialize,Deserialize))]
3131
pub struct ChaChaRng {
32-
#[cfg_attr(feature="serde-1",serde(with="::chacha::state_words_serde"))]
3332
buffer: [w32; STATE_WORDS], // Internal buffer of output
34-
#[cfg_attr(feature="serde-1",serde(with="::chacha::state_words_serde"))]
3533
state: [w32; STATE_WORDS], // Initial state
3634
index: usize, // Index into state
3735
}
@@ -231,74 +229,6 @@ impl Rand for ChaChaRng {
231229
}
232230
}
233231

234-
#[cfg(feature="serde-1")]
235-
mod state_words_serde {
236-
use super::STATE_WORDS;
237-
use serde::{Deserialize, Deserializer, Serialize, Serializer};
238-
use serde::de::{Visitor,SeqAccess};
239-
use serde::de;
240-
241-
use std::num::Wrapping;
242-
use std::fmt;
243-
244-
pub fn serialize<T, S>(arr: &[Wrapping<T>;STATE_WORDS], ser: S) -> Result<S::Ok, S::Error>
245-
where
246-
T: Serialize,
247-
S: Serializer
248-
{
249-
use serde::ser::SerializeTuple;
250-
251-
let mut seq = ser.serialize_tuple(STATE_WORDS)?;
252-
253-
for e in arr {
254-
seq.serialize_element(&e.0)?;
255-
}
256-
257-
seq.end()
258-
}
259-
260-
#[inline]
261-
pub fn deserialize<'de, T, D>(de: D) -> Result<[Wrapping<T>;STATE_WORDS], D::Error>
262-
where
263-
T: Deserialize<'de>+Default+Copy,
264-
D: Deserializer<'de>,
265-
{
266-
use std::marker::PhantomData;
267-
struct ArrayVisitor<T> {
268-
_pd: PhantomData<T>,
269-
};
270-
impl<'de,T> Visitor<'de> for ArrayVisitor<T>
271-
where
272-
T: Deserialize<'de>+Default+Copy
273-
{
274-
type Value = [Wrapping<T>; STATE_WORDS];
275-
276-
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
277-
formatter.write_str("ChaCha state array")
278-
}
279-
280-
#[inline]
281-
fn visit_seq<A>(self, mut seq: A) -> Result<[Wrapping<T>; STATE_WORDS], A::Error>
282-
where
283-
A: SeqAccess<'de>,
284-
{
285-
let mut out = [Wrapping(Default::default());STATE_WORDS];
286-
287-
for i in 0..STATE_WORDS {
288-
match seq.next_element()? {
289-
Some(val) => out[i] = Wrapping(val),
290-
None => return Err(de::Error::invalid_length(i, &self)),
291-
};
292-
}
293-
294-
Ok(out)
295-
}
296-
}
297-
298-
de.deserialize_tuple(STATE_WORDS, ArrayVisitor{_pd: PhantomData})
299-
}
300-
}
301-
302232
#[cfg(test)]
303233
mod test {
304234
use {Rng, SeedableRng};

src/isaac.rs

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,8 @@ pub struct IsaacRng {
4040
rsl: [w32; RAND_SIZE_USIZE],
4141
#[cfg_attr(feature="serde-1",serde(with="::isaac::rand_size_usize_serde"))]
4242
mem: [w32; RAND_SIZE_USIZE],
43-
#[cfg_attr(feature="serde-1",serde(with="::serde_wrapping"))]
4443
a: w32,
45-
#[cfg_attr(feature="serde-1",serde(with="::serde_wrapping"))]
4644
b: w32,
47-
#[cfg_attr(feature="serde-1",serde(with="::serde_wrapping"))]
4845
c: w32,
4946
}
5047

@@ -294,11 +291,8 @@ pub struct Isaac64Rng {
294291
rsl: [w64; RAND_SIZE_64],
295292
#[cfg_attr(feature="serde-1",serde(with="::isaac::rand_size_64_serde"))]
296293
mem: [w64; RAND_SIZE_64],
297-
#[cfg_attr(feature="serde-1",serde(with="::serde_wrapping"))]
298294
a: w64,
299-
#[cfg_attr(feature="serde-1",serde(with="::serde_wrapping"))]
300295
b: w64,
301-
#[cfg_attr(feature="serde-1",serde(with="::serde_wrapping"))]
302296
c: w64,
303297
}
304298

@@ -548,7 +542,7 @@ mod rand_size_usize_serde {
548542
let mut seq = ser.serialize_tuple(RAND_SIZE_USIZE)?;
549543

550544
for e in arr.iter() {
551-
seq.serialize_element(&e.0)?;
545+
seq.serialize_element(&e)?;
552546
}
553547

554548
seq.end()
@@ -583,7 +577,7 @@ mod rand_size_usize_serde {
583577

584578
for i in 0..RAND_SIZE_USIZE {
585579
match seq.next_element()? {
586-
Some(val) => out[i] = Wrapping(val),
580+
Some(val) => out[i] = val,
587581
None => return Err(de::Error::invalid_length(i, &self)),
588582
};
589583
}
@@ -616,7 +610,7 @@ mod rand_size_64_serde {
616610
let mut seq = ser.serialize_tuple(RAND_SIZE_64)?;
617611

618612
for e in arr.iter() {
619-
seq.serialize_element(&e.0)?;
613+
seq.serialize_element(&e)?;
620614
}
621615

622616
seq.end()
@@ -651,7 +645,7 @@ mod rand_size_64_serde {
651645

652646
for i in 0..RAND_SIZE_64 {
653647
match seq.next_element()? {
654-
Some(val) => out[i] = Wrapping(val),
648+
Some(val) => out[i] = val,
655649
None => return Err(de::Error::invalid_length(i, &self)),
656650
};
657651
}

src/lib.rs

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -732,13 +732,9 @@ pub trait SeedableRng<Seed>: Rng {
732732
#[derive(Clone, Debug)]
733733
#[cfg_attr(feature="serde-1",derive(Serialize,Deserialize))]
734734
pub struct XorShiftRng {
735-
#[cfg_attr(feature="serde-1",serde(with="::serde_wrapping"))]
736735
x: w32,
737-
#[cfg_attr(feature="serde-1",serde(with="::serde_wrapping"))]
738736
y: w32,
739-
#[cfg_attr(feature="serde-1",serde(with="::serde_wrapping"))]
740737
z: w32,
741-
#[cfg_attr(feature="serde-1",serde(with="::serde_wrapping"))]
742738
w: w32,
743739
}
744740

@@ -1055,29 +1051,6 @@ pub fn sample<T, I, R>(rng: &mut R, iterable: I, amount: usize) -> Vec<T>
10551051
reservoir
10561052
}
10571053

1058-
#[cfg(feature="serde-1")]
1059-
mod serde_wrapping {
1060-
use serde::{Deserialize, Deserializer, Serialize, Serializer};
1061-
1062-
use std::num::Wrapping;
1063-
1064-
pub fn serialize<T, S>(w: &Wrapping<T>, ser: S) -> Result<S::Ok, S::Error>
1065-
where
1066-
T: Serialize,
1067-
S: Serializer
1068-
{
1069-
w.0.serialize(ser)
1070-
}
1071-
1072-
pub fn deserialize<'de, T, D>(de: D) -> Result<Wrapping<T>, D::Error>
1073-
where
1074-
T: Deserialize<'de>,
1075-
D: Deserializer<'de>,
1076-
{
1077-
Deserialize::deserialize(de).map(Wrapping)
1078-
}
1079-
}
1080-
10811054
#[cfg(test)]
10821055
mod test {
10831056
use super::{Rng, thread_rng, random, SeedableRng, StdRng, sample,

0 commit comments

Comments
 (0)