qid/lib.rs
1use rand::{RngCore, thread_rng};
2
3pub fn uuid4() -> String {
4 let random_bytes = get_random_bytes();
5 let mut hex_string = String::new();
6
7 for (i, byte) in random_bytes.iter().enumerate() {
8 if [4, 6, 8, 10].contains(&i) {
9 hex_string.push_str("-");
10 }
11
12 hex_string.push_str(&format!("{:02x}", byte));
13 }
14
15 hex_string
16}
17
18fn get_random_bytes() -> [u8; 16] {
19 let mut rng = thread_rng();
20 let mut bytes = [0_u8; 16];
21 rng.fill_bytes(&mut bytes);
22
23 bytes
24}