pakker/src/utils/id.rs
NotAShelf 4fc05e71e7
chore: bump dependencies
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ic1fda520473e53d1a584a3dda63ffda86a6a6964
2026-02-19 00:22:46 +03:00

35 lines
753 B
Rust

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);
}
}