use rand::RngExt as _;
const HEX: [u8; 16] = *b"0123456789abcdef";
#[must_use]
#[allow(clippy::cast_possible_truncation)]
pub(crate) fn uuid_v7() -> String {
let mut bytes = [0u8; 16];
let ts = crate::platform::SystemTime::now()
.duration_since(crate::platform::SystemTime::UNIX_EPOCH)
.unwrap_or_default()
.as_millis() as u64;
bytes[..6].copy_from_slice(&ts.to_be_bytes()[2..8]);
rand::rng().fill(&mut bytes[6..]);
bytes[6] = (bytes[6] & 0x0F) | 0x70;
bytes[8] = (bytes[8] & 0x3F) | 0x80;
let mut s = String::with_capacity(36);
for (i, &b) in bytes.iter().enumerate() {
s.push(char::from(HEX[(b >> 4) as usize]));
s.push(char::from(HEX[(b & 0x0F) as usize]));
if matches!(i, 3 | 5 | 7 | 9) {
s.push('-');
}
}
s
}