Currently it encodes the character to utf8 in anyway instead of `memcpy` for ascii characters. Although `String::push` has some optimizations. https://doc.rust-lang.org/std/string/struct.String.html#method.push ```rust pub fn push(&mut self, ch: char) { match ch.len_utf8() { 1 => self.vec.push(ch as u8), _ => self.vec.extend_from_slice(ch.encode_utf8(&mut [0; 4]).as_bytes()), } } ```