1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
/*!
Random number generators.
Pseudorandom number generators
-------------------------------
These generators implement fast PRNG which are suitable for normal use in non-cryptography applications.
* [`Xoshiro256`] Rng:
See the excellent [PRNG shootout](http://prng.di.unimi.it/) article.
* [`SplitMix64`] Rng:
Fast RNG, with 64 bits of state, that can be used to initialize the state of other generators.
* [`Wyrand`] Rng:
Tiny and very fast pseudorandom number generator based on [rapidhash](https://github.com/Nicoshev/rapidhash).
Cryptographically secure generators
-----------------------------------
These generators implement suitable CSPRNG implementations.
* [`ChaCha8`], [`ChaCha12`], [`ChaCha20`] Rng:
Daniel J. Bernstein's ChaCha adapted as a deterministic random number generator.
The current algorithm used by the default csprng is ChaCha12.
Please see this relevant [rand issue](https://github.com/rust-random/rand/issues/932) for the discussion.
This may change as new evidence of cipher security and performance becomes available.
* [`System`] Rng:
Randomness directly from the system entropy source.
For performance reasons this generator fetches entropy in blocks of `N` 32-bit words.
The bigger `N` is, the less often the system entropy source is called.
Other generators
----------------
* [`Mock`] Rng:
Mocks the Rng. Produces randomness directly from the given iterator and panics when it runs out of items.
* [`Read`] Rng:
Read randomness from files and others with the `std::io::Read` trait.
*/
use ;
use MaybeUninit;
use crateRandom;
pub
/// Random number generator interface.
/// Marker trait for cryptographically secure random number generators.
//----------------------------------------------------------------
// Random number generators
pub use SplitMix64;
pub use Xoshiro256;
pub use Wyrand;
pub use Mock;
cfg_if!
pub use ;
pub use System;
pub use ;
//----------------------------------------------------------------