droidid/
lib.rs

1use rand::Rng;
2
3/// Generate a random droid-style ID (e.g. "R2-D2", "X9C3").
4pub fn generate() -> String {
5    let mut rng = rand::rng(); // replaces thread_rng()
6    let len = rng.random_range(4..=6); // replaces gen_range
7    let mut chars: Vec<char> = Vec::new();
8
9    let charset: Vec<char> = ('A'..='Z')
10        .chain('a'..='z')
11        .chain('0'..='9')
12        .collect();
13
14    for _ in 0..len {
15        let c = charset[rng.random_range(0..charset.len())];
16        chars.push(c);
17    }
18
19    // Maybe insert a dash (not at first or last position)
20    if len > 3 && rng.random_bool(0.5) {
21        let pos = rng.random_range(1..len - 1);
22        chars.insert(pos, '-');
23    }
24
25    chars.iter().collect()
26}