Skip to content

Commit 1caee2a

Browse files
authored
Merge pull request #302 from dhardy/new
Make NewRng::new() return Self without Result wrapper
2 parents 253fa97 + 2e67b9c commit 1caee2a

File tree

7 files changed

+43
-39
lines changed

7 files changed

+43
-39
lines changed

benches/distributions.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ macro_rules! distr {
1616
($fnn:ident, $ty:ty, $distr:expr) => {
1717
#[bench]
1818
fn $fnn(b: &mut Bencher) {
19-
let mut rng = XorShiftRng::new().unwrap();
19+
let mut rng = XorShiftRng::new();
2020
let distr = $distr;
2121

2222
b.iter(|| {
@@ -69,7 +69,7 @@ macro_rules! gen_range_int {
6969
($fnn:ident, $ty:ty, $low:expr, $high:expr) => {
7070
#[bench]
7171
fn $fnn(b: &mut Bencher) {
72-
let mut rng = XorShiftRng::new().unwrap();
72+
let mut rng = XorShiftRng::new();
7373
let high = $high;
7474

7575
b.iter(|| {

benches/generators.rs

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ use rand::{XorShiftRng, Hc128Rng, IsaacRng, Isaac64Rng, ChaChaRng};
1414
use rand::reseeding::ReseedingRng;
1515

1616
macro_rules! gen_bytes {
17-
($fnn:ident, $gen:ident) => {
17+
($fnn:ident, $gen:expr) => {
1818
#[bench]
1919
fn $fnn(b: &mut Bencher) {
20-
let mut rng = $gen::new().unwrap();
20+
let mut rng = $gen;
2121
let mut buf = [0u8; BYTES_LEN];
2222
b.iter(|| {
2323
for _ in 0..RAND_BENCH_N {
@@ -30,18 +30,18 @@ macro_rules! gen_bytes {
3030
}
3131
}
3232

33-
gen_bytes!(gen_bytes_xorshift, XorShiftRng);
34-
gen_bytes!(gen_bytes_hc128, Hc128Rng);
35-
gen_bytes!(gen_bytes_isaac, IsaacRng);
36-
gen_bytes!(gen_bytes_isaac64, Isaac64Rng);
37-
gen_bytes!(gen_bytes_std, StdRng);
38-
gen_bytes!(gen_bytes_os, OsRng);
33+
gen_bytes!(gen_bytes_xorshift, XorShiftRng::new());
34+
gen_bytes!(gen_bytes_hc128, Hc128Rng::new());
35+
gen_bytes!(gen_bytes_isaac, IsaacRng::new());
36+
gen_bytes!(gen_bytes_isaac64, Isaac64Rng::new());
37+
gen_bytes!(gen_bytes_std, StdRng::new());
38+
gen_bytes!(gen_bytes_os, OsRng::new().unwrap());
3939

4040
macro_rules! gen_uint {
41-
($fnn:ident, $ty:ty, $gen:ident) => {
41+
($fnn:ident, $ty:ty, $gen:expr) => {
4242
#[bench]
4343
fn $fnn(b: &mut Bencher) {
44-
let mut rng = $gen::new().unwrap();
44+
let mut rng = $gen;
4545
b.iter(|| {
4646
for _ in 0..RAND_BENCH_N {
4747
black_box(rng.gen::<$ty>());
@@ -52,19 +52,19 @@ macro_rules! gen_uint {
5252
}
5353
}
5454

55-
gen_uint!(gen_u32_xorshift, u32, XorShiftRng);
56-
gen_uint!(gen_u32_hc128, u32, Hc128Rng);
57-
gen_uint!(gen_u32_isaac, u32, IsaacRng);
58-
gen_uint!(gen_u32_isaac64, u32, Isaac64Rng);
59-
gen_uint!(gen_u32_std, u32, StdRng);
60-
gen_uint!(gen_u32_os, u32, OsRng);
55+
gen_uint!(gen_u32_xorshift, u32, XorShiftRng::new());
56+
gen_uint!(gen_u32_hc128, u32, Hc128Rng::new());
57+
gen_uint!(gen_u32_isaac, u32, IsaacRng::new());
58+
gen_uint!(gen_u32_isaac64, u32, Isaac64Rng::new());
59+
gen_uint!(gen_u32_std, u32, StdRng::new());
60+
gen_uint!(gen_u32_os, u32, OsRng::new().unwrap());
6161

62-
gen_uint!(gen_u64_xorshift, u64, XorShiftRng);
63-
gen_uint!(gen_u64_hc128, u64, Hc128Rng);
64-
gen_uint!(gen_u64_isaac, u64, IsaacRng);
65-
gen_uint!(gen_u64_isaac64, u64, Isaac64Rng);
66-
gen_uint!(gen_u64_std, u64, StdRng);
67-
gen_uint!(gen_u64_os, u64, OsRng);
62+
gen_uint!(gen_u64_xorshift, u64, XorShiftRng::new());
63+
gen_uint!(gen_u64_hc128, u64, Hc128Rng::new());
64+
gen_uint!(gen_u64_isaac, u64, IsaacRng::new());
65+
gen_uint!(gen_u64_isaac64, u64, Isaac64Rng::new());
66+
gen_uint!(gen_u64_std, u64, StdRng::new());
67+
gen_uint!(gen_u64_os, u64, OsRng::new().unwrap());
6868

6969
// Do not test JitterRng like the others by running it RAND_BENCH_N times per,
7070
// measurement, because it is way too slow. Only run it once.
@@ -81,7 +81,7 @@ macro_rules! init_gen {
8181
($fnn:ident, $gen:ident) => {
8282
#[bench]
8383
fn $fnn(b: &mut Bencher) {
84-
let mut rng = XorShiftRng::new().unwrap();
84+
let mut rng = XorShiftRng::new();
8585
b.iter(|| {
8686
let r2 = $gen::from_rng(&mut rng).unwrap();
8787
black_box(r2);
@@ -107,7 +107,7 @@ macro_rules! chacha_rounds {
107107
($fn1:ident, $fn2:ident, $fn3:ident, $rounds:expr) => {
108108
#[bench]
109109
fn $fn1(b: &mut Bencher) {
110-
let mut rng = ChaChaRng::new().unwrap();
110+
let mut rng = ChaChaRng::new();
111111
rng.set_rounds($rounds);
112112
let mut buf = [0u8; BYTES_LEN];
113113
b.iter(|| {
@@ -121,7 +121,7 @@ macro_rules! chacha_rounds {
121121

122122
#[bench]
123123
fn $fn2(b: &mut Bencher) {
124-
let mut rng = ChaChaRng::new().unwrap();
124+
let mut rng = ChaChaRng::new();
125125
rng.set_rounds($rounds);
126126
b.iter(|| {
127127
for _ in 0..RAND_BENCH_N {
@@ -133,7 +133,7 @@ macro_rules! chacha_rounds {
133133

134134
#[bench]
135135
fn $fn3(b: &mut Bencher) {
136-
let mut rng = ChaChaRng::new().unwrap();
136+
let mut rng = ChaChaRng::new();
137137
rng.set_rounds($rounds);
138138
b.iter(|| {
139139
for _ in 0..RAND_BENCH_N {
@@ -152,7 +152,7 @@ chacha_rounds!(gen_bytes_chacha20, gen_u32_chacha20, gen_u64_chacha20, 20);
152152

153153
#[bench]
154154
fn reseeding_hc128_bytes(b: &mut Bencher) {
155-
let mut rng = ReseedingRng::new(Hc128Rng::new().unwrap(),
155+
let mut rng = ReseedingRng::new(Hc128Rng::new(),
156156
128*1024*1024,
157157
EntropyRng::new());
158158
let mut buf = [0u8; BYTES_LEN];
@@ -169,7 +169,7 @@ macro_rules! reseeding_uint {
169169
($fnn:ident, $ty:ty) => {
170170
#[bench]
171171
fn $fnn(b: &mut Bencher) {
172-
let mut rng = ReseedingRng::new(Hc128Rng::new().unwrap(),
172+
let mut rng = ReseedingRng::new(Hc128Rng::new(),
173173
128*1024*1024,
174174
EntropyRng::new());
175175
b.iter(|| {

src/distributions/exponential.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ use distributions::{ziggurat, ziggurat_tables, Distribution};
3333
/// use rand::{NewRng, SmallRng, Rng};
3434
/// use rand::distributions::Exp1;
3535
///
36-
/// let val: f64 = SmallRng::new().unwrap().sample(Exp1);
36+
/// let val: f64 = SmallRng::new().sample(Exp1);
3737
/// println!("{}", val);
3838
/// ```
3939
#[derive(Clone, Copy, Debug)]

src/distributions/float.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ macro_rules! float_impls {
5252
/// use rand::{NewRng, SmallRng, Rng};
5353
/// use rand::distributions::Uniform;
5454
///
55-
/// let val: f32 = SmallRng::new().unwrap().sample(Uniform);
55+
/// let val: f32 = SmallRng::new().sample(Uniform);
5656
/// println!("f32 from (0,1): {}", val);
5757
/// ```
5858
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> $ty {

src/distributions/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ impl<'a, T, D: Distribution<T>> Distribution<T> for &'a D {
166166
/// use rand::{NewRng, SmallRng, Rng};
167167
/// use rand::distributions::Uniform;
168168
///
169-
/// let val: f32 = SmallRng::new().unwrap().sample(Uniform);
169+
/// let val: f32 = SmallRng::new().sample(Uniform);
170170
/// println!("f32 from [0,1): {}", val);
171171
/// ```
172172
///

src/distributions/normal.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ use distributions::{ziggurat, ziggurat_tables, Distribution, Uniform};
3131
/// use rand::{NewRng, SmallRng, Rng};
3232
/// use rand::distributions::StandardNormal;
3333
///
34-
/// let val: f64 = SmallRng::new().unwrap().sample(StandardNormal);
34+
/// let val: f64 = SmallRng::new().sample(StandardNormal);
3535
/// println!("{}", val);
3636
/// ```
3737
#[derive(Clone, Copy, Debug)]

src/lib.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -756,7 +756,7 @@ impl<R: RngCore> Iterator for AsciiGenerator<R> {
756756
/// ```
757757
/// use rand::{StdRng, Rng, NewRng};
758758
///
759-
/// let mut rng = StdRng::new().unwrap();
759+
/// let mut rng = StdRng::new();
760760
/// println!("Random die roll: {}", rng.gen_range(1, 7));
761761
/// ```
762762
///
@@ -769,13 +769,17 @@ pub trait NewRng: SeedableRng {
769769
/// Normally this will use `OsRng`, but if that fails `JitterRng` will be
770770
/// used instead. Both should be suitable for cryptography. It is possible
771771
/// that both entropy sources will fail though unlikely.
772-
fn new() -> Result<Self, Error>;
772+
///
773+
/// Panics on error. If error handling is desired, use
774+
/// `RNG::from_rng(&mut EntropyRng::new())` instead.
775+
fn new() -> Self;
773776
}
774777

775778
#[cfg(feature="std")]
776779
impl<R: SeedableRng> NewRng for R {
777-
fn new() -> Result<Self, Error> {
778-
R::from_rng(&mut EntropyRng::new())
780+
fn new() -> R {
781+
R::from_rng(&mut EntropyRng::new()).unwrap_or_else(|err|
782+
panic!("NewRng::new() failed: {}", err))
779783
}
780784
}
781785

@@ -847,7 +851,7 @@ impl SeedableRng for StdRng {
847851
///
848852
/// // Create small, cheap to initialize and fast RNG with a random seed.
849853
/// // The randomness is supplied by the operating system.
850-
/// let mut small_rng = SmallRng::new().unwrap();
854+
/// let mut small_rng = SmallRng::new();
851855
/// ```
852856
///
853857
/// When initializing a lot of `SmallRng`, using `thread_rng` can be more

0 commit comments

Comments
 (0)