use rand::RngExt; const CHARSET: &[u8] = b"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; const ID_LENGTH: usize = 16; /// Generate a random 16-character alphanumeric pakku ID pub fn generate_pakku_id() -> String { let mut rng = rand::rng(); (0..ID_LENGTH) .map(|_| { let idx = rng.random_range(0..CHARSET.len()); CHARSET[idx] as char }) .collect() } #[cfg(test)] mod tests { use super::*; #[test] fn test_generate_pakku_id() { let id = generate_pakku_id(); assert_eq!(id.len(), ID_LENGTH); assert!(id.chars().all(|c| c.is_alphanumeric())); } #[test] fn test_unique_ids() { let id1 = generate_pakku_id(); let id2 = generate_pakku_id(); assert_ne!(id1, id2); } }