use std::time::{SystemTime, UNIX_EPOCH, Duration}; const BASE62: &[u8] = b"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; fn to_base62(mut num: u64) -> String { let mut encoded = String::new(); while num > 0 { encoded.insert(0, BASE62[(num % 62) as usize] as char); num /= 62; } encoded } fn generate_id() -> String { let epoch_start = UNIX_EPOCH + Duration::from_millis(1_577_836_800_000); // 2020-01-01 let now = SystemTime::now().duration_since(epoch_start).unwrap().as_millis() as u64; let timestamp = now % 1_000_000_000_000; // Keep last 12 digits let random_num = rand::random::() % 100; // Random 2-digit number let final_num = timestamp * 100 + random_num as u64; let mut id = to_base62(final_num); while id.len() < 8 { id.insert(0, '0'); } // Ensure 8-char length id } fn main() { println!("{}", generate_id()); // Example output: "A1b2C3D4" }