use std::sync::OnceLock;
use uuid::Uuid;
#[must_use]
pub(crate) fn uid() -> &'static Uuid {
static UID: OnceLock<Uuid> = OnceLock::new();
UID.get_or_init(|| match machine_uid::get() {
Ok(uid) if !uid.is_empty() => match Uuid::parse_str(&uid) {
Ok(uuid) => uuid,
Err(error) => {
tracing::error!("Machine id is not uuid, use uuid instead: {error}");
Uuid::new_v4()
}
},
_ => {
tracing::error!("Machine id generation failed, use uuid instead");
Uuid::new_v4()
}
})
}