1pub trait NormalizeHex {
2 fn normalize_hex(&self) -> String;
3}
4
5impl NormalizeHex for str {
6 fn normalize_hex(&self) -> String {
7 let lower = self.to_lowercase();
8 lower.strip_prefix("0x").unwrap_or(&lower).to_string()
9 }
10}
11
12impl NormalizeHex for String {
13 fn normalize_hex(&self) -> String {
14 self.as_str().normalize_hex()
15 }
16}
17
18#[cfg(test)]
19mod tests {
20 use super::*;
21
22 #[test]
23 fn test_normalize_hex_str() {
24 assert_eq!("0xABCDEF".normalize_hex(), "abcdef");
25 assert_eq!("0XAbCdEf".normalize_hex(), "abcdef");
26 assert_eq!("0xAbC123".normalize_hex(), "abc123");
27 assert_eq!("123456".normalize_hex(), "123456");
28 assert_eq!("ABCDEF".normalize_hex(), "abcdef");
29 assert_eq!("AbCdEf".normalize_hex(), "abcdef");
30 assert_eq!("".normalize_hex(), "");
31 assert_eq!("0x".normalize_hex(), "");
32 assert_eq!("0X".normalize_hex(), "");
33 assert_eq!("x".normalize_hex(), "x");
34 assert_eq!("0".normalize_hex(), "0");
35 assert_eq!(String::from("0XAbCdEf").normalize_hex(), "abcdef");
36 }
37}