(&self, mut pos: usize)
| 928 | |
| 929 | #[inline] |
| 930 | fn next_surrogate(&self, mut pos: usize) -> Option<(usize, u16)> { |
| 931 | let mut iter = self.bytes[pos..].iter(); |
| 932 | loop { |
| 933 | let b = *iter.next()?; |
| 934 | if b < 0x80 { |
| 935 | pos += 1; |
| 936 | } else if b < 0xE0 { |
| 937 | iter.next(); |
| 938 | pos += 2; |
| 939 | } else if b == 0xED { |
| 940 | match (iter.next(), iter.next()) { |
| 941 | (Some(&b2), Some(&b3)) if b2 >= 0xA0 => { |
| 942 | return Some((pos, decode_surrogate(b2, b3))); |
| 943 | } |
| 944 | _ => pos += 3, |
| 945 | } |
| 946 | } else if b < 0xF0 { |
| 947 | iter.next(); |
| 948 | iter.next(); |
| 949 | pos += 3; |
| 950 | } else { |
| 951 | iter.next(); |
| 952 | iter.next(); |
| 953 | iter.next(); |
| 954 | pos += 4; |
| 955 | } |
| 956 | } |
| 957 | } |
| 958 | |
| 959 | pub fn is_code_point_boundary(&self, index: usize) -> bool { |
| 960 | is_code_point_boundary(self, index) |
no test coverage detected