pub mod rngs {
use crate::runtime::execution::ExecutionState;
use rand::{CryptoRng, RngCore};
use rand_core::impls::fill_bytes_via_next;
#[derive(Debug, Default)]
pub struct ThreadRng;
impl RngCore for ThreadRng {
#[inline]
fn next_u32(&mut self) -> u32 {
self.next_u64() as u32
}
#[inline]
fn next_u64(&mut self) -> u64 {
ExecutionState::next_u64()
}
fn fill_bytes(&mut self, dest: &mut [u8]) {
fill_bytes_via_next(self, dest)
}
fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), rand::Error> {
self.fill_bytes(dest);
Ok(())
}
}
impl CryptoRng for ThreadRng {}
}
pub fn thread_rng() -> rngs::ThreadRng {
rngs::ThreadRng
}
pub use rand::{Rng, RngCore};