pub fn looks_like_uuid(s: &str) -> bool {
let s = s.trim();
if s.len() != 36 {
return false;
}
let parts: Vec<&str> = s.split('-').collect();
if parts.len() != 5 {
return false;
}
let expected_lens = [8, 4, 4, 4, 12];
parts
.iter()
.zip(expected_lens.iter())
.all(|(part, &len)| part.len() == len && part.chars().all(|c| c.is_ascii_hexdigit()))
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_valid_uuid() {
assert!(looks_like_uuid("550e8400-e29b-41d4-a716-446655440000"));
}
#[test]
fn test_not_uuid() {
assert!(!looks_like_uuid("ENG-123"));
assert!(!looks_like_uuid("not-a-uuid"));
assert!(!looks_like_uuid(""));
}
}