@@ -6,6 +6,12 @@ use rand_xorshift::XorShiftRng;
6
6
#[ cfg( feature = "serde" ) ]
7
7
use serde_crate:: { Deserialize , Serialize } ;
8
8
9
+
10
+ #[ cfg( target_arch = "wasm32" ) ]
11
+ fn unix_now ( ) -> f64 {
12
+ js_sys:: Date :: now ( )
13
+ }
14
+
9
15
#[ derive( Clone ) ]
10
16
#[ cfg_attr(
11
17
feature = "serde" ,
@@ -19,6 +25,7 @@ pub struct RandomNumberGenerator {
19
25
impl RandomNumberGenerator {
20
26
/// Creates a new RNG from a randomly generated seed
21
27
#[ allow( clippy:: new_without_default) ] // XorShiftRng doesn't have a Default, so we don't either
28
+ #[ cfg( not( target_arch = "wasm32" ) ) ]
22
29
pub fn new ( ) -> RandomNumberGenerator {
23
30
use std:: time:: { SystemTime , UNIX_EPOCH } ;
24
31
let rng: XorShiftRng = SeedableRng :: seed_from_u64 (
@@ -30,6 +37,15 @@ impl RandomNumberGenerator {
30
37
RandomNumberGenerator { rng }
31
38
}
32
39
40
+ #[ cfg( target_arch = "wasm32" ) ]
41
+ #[ allow( clippy:: new_without_default) ] // XorShiftRng doesn't have a Default, so we don't either
42
+ pub fn new ( ) -> RandomNumberGenerator {
43
+ let rng: XorShiftRng = SeedableRng :: seed_from_u64 (
44
+ unix_now ( ) as u64
45
+ ) ;
46
+ RandomNumberGenerator { rng }
47
+ }
48
+
33
49
/// Creates a new RNG from a specific seed
34
50
pub fn seeded ( seed : u64 ) -> RandomNumberGenerator {
35
51
let rng: XorShiftRng = SeedableRng :: seed_from_u64 ( seed) ;
0 commit comments