This should probably have a warning about maintaining the invariant that the string is valid UTF8, and should definitely take `&mut self` rather than `&self`.