Utf8CharMerger and Utf16CharMerger and slice-based iterators Utf8CharDecoder and Utf16CharDecoderStrings from Utf16Char-producing iteratorsfrom_array() and from_slice() accepted two-byte encodings of ASCII characters >= ‘@’, which includes all letters)FromStr for Utf16Charfrom_str_start() to Utf8Char and Utf16CharUtf{8,16}Char{s,Indices}: str-based iterators for Utf8Char and Utf16Char equivalent to char's Chars and CharIndices.StrExt with functions to create the above iterators.FromIterator and Extend for Vec<{u8,u16}> with reference-producing Utf{8,16}Char iterators too.Utf8CharSplitter and Utf16CharSplitter: Utf{8,16}Char-to-u{8,16} iterator adapters.IterExt, iter_bytes() and iter_units() to create the above splitting iterators.Utf8Char::from_ascii(), Utf16Char::from_bmp() with _unchecked versions of both.PartialEq and PartialOrd implementations.description() for a few error types.AsciiExt deprecation warning and add replacement methods.U8UtfExt::extra_utf8_bytes().Display for Utf8Char and Utf16Char.CharExt::write_utf{8,16}() because encode_utf{8,16}() has been stabilized.U16UtfExt::utf16_needs_extra_unit() instead of None.U16UtfExt::utf_is_leading_surrogate() to is_utf16_leading_surrogate().Utf16Char::from_slice() to from_slice_start() and CharExt::from_utf{8,16}_slice() to from_utf{8,16}_slice_start() to be consistent with Utf8Char.CharExt::from_slice() would accept some trailing surrogates as standalone codepoints.CharExt::write_utf{8,16}() to panic instead of returning None if the slice is too short.CharExt::write_utf8() and Utf8Char::to_slice() could change bytes it shouldn't.#[no_std]; see 70e090ee for differences.AsciiExt. (doesn't require ascii or nightly)First release.