(s: &str)
| 898 | type Err = &'static str; |
| 899 | |
| 900 | fn from_str(s: &str) -> std::result::Result<Self, Self::Err> { |
| 901 | let mut addr = [0u8; 8]; |
| 902 | let bytes = s.as_bytes(); |
| 903 | if bytes.len() != 18 { |
| 904 | return Err("Not 8 bytes?"); |
| 905 | } |
| 906 | let mut i = 2; |
| 907 | while i < 18 { |
| 908 | let str = std::str::from_utf8(&bytes[i..i + 2]).unwrap(); |
| 909 | let b = u8::from_str_radix(str, 16).map_err(|_| "Invalid byte")?; |
| 910 | addr[7 - (i - 2) / 2] = b; |
| 911 | i += 2; |
| 912 | } |
| 913 | Ok(Addr(addr)) |
| 914 | } |
| 915 | } |
| 916 | |
| 917 | impl Display for RefAddr { |