Skip to content

Commit 182b9f7

Browse files
committed
Simplify select seed generation.
DefaultHasher is deterministic, so there's little point in using it.
1 parent 7212aac commit 182b9f7

File tree

1 file changed

+5
-16
lines changed

1 file changed

+5
-16
lines changed

futures-util/src/async_await/random.rs

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
use core::sync::atomic::{AtomicUsize, Ordering};
22
#[cfg(feature = "std")]
3-
use std::{
4-
cell::Cell,
5-
collections::hash_map::DefaultHasher,
6-
hash::Hasher,
7-
};
3+
use std::cell::Cell;
84

95
// Based on [Fisher–Yates shuffle].
106
//
@@ -32,17 +28,9 @@ fn random() -> usize {
3228
// Any non-zero seed will do
3329
let mut seed = 0;
3430
while seed == 0 {
35-
let mut hasher = DefaultHasher::new();
36-
hasher.write_usize(COUNTER.fetch_add(1, Ordering::Relaxed));
37-
seed = hasher.finish();
31+
seed = COUNTER.fetch_add(1, Ordering::Relaxed);
3832
}
39-
seed as usize
40-
}
41-
42-
#[cfg(not(feature = "std"))]
43-
const fn prng_seed() -> usize {
44-
// A deterministic seed is used in absense of TLS
45-
42
33+
seed
4634
}
4735

4836
/// [xorshift*] is used on 64bit platforms.
@@ -98,7 +86,8 @@ fn random() -> usize {
9886

9987
#[cfg(not(feature = "std"))]
10088
fn rng() -> usize {
101-
static RNG: AtomicUsize = AtomicUsize::new(prng_seed());
89+
// A deterministic seed is used in absense of TLS
90+
static RNG: AtomicUsize = AtomicUsize::new(42);
10291

10392
// Preemption here can cause multiple threads to observe repeated state
10493
let (x, res) = xorshift(RNG.load(Ordering::Relaxed));

0 commit comments

Comments
 (0)