pub fn normalize_uuid(u: &str) -> String { let s = u.trim().to_ascii_lowercase(); const BASE_SUFFIX: &str = "-0000-1000-8000-00805f9b34fb"; if s.ends_with(BASE_SUFFIX) && s.len() >= BASE_SUFFIX.len() + 4 { let start = s.len() - BASE_SUFFIX.len() - 4; return s[start..start + 4].to_string(); } s } #[cfg(test)] mod tests { use super::*; #[test] fn test_strips_standard_base_suffix() { assert_eq!(normalize_uuid("00001816-0000-1000-8000-00805f9b34fb"), "1816"); } #[test] fn test_short_uuid_is_unchanged() { assert_eq!(normalize_uuid("1816"), "1816"); } #[test] fn test_trims_whitespace() { assert_eq!(normalize_uuid(" 1816 "), "1816"); } #[test] fn test_lowercases_input() { assert_eq!(normalize_uuid("181D"), "181d"); } #[test] fn test_custom_128bit_uuid_is_left_untouched() { assert_eq!( normalize_uuid("f0001816-0451-4000-b000-000000000000"), "f0001816-0451-4000-b000-000000000000" ); } }