(&self, range: Range<usize>)
| 1831 | } |
| 1832 | |
| 1833 | fn do_slice_reverse(&self, range: Range<usize>) -> Self::Sliced { |
| 1834 | match self.as_str_kind() { |
| 1835 | PyKindStr::Ascii(s) => { |
| 1836 | let mut out = s[range].to_owned(); |
| 1837 | out.as_mut_slice().reverse(); |
| 1838 | out.into() |
| 1839 | } |
| 1840 | PyKindStr::Utf8(s) => { |
| 1841 | let char_len = range.len(); |
| 1842 | let mut out = String::with_capacity(2 * char_len); |
| 1843 | out.extend( |
| 1844 | s.chars() |
| 1845 | .rev() |
| 1846 | .skip(self.char_len() - range.end) |
| 1847 | .take(range.len()), |
| 1848 | ); |
| 1849 | // SAFETY: char_len is accurate |
| 1850 | unsafe { Self::new_with_char_len(out, range.len()) } |
| 1851 | } |
| 1852 | PyKindStr::Wtf8(w) => { |
| 1853 | let char_len = range.len(); |
| 1854 | let mut out = Wtf8Buf::with_capacity(2 * char_len); |
| 1855 | out.extend( |
| 1856 | w.code_points() |
| 1857 | .rev() |
| 1858 | .skip(self.char_len() - range.end) |
| 1859 | .take(range.len()), |
| 1860 | ); |
| 1861 | // SAFETY: char_len is accurate |
| 1862 | unsafe { Self::new_with_char_len(out, char_len) } |
| 1863 | } |
| 1864 | } |
| 1865 | } |
| 1866 | |
| 1867 | fn do_stepped_slice(&self, range: Range<usize>, step: usize) -> Self::Sliced { |
| 1868 | match self.as_str_kind() { |
nothing calls this directly
no test coverage detected