Skip to content

Commit 9c68f34

Browse files
authored
Merge pull request #265 from dhardy/rng-core
RngCore and extension trait Rng
2 parents 45717eb + f1db119 commit 9c68f34

16 files changed

+149
-81
lines changed

benches/bench.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ mod distributions;
99

1010
use std::mem::size_of;
1111
use test::{black_box, Bencher};
12-
use rand::{StdRng, Rng, NewRng};
12+
use rand::{StdRng, RngCore, NewRng};
1313

1414
#[bench]
1515
fn rand_f32(b: &mut Bencher) {

benches/generators.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const BYTES_LEN: usize = 1024;
99
use std::mem::size_of;
1010
use test::{black_box, Bencher};
1111

12-
use rand::{Rng, NewRng, StdRng, OsRng, JitterRng, EntropyRng};
12+
use rand::{RngCore, Rng, NewRng, StdRng, OsRng, JitterRng, EntropyRng};
1313
use rand::{XorShiftRng, Hc128Rng, IsaacRng, Isaac64Rng, ChaChaRng};
1414
use rand::reseeding::ReseedingRng;
1515

src/distributions/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ fn ziggurat<R: Rng, P, Z>(
279279

280280
#[cfg(test)]
281281
mod tests {
282-
use {Rng, Rand};
282+
use {Rng, RngCore, Rand};
283283
use impls;
284284
use super::{RandSample, WeightedChoice, Weighted, Sample, IndependentSample};
285285

@@ -293,7 +293,7 @@ mod tests {
293293

294294
// 0, 1, 2, 3, ...
295295
struct CountingRng { i: u32 }
296-
impl Rng for CountingRng {
296+
impl RngCore for CountingRng {
297297
fn next_u32(&mut self) -> u32 {
298298
self.i += 1;
299299
self.i - 1

src/impls.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
// option. This file may not be copied, modified, or distributed
99
// except according to those terms.
1010

11-
//! Helper functions for implementing `Rng` functions.
11+
//! Helper functions for implementing `RngCore` functions.
1212
//!
1313
//! For cross-platform reproducibility, these functions all use Little Endian:
1414
//! least-significant part first. For example, `next_u64_via_u32` takes `u32`
@@ -27,10 +27,10 @@ use core::ptr::copy_nonoverlapping;
2727
use core::slice;
2828
use core::cmp::min;
2929
use core::mem::size_of;
30-
use Rng;
30+
use RngCore;
3131

3232
/// Implement `next_u64` via `next_u32`, little-endian order.
33-
pub fn next_u64_via_u32<R: Rng+?Sized>(rng: &mut R) -> u64 {
33+
pub fn next_u64_via_u32<R: RngCore + ?Sized>(rng: &mut R) -> u64 {
3434
// Use LE; we explicitly generate one value before the next.
3535
let x = rng.next_u32() as u64;
3636
let y = rng.next_u32() as u64;
@@ -59,12 +59,12 @@ macro_rules! fill_bytes_via {
5959
}
6060

6161
/// Implement `fill_bytes` via `next_u32`, little-endian order.
62-
pub fn fill_bytes_via_u32<R: Rng+?Sized>(rng: &mut R, dest: &mut [u8]) {
62+
pub fn fill_bytes_via_u32<R: RngCore + ?Sized>(rng: &mut R, dest: &mut [u8]) {
6363
fill_bytes_via!(rng, next_u32, 4, dest)
6464
}
6565

6666
/// Implement `fill_bytes` via `next_u64`, little-endian order.
67-
pub fn fill_bytes_via_u64<R: Rng+?Sized>(rng: &mut R, dest: &mut [u8]) {
67+
pub fn fill_bytes_via_u64<R: RngCore + ?Sized>(rng: &mut R, dest: &mut [u8]) {
6868
fill_bytes_via!(rng, next_u64, 8, dest)
6969
}
7070

@@ -158,12 +158,12 @@ pub fn fill_via_u64_chunks(src: &[u64], dest: &mut [u8]) -> (usize, usize) {
158158
}
159159

160160
/// Implement `next_u32` via `fill_bytes`, little-endian order.
161-
pub fn next_u32_via_fill<R: Rng+?Sized>(rng: &mut R) -> u32 {
161+
pub fn next_u32_via_fill<R: RngCore + ?Sized>(rng: &mut R) -> u32 {
162162
impl_uint_from_fill!(rng, u32, 4)
163163
}
164164

165165
/// Implement `next_u64` via `fill_bytes`, little-endian order.
166-
pub fn next_u64_via_fill<R: Rng+?Sized>(rng: &mut R) -> u64 {
166+
pub fn next_u64_via_fill<R: RngCore + ?Sized>(rng: &mut R) -> u64 {
167167
impl_uint_from_fill!(rng, u64, 8)
168168
}
169169

src/jitter.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
//! Non-physical true random number generator based on timing jitter.
1818
19-
use {Rng, Error, ErrorKind, impls};
19+
use {RngCore, Error, ErrorKind, impls};
2020

2121
use core::{fmt, mem, ptr};
2222
#[cfg(feature="std")]
@@ -746,7 +746,7 @@ fn black_box<T>(dummy: T) -> T {
746746
}
747747
}
748748

749-
impl Rng for JitterRng {
749+
impl RngCore for JitterRng {
750750
fn next_u32(&mut self) -> u32 {
751751
// We want to use both parts of the generated entropy
752752
if self.data_half_used {

0 commit comments

Comments
 (0)