(value_buffer: &mut MutableBuffer, c: char)
| 630 | |
| 631 | #[inline(always)] |
| 632 | fn push_char_to_mutable_buffer(value_buffer: &mut MutableBuffer, c: char) { |
| 633 | let len = c.len_utf8(); |
| 634 | let old_len = value_buffer.len(); |
| 635 | value_buffer.reserve(len); |
| 636 | |
| 637 | // SAFETY: we reserved `len` bytes above, write valid UTF-8 into those |
| 638 | // bytes, then update the initialized length to include them. |
| 639 | unsafe { |
| 640 | let dst = value_buffer.as_mut_ptr().add(old_len); |
| 641 | if len == 1 { |
| 642 | *dst = c as u8; |
| 643 | } else { |
| 644 | c.encode_utf8(std::slice::from_raw_parts_mut(dst, len)); |
| 645 | } |
| 646 | value_buffer.set_len(old_len + len); |
| 647 | } |
| 648 | } |
| 649 | |
| 650 | /// Builder for a [`StringViewArray`]. |
| 651 | /// |
no test coverage detected
searching dependent graphs…