(it: &mut I, pos: usize)
| 256 | |
| 257 | #[inline] |
| 258 | fn decode_unicode<I>(it: &mut I, pos: usize) -> Result<CodePoint, DecodeError> |
| 259 | where |
| 260 | I: Iterator<Item = (usize, (usize, CodePoint))>, |
| 261 | { |
| 262 | flame_guard!("machinery::decode_unicode"); |
| 263 | let err = || DecodeError::new("Invalid \\uXXXX escape", pos); |
| 264 | let mut uni = 0u16; |
| 265 | for _ in 0..4 { |
| 266 | let (_, (_, c)) = it.next().ok_or_else(err)?; |
| 267 | let d = c.to_char().and_then(|c| c.to_digit(16)).ok_or_else(err)? as u16; |
| 268 | uni = (uni << 4) | d; |
| 269 | } |
| 270 | Ok(uni.into()) |
| 271 | } |
no test coverage detected