1use rand::prelude::*;
2
3#[derive(Clone, Copy, Debug, Default)]
4pub struct VeilidRng;
5
6impl CryptoRng for VeilidRng {}
7
8impl RngCore for VeilidRng {
9 fn next_u32(&mut self) -> u32 {
10 get_random_u32()
11 }
12
13 fn next_u64(&mut self) -> u64 {
14 get_random_u64()
15 }
16
17 fn fill_bytes(&mut self, dest: &mut [u8]) {
18 random_bytes(dest);
19 }
20
21 fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), rand::Error> {
22 random_bytes(dest);
23 Ok(())
24 }
25}
26
27pub fn random_bytes(dest: &mut [u8]) {
28 let mut rng = rand::thread_rng();
29 rng.fill_bytes(dest);
30}
31
32pub fn get_random_u32() -> u32 {
33 let mut rng = rand::thread_rng();
34 rng.next_u32()
35}
36
37pub fn get_random_u64() -> u64 {
38 let mut rng = rand::thread_rng();
39 rng.next_u64()
40}