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}