initial commit
Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: Ife1391ed23a1e7f388b1b5eca90b9ea76a6a6964
This commit is contained in:
commit
ef28bdaeb4
63 changed files with 17292 additions and 0 deletions
35
src/utils/id.rs
Normal file
35
src/utils/id.rs
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
use rand::Rng;
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue