pub(crate) fn generate() -> Result<String, String> {
let mut bytes = [0_u8; 32];
getrandom::fill(&mut bytes).map_err(|error| format!("failed to generate resource ID: {error}"))?;
Ok(hex::encode(bytes))
}
pub(crate) fn generate_run() -> Result<String, String> {
let mut bytes = [0_u8; 16];
getrandom::fill(&mut bytes).map_err(|error| format!("failed to generate resource ID: {error}"))?;
Ok(hex::encode(bytes))
}
pub(crate) fn validate(value: &str) -> bool {
value.len() == 64 && value.bytes().all(|byte| byte.is_ascii_hexdigit())
}