serde for BlockRng, ReseedingRng and ReadRng
This commit is contained in:
+1
-1
@@ -20,7 +20,7 @@ include = ["src/", "LICENSE-*", "README.md", "CHANGELOG.md", "COPYRIGHT"]
|
||||
# Meta-features:
|
||||
default = ["std", "std_rng"]
|
||||
nightly = [] # enables performance optimizations requiring nightly rust
|
||||
serde1 = ["serde"]
|
||||
serde1 = ["serde", "rand_core/serde1"]
|
||||
|
||||
# Option (enabled by default): without "std" rand uses libcore; this option
|
||||
# enables functionality expected to be available on a standard platform.
|
||||
|
||||
@@ -114,6 +114,12 @@ pub trait BlockRngCore {
|
||||
/// [`try_fill_bytes`]: RngCore::try_fill_bytes
|
||||
#[derive(Clone)]
|
||||
#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
|
||||
#[cfg_attr(
|
||||
feature = "serde1",
|
||||
serde(
|
||||
bound = "for<'x> R: Serialize + Deserialize<'x> + Sized, for<'x> R::Results: Serialize + Deserialize<'x>"
|
||||
)
|
||||
)]
|
||||
pub struct BlockRng<R: BlockRngCore + ?Sized> {
|
||||
results: R::Results,
|
||||
index: usize,
|
||||
|
||||
@@ -44,6 +44,7 @@ use rand_core::{impls, Error, RngCore};
|
||||
/// [`OsRng`]: crate::rngs::OsRng
|
||||
/// [`try_fill_bytes`]: RngCore::try_fill_bytes
|
||||
#[derive(Debug)]
|
||||
#[cfg_attr(feature = "serde1", derive(serde::Serialize, serde::Deserialize))]
|
||||
pub struct ReadRng<R> {
|
||||
reader: R,
|
||||
}
|
||||
|
||||
@@ -14,6 +14,8 @@ use core::mem::size_of;
|
||||
|
||||
use rand_core::block::{BlockRng, BlockRngCore};
|
||||
use rand_core::{CryptoRng, Error, RngCore, SeedableRng};
|
||||
#[cfg(feature = "serde1")]
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
/// A wrapper around any PRNG that implements [`BlockRngCore`], that adds the
|
||||
/// ability to reseed it.
|
||||
@@ -76,6 +78,13 @@ use rand_core::{CryptoRng, Error, RngCore, SeedableRng};
|
||||
/// [`ReseedingRng::new`]: ReseedingRng::new
|
||||
/// [`reseed()`]: ReseedingRng::reseed
|
||||
#[derive(Debug)]
|
||||
#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
|
||||
#[cfg_attr(
|
||||
feature = "serde1",
|
||||
serde(
|
||||
bound = "for<'x> R: Serialize + Deserialize<'x> + Sized, for<'x> R::Results: Serialize + Deserialize<'x>, for<'x> Rsdr: Serialize + Deserialize<'x>"
|
||||
)
|
||||
)]
|
||||
pub struct ReseedingRng<R, Rsdr>(BlockRng<ReseedingCore<R, Rsdr>>)
|
||||
where
|
||||
R: BlockRngCore + SeedableRng,
|
||||
@@ -148,6 +157,7 @@ where
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
|
||||
struct ReseedingCore<R, Rsdr> {
|
||||
inner: R,
|
||||
reseeder: Rsdr,
|
||||
|
||||
Reference in New Issue
Block a user