The `CharRange`'s `next` field contains the index that the char starts at. You should just reuse it instead of recalculating the character length.

```rust
let char_range = self.as_slice().char_range_at_reverse(len);
unsafe {
    self.vec.set_len(char_range.next);
}
Some(char_range.ch)
```